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

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

Introduction

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

Prototype

public Tree getTree() 

Source Link

Document

Returns this tree viewer's tree control.

Usage

From source file:org.brainwy.liclipsetext.shared_ui.outline.BaseOutlinePage.java

License:Open Source License

public boolean isDisconnectedFromTree() {
    TreeViewer treeViewer2 = getTreeViewer();
    if (treeViewer2 == null) {
        return true;
    }//from   w w w .j ava 2  s.  co  m
    Tree tree = treeViewer2.getTree();
    if (tree == null) {
        return true;
    }
    return tree.isDisposed();
}

From source file:org.brainwy.liclipsetext.shared_ui.outline.BaseOutlinePage.java

License:Open Source License

/**
 * called when model has structural changes, refreshes all items underneath
 * @param items: items to refresh, or null for the whole tree
 * tries to preserve the scrolling/*w  w  w  .j a v a 2  s  .  c om*/
 */
public void refreshItems(Object[] items) {
    try {
        unlinkAll();
        TreeViewer viewer = getTreeViewer();
        if (viewer != null) {
            Tree treeWidget = viewer.getTree();
            if (isDisconnectedFromTree()) {
                return;
            }

            ScrollBar bar = treeWidget.getVerticalBar();
            int barPosition = 0;
            if (bar != null) {
                barPosition = bar.getSelection();
            }
            if (items == null) {
                if (isDisconnectedFromTree()) {
                    return;
                }
                viewer.refresh();

            } else {
                if (isDisconnectedFromTree()) {
                    return;
                }
                for (int i = 0; i < items.length; i++) {
                    viewer.refresh(items[i]);
                }
            }

            if (barPosition != 0) {
                bar.setSelection(Math.min(bar.getMaximum(), barPosition));
            }
        }
    } catch (Throwable e) {
        //things may be disposed...
        Log.log(e);
    } finally {
        relinkAll();
    }
}

From source file:org.brainwy.liclipsetext.shared_ui.outline.BaseOutlinePage.java

License:Open Source License

protected void createActions() {
    linkWithEditor = new OutlineLinkWithEditorAction(this, imageCache, pluginId);

    //---- Collapse all
    Action collapseAll = new Action("Collapse all", IAction.AS_PUSH_BUTTON) {
        @Override//from  www  .  jav  a2  s . co m
        public void run() {
            TreeViewer treeViewer2 = getTreeViewer();
            Tree tree = treeViewer2.getTree();
            tree.setRedraw(false);
            try {
                getTreeViewer().collapseAll();
            } finally {
                tree.setRedraw(true);
            }
        }
    };

    //---- Expand all
    Action expandAll = new Action("Expand all", IAction.AS_PUSH_BUTTON) {
        @Override
        public void run() {
            TreeViewer treeViewer2 = getTreeViewer();
            Tree tree = treeViewer2.getTree();
            tree.setRedraw(false);
            try {
                treeViewer2.expandAll();
            } finally {
                tree.setRedraw(true);
            }
        }
    };

    collapseAll.setImageDescriptor(imageCache.getDescriptor(UIConstants.COLLAPSE_ALL));
    collapseAll.setId("outline.page.collapse");
    expandAll.setImageDescriptor(imageCache.getDescriptor(UIConstants.EXPAND_ALL));
    expandAll.setId("outline.page.expand");

    // Add actions to the toolbar
    IActionBars actionBars = getSite().getActionBars();
    IToolBarManager toolbarManager = actionBars.getToolBarManager();

    OutlineSortByNameAction action = new OutlineSortByNameAction(this, imageCache, pluginId);
    action.setId("outline.page.sort");
    toolbarManager.add(action);
    toolbarManager.add(collapseAll);
    toolbarManager.add(expandAll);

    IMenuManager menuManager = actionBars.getMenuManager();
    menuManager.add(linkWithEditor);
}

From source file:org.brainwy.liclipsetext.shared_ui.outline.BaseOutlinePage.java

License:Open Source License

/**
 * create the outline view widgets/*from w w w  . ja  v a2 s.  co  m*/
 */
@Override
public void createControl(Composite parent) {
    super.createControl(parent); // this creates a tree viewer
    try {
        createParsedOutline();
        // selecting an item in the outline scrolls the document
        selectionListener = new ISelectionChangedListener() {

            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                if (linkWithEditor == null) {
                    return;
                }
                try {
                    unlinkAll();
                    StructuredSelection sel = (StructuredSelection) event.getSelection();

                    boolean alreadySelected = false;
                    if (sel.size() == 1) { // only sync the editing view if it is a single-selection
                        IParsedItem firstElement = (IParsedItem) sel.getFirstElement();
                        ErrorDescription errorDesc = firstElement.getErrorDesc();

                        //select the error
                        if (errorDesc != null && errorDesc.message != null) {
                            int len = errorDesc.errorEnd - errorDesc.errorStart;
                            editorView.setSelection(errorDesc.errorStart, len);
                            alreadySelected = true;
                        }
                    }
                    if (!alreadySelected) {
                        ISimpleNode[] node = getOutlineModel().getSelectionPosition(sel);
                        editorView.revealModelNodes(node);
                    }
                } finally {
                    relinkAll();
                }
            }
        };
        addSelectionChangedListener(selectionListener);
        createActions();

        //OK, instead of using the default selection engine, we recreate it only to handle mouse
        //and key events directly, because it seems that sometimes, SWT creates spurious select events
        //when those shouldn't be created, and there's also a risk of creating loops with the selection,
        //as when one selection arrives when we're linked, we have to perform a selection and doing that
        //selection could in turn trigger a new selection, so, we remove that treatment and only start
        //selections from interactions the user did.
        //see: Cursor jumps to method definition when an error is detected
        //https://sourceforge.net/tracker2/?func=detail&aid=2057092&group_id=85796&atid=577329
        TreeViewer treeViewer = getTreeViewer();
        treeViewer.removeSelectionChangedListener(this);
        Tree tree = treeViewer.getTree();

        tree.addMouseListener(new MouseListener() {

            @Override
            public void mouseDoubleClick(MouseEvent e) {
                tryToMakeSelection();
            }

            @Override
            public void mouseDown(MouseEvent e) {
            }

            @Override
            public void mouseUp(MouseEvent e) {
                tryToMakeSelection();
            }
        });

        tree.addKeyListener(new KeyListener() {

            @Override
            public void keyPressed(KeyEvent e) {
            }

            @Override
            public void keyReleased(KeyEvent e) {
                if (e.keyCode == SWT.ARROW_UP || e.keyCode == SWT.ARROW_DOWN) {
                    tryToMakeSelection();
                }
            }
        });

        onControlCreated.call(getTreeViewer());
        createdCallbacksForControls = callRecursively(onControlCreated, filter, new ArrayList());
    } catch (Throwable e) {
        Log.log(e);
    }
}

From source file:org.brainwy.liclipsetext.shared_ui.tree.PyFilteredTree.java

License:Open Source License

public static PyFilteredTree create(Composite parent, int treeStyle, PatternFilter filter) {
    PyFilteredTree ret;/*from   www.  j ava  2 s  .  co m*/

    try {
        ret = new PyFilteredTree(parent, treeStyle, filter, true);
    } catch (Throwable e) {
        ret = new PyFilteredTree(parent, treeStyle, filter);
    }

    final TreeViewer viewer = ret.getViewer();
    ret.getFilterControl().addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(KeyEvent e) {
            //The superclass will already do the focus, but we also treat it to select some element
            //when down is pressed.
            boolean hasItems = viewer.getTree().getItemCount() > 0;
            if (hasItems && e.keyCode == SWT.ARROW_DOWN) {
                Tree tree = viewer.getTree();
                updateSelectionIfNothingSelected(tree);
                return;
            }
        }

        protected void updateSelectionIfNothingSelected(Tree tree) {
            TreeItem[] sel = tree.getSelection();
            if (sel == null || sel.length == 0) {
                TreeItem[] items = tree.getItems();
                if (items != null && items.length > 0) {
                    tree.setSelection(items[0]);
                }
            }
        }

    });
    return ret;
}

From source file:org.camunda.bpm.modeler.ui.dialog.importer.ModelProblemsDialog.java

License:Open Source License

private void createProblemsTreeView(Composite parent) {

    // clipboard to copy and paste from / to
    final Clipboard clipboard = new Clipboard(parent.getDisplay());

    Composite treeColumnComposite = new Composite(parent, SWT.NONE);
    GridData treeColumnCompositeGridData = new GridData(SWT.FILL, SWT.TOP, true, false);
    treeColumnCompositeGridData.widthHint = 420;
    treeColumnCompositeGridData.heightHint = 128;
    treeColumnComposite.setLayoutData(treeColumnCompositeGridData);

    TreeColumnLayout treeColumnLayout = new TreeColumnLayout();
    treeColumnComposite.setLayout(treeColumnLayout);

    final TreeViewer treeViewer = new TreeViewer(treeColumnComposite,
            SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    Tree tree = treeViewer.getTree();
    tree.setLinesVisible(true);/*w w w.  ja  va  2  s  . c o m*/

    treeViewer.setContentProvider(new ProblemsContentProvider());
    treeViewer.setLabelProvider(new ProblemLabelProvider());

    Menu menu = new Menu(parent.getShell(), SWT.POP_UP);
    final MenuItem copyItem = new MenuItem(menu, SWT.PUSH);
    copyItem.setText("Copy Stacktrace to Clipboard");

    String imageName = ISharedImages.IMG_TOOL_COPY;
    copyItem.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(imageName));

    copyItem.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            IStructuredSelection selection = (IStructuredSelection) treeViewer.getSelection();
            Problem problem = (Problem) selection.getFirstElement();

            copyToClipboard(clipboard, problem);
        }
    });

    treeViewer.getTree().setMenu(menu);

    List<Problem> problems = populateProblems();

    // Expand the tree
    treeViewer.setAutoExpandLevel(2);

    // Provide the input to the ContentProvider
    treeViewer.setInput(problems);
}

From source file:org.chromium.debug.ui.liveedit.LiveEditDiffViewer.java

License:Open Source License

private void configureTreeViewer(TreeViewer treeViewer, TreeViewer opposite, Side side) {
    treeViewer.setContentProvider(new FunctionTreeContentProvider());
    treeViewer.setLabelProvider(new LabelProviderImpl(side));
    treeViewer.addSelectionChangedListener(new SelectionChangeListener(opposite));
    treeViewer.addTreeListener(new TreeListenerImpl(opposite));
    treeViewer.getTree().getVerticalBar().addListener(SWT.Selection, new TreeScrollBarListener(opposite));
}

From source file:org.codecover.eclipse.views.controls.RedundancyViewerFactory.java

License:Open Source License

private static void configureViewer(final TreeViewer viewer, final boolean withTestSessionColumn,
        final Runnable disposeRunnable) {
    TreeColumnLayout layout = new TreeColumnLayout();
    TreeColumn column;//from  w  ww.  j  a va 2s.  c  om

    viewer.getTree().setRedraw(false);

    viewer.getTree().getParent().setLayout(layout);

    // set providers
    viewer.setContentProvider(new ViewerContentProvider(disposeRunnable));
    viewer.setLabelProvider(new ViewerLabelProvider(withTestSessionColumn));

    // add columns to viewer
    viewer.getTree().setHeaderVisible(true);
    // name column
    column = new TreeColumn(viewer.getTree(), SWT.LEAD, Columns.NAME.getIndex(withTestSessionColumn));
    column.setText(Columns.NAME.getText());
    column.setWidth(120);
    layout.setColumnData(column, new ColumnWeightData(52, 120));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_NAME }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            return Collator.getInstance().compare(
                    this.lblProvider.getColumnText(o1, Columns.NAME.getIndex(withTestSessionColumn)),
                    this.lblProvider.getColumnText(o2, Columns.NAME.getIndex(withTestSessionColumn)));
        }
    };
    // test session column (optional)
    if (withTestSessionColumn) {
        column = new TreeColumn(viewer.getTree(), SWT.LEAD,
                Columns.TESTSESSION.getIndex(withTestSessionColumn));
        column.setText(Columns.TESTSESSION.getText());
        column.setWidth(100);
        layout.setColumnData(column, new ColumnWeightData(16, 100));
        new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_NAME }) {

            private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

            @Override
            protected int doCompare(Viewer viewer, Object o1, Object o2) {
                return Collator.getInstance().compare(
                        this.lblProvider.getColumnText(o1, Columns.TESTSESSION.getIndex(withTestSessionColumn)),
                        this.lblProvider.getColumnText(o2,
                                Columns.TESTSESSION.getIndex(withTestSessionColumn)));
            }
        };
    }
    // Redundancy columns:
    column = new TreeColumn(viewer.getTree(), SWT.LEAD, Columns.ST_REDUNDANCY.getIndex(withTestSessionColumn));
    column.setText(Columns.ST_REDUNDANCY.getText());
    column.setWidth(80);
    layout.setColumnData(column, new ColumnWeightData(16, 80));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            String str1 = this.lblProvider.getColumnText(o1,
                    Columns.ST_REDUNDANCY.getIndex(withTestSessionColumn));
            String str2 = this.lblProvider.getColumnText(o2,
                    Columns.ST_REDUNDANCY.getIndex(withTestSessionColumn));
            if (str1.compareTo("NaN") == 0) {
                return 1;
            } else if (str2.compareTo("NaN") == 0) {
                return -1;
            } else {
                double d1 = Double.parseDouble(str1);
                double d2 = Double.parseDouble(str2);
                if (d1 <= d2) {
                    return 1;
                } else {
                    return -1;
                }
            }
        }
    };

    column = new TreeColumn(viewer.getTree(), SWT.LEAD, Columns.BR_REDUNDANCY.getIndex(withTestSessionColumn));
    column.setText(Columns.BR_REDUNDANCY.getText());
    column.setWidth(80);
    layout.setColumnData(column, new ColumnWeightData(16, 80));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            String str1 = this.lblProvider.getColumnText(o1,
                    Columns.BR_REDUNDANCY.getIndex(withTestSessionColumn));
            String str2 = this.lblProvider.getColumnText(o2,
                    Columns.BR_REDUNDANCY.getIndex(withTestSessionColumn));
            if (str1.compareTo("NaN") == 0) {
                return 1;
            } else if (str2.compareTo("NaN") == 0) {
                return -1;
            } else {
                double d1 = Double.parseDouble(str1);
                double d2 = Double.parseDouble(str2);
                if (d1 <= d2) {
                    return 1;
                } else {
                    return -1;
                }
            }
        }
    };

    column = new TreeColumn(viewer.getTree(), SWT.LEAD,
            Columns.COND_REDUNDANCY.getIndex(withTestSessionColumn));
    column.setText(Columns.COND_REDUNDANCY.getText());
    column.setWidth(80);
    layout.setColumnData(column, new ColumnWeightData(16, 80));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            String str1 = this.lblProvider.getColumnText(o1,
                    Columns.COND_REDUNDANCY.getIndex(withTestSessionColumn));
            String str2 = this.lblProvider.getColumnText(o2,
                    Columns.COND_REDUNDANCY.getIndex(withTestSessionColumn));
            if (str1.compareTo("NaN") == 0) {
                return 1;
            } else if (str2.compareTo("NaN") == 0) {
                return -1;
            } else {
                double d1 = Double.parseDouble(str1);
                double d2 = Double.parseDouble(str2);
                if (d1 <= d2) {
                    return 1;
                } else {
                    return -1;
                }
            }
        }
    };

    column = new TreeColumn(viewer.getTree(), SWT.LEAD,
            Columns.LOOP_REDUNDANCY.getIndex(withTestSessionColumn));
    column.setText(Columns.LOOP_REDUNDANCY.getText());
    column.setWidth(80);
    layout.setColumnData(column, new ColumnWeightData(16, 80));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            String str1 = this.lblProvider.getColumnText(o1,
                    Columns.LOOP_REDUNDANCY.getIndex(withTestSessionColumn));
            String str2 = this.lblProvider.getColumnText(o2,
                    Columns.LOOP_REDUNDANCY.getIndex(withTestSessionColumn));
            if (str1.compareTo("NaN") == 0) {
                return 1;
            } else if (str2.compareTo("NaN") == 0) {
                return -1;
            } else {
                double d1 = Double.parseDouble(str1);
                double d2 = Double.parseDouble(str2);
                if (d1 <= d2) {
                    return 1;
                } else {
                    return -1;
                }
            }
        }
    };

    column = new TreeColumn(viewer.getTree(), SWT.LEAD, Columns.REDUNDANCY.getIndex(withTestSessionColumn));
    column.setText(Columns.REDUNDANCY.getText());
    column.setWidth(80);
    layout.setColumnData(column, new ColumnWeightData(16, 80));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            String str1 = this.lblProvider.getColumnText(o1,
                    Columns.REDUNDANCY.getIndex(withTestSessionColumn));
            String str2 = this.lblProvider.getColumnText(o2,
                    Columns.REDUNDANCY.getIndex(withTestSessionColumn));
            if (str1.compareTo("NaN") == 0) {
                return 1;
            } else if (str2.compareTo("NaN") == 0) {
                return -1;
            } else {
                double d1 = Double.parseDouble(str1);
                double d2 = Double.parseDouble(str2);
                if (d1 <= d2) {
                    return 1;
                } else {
                    return -1;
                }
            }
        }
    };

    // Covered Items columns:
    column = new TreeColumn(viewer.getTree(), SWT.LEAD,
            Columns.ST_COVEREDITEMS.getIndex(withTestSessionColumn));
    column.setText(Columns.ST_COVEREDITEMS.getText());
    column.setWidth(60);
    layout.setColumnData(column, new ColumnWeightData(16, 60));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            int a = Integer.parseInt(this.lblProvider.getColumnText(o1,
                    Columns.ST_COVEREDITEMS.getIndex(withTestSessionColumn)));
            int b = Integer.parseInt(this.lblProvider.getColumnText(o2,
                    Columns.ST_COVEREDITEMS.getIndex(withTestSessionColumn)));
            if (a <= b) {
                return 1;
            } else {
                return -1;
            }
        }
    };

    column = new TreeColumn(viewer.getTree(), SWT.LEAD,
            Columns.BR_COVEREDITEMS.getIndex(withTestSessionColumn));
    column.setText(Columns.BR_COVEREDITEMS.getText());
    column.setWidth(60);
    layout.setColumnData(column, new ColumnWeightData(16, 60));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            int a = Integer.parseInt(this.lblProvider.getColumnText(o1,
                    Columns.BR_COVEREDITEMS.getIndex(withTestSessionColumn)));
            int b = Integer.parseInt(this.lblProvider.getColumnText(o2,
                    Columns.BR_COVEREDITEMS.getIndex(withTestSessionColumn)));
            if (a <= b) {
                return 1;
            } else {
                return -1;
            }
        }
    };

    column = new TreeColumn(viewer.getTree(), SWT.LEAD,
            Columns.COND_COVEREDITEMS.getIndex(withTestSessionColumn));
    column.setText(Columns.COND_COVEREDITEMS.getText());
    column.setWidth(60);
    layout.setColumnData(column, new ColumnWeightData(16, 60));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            int a = Integer.parseInt(this.lblProvider.getColumnText(o1,
                    Columns.COND_COVEREDITEMS.getIndex(withTestSessionColumn)));
            int b = Integer.parseInt(this.lblProvider.getColumnText(o2,
                    Columns.COND_COVEREDITEMS.getIndex(withTestSessionColumn)));
            if (a <= b) {
                return 1;
            } else {
                return -1;
            }
        }
    };

    column = new TreeColumn(viewer.getTree(), SWT.LEAD,
            Columns.LOOP_COVEREDITEMS.getIndex(withTestSessionColumn));
    column.setText(Columns.LOOP_COVEREDITEMS.getText());
    column.setWidth(60);
    layout.setColumnData(column, new ColumnWeightData(16, 60));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            int a = Integer.parseInt(this.lblProvider.getColumnText(o1,
                    Columns.LOOP_COVEREDITEMS.getIndex(withTestSessionColumn)));
            int b = Integer.parseInt(this.lblProvider.getColumnText(o2,
                    Columns.LOOP_COVEREDITEMS.getIndex(withTestSessionColumn)));
            if (a <= b) {
                return 1;
            } else {
                return -1;
            }
        }
    };

    column = new TreeColumn(viewer.getTree(), SWT.LEAD, Columns.COVEREDITEMS.getIndex(withTestSessionColumn));
    column.setText(Columns.COVEREDITEMS.getText());
    column.setWidth(60);
    layout.setColumnData(column, new ColumnWeightData(16, 60));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {

        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            int a = Integer.parseInt(
                    this.lblProvider.getColumnText(o1, Columns.COVEREDITEMS.getIndex(withTestSessionColumn)));
            int b = Integer.parseInt(
                    this.lblProvider.getColumnText(o2, Columns.COVEREDITEMS.getIndex(withTestSessionColumn)));
            if (a <= b) {
                return 1;
            } else {
                return -1;
            }
        }
    };

    viewer.getTree().setRedraw(true);
}

From source file:org.codecover.eclipse.views.controls.TestSessionsViewerFactory.java

License:Open Source License

private static void configureViewer(final TreeViewer viewer, final boolean withTestSessionColumn,
        final Runnable disposeRunnable) {
    TreeColumnLayout layout = new TreeColumnLayout();
    TreeColumn column;//from  www .  ja  v  a  2  s. c om

    viewer.getTree().setRedraw(false);

    viewer.getTree().getParent().setLayout(layout);

    // set providers
    viewer.setContentProvider(new ViewerContentProvider(disposeRunnable));
    viewer.setLabelProvider(new ViewerLabelProvider(withTestSessionColumn));

    // add columns to viewer
    viewer.getTree().setHeaderVisible(true);
    // name column
    column = new TreeColumn(viewer.getTree(), SWT.LEAD, Columns.NAME.getIndex(withTestSessionColumn));
    column.setText(Columns.NAME.getText());
    column.setWidth(120);
    layout.setColumnData(column, new ColumnWeightData(52, 120));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_NAME }) {
        private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            return Collator.getInstance().compare(
                    this.lblProvider.getColumnText(o1, Columns.NAME.getIndex(withTestSessionColumn)),
                    this.lblProvider.getColumnText(o2, Columns.NAME.getIndex(withTestSessionColumn)));
        }
    };
    // test session column (optional)
    if (withTestSessionColumn) {
        column = new TreeColumn(viewer.getTree(), SWT.LEAD,
                Columns.TESTSESSION.getIndex(withTestSessionColumn));
        column.setText(Columns.TESTSESSION.getText());
        column.setWidth(100);
        layout.setColumnData(column, new ColumnWeightData(16, 100));
        new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_NAME }) {
            private final ITableLabelProvider lblProvider = (ITableLabelProvider) viewer.getLabelProvider();

            @Override
            protected int doCompare(Viewer viewer, Object o1, Object o2) {
                return Collator.getInstance().compare(
                        this.lblProvider.getColumnText(o1, Columns.TESTSESSION.getIndex(withTestSessionColumn)),
                        this.lblProvider.getColumnText(o2,
                                Columns.TESTSESSION.getIndex(withTestSessionColumn)));
            }
        };
    }
    // date column
    column = new TreeColumn(viewer.getTree(), SWT.LEAD, Columns.DATE.getIndex(withTestSessionColumn));
    column.setText(Columns.DATE.getText());
    column.setWidth(80);
    layout.setColumnData(column, new ColumnWeightData(16, 80));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {
        private final DateComparator comparator = new DateComparator();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            return this.comparator.compare(viewer, o1, o2);
        }
    };
    // time column
    column = new TreeColumn(viewer.getTree(), SWT.LEAD, Columns.TIME.getIndex(withTestSessionColumn));
    column.setText(Columns.TIME.getText());
    column.setWidth(60);
    layout.setColumnData(column, new ColumnWeightData(16, 60));
    new ViewerSorter(viewer, column, new String[] { UPDATE_PROPERTY_DATE }) {
        private final DateComparator comparator = new DateComparator();

        @Override
        protected int doCompare(Viewer viewer, Object o1, Object o2) {
            return this.comparator.compare(viewer, o1, o2);
        }
    };

    viewer.getTree().setRedraw(true);
}

From source file:org.cs3.pdt.analysis.views.AbstractAnalysisView.java

License:Open Source License

protected TreeViewer createResultTreeViewer(Composite parent) {
    final TreeViewer treeViewer = new TreeViewer(parent, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    GridData gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessVerticalSpace = true;
    gridData.verticalAlignment = GridData.FILL;

    Tree tree = treeViewer.getTree();

    tree.addMouseListener(new MouseListener() {

        @Override//  w ww.j av  a 2  s. com
        public void mouseUp(MouseEvent e) {
        }

        @Override
        public void mouseDown(MouseEvent e) {
        }

        @Override
        public void mouseDoubleClick(MouseEvent e) {
            ISelection selection = treeViewer.getSelection();
            if (selection instanceof ITreeSelection) {
                Object o = ((ITreeSelection) selection).getFirstElement();
                if (o instanceof IResult) {
                    selectResultInEditor((IResult) o);
                }
            }
        }
    });
    tree.setLayoutData(gridData);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);

    resultContentProvider = new ResultTableContentProvider(getResultModel());
    treeViewer.setContentProvider(resultContentProvider);
    treeViewer.setInput(new Object());

    resultTreeViewerColumns = new TreeViewerColumn[3];

    for (int i = 0; i < resultTreeViewerColumns.length; i++) {
        resultTreeViewerColumns[i] = new TreeViewerColumn(treeViewer, SWT.NONE);
        resultTreeViewerColumns[i].getColumn().setMoveable(true);
    }

    resultTreeViewerColumns[0].getColumn().setWidth(300);
    resultTreeViewerColumns[0].getColumn().setText("Description");
    resultTreeViewerColumns[0].setLabelProvider(new ResultTableDescriptionColumnLabelProvider());

    resultTreeViewerColumns[1].getColumn().setWidth(150);
    resultTreeViewerColumns[1].getColumn().setText("Resource");
    resultTreeViewerColumns[1].setLabelProvider(new ResultTableResourceColumnLabelProvider());

    resultTreeViewerColumns[2].getColumn().setWidth(100);
    resultTreeViewerColumns[2].getColumn().setText("Location");
    resultTreeViewerColumns[2].setLabelProvider(new ResultTableLocationColumnLabelProvider());

    return treeViewer;
}