Example usage for org.eclipse.jface.viewers TreeViewer isExpandable

List of usage examples for org.eclipse.jface.viewers TreeViewer isExpandable

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TreeViewer isExpandable.

Prototype

@Override
    public boolean isExpandable(Object element) 

Source Link

Usage

From source file:org.eclipse.mylyn.internal.commons.repositories.ui.wizards.NewRepositoryWizardNewPage.java

License:Open Source License

/**
 * Create a new FilteredTree in the parent.
 * //from w w w. j ava 2  s.  c  o  m
 * @param parent
 *            the parent <code>Composite</code>.
 * @since 3.0
 */
@SuppressWarnings({ "rawtypes", "unchecked" })
protected FilteredTree createFilteredTree(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    composite.setLayout(layout);

    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    data.widthHint = SIZING_VIEWER_WIDTH;
    data.horizontalSpan = 2;
    data.grabExcessHorizontalSpace = true;
    data.grabExcessVerticalSpace = true;

    boolean needsHint = DialogUtil.inRegularFontMode(parent);

    //Only give a height hint if the dialog is going to be too small
    if (needsHint) {
        data.heightHint = SIZING_LISTS_HEIGHT;
    }
    composite.setLayoutData(data);

    filteredTreeFilter = new WizardPatternFilter();
    FilteredTree filterTree = new FilteredTree(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
            filteredTreeFilter, true);

    final TreeViewer treeViewer = filterTree.getViewer();
    treeViewer.setContentProvider(new WizardContentProvider());
    treeViewer.setLabelProvider(new WorkbenchLabelProvider());
    treeViewer.setComparator(NewWizardCollectionComparator.INSTANCE);
    treeViewer.addSelectionChangedListener(this);

    ArrayList inputArray = new ArrayList();

    for (IWizardDescriptor primaryWizard : primaryWizards) {
        inputArray.add(primaryWizard);
    }

    boolean expandTop = false;

    if (wizardCategories != null) {
        if (wizardCategories.getParent() == null) {
            IWizardCategory[] children = wizardCategories.getCategories();
            for (IWizardCategory element : children) {
                inputArray.add(element);
            }
        } else {
            expandTop = true;
            inputArray.add(wizardCategories);
        }
    }

    // ensure the category is expanded.  If there is a remembered expansion it will be set later.
    if (expandTop) {
        treeViewer.setAutoExpandLevel(2);
    }

    AdaptableList input = new AdaptableList(inputArray);

    treeViewer.setInput(input);

    filterTree.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));

    treeViewer.getTree().setFont(parent.getFont());

    treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
         */
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection s = (IStructuredSelection) event.getSelection();
            selectionChanged(new SelectionChangedEvent(event.getViewer(), s));

            Object element = s.getFirstElement();
            if (treeViewer.isExpandable(element)) {
                treeViewer.setExpandedState(element, !treeViewer.getExpandedState(element));
            } else if (element instanceof WorkbenchWizardElement) {
                page.advanceToNextPageOrFinish();
            }
        }
    });

    treeViewer.addFilter(filter);

    if (projectsOnly) {
        treeViewer.addFilter(projectFilter);
    }

    Dialog.applyDialogFont(filterTree);
    return filterTree;
}

From source file:org.eclipse.mylyn.internal.commons.ui.team.wizards.NewRepositoryWizardNewPage.java

License:Open Source License

/**
 * Create a new FilteredTree in the parent.
 * /*from  ww w  . j  a v  a 2 s  .co m*/
 * @param parent
 *            the parent <code>Composite</code>.
 * @since 3.0
 */
protected FilteredTree createFilteredTree(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    composite.setLayout(layout);

    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    data.widthHint = SIZING_VIEWER_WIDTH;
    data.horizontalSpan = 2;
    data.grabExcessHorizontalSpace = true;
    data.grabExcessVerticalSpace = true;

    boolean needsHint = DialogUtil.inRegularFontMode(parent);

    //Only give a height hint if the dialog is going to be too small
    if (needsHint) {
        data.heightHint = SIZING_LISTS_HEIGHT;
    }
    composite.setLayoutData(data);

    filteredTreeFilter = new WizardPatternFilter();
    FilteredTree filterTree = new FilteredTree(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
            filteredTreeFilter, true);

    final TreeViewer treeViewer = filterTree.getViewer();
    treeViewer.setContentProvider(new WizardContentProvider());
    treeViewer.setLabelProvider(new WorkbenchLabelProvider());
    treeViewer.setComparator(NewWizardCollectionComparator.INSTANCE);
    treeViewer.addSelectionChangedListener(this);

    ArrayList inputArray = new ArrayList();

    for (IWizardDescriptor primaryWizard : primaryWizards) {
        inputArray.add(primaryWizard);
    }

    boolean expandTop = false;

    if (wizardCategories != null) {
        if (wizardCategories.getParent() == null) {
            IWizardCategory[] children = wizardCategories.getCategories();
            for (IWizardCategory element : children) {
                inputArray.add(element);
            }
        } else {
            expandTop = true;
            inputArray.add(wizardCategories);
        }
    }

    // ensure the category is expanded.  If there is a remembered expansion it will be set later.
    if (expandTop) {
        treeViewer.setAutoExpandLevel(2);
    }

    AdaptableList input = new AdaptableList(inputArray);

    treeViewer.setInput(input);

    filterTree.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));

    treeViewer.getTree().setFont(parent.getFont());

    treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
         */
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection s = (IStructuredSelection) event.getSelection();
            selectionChanged(new SelectionChangedEvent(event.getViewer(), s));

            Object element = s.getFirstElement();
            if (treeViewer.isExpandable(element)) {
                treeViewer.setExpandedState(element, !treeViewer.getExpandedState(element));
            } else if (element instanceof WorkbenchWizardElement) {
                page.advanceToNextPageOrFinish();
            }
        }
    });

    treeViewer.addFilter(filter);

    if (projectsOnly) {
        treeViewer.addFilter(projectFilter);
    }

    Dialog.applyDialogFont(filterTree);
    return filterTree;
}

From source file:org.eclipse.php.internal.ui.actions.newprojectwizard.NewWizardNewPage.java

License:Open Source License

/**
 * Create a new FilteredTree in the parent.
 * //  ww  w  .  j  a  v a  2  s. co m
 * @param parent
 *            the parent <code>Composite</code>.
 * @since 3.0
 */
protected FilteredTree createFilteredTree(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    composite.setLayout(layout);

    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    data.widthHint = SIZING_VIEWER_WIDTH;
    data.horizontalSpan = 2;
    data.grabExcessHorizontalSpace = true;
    data.grabExcessVerticalSpace = true;

    boolean needsHint = DialogUtil.inRegularFontMode(parent);

    // Only give a height hint if the dialog is going to be too small
    if (needsHint) {
        data.heightHint = SIZING_LISTS_HEIGHT;
    }
    composite.setLayoutData(data);

    filteredTreeFilter = new WizardPatternFilter();
    FilteredTree filterTree = new FilteredTree(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
            filteredTreeFilter, true);

    final TreeViewer treeViewer = filterTree.getViewer();
    treeViewer.setContentProvider(new WizardContentProvider());
    treeViewer.setLabelProvider(new WorkbenchLabelProvider());
    treeViewer.addSelectionChangedListener(this);

    ArrayList inputArray = new ArrayList();

    for (int i = 0; i < primaryWizards.length; i++) {
        inputArray.add(primaryWizards[i]);
    }

    if (!projectsOnly) {

        IWizardCategory phpCategory = wizardCategories.findCategory(new Path("org.eclipse.php.project.ui")); //$NON-NLS-1$
        // IWizardCategory[] children = wizardCategories.getCategories();
        // for (int i = 0; i < children.length; i++) {
        // if ("org.eclipse.php.project.ui".equals(children[i].getId())) {
        // phpCategory = children[i];
        // }
        // }
        if (phpCategory != null) {
            IWizardDescriptor[] wizards = phpCategory.getWizards();
            for (int i = 0; i < wizards.length; i++) {
                inputArray.add(wizards[i]);
            }
            inputArray = sortWizard(inputArray);
            IWizardCategory[] categories = phpCategory.getCategories();
            for (int i = 0; i < categories.length; i++) {
                inputArray.add(categories[i]);
            }
            IWizardDescriptor folder = wizardCategories.findWizard("org.eclipse.ui.wizards.new.folder"); //$NON-NLS-1$
            if (folder != null) {
                inputArray.add(folder);
            }
        }
        NewWizardCollectionComparator comparator = NewWizardCollectionComparator.INSTANCE;
        Set set = new HashSet();
        set.addAll(inputArray);
        comparator.setPrimaryWizards(set);
        treeViewer.setComparator(comparator);
    } else {
        NewWizardCollectionComparator comparator = NewWizardCollectionComparator.INSTANCE;
        comparator.setPrimaryWizards(null);
        treeViewer.setComparator(comparator);
    }

    boolean expandTop = false;

    if (wizardCategories != null) {
        if (wizardCategories.getParent() == null) {
            IWizardCategory[] children = wizardCategories.getCategories();
            for (int i = 0; i < children.length; i++) {
                if (!"org.eclipse.php.project.ui".equals(children[i] //$NON-NLS-1$
                        .getId())) {
                    inputArray.add(children[i]);
                }
            }
        } else {
            expandTop = true;
            inputArray.add(wizardCategories);
        }
    }

    // ensure the category is expanded. If there is a remembered expansion
    // it will be set later.
    if (expandTop) {
        treeViewer.setAutoExpandLevel(2);
    }

    AdaptableList input = new AdaptableList(inputArray);

    treeViewer.setInput(input);

    filterTree.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));

    treeViewer.getTree().setFont(parent.getFont());

    treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org
         * .eclipse.jface.viewers.DoubleClickEvent)
         */
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection s = (IStructuredSelection) event.getSelection();
            selectionChanged(new SelectionChangedEvent(event.getViewer(), s));

            Object element = s.getFirstElement();
            if (treeViewer.isExpandable(element)) {
                treeViewer.setExpandedState(element, !treeViewer.getExpandedState(element));
            } else if (element instanceof WorkbenchWizardElement) {
                page.advanceToNextPageOrFinish();
            }
        }
    });

    treeViewer.addFilter(filter);

    if (projectsOnly) {
        treeViewer.addFilter(projectFilter);
    }

    Dialog.applyDialogFont(filterTree);
    return filterTree;
}

From source file:org.eclipse.php.internal.ui.actions.PHPExplorerActionGroup.java

License:Open Source License

/**
 * this method call ScriptExplorerActionGroup.handleDoubleClick(event) at
 * most cases, except fNavigateActionGroup relative operation
 *//*w  w w . j a  va 2  s . co  m*/
protected void handleDoubleClick(DoubleClickEvent event) {
    TreeViewer viewer = getPart().getTreeViewer();
    IStructuredSelection selection = (IStructuredSelection) event.getSelection();
    Object element = selection.getFirstElement();
    if (viewer.isExpandable(element)) {
        if (doubleClickGoesInto()) {
            super.handleDoubleClick(event);
        } else {
            IAction openAction = fNavigateActionGroup.getOpenAction();
            if (openAction != null && openAction.isEnabled()
                    && OpenStrategy.getOpenMethod() == OpenStrategy.DOUBLE_CLICK)
                return;
            if (selection instanceof ITreeSelection) {
                TreePath[] paths = ((ITreeSelection) selection).getPathsFor(element);
                for (int i = 0; i < paths.length; i++) {
                    viewer.setExpandedState(paths[i], !viewer.getExpandedState(paths[i]));
                }
            } else {
                viewer.setExpandedState(element, !viewer.getExpandedState(element));
            }
        }
    } else {
        super.handleDoubleClick(event);
    }
}

From source file:org.eclipse.tcf.te.ui.views.editor.pages.AbstractTreeViewerExplorerEditorPage.java

License:Open Source License

@Override
public void doubleClick(final DoubleClickEvent event) {
    // If an handled and enabled command is registered for the ICommonActionConstants.OPEN
    // retargetable action id, redirect the double click handling to the command handler.
    ///*  w  ww  .  ja va2 s. c  om*/
    // Note: The default tree node expansion must be re-implemented in the active handler!
    String commandId = getDoubleClickCommandId();
    Command cmd = null;
    if (commandId != null) {
        ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class);
        cmd = service != null ? service.getCommand(commandId) : null;
    }
    if (cmd != null && cmd.isDefined() && cmd.isEnabled()) {
        final Command command = cmd;
        SafeRunner.run(new SafeRunnable() {
            @Override
            public void handleException(Throwable e) {
                // Ignore exception
            }

            @Override
            public void run() throws Exception {
                IHandlerService handlerSvc = (IHandlerService) PlatformUI.getWorkbench()
                        .getService(IHandlerService.class);
                Assert.isNotNull(handlerSvc);

                ISelection selection = event.getSelection();
                EvaluationContext ctx = new EvaluationContext(handlerSvc.getCurrentState(), selection);
                ctx.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection);
                ctx.addVariable(ISources.ACTIVE_MENU_SELECTION_NAME, selection);
                ctx.setAllowPluginActivation(true);

                ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null);
                Assert.isNotNull(pCmd);

                handlerSvc.executeCommandInContext(pCmd, null, ctx);
            }
        });
    } else {
        IStructuredSelection selection = (IStructuredSelection) event.getSelection();
        Object element = selection.getFirstElement();
        TreeViewer viewer = (TreeViewer) treeControl.getViewer();
        if (viewer.isExpandable(element)) {
            viewer.setExpandedState(element, !viewer.getExpandedState(element));
        }
    }
}

From source file:org.eclipse.tcf.te.ui.views.handler.OpenEditorHandler.java

License:Open Source License

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    // The selection is the Target Explorer tree selection
    ISelection selection = HandlerUtil.getCurrentSelection(event);
    // The active part is the Target Explorer view instance
    IWorkbenchPart part = HandlerUtil.getActivePart(event);
    // Get the currently active workbench window
    // In Eclipse 4.x, the HandlerUtil.getActiveWorkbenchWindow(event) may return null
    IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
    if (window == null)
        window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    // ALT - Key pressed?
    Object ctrlPressed = HandlerUtil.getVariable(event, "ctrlPressed"); //$NON-NLS-1$

    boolean expand = ctrlPressed instanceof Boolean ? ((Boolean) ctrlPressed).booleanValue() : false;

    if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
        // If the tree node is expandable, expand or collapse it
        TreeViewer viewer = ((CommonNavigator) part).getCommonViewer();
        Object element = ((IStructuredSelection) selection).getFirstElement();
        if (selection instanceof TreeSelection) {
            TreePath[] path = ((TreeSelection) selection).getPaths();
            if (path != null && path.length > 0) {
                element = path[0].getLastSegment();
            }//from w w w  .ja v a 2 s  .c  om
        }
        if (viewer.isExpandable(element) && expand) {
            viewer.setExpandedState(element, !viewer.getExpandedState(element));
        } else {
            openEditorOnSelection(window, selection);
        }
    }

    return null;
}

From source file:org.eclipse.tcf.te.ui.wizards.newWizard.NewWizardSelectionPage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout());
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));

    Label label = new Label(composite, SWT.NONE);
    label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    label.setText(Messages.NewWizardSelectionPage_wizards);
    label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    filteredTreeFilter = new WizardPatternFilter();
    filteredTree = new FilteredTree(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
            filteredTreeFilter, true);/*from   w  w  w  . j  av a2  s. com*/
    filteredTree.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
    GridData layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.heightHint = 325;
    layoutData.widthHint = 450;
    filteredTree.setLayoutData(layoutData);

    final TreeViewer treeViewer = filteredTree.getViewer();
    treeViewer.setContentProvider(new NewWizardContentProvider());
    treeViewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
    treeViewer.setComparator(new NewWizardViewerComparator());

    treeViewer.addFilter(new NewWizardViewerFilter());

    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            onSelectionChanged();
        }
    });
    treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            // Double-click on a connection type is triggering the sub wizard
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                // The tree is single selection, so look for the first element only.
                Object element = selection.getFirstElement();
                if (element instanceof IWizardDescriptor) {
                    // Double-click on a connection type is triggering the sub wizard
                    if (canFlipToNextPage()) {
                        getWizard().getContainer().showPage(getNextPage());
                    }
                } else if (event.getViewer() instanceof TreeViewer) {
                    TreeViewer viewer = (TreeViewer) event.getViewer();
                    if (viewer.isExpandable(element)) {
                        viewer.setExpandedState(element, !viewer.getExpandedState(element));
                    }
                }
            }
        }
    });

    treeViewer.setInput(category != null ? category : wizardRegistry);

    // apply the standard dialog font
    Dialog.applyDialogFont(composite);

    setControl(composite);

    // Restore the tree action
    restoreWidgetValues();

    // Initialize the context help id
    PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
            IUIConstants.HELP_NEW_WIZARD_SELECTION_PAGE);
}

From source file:org.eclipse.team.internal.ui.synchronize.AbstractTreeViewerAdvisor.java

License:Open Source License

private static boolean hasNextPrev(TreeViewer viewer, TreeItem item, boolean next) {
    if (item == null || !(viewer instanceof ITreeViewerAccessor))
        return false;
    TreeItem children[] = null;/*from  w  w w  . ja  v  a2s. c o m*/
    if (next) {
        if (viewer.isExpandable(item.getData()))
            return true;
        while (item != null) {
            TreeItem parent = item.getParentItem();
            if (parent != null)
                children = parent.getItems();
            else
                children = item.getParent().getItems();
            if (children != null && children.length > 0) {
                if (children[children.length - 1] != item) {
                    // The item is not the last so there must be a next
                    return true;
                } else {
                    // Set the parent as the item and go up one more level
                    item = parent;
                }
            }
        }
    } else {
        while (item != null) {
            TreeItem parent = item.getParentItem();
            if (parent != null)
                children = parent.getItems();
            else
                children = item.getParent().getItems();
            if (children != null && children.length > 0) {
                if (children[0] != item) {
                    // The item is not the first so there must be a previous
                    return true;
                } else {
                    // Set the parent as the item and go up one more level
                    item = parent;
                }
            }
        }
    }
    return false;
}

From source file:org.eclipse.tm.te.ui.views.handler.OpenCommandHandler.java

License:Open Source License

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    // The selection is the Target Explorer tree selection
    ISelection selection = HandlerUtil.getCurrentSelection(event);
    // The active part is the Target Explorer view instance
    IWorkbenchPart part = HandlerUtil.getActivePart(event);

    if (selection instanceof IStructuredSelection && !selection.isEmpty() && part instanceof CommonNavigator) {
        // If the tree node is expandable, expand or collapse it
        TreeViewer viewer = ((CommonNavigator) part).getCommonViewer();
        Object element = ((IStructuredSelection) selection).getFirstElement();
        if (viewer.isExpandable(element)) {
            viewer.setExpandedState(element, !viewer.getExpandedState(element));
        } else {//  w  w  w  .  j  a v  a  2 s  .  co  m
            // Node is not an expandable node, forward to the properties action.
            ICommandService service = (ICommandService) PlatformUI.getWorkbench()
                    .getService(ICommandService.class);
            Command command = service != null ? service.getCommand(ActionFactory.PROPERTIES.getCommandId())
                    : null;
            if (command != null && command.isDefined() && command.isEnabled()) {
                try {
                    command.executeWithChecks(event);
                } catch (Exception e) {
                    // If the platform is in debug mode, we print the exception to the log view
                    if (Platform.inDebugMode()) {
                        IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(),
                                e.getLocalizedMessage(), e);
                        UIPlugin.getDefault().getLog().log(status);
                    }
                }
            }
        }
    }

    return null;
}

From source file:org.eclipse.tm.te.ui.wizards.newWizard.NewWizardSelectionPage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout());
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));

    Label label = new Label(composite, SWT.NONE);
    label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    label.setText(Messages.NewWizardSelectionPage_wizards);
    label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    filteredTreeFilter = new WizardPatternFilter();
    filteredTree = new FilteredTree(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
            filteredTreeFilter, true);//w w  w  .ja va2  s .  co m
    filteredTree.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
    GridData layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.heightHint = 325;
    layoutData.widthHint = 450;
    filteredTree.setLayoutData(layoutData);

    final TreeViewer treeViewer = filteredTree.getViewer();
    treeViewer.setContentProvider(new WizardContentProvider());
    treeViewer.setLabelProvider(new WorkbenchLabelProvider());
    treeViewer.setComparator(new NewWizardViewerComparator());

    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            onSelectionChanged();
        }
    });
    treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            // Double-click on a connection type is triggering the sub wizard
            if (event.getSelection() instanceof IStructuredSelection) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                // The tree is single selection, so look for the first element only.
                Object element = selection.getFirstElement();
                if (element instanceof IWizardDescriptor) {
                    // Double-click on a connection type is triggering the sub wizard
                    if (canFlipToNextPage())
                        getWizard().getContainer().showPage(getNextPage());
                } else if (event.getViewer() instanceof TreeViewer) {
                    TreeViewer viewer = (TreeViewer) event.getViewer();
                    if (viewer.isExpandable(element)) {
                        viewer.setExpandedState(element, !viewer.getExpandedState(element));
                    }
                }
            }
        }
    });

    treeViewer.setInput(wizardRegistry.getRootCategory());

    // apply the standard dialog font
    Dialog.applyDialogFont(composite);

    setControl(composite);

    // Restore the tree state
    restoreWidgetValues();

    // Initialize the context help id
    PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
            IUIConstants.HELP_NEW_WIZARD_SELECTION_PAGE);
}