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

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

Introduction

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

Prototype

@Override
public void setContentProvider(IContentProvider provider) 

Source Link

Document

Sets the content provider used by this TreeViewer.

Usage

From source file:ca.mcgill.sable.soot.ui.SootConfigManagerDialog.java

License:Open Source License

/**
 * creates the tree of options sections//from  w w w. ja v a2 s  . c  o  m
 */
private Composite createSelectionArea(Composite parent) {
    Composite comp = new Composite(parent, SWT.NONE);
    setSelectionArea(comp);

    GridLayout layout = new GridLayout();

    layout.numColumns = 1;

    comp.setLayout(layout);

    GridData gd = new GridData();

    TreeViewer tree = new TreeViewer(comp);
    gd = new GridData(GridData.FILL_BOTH);

    tree.getControl().setLayoutData(gd);

    tree.setContentProvider(new SootConfigContentProvider());
    tree.setLabelProvider(new SootConfigLabelProvider());
    tree.setInput(getInitialInput());

    setTreeViewer(tree);

    tree.addSelectionChangedListener(this);

    tree.expandAll();
    tree.getControl().addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            handleKeyPressed(e);
        }
    });

    return comp;
}

From source file:cc.warlock.rcp.stormfront.ui.prefs.AccountsPreferencePage.java

License:Open Source License

protected TreeViewer createAccountViewer(Composite parent) {
    final TreeViewer viewer = new TreeViewer(parent, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL);
    viewer.getTree().setLayoutData(new GridData(GridData.BEGINNING, GridData.FILL, true, true));
    viewer.setContentProvider(new ITreeContentProvider() {
        public void dispose() {
        }//  w  ww.jav a 2 s.c om

        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof Account) {
                return ((Account) parentElement).getProfiles().toArray();
            }
            return new Object[0];
        }

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Collection<?>) {
                return ((Collection<?>) inputElement).toArray();
            } else if (inputElement instanceof Object[]) {
                return (Object[]) inputElement;
            } else {
                return new Object[] { inputElement };
            }
        }

        public Object getParent(Object element) {
            if (element instanceof ProfileSetting) {
                return AccountProvider.getInstance().getAccountByProfile((ProfileSetting) element);
            }
            return null;
        }

        public boolean hasChildren(Object element) {
            if (element instanceof Account) {
                return ((Account) element).getProfiles().size() > 0;
            }
            return false;
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });
    viewer.setLabelProvider(new ILabelProvider() {
        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public Image getImage(Object element) {
            if (element instanceof ProfileSetting)
                return WarlockSharedImages.getImage(WarlockSharedImages.IMG_CHARACTER);
            return null;
        }

        public String getText(Object element) {
            if (element instanceof Account) {
                return ((Account) element).getAccountName();
            } else if (element instanceof ProfileSetting) {
                ProfileSetting profile = (ProfileSetting) element;
                return profile.getGameName() + " - " + profile.getCharacterName();
            }
            return "";
        }

        public boolean isLabelProperty(Object element, String property) {
            return true;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    });

    viewer.addFilter(new ViewerFilter() {
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            if (element instanceof Account) {
                Account account = (Account) element;
                if (removedAccounts.contains(account))
                    return false;
            } else if (element instanceof ProfileSetting) {
                ProfileSetting profile = (ProfileSetting) element;
                if (removedProfiles.containsKey(profile))
                    return false;
            }
            return true;
        }
    });

    viewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    viewer.getTree().setLinesVisible(true);
    viewer.getTree().setSize(300, viewer.getTree().getSize().y);
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            if (selection.getFirstElement() instanceof Account) {
                accountSelected((Account) selection.getFirstElement());
            } else if (selection.getFirstElement() instanceof ProfileSetting) {
                profileSelected((ProfileSetting) selection.getFirstElement());
            }
        }
    });
    return viewer;
}

From source file:ch.elexis.core.ui.views.rechnung.VerrDetailDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite ret = new Composite(parent, SWT.NONE);
    ret.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
    ret.setLayout(new FillLayout());
    TreeViewer tv = new TreeViewer(ret, SWT.V_SCROLL);
    tv.setContentProvider(new ITreeContentProvider() {

        public Object[] getChildren(Object parentElement) {
            Tree[] ret = (Tree[]) ((Tree) parentElement).getChildren().toArray(new Tree[0]);
            Arrays.sort(ret, new Comparator<Tree>() {
                public int compare(Tree t1, Tree t2) {
                    if (t1.contents instanceof Konsultation) {
                        Konsultation k1 = (Konsultation) t1.contents;
                        return k1.compareTo((Konsultation) t2.contents);
                    }//from  ww w  .j av  a2s  . co  m
                    return 0;
                }
            });
            return ret;
        }

        public Object getParent(Object element) {
            return ((Tree) element).getParent();
        }

        public boolean hasChildren(Object element) {
            return ((Tree) element).hasChildren();
        }

        public Object[] getElements(Object inputElement) {
            Tree[] ret = (Tree[]) tree.getChildren().toArray(new Tree[0]);
            return ret;
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

    });
    tv.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            Object o = ((Tree) element).contents;
            if (o instanceof Fall) {
                Fall f = (Fall) o;
                Money sum = new Money();
                List<Konsultation> list = faelle.get(f);
                if (list != null) {
                    for (Konsultation k : list) {
                        sum.addMoney(calcKons(k));
                    }
                }
                return f.getLabel() + " - " + sum.getAmountAsString(); //$NON-NLS-1$
            } else if (o instanceof Konsultation) {
                Konsultation k = (Konsultation) o;
                return k.getLabel() + " - " + calcKons(k).getAmountAsString(); //$NON-NLS-1$
            }
            return super.getText(element);
        }

    });
    tv.setInput(this);
    return ret;
}

From source file:com.alibaba.antx.config.gui.MainWindow.java

License:Open Source License

/**
 * Create contents of the application window
 * /*from  w  w w .  ja v  a2  s  . co  m*/
 * @param parent
 */
protected Control createContents(Composite parent) {
    SashForm sashForm = new SashForm(parent, SWT.HORIZONTAL);
    Composite leftPane = new Composite(sashForm, SWT.BORDER);
    Composite rightPane = new Composite(sashForm, SWT.BORDER);

    leftPane.setLayout(new GridLayout());
    rightPane.setLayout(new GridLayout());

    TreeViewer entriesViewer = new TreeViewer(leftPane, SWT.BORDER);

    entriesViewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));

    entriesViewer.setContentProvider(new ITreeContentProvider() {
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof List) {
                List entriesList = (List) parentElement;
                return (ConfigEntry[]) entriesList.toArray(new ConfigEntry[entriesList.size()]);
            }

            return null;
        }

        public Object getParent(Object element) {
            return null;
        }

        public boolean hasChildren(Object element) {
            return false;
        }

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof List) {
                List entriesList = (List) inputElement;
                return (ConfigEntry[]) entriesList.toArray(new ConfigEntry[entriesList.size()]);
            }

            return null;
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });

    gui.scan();
    entriesViewer.setInput(gui.getEntries());

    return sashForm;
}

From source file:com.amazonaws.eclipse.cloudformation.templates.editor.TemplateContentOutlinePage.java

License:Apache License

public void createControl(Composite parent) {
    super.createControl(parent);
    final TreeViewer viewer = getTreeViewer();
    viewer.setContentProvider(new TemplateOutlineContentProvider());
    viewer.setLabelProvider(new TemplateOutlineLabelProvider());
    viewer.addSelectionChangedListener(this);
    viewer.setAutoExpandLevel(2);//from   w  w  w  .ja v a2 s .  c om

    viewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent event) {
            TemplateOutlineNode selectedNode = (TemplateOutlineNode) ((StructuredSelection) event
                    .getSelection()).getFirstElement();

            JsonLocation startLocation = selectedNode.getNode().getStartLocation();
            JsonLocation endLocation = selectedNode.getNode().getEndLocation();

            IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
                    .getActiveEditor();
            if (activeEditor != null) {
                TemplateEditor templateEditor = (TemplateEditor) activeEditor;
                templateEditor.setHighlightRange((int) startLocation.getCharOffset(),
                        (int) endLocation.getCharOffset() - (int) startLocation.getCharOffset(), true);
            }
        }
    });

    document.addTemplateDocumentListener(this);
    updateContent();
}

From source file:com.amazonaws.eclipse.codedeploy.explorer.editor.table.DeploymentsTableView.java

License:Apache License

private TreeViewer createControls(FormToolkit toolkit) {
    GridLayout gridLayout = new GridLayout(1, false);
    gridLayout.marginWidth = 0;//from   w w w  . j av a  2  s .  c  om
    gridLayout.marginHeight = 0;
    setLayout(gridLayout);

    Composite sectionComp = toolkit.createComposite(this, SWT.None);
    sectionComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    sectionComp.setLayout(new GridLayout(1, false));

    Composite headingComp = toolkit.createComposite(sectionComp, SWT.None);
    headingComp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
    headingComp.setLayout(new GridLayout());
    tableTitleLabel = toolkit.createLabel(headingComp, "Deployments");
    tableTitleLabel.setFont(JFaceResources.getHeaderFont());
    tableTitleLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));

    Composite tableHolder = toolkit.createComposite(sectionComp, SWT.None);
    tableHolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    FillLayout layout = new FillLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 10;
    layout.type = SWT.VERTICAL;
    tableHolder.setLayout(layout);

    Composite tableComp = toolkit.createComposite(tableHolder, SWT.None);
    final TreeColumnLayout tableColumnLayout = new TreeColumnLayout();
    tableComp.setLayout(tableColumnLayout);

    final TreeViewer viewer = new TreeViewer(tableComp, SWT.BORDER | SWT.VIRTUAL | SWT.MULTI | SWT.H_SCROLL);
    viewer.getTree().setLinesVisible(true);
    viewer.getTree().setHeaderVisible(true);
    viewer.setUseHashlookup(true);
    viewer.setLabelProvider(new DeploymentsTableViewLabelProvider());
    viewer.setContentProvider(new DeploymentsTableViewContentProvider(this.viewer, this.contentCache));

    Tree tree = viewer.getTree();

    createColumns(tableColumnLayout, tree);

    viewer.setInput(loadingContentProvider);
    updateRefreshProgress(0, false);

    // Async load top-level data
    new Thread(new Runnable() {

        public void run() {
            Display.getDefault().syncExec(new Runnable() {
                public void run() {
                    // Preserve the current column widths
                    int[] colWidth = new int[viewer.getTree().getColumns().length];
                    int i = 0;
                    for (TreeColumn col : viewer.getTree().getColumns()) {
                        colWidth[i++] = col.getWidth();
                    }

                    i = 0;
                    for (TreeColumn col : viewer.getTree().getColumns()) {
                        tableColumnLayout.setColumnData(col, new ColumnPixelData(colWidth[i]));
                    }
                }
            });

            // Cache the children of all the top-level elements before
            // updating the tree view
            loadAllTopLevelElements();

            Display.getDefault().syncExec(new Runnable() {
                public void run() {
                    viewer.setInput(contentCache);
                }
            });
        }
    }).start();

    return viewer;
}

From source file:com.android.ide.eclipse.adt.internal.editors.layout.gle2.OutlinePage.java

License:Open Source License

private void createOutline(Composite parent) {
    if (AdtUtils.isEclipse4()) {
        // This is a workaround for the focus behavior in Eclipse 4 where
        // the framework ends up calling setFocus() on the first widget in the outline
        // AFTER a mouse click has been received. Specifically, if the user clicks in
        // the embedded property sheet to for example give a Text property editor focus,
        // then after the mouse click, the Outline window activation event is processed,
        // and this event causes setFocus() to be called first on the PageBookView (which
        // ends up calling setFocus on the first control, normally the TreeViewer), and
        // then on the Page itself. We're dealing with the page setFocus() in the override
        // of that method in the class, such that it does nothing.
        // However, we have to also disable the setFocus on the first control in the
        // outline page. To deal with that, we create our *own* first control in the
        // outline, and make its setFocus() a no-op. We also make it invisible, since we
        // don't actually want anything but the tree viewer showing in the outline.
        Text text = new Text(parent, SWT.NONE) {
            @Override/*from  ww w . j ava2  s  . c  o m*/
            public boolean setFocus() {
                // Focus no-op
                return true;
            }

            @Override
            protected void checkSubclass() {
                // Disable the check that prevents subclassing of SWT components
            }
        };
        text.setVisible(false);
    }

    super.createControl(parent);

    TreeViewer tv = getTreeViewer();
    tv.setAutoExpandLevel(2);
    tv.setContentProvider(new ContentProvider());
    tv.setLabelProvider(new LabelProvider());
    tv.setInput(mRootWrapper);
    tv.expandToLevel(mRootWrapper.getRoot(), 2);

    int supportedOperations = DND.DROP_COPY | DND.DROP_MOVE;
    Transfer[] transfers = new Transfer[] { SimpleXmlTransfer.getInstance() };

    tv.addDropSupport(supportedOperations, transfers, new OutlineDropListener(this, tv));
    tv.addDragSupport(supportedOperations, transfers, new OutlineDragListener(this, tv));

    // The tree viewer will hold CanvasViewInfo instances, however these
    // change each time the canvas is reloaded. OTOH layoutlib gives us
    // constant UiView keys which we can use to perform tree item comparisons.
    tv.setComparer(new IElementComparer() {
        @Override
        public int hashCode(Object element) {
            if (element instanceof CanvasViewInfo) {
                UiViewElementNode key = ((CanvasViewInfo) element).getUiViewNode();
                if (key != null) {
                    return key.hashCode();
                }
            }
            if (element != null) {
                return element.hashCode();
            }
            return 0;
        }

        @Override
        public boolean equals(Object a, Object b) {
            if (a instanceof CanvasViewInfo && b instanceof CanvasViewInfo) {
                UiViewElementNode keyA = ((CanvasViewInfo) a).getUiViewNode();
                UiViewElementNode keyB = ((CanvasViewInfo) b).getUiViewNode();
                if (keyA != null) {
                    return keyA.equals(keyB);
                }
            }
            if (a != null) {
                return a.equals(b);
            }
            return false;
        }
    });
    tv.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            // This used to open the property view, but now that properties are docked
            // let's use it for something else -- such as showing the editor source
            /*
            // Front properties panel; its selection is already linked
            IWorkbenchPage page = getSite().getPage();
            try {
            page.showView(IPageLayout.ID_PROP_SHEET, null, IWorkbenchPage.VIEW_ACTIVATE);
            } catch (PartInitException e) {
            AdtPlugin.log(e, "Could not activate property sheet");
            }
            */

            TreeItem[] selection = getTreeViewer().getTree().getSelection();
            if (selection.length > 0) {
                CanvasViewInfo vi = getViewInfo(selection[0].getData());
                if (vi != null) {
                    LayoutCanvas canvas = mGraphicalEditorPart.getCanvasControl();
                    canvas.show(vi);
                }
            }
        }
    });

    setupContextMenu();

    // Listen to selection changes from the layout editor
    getSite().getPage().addSelectionListener(this);
    getControl().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            dispose();
        }
    });

    Tree tree = tv.getTree();
    tree.addKeyListener(new KeyListener() {

        @Override
        public void keyPressed(KeyEvent e) {
            if (e.character == '-') {
                if (mMoveUpAction.isEnabled()) {
                    mMoveUpAction.run();
                }
            } else if (e.character == '+') {
                if (mMoveDownAction.isEnabled()) {
                    mMoveDownAction.run();
                }
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
        }
    });

    setupTooltip();
}

From source file:com.android.ide.eclipse.adt.internal.editors.layout.gle2.OutlinePage2.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    super.createControl(parent);

    TreeViewer tv = getTreeViewer();
    tv.setAutoExpandLevel(2);//from   w  w w.  j av a  2  s  .  com
    tv.setContentProvider(new ContentProvider());
    tv.setLabelProvider(new LabelProvider());
    tv.setInput(mRootWrapper);

    // The tree viewer will hold CanvasViewInfo instances, however these
    // change each time the canvas is reloaded. OTOH liblayout gives us
    // constant UiView keys which we can use to perform tree item comparisons.
    tv.setComparer(new IElementComparer() {
        public int hashCode(Object element) {
            if (element instanceof CanvasViewInfo) {
                UiViewElementNode key = ((CanvasViewInfo) element).getUiViewKey();
                if (key != null) {
                    return key.hashCode();
                }
            }
            if (element != null) {
                return element.hashCode();
            }
            return 0;
        }

        public boolean equals(Object a, Object b) {
            if (a instanceof CanvasViewInfo && b instanceof CanvasViewInfo) {
                UiViewElementNode keyA = ((CanvasViewInfo) a).getUiViewKey();
                UiViewElementNode keyB = ((CanvasViewInfo) b).getUiViewKey();
                if (keyA != null) {
                    return keyA.equals(keyB);
                }
            }
            if (a != null) {
                return a.equals(b);
            }
            return false;
        }
    });

    // Listen to selection changes from the layout editor
    getSite().getPage().addSelectionListener(this);
}

From source file:com.appnativa.studio.editors.SDFOutlinePage.java

License:Open Source License

public void createControl(Composite parent) {
    super.createControl(parent);

    TreeViewer viewer = getTreeViewer();

    outlineContentProvider = new OutlineContentProvider(editor.getDocumentProvider());
    viewer.setContentProvider(outlineContentProvider);
    outlineLabelProvider = new OutlineLabelProvider();
    viewer.setLabelProvider(outlineLabelProvider);
    viewer.addSelectionChangedListener(this);
    viewer.setAutoExpandLevel(TreeViewer.ALL_LEVELS);

    //control is created after input is set
    if (input != null) {
        viewer.setInput(input);//from  w  ww  .j  a  v a 2 s. c  o  m
    }
}

From source file:com.aptana.editor.common.outline.CommonOutlinePage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    fMainControl = new Composite(parent, SWT.NONE);
    fMainControl.setLayout(GridLayoutFactory.fillDefaults().spacing(0, 2).create());
    fMainControl.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    fSearchBox = new Text(fMainControl, SWT.SINGLE | SWT.BORDER | SWT.SEARCH);
    fSearchBox.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).indent(0, 3).create());
    fSearchBox.setText(INITIAL_FILTER_TEXT);
    fSearchBox.setForeground(fSearchBox.getDisplay().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
    fSearchBox.addModifyListener(fSearchModifyListener);
    fSearchBox.addFocusListener(new FocusListener() {

        public void focusLost(FocusEvent e) {
            if (fSearchBox.getText().length() == 0) {
                fSearchBox.removeModifyListener(fSearchModifyListener);
                fSearchBox.setText(INITIAL_FILTER_TEXT);
                fSearchBox.addModifyListener(fSearchModifyListener);
            }//from  w ww  .  j  a  va  2s.  com
            fSearchBox
                    .setForeground(fSearchBox.getDisplay().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
        }

        public void focusGained(FocusEvent e) {
            if (fSearchBox.getText().equals(INITIAL_FILTER_TEXT)) {
                fSearchBox.removeModifyListener(fSearchModifyListener);
                fSearchBox.setText(StringUtil.EMPTY);
                fSearchBox.addModifyListener(fSearchModifyListener);
            }
            fSearchBox.setForeground(null);
        }
    });

    fTreeViewer = new TreeViewer(fMainControl, SWT.VIRTUAL | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    fTreeViewer.addSelectionChangedListener(this);
    fTreeViewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());

    ((IContextService) getSite().getService(IContextService.class)).activateContext(OUTLINE_CONTEXT);

    final TreeViewer viewer = getTreeViewer();
    viewer.setUseHashlookup(true);
    viewer.setContentProvider(fContentProvider);
    viewer.setLabelProvider(fLabelProvider);
    fInput = new CommonOutlinePageInput(fEditor.getAST());
    // Note: the input remains the same (we change its internal contents with a new ast and call refresh,
    // so that the outline structure is maintained).
    viewer.setInput(fInput);
    viewer.setComparator(isSortingEnabled() ? new ViewerComparator() : null);
    fFilter = new PatternFilter() {

        @Override
        protected boolean isLeafMatch(Viewer viewer, Object element) {
            String label = null;
            if (element instanceof CommonOutlineItem) {
                label = ((CommonOutlineItem) element).getLabel();
            } else if (element instanceof IParseNode) {
                label = ((IParseNode) element).getText();
            }

            if (label == null) {
                return true;
            }
            return wordMatches(label);
        }
    };
    fFilter.setIncludeLeadingWildcard(true);
    viewer.addFilter(fFilter);
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            // expands the selection one level if applicable
            viewer.expandToLevel(selection.getFirstElement(), 1);
            // selects the corresponding text in editor
            if (!isLinkedWithEditor()) {
                setEditorSelection(selection, true);
            }
        }
    });
    viewer.getTree().addKeyListener(new KeyListener() {

        public void keyPressed(KeyEvent e) {
        }

        public void keyReleased(KeyEvent e) {
            if (e.keyCode == '\r' && isLinkedWithEditor()) {
                ISelection selection = viewer.getSelection();
                if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
                    IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                    if (page != null) {
                        // brings editor to focus
                        page.activate(fEditor);
                        // deselects the current selection but keeps the cursor position
                        Object widget = fEditor.getAdapter(Control.class);
                        if (widget instanceof StyledText)
                            fEditor.selectAndReveal(((StyledText) widget).getCaretOffset(), 0);
                    }
                }
            }
        }
    });

    hookToThemes();

    IActionBars actionBars = getSite().getActionBars();
    registerActions(actionBars);
    actionBars.updateActionBars();

    fPrefs.addPropertyChangeListener(this);
    fFilterRefreshJob = new WorkbenchJob("Refresh Filter") //$NON-NLS-1$
    {

        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            if (isDisposed()) {
                return Status.CANCEL_STATUS;
            }

            fTreeViewer.refresh();
            String text = fSearchBox.getText();
            if (!StringUtil.isEmpty(text) && !INITIAL_FILTER_TEXT.equals(text)) {
                fTreeViewer.expandAll();
            }
            return Status.OK_STATUS;
        }
    };
    EclipseUtil.setSystemForJob(fFilterRefreshJob);
}