Example usage for org.eclipse.jface.viewers AbstractTreeViewer ALL_LEVELS

List of usage examples for org.eclipse.jface.viewers AbstractTreeViewer ALL_LEVELS

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers AbstractTreeViewer ALL_LEVELS.

Prototype

int ALL_LEVELS

To view the source code for org.eclipse.jface.viewers AbstractTreeViewer ALL_LEVELS.

Click Source Link

Document

Constant indicating that all levels of the tree should be expanded or collapsed.

Usage

From source file:org.eclipse.jdt.internal.junit.ui.TestViewer.java

License:Open Source License

private void autoScrollInUI() {
    if (!fTestRunnerPart.isAutoScroll()) {
        clearAutoExpand();//from   w w  w.ja v a 2  s .c o m
        fAutoClose.clear();
        return;
    }

    if (fLayoutMode == TestRunnerViewPart.LAYOUT_FLAT) {
        if (fAutoScrollTarget != null)
            fTableViewer.reveal(fAutoScrollTarget);
        return;
    }

    synchronized (this) {
        for (TestSuiteElement suite : fAutoExpand) {
            fTreeViewer.setExpandedState(suite, true);
        }
        clearAutoExpand();
    }

    TestCaseElement current = fAutoScrollTarget;
    fAutoScrollTarget = null;

    TestSuiteElement parent = current == null ? null
            : (TestSuiteElement) fTreeContentProvider.getParent(current);
    if (fAutoClose.isEmpty() || !fAutoClose.getLast().equals(parent)) {
        // we're in a new branch, so let's close old OK branches:
        for (ListIterator<TestSuiteElement> iter = fAutoClose.listIterator(fAutoClose.size()); iter
                .hasPrevious();) {
            TestSuiteElement previousAutoOpened = iter.previous();
            if (previousAutoOpened.equals(parent))
                break;

            if (previousAutoOpened.getStatus() == TestElement.Status.OK) {
                // auto-opened the element, and all children are OK -> auto close
                iter.remove();
                fTreeViewer.collapseToLevel(previousAutoOpened, AbstractTreeViewer.ALL_LEVELS);
            }
        }

        while (parent != null && !fTestRunSession.getTestRoot().equals(parent)
                && fTreeViewer.getExpandedState(parent) == false) {
            fAutoClose.add(parent); // add to auto-opened elements -> close later if STATUS_OK
            parent = (TestSuiteElement) fTreeContentProvider.getParent(parent);
        }
    }
    if (current != null)
        fTreeViewer.reveal(current);
}

From source file:org.eclipse.jubula.client.ui.rcp.views.JBPropertiesPage.java

License:Open Source License

/**
 * Creates a new Tree for this View./*from   ww w .  jav a  2s .  co m*/
 * @param parent the parent composite
 */
private void buildTree(Composite parent) {
    GridData layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.grabExcessHorizontalSpace = true;
    Tree tree = new Tree(parent, SWT.BORDER | SWT.HIDE_SELECTION | SWT.FULL_SELECTION);
    tree.setLayoutData(layoutData);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    m_treeViewer = new TreeViewer(tree);
    // add expand/collapse column
    TreeViewerColumn expandCollapseColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    expandCollapseColumn.getColumn().setText(StringConstants.EMPTY);
    expandCollapseColumn.getColumn().setWidth(20);
    expandCollapseColumn.getColumn().setResizable(false);
    expandCollapseColumn.setLabelProvider(new CellLabelProvider() {
        public void update(ViewerCell cell) {
            // Nothing to display. Nothing to update.
        }
    });
    final int width = m_treeViewer.getTree().getParent().getClientArea().width;

    /* We make sure to have an initial size, just in case. */
    final int area = (width <= 100) ? 100 : width;

    // add property name column
    TreeViewerColumn propertyNameColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    propertyNameColumn.getColumn().setText(Messages.JubulaPropertiesViewProperty);
    propertyNameColumn.getColumn().setWidth((int) (width * 0.36));
    propertyNameColumn.setLabelProvider(new PropertyNameLabelProvider());

    // add property value column
    TreeViewerColumn propertyValueColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    propertyValueColumn.getColumn().setText(Messages.JubulaPropertiesViewValue);
    propertyValueColumn.getColumn().setWidth((int) (width * 0.54));
    propertyValueColumn.setLabelProvider(new PropertyValueLabelProvider());
    propertyValueColumn.setEditingSupport(new PropertiesEditingSupport(m_treeViewer));

    m_treeViewer.addSelectionChangedListener(m_helpContextListener);
    m_treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    m_treeViewer.setContentProvider(new PropertiesContentProvider());
    ColumnViewerToolTipSupport.enableFor(m_treeViewer);
    m_treeViewer.setComparer(new PropertiesElementComparer());
    m_focusCellManager = new TreeViewerFocusCellManager(m_treeViewer,
            new FocusCellOwnerDrawHighlighter(m_treeViewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(m_treeViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(m_treeViewer, m_focusCellManager, actSupport, ColumnViewerEditor.TABBING_VERTICAL
            | ColumnViewerEditor.KEYBOARD_ACTIVATION | ColumnViewerEditor.KEEP_EDITOR_ON_DOUBLE_CLICK);
}

From source file:org.eclipse.jubula.client.ui.rcp.views.JBPropertiesView.java

License:Open Source License

/**
 * Creates a new Tree for this View./*from   w  w w .  j a v  a 2 s .co  m*/
 * @param parent the parent composite
 */
private void buildTree(Composite parent) {
    GridData layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.grabExcessHorizontalSpace = true;
    Tree tree = new Tree(parent, SWT.BORDER | SWT.HIDE_SELECTION | SWT.FULL_SELECTION);
    tree.setLayoutData(layoutData);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    m_treeViewer = new TreeViewer(tree);

    // add expand/collapse column
    TreeViewerColumn expandCollapseColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    expandCollapseColumn.getColumn().setText(StringConstants.EMPTY);
    expandCollapseColumn.getColumn().setWidth(20);
    expandCollapseColumn.getColumn().setResizable(false);
    expandCollapseColumn.setLabelProvider(new CellLabelProvider() {

        public void update(ViewerCell cell) {
            // Nothing to display. Nothing to update.
        }
    });

    // add property name column
    TreeViewerColumn propertyNameColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    propertyNameColumn.getColumn().setText(Messages.JubulaPropertiesViewProperty);
    propertyNameColumn.getColumn().setWidth(175);
    propertyNameColumn.setLabelProvider(new PropertyNameLabelProvider());

    // add property value column
    TreeViewerColumn propertyValueColumn = new TreeViewerColumn(m_treeViewer, SWT.NONE);
    propertyValueColumn.getColumn().setText(Messages.JubulaPropertiesViewValue);
    propertyValueColumn.getColumn().setWidth(300);
    propertyValueColumn.setLabelProvider(new PropertyValueLabelProvider());
    propertyValueColumn.setEditingSupport(new PropertiesEditingSupport(m_treeViewer));

    m_treeViewer.addSelectionChangedListener(m_helpContextListener);

    m_treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    m_treeViewer.setContentProvider(new PropertiesContentProvider());
    ColumnViewerToolTipSupport.enableFor(m_treeViewer);

    m_treeViewer.setComparer(new PropertiesElementComparer());

    m_focusCellManager = new TreeViewerFocusCellManager(m_treeViewer,
            new FocusCellOwnerDrawHighlighter(m_treeViewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(m_treeViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.keyCode == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TreeViewerEditor.create(m_treeViewer, m_focusCellManager, actSupport, ColumnViewerEditor.TABBING_VERTICAL
            | ColumnViewerEditor.KEYBOARD_ACTIVATION | ColumnViewerEditor.KEEP_EDITOR_ON_DOUBLE_CLICK);
}

From source file:org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerView.java

License:Open Source License

/**
 * Filters {@link IDockerContainer} and {@link IDockerImage} using the input
 * text in the search widget of this view.
 * //from w w w . j a  v  a  2 s.  co m
 * @return
 */
private ModifyListener onSearch() {
    return e -> {
        final CommonViewer viewer = DockerExplorerView.this.getCommonViewer();
        final TreePath[] treePaths = viewer.getExpandedTreePaths();
        for (TreePath treePath : treePaths) {
            final Object lastSegment = treePath.getLastSegment();
            if (lastSegment instanceof DockerExplorerContentProvider.DockerContainersCategory
                    || lastSegment instanceof DockerExplorerContentProvider.DockerImagesCategory) {
                viewer.refresh(lastSegment);
                viewer.expandToLevel(treePath, AbstractTreeViewer.ALL_LEVELS);
            }
        }
    };
}

From source file:org.eclipse.linuxtools.internal.rpm.ui.editor.outline.SpecfileQuickOutlineDialog.java

License:Open Source License

private void createUIWidgetTreeViewer(Composite parent) {
    final int style = SWT.H_SCROLL | SWT.V_SCROLL;
    final Tree widget = new Tree(parent, style);
    final GridData data = new GridData(GridData.FILL_BOTH);
    data.heightHint = widget.getItemHeight() * 12;
    widget.setLayoutData(data);/*from  w w  w .jav  a 2  s  . c  om*/
    treeViewer = new TreeViewer(widget);
    treeViewerFilter = new ContainsFilter();
    treeViewer.addFilter(treeViewerFilter);
    SpecfileContentProvider fOutlineContentProvider = new SpecfileContentProvider(editor);
    treeViewer.setContentProvider(fOutlineContentProvider);
    SpecfileLabelProvider fTreeLabelProvider = new SpecfileLabelProvider();
    treeViewer.setLabelProvider(fTreeLabelProvider);
    treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    treeViewer.setUseHashlookup(true);
    treeViewer.setInput(fOutlineContentProvider);
}

From source file:org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphCombo.java

License:Open Source License

/**
 * Constructs a new instance of this class given its parent and a style
 * value describing its behavior and appearance.
 *
 * @param parent//from  w  w  w .j a v a2s . co m
 *            a widget which will be the parent of the new instance (cannot
 *            be null)
 * @param style
 *            the style of widget to construct
 * @param weights
 *            The relative weights of each side of the sash form
 * @since 2.1
 */
public TimeGraphCombo(Composite parent, int style, int[] weights) {
    super(parent, style);
    setLayout(new FillLayout());

    final SashForm sash = new SashForm(this, SWT.NONE);

    fTreeViewer = new TreeViewer(sash, SWT.FULL_SELECTION | SWT.H_SCROLL);
    fTreeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    final Tree tree = fTreeViewer.getTree();
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);

    fTimeGraphViewer = new TimeGraphViewer(sash, SWT.NONE);
    fTimeGraphViewer.setItemHeight(getItemHeight(tree));
    fTimeGraphViewer.setHeaderHeight(tree.getHeaderHeight());
    fTimeGraphViewer.setBorderWidth(tree.getBorderWidth());
    fTimeGraphViewer.setNameWidthPref(0);

    fFilter = new RawViewerFilter();
    addFilter(fFilter);

    fFilterDialog = new TimeGraphFilterDialog(getShell());

    // Feature in Windows. The tree vertical bar reappears when
    // the control is resized so we need to hide it again.
    // Bug in Linux. The tree header height is 0 in constructor,
    // so we need to reset it later when the control is resized.
    tree.addControlListener(new ControlAdapter() {
        private int depth = 0;

        @Override
        public void controlResized(ControlEvent e) {
            if (depth == 0) {
                depth++;
                tree.getVerticalBar().setEnabled(false);
                // this can trigger controlResized recursively
                tree.getVerticalBar().setVisible(false);
                depth--;
            }
            fTimeGraphViewer.setHeaderHeight(tree.getHeaderHeight());
        }
    });

    // ensure synchronization of expanded items between tree and time graph
    fTreeViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            fTimeGraphViewer.setExpandedState((ITimeGraphEntry) event.getElement(), false);
            // queue the alignment update because the tree items may only be
            // actually collapsed after the listeners have been notified
            fVisibleExpandedItems = null; // invalidate the cache
            getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    alignTreeItems(true);
                }
            });
        }

        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ITimeGraphEntry entry = (ITimeGraphEntry) event.getElement();
            fTimeGraphViewer.setExpandedState(entry, true);
            Set<Object> expandedElements = new HashSet<>(Arrays.asList(fTreeViewer.getExpandedElements()));
            for (ITimeGraphEntry child : entry.getChildren()) {
                if (child.hasChildren()) {
                    boolean expanded = expandedElements.contains(child);
                    fTimeGraphViewer.setExpandedState(child, expanded);
                }
            }
            // queue the alignment update because the tree items may only be
            // actually expanded after the listeners have been notified
            fVisibleExpandedItems = null; // invalidate the cache
            getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    alignTreeItems(true);
                }
            });
        }
    });

    // ensure synchronization of expanded items between tree and time graph
    fTimeGraphViewer.addTreeListener(new ITimeGraphTreeListener() {
        @Override
        public void treeCollapsed(TimeGraphTreeExpansionEvent event) {
            fTreeViewer.setExpandedState(event.getEntry(), false);
            alignTreeItems(true);
        }

        @Override
        public void treeExpanded(TimeGraphTreeExpansionEvent event) {
            ITimeGraphEntry entry = event.getEntry();
            fTreeViewer.setExpandedState(entry, true);
            Set<Object> expandedElements = new HashSet<>(Arrays.asList(fTreeViewer.getExpandedElements()));
            for (ITimeGraphEntry child : entry.getChildren()) {
                if (child.hasChildren()) {
                    boolean expanded = expandedElements.contains(child);
                    fTimeGraphViewer.setExpandedState(child, expanded);
                }
            }
            alignTreeItems(true);
        }
    });

    // prevent mouse button from selecting a filler tree item
    tree.addListener(SWT.MouseDown, new Listener() {
        @Override
        public void handleEvent(Event event) {
            TreeItem treeItem = tree.getItem(new Point(event.x, event.y));
            if (treeItem == null || treeItem.getData() == FILLER) {
                event.doit = false;
                List<TreeItem> treeItems = getVisibleExpandedItems(tree, false);
                if (treeItems.size() == 0) {
                    fTreeViewer.setSelection(new StructuredSelection());
                    fTimeGraphViewer.setSelection(null);
                    return;
                }
                // this prevents from scrolling up when selecting
                // the partially visible tree item at the bottom
                tree.select(treeItems.get(treeItems.size() - 1));
                fTreeViewer.setSelection(new StructuredSelection());
                fTimeGraphViewer.setSelection(null);
            }
        }
    });

    // prevent mouse wheel from scrolling down into filler tree items
    tree.addListener(SWT.MouseWheel, new Listener() {
        @Override
        public void handleEvent(Event event) {
            event.doit = false;
            Slider scrollBar = fTimeGraphViewer.getVerticalBar();
            fTimeGraphViewer.setTopIndex(scrollBar.getSelection() - event.count);
            alignTreeItems(false);
        }
    });

    // prevent key stroke from selecting a filler tree item
    tree.addListener(SWT.KeyDown, new Listener() {
        @Override
        public void handleEvent(Event event) {
            List<TreeItem> treeItems = getVisibleExpandedItems(tree, false);
            if (treeItems.size() == 0) {
                fTreeViewer.setSelection(new StructuredSelection());
                event.doit = false;
                return;
            }
            if (event.keyCode == SWT.ARROW_DOWN) {
                int index = Math.min(fTimeGraphViewer.getSelectionIndex() + 1, treeItems.size() - 1);
                fTimeGraphViewer.setSelection((ITimeGraphEntry) treeItems.get(index).getData());
                event.doit = false;
            } else if (event.keyCode == SWT.PAGE_DOWN) {
                int height = tree.getSize().y - tree.getHeaderHeight() - tree.getHorizontalBar().getSize().y;
                int countPerPage = height / getItemHeight(tree);
                int index = Math.min(fTimeGraphViewer.getSelectionIndex() + countPerPage - 1,
                        treeItems.size() - 1);
                fTimeGraphViewer.setSelection((ITimeGraphEntry) treeItems.get(index).getData());
                event.doit = false;
            } else if (event.keyCode == SWT.END) {
                fTimeGraphViewer.setSelection((ITimeGraphEntry) treeItems.get(treeItems.size() - 1).getData());
                event.doit = false;
            }
            if (fTimeGraphViewer.getSelectionIndex() >= 0) {
                fTreeViewer.setSelection(new StructuredSelection(fTimeGraphViewer.getSelection()));
            } else {
                fTreeViewer.setSelection(new StructuredSelection());
            }
            alignTreeItems(false);
        }
    });

    // ensure alignment of top item between tree and time graph
    fTimeGraphViewer.getTimeGraphControl().addControlListener(new ControlAdapter() {
        @Override
        public void controlResized(ControlEvent e) {
            alignTreeItems(false);
        }
    });

    // ensure synchronization of selected item between tree and time graph
    fTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (fInhibitTreeSelection) {
                return;
            }
            if (event.getSelection() instanceof IStructuredSelection) {
                Object selection = ((IStructuredSelection) event.getSelection()).getFirstElement();
                if (selection instanceof ITimeGraphEntry) {
                    fTimeGraphViewer.setSelection((ITimeGraphEntry) selection);
                }
                alignTreeItems(false);
            }
        }
    });

    // ensure synchronization of selected item between tree and time graph
    fTimeGraphViewer.addSelectionListener(new ITimeGraphSelectionListener() {
        @Override
        public void selectionChanged(TimeGraphSelectionEvent event) {
            ITimeGraphEntry entry = fTimeGraphViewer.getSelection();
            fInhibitTreeSelection = true; // block the tree selection changed listener
            if (entry != null) {
                StructuredSelection selection = new StructuredSelection(entry);
                fTreeViewer.setSelection(selection);
            } else {
                fTreeViewer.setSelection(new StructuredSelection());
            }
            fInhibitTreeSelection = false;
            alignTreeItems(false);
        }
    });

    // ensure alignment of top item between tree and time graph
    fTimeGraphViewer.getVerticalBar().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            alignTreeItems(false);
        }
    });

    // ensure alignment of top item between tree and time graph
    fTimeGraphViewer.getTimeGraphControl().addMouseWheelListener(new MouseWheelListener() {
        @Override
        public void mouseScrolled(MouseEvent e) {
            alignTreeItems(false);
        }
    });

    // ensure the tree has focus control when mouse is over it if the time graph had control
    fTreeViewer.getControl().addMouseTrackListener(new MouseTrackAdapter() {
        @Override
        public void mouseEnter(MouseEvent e) {
            if (fTimeGraphViewer.getTimeGraphControl().isFocusControl()) {
                fTreeViewer.getControl().setFocus();
            }
        }
    });

    // ensure the time graph has focus control when mouse is over it if the tree had control
    fTimeGraphViewer.getTimeGraphControl().addMouseTrackListener(new MouseTrackAdapter() {
        @Override
        public void mouseEnter(MouseEvent e) {
            if (fTreeViewer.getControl().isFocusControl()) {
                fTimeGraphViewer.getTimeGraphControl().setFocus();
            }
        }
    });
    fTimeGraphViewer.getTimeGraphScale().addMouseTrackListener(new MouseTrackAdapter() {
        @Override
        public void mouseEnter(MouseEvent e) {
            if (fTreeViewer.getControl().isFocusControl()) {
                fTimeGraphViewer.getTimeGraphControl().setFocus();
            }
        }
    });

    // The filler rows are required to ensure alignment when the tree does not have a
    // visible horizontal scroll bar. The tree does not allow its top item to be set
    // to a value that would cause blank space to be drawn at the bottom of the tree.
    fNumFillerRows = Display.getDefault().getBounds().height / getItemHeight(tree);

    sash.setWeights(weights);
}

From source file:org.eclipse.linuxtools.valgrind.ui.CollapseAction.java

License:Open Source License

@Override
public void run() {
    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
    Object element = selection.getFirstElement();
    viewer.collapseToLevel(element, AbstractTreeViewer.ALL_LEVELS);
}

From source file:org.eclipse.linuxtools.valgrind.ui.CoreMessagesViewer.java

License:Open Source License

/**
 * @param parent  the parent control/*from w  ww . j  av a2s. c  o  m*/
 * @param style   an SWT style
 */
public CoreMessagesViewer(Composite parent, int style) {
    viewer = new TreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | style);
    viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
    if (imageRegistry.getDescriptor(VALGRIND_ERROR) == null) {
        ImageDescriptor d = AbstractUIPlugin.imageDescriptorFromPlugin(RVMatchPlugin.PLUGIN_ID,
                VALGRIND_ERROR_IMAGE);
        if (d != null) {
            imageRegistry.put(VALGRIND_ERROR, d);
        }
    }
    if (imageRegistry.getDescriptor(VALGRIND_INFO) == null) {
        ImageDescriptor d = AbstractUIPlugin.imageDescriptorFromPlugin(RVMatchPlugin.PLUGIN_ID,
                VALGRIND_INFO_IMAGE);
        if (d != null) {
            imageRegistry.put(VALGRIND_INFO, d);
        }
    }
    if (imageRegistry.getDescriptor(LINK) == null) {
        ImageDescriptor d = AbstractUIPlugin.imageDescriptorFromPlugin(RVMatchPlugin.PLUGIN_ID, LINK_IMAGE);
        if (d != null) {
            imageRegistry.put(LINK, d);
        }
    }
    contentProvider = new ITreeContentProvider() {

        @Override
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof Object[]) {
                return (Object[]) parentElement;
            }
            return ((IValgrindMessage) parentElement).getChildren();
        }

        @Override
        public Object getParent(Object element) {
            return ((IValgrindMessage) element).getParent();
        }

        @Override
        public boolean hasChildren(Object element) {
            return getChildren(element).length > 0;
        }

        @Override
        public Object[] getElements(Object inputElement) {
            return getChildren(inputElement);
        }

        @Override
        public void dispose() {
        }

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

    };
    viewer.setContentProvider(contentProvider);

    viewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            return ((IValgrindMessage) element).getText();
        }

        @Override
        public Image getImage(Object element) {
            Image image;
            if (element instanceof ValgrindStackFrame) {
                image = DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_STACKFRAME);
            } else if (element instanceof ValgrindError) {
                image = imageRegistry.get(VALGRIND_ERROR);
            } else if (element instanceof RVMatchCitation) {
                image = imageRegistry.get(LINK);
            } else {
                image = imageRegistry.get(VALGRIND_INFO);
            }
            return image;
        }

    });

    doubleClickListener = event -> {
        Object element = ((TreeSelection) event.getSelection()).getFirstElement();
        if (element instanceof ValgrindStackFrame) {
            ValgrindStackFrame frame = (ValgrindStackFrame) element;
            // locator stored in the frame should be valid for the lifespan of the frame object
            ISourceLocator locator = frame.getSourceLocator();
            ISourceLookupResult result = DebugUITools.lookupSource(frame.getFile(), locator);
            try {
                if (result.getSourceElement() != null)
                    ProfileUIUtils.openEditorAndSelect(result, frame.getLine());
                else // if lookup failed there is good chance we can just open the file by name
                    ProfileUIUtils.openEditorAndSelect(frame.getFile(), frame.getLine(),
                            RVMatchPlugin.getDefault().getProfiledProject());
            } catch (BadLocationException | CoreException e) {
                RVMatchPlugin.log(e);
            }
        } else if (element instanceof RVMatchCitation) {
            RVMatchCitation citation = (RVMatchCitation) element;
            String url = citation.getUrl();
            if (!url.isEmpty()) {
                try {
                    PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser().openURL(new URL(url));
                } catch (PartInitException | MalformedURLException e) {
                    RVMatchPlugin.logErrorMessage("Could not launch webpage " + url);
                }
            }
        } else {
            if (viewer.getExpandedState(element)) {
                viewer.collapseToLevel(element, AbstractTreeViewer.ALL_LEVELS);
            } else {
                viewer.expandToLevel(element, 1);
            }
        }
    };
    viewer.addDoubleClickListener(doubleClickListener);

    final ExpandAction expandAction = new ExpandAction(viewer);
    final CollapseAction collapseAction = new CollapseAction(viewer);

    MenuManager manager = new MenuManager();
    manager.addMenuListener(manager1 -> {
        ITreeSelection selection = (ITreeSelection) viewer.getSelection();
        Object element = selection.getFirstElement();
        if (contentProvider.hasChildren(element)) {
            manager1.add(expandAction);
            manager1.add(collapseAction);
        }
    });

    manager.setRemoveAllWhenShown(true);
    Menu contextMenu = manager.createContextMenu(viewer.getTree());
    viewer.getControl().setMenu(contextMenu);
}

From source file:org.eclipse.linuxtools.valgrind.ui.ExpandAction.java

License:Open Source License

@Override
public void run() {
    IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
    Object element = selection.getFirstElement();
    viewer.expandToLevel(element, AbstractTreeViewer.ALL_LEVELS);
}

From source file:org.eclipse.ltk.internal.ui.refactoring.history.RefactoringHistoryControl.java

License:Open Source License

/**
 * {@inheritDoc}//  w ww  .  ja v  a2 s  .com
 */
public void createControl() {
    RefactoringCore.getHistoryService().connect();
    GridLayout layout = new GridLayout(getContainerColumns(), false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = 0;
    setLayout(layout);
    setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL));
    fSplitterControl = new Splitter(this, SWT.VERTICAL);
    fSplitterControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL));
    createRightButtonBar(this);
    final Composite leftPane = new Composite(fSplitterControl, SWT.NONE);
    layout = new GridLayout();
    layout.marginWidth = 0;
    layout.marginHeight = 2;
    layout.verticalSpacing = 2;
    leftPane.setLayout(layout);
    fHistoryPane = new CompareViewerPane(leftPane, SWT.BORDER | SWT.FLAT);
    fHistoryPane.setText(getHistoryPaneText());
    fHistoryPane.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL));
    fHistoryViewer = createHistoryViewer(fHistoryPane);
    if (!fControlConfiguration.isTimeDisplayed())
        fHistoryViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    fHistoryViewer.getControl().setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL));
    fHistoryViewer.setUseHashlookup(true);
    fHistoryViewer.setContentProvider(getContentProvider());
    fHistoryViewer.setLabelProvider(getLabelProvider());
    fHistoryViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public final void selectionChanged(final SelectionChangedEvent event) {
            final ISelection selection = event.getSelection();
            if (selection instanceof IStructuredSelection)
                handleSelectionChanged((IStructuredSelection) selection);
        }
    });
    fHistoryPane.setContent(fHistoryViewer.getControl());
    createToolBar(fHistoryPane);
    createDetailPane(fSplitterControl);
    final MouseAdapter listener = new MouseAdapter() {

        public void mouseDoubleClick(final MouseEvent event) {
            final Control content = fHistoryPane.getContent();
            if (content != null && content.getBounds().contains(event.x, event.y))
                return;
            final Control control = fHistoryPane.getParent().getParent();
            if (control instanceof Splitter)
                ((Splitter) control).setMaximizedControl(fHistoryPane.getParent());
        }
    };
    addMouseListener(listener);
    fHistoryPane.getTopLeft().addMouseListener(listener);
    fSplitterControl.setWeights(new int[] { 65, 35 });
    createBottomButtonBar(this);
    Dialog.applyDialogFont(this);
}