@Override
  public Control createPageContents(Composite parent) {
    XComposite mainComposite = new XComposite(parent, SWT.NONE);
    mainComposite.getGridLayout().numColumns = 1;

    linkHandlerFactoryTreeComposite =
        new SelectIssueLinkHandlerFactoryTreeComposite(
            mainComposite, mainComposite.getBorderStyle(), null);

    for (Object l : selectionChangedListeners.getListeners())
      linkHandlerFactoryTreeComposite.addSelectionChangedListener((ISelectionChangedListener) l);

    linkHandlerFactoryTreeComposite.addDoubleClickListener(
        new IDoubleClickListener() {
          @Override
          public void doubleClick(DoubleClickEvent e) {
            if (e.getSelection() instanceof TreeSelection) {
              Object firstElement = ((TreeSelection) e.getSelection()).getFirstElement();
              if (firstElement instanceof IssueLinkHandlerFactory<?, ?>)
                getContainer().showPage(getNextPage());
              else {
                TreeViewer tv = linkHandlerFactoryTreeComposite.getTreeViewer();
                if (tv.getExpandedState(firstElement)) {
                  tv.collapseToLevel(firstElement, 1);
                } else {
                  tv.expandToLevel(firstElement, 1);
                }
              }
            }
          }
        });
    linkHandlerFactoryTreeComposite.getTreeViewer().expandAll();

    return mainComposite;
  }
 @Override
 public ISelection getSelection() {
   return linkHandlerFactoryTreeComposite.getSelection();
 }
 @Override
 public boolean isPageComplete() {
   return linkHandlerFactoryTreeComposite.getIssueLinkHandlerFactory() != null;
 }
 @Override
 public void setSelection(ISelection selection) {
   linkHandlerFactoryTreeComposite.setSelection(selection);
 }