Example usage for org.eclipse.jface.viewers TreeViewerColumn TreeViewerColumn

List of usage examples for org.eclipse.jface.viewers TreeViewerColumn TreeViewerColumn

Introduction

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

Prototype

public TreeViewerColumn(TreeViewer viewer, TreeColumn column) 

Source Link

Document

Creates a new viewer column for the given TreeViewer on the given TreeColumn .

Usage

From source file:org.eclipse.tracecompass.extension.internal.callstack.ui.views.stacktable.CallStackTableView.java

License:Open Source License

@Override
public void createPartControl(@Nullable Composite parent) {
    super.createPartControl(parent);
    SashForm sf = new SashForm(parent, SWT.NONE);
    /* Build the tree viewer part of the view */
    TreeViewer treeViewer = new TreeViewer(sf, SWT.FULL_SELECTION | SWT.H_SCROLL);
    fTreeViewer = treeViewer;//from   www.j  a v a 2s. c o m
    treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    final Tree tree = treeViewer.getTree();
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);
    TreeViewerColumn column = new TreeViewerColumn(treeViewer, SWT.LEFT);
    column.getColumn().setText("CallSite");
    column.getColumn().setWidth(50);
    treeViewer.setContentProvider(new TreeContentProvider());
    treeViewer.setLabelProvider(new TreeLabelProvider());
}

From source file:org.eclipse.tracecompass.extension.internal.virtual.machine.analysis.ui.views.fusedvmview.SelectMachineDialog.java

License:Open Source License

private TreeViewer doCreateTreeViewer(Composite parent, Map<String, Machine> machines) {
    fCheckboxTreeViewer = new CheckboxTreeViewer(parent, SWT.BORDER);

    fContentProvider = new TmfNavigatorContentProvider() {

        @Override/*from  w  w w  .  j a v a  2 s. c o  m*/
        public Object getParent(Object element) {
            if (element instanceof Machine) {
                Machine host = ((Machine) element).getHost();
                if (host != null) {
                    return host;
                }
                return element;
            } else if (element instanceof Processor) {
                return ((Processor) element).getMachine();
            }
            return null;
        }

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

        @Override
        public synchronized Object[] getChildren(Object parentElement) {
            if (parentElement instanceof List) {
                return ((List<?>) parentElement).toArray();
            } else if (parentElement instanceof Machine) {
                Machine m = (Machine) parentElement;
                Set<Processor> cpus = m.getCpus();
                if (!cpus.isEmpty()) {
                    Object[] array = { cpus, m.getContainers() };
                    return array;
                }
            } else if (parentElement instanceof Set) {
                return ((Set<?>) parentElement).toArray();
            }
            return null;
        }

        @Override
        public boolean hasChildren(Object element) {
            Object[] children = getChildren(element);
            return children != null && children.length > 0;
        }

    };
    fCheckboxTreeViewer.setContentProvider(fContentProvider);
    fLabelProvider = new TmfNavigatorLabelProvider() {
        @Override
        public String getText(Object arg0) {
            if (arg0 instanceof Set<?>) {
                Set<?> set = (Set<?>) arg0;
                if (!set.isEmpty()) {
                    for (Object o : set) {
                        if (o instanceof Machine) {
                            return Attributes.CONTAINERS;
                        } else if (o instanceof Processor) {
                            return Attributes.CPUS;
                        }
                    }
                }
            }
            return arg0.toString();
        }
    };
    fCheckboxTreeViewer.setLabelProvider(fLabelProvider);
    fCheckboxTreeViewer.setComparator(new ViewerComparator());

    final Tree tree = fCheckboxTreeViewer.getTree();
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    tree.setLayoutData(gd);
    tree.setHeaderVisible(true);

    final TreeViewerColumn column = new TreeViewerColumn(fCheckboxTreeViewer, SWT.NONE);
    column.getColumn().setText(Messages.FusedVMView_SelectMachineActionNameText);
    column.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof String) {
                return (String) element;
            }
            return fLabelProvider.getText(element);
        }

        @Override
        public Image getImage(Object element) {
            return fLabelProvider.getImage(element);
        }
    });

    // Populate the list with the machines' names
    List<Machine> listMachines = new ArrayList<>(machines.values());
    fCheckboxTreeViewer.setInput(listMachines);
    column.getColumn().pack();

    fCheckboxTreeViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            Object root = null;
            if (element instanceof Machine) {
                Machine m = (Machine) element;
                Machine host = m.getHost();
                if (host == null) {
                    /* We are the root of a machine */
                    m.setHighlighted(event.getChecked());
                    Set<Processor> cpus = m.getCpus();
                    for (Processor cpu : cpus) {
                        cpu.setHighlighted(event.getChecked());
                    }
                    Set<Machine> containers = m.getContainers();
                    for (Machine container : containers) {
                        container.setHighlighted(event.getChecked());
                    }
                } else {
                    /* We are at a container */
                    m.setHighlighted(event.getChecked());
                    host.setHighlighted(host.isChecked());
                }
            } else if (element instanceof Processor) {
                Boolean checked = event.getChecked();
                ((Processor) element).setHighlighted(checked);
                Object ancestor = fContentProvider.getParent(element);
                if (ancestor instanceof Machine) {
                    Machine m = (Machine) ancestor;
                    m.setHighlighted(m.isChecked());
                }
            } else if (element instanceof Set<?>) {
                /* We are looking at a set of containers or cpus */
                Set<?> set = (Set<?>) element;
                if (!set.isEmpty()) {
                    for (Object o : set) {
                        if (o instanceof Machine) {
                            ((Machine) o).setHighlighted(event.getChecked());
                        } else if (o instanceof Processor) {
                            ((Processor) o).setHighlighted(event.getChecked());
                        }
                        root = fContentProvider.getParent(o);
                    }
                }
            }
            if (root == null) {
                root = fContentProvider.getParent(element);
            }
            ((Machine) root).setHighlighted(((Machine) root).isChecked());
            /* Update the view because the selection changed */
            updateCheckedNodes(root);
        }
    });

    /* Initial setting of the checked state when we open the dialog */
    for (Machine m : listMachines) {
        updateCheckedNodes(m);
    }

    return fCheckboxTreeViewer;
}

From source file:org.eclipse.tracecompass.internal.tmf.ui.project.dialogs.offset.OffsetDialog.java

License:Open Source License

private TreeViewerColumn createTreeViewerColumn(String title, int style) {
    final TreeViewerColumn viewerColumn = new TreeViewerColumn(fViewer.getViewer(), style);
    final TreeColumn column = viewerColumn.getColumn();
    column.setText(title);/*w w  w.  jav a 2s  . c  o m*/
    column.setResizable(true);
    return viewerColumn;
}

From source file:org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.TmfStatisticsViewer.java

License:Open Source License

/**
 * Initialize the content that will be drawn in this viewer
 *
 * @param parent/*from   w ww.j  av  a 2 s  . co  m*/
 *            The parent of the control to create
 */
protected void initContent(Composite parent) {

    final List<TmfBaseColumnData> columnDataList = getColumnDataProvider().getColumnData();

    fSash = new SashForm(parent, SWT.HORIZONTAL);

    fTreeViewer = new TreeViewer(fSash, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    fPieChartViewer = new TmfPieChartViewer(fSash);
    fPieChartViewer.addEventTypeSelectionListener(new Listener() {

        @Override
        public void handleEvent(Event event) {
            String eventTypeName = event.text;
            if (getStatisticData().getRootNode() == null || fTreeViewer.getTree() == null) {
                return;
            }
            /* Get all the nodes corresponding to the event name */
            List<TmfStatisticsTreeNode> nodes = (List<TmfStatisticsTreeNode>) getStatisticData().getRootNode()
                    .findChildren(eventTypeName, true);
            if (nodes.isEmpty()) {
                /* Shouldn't happen, except for when selecting "Others" */
                return;
            }
            /* Only select the first in the collection */
            fTreeViewer.setSelection(new StructuredSelection(nodes.get(0)), true);
        }
    });

    /* Make sure the sash is split in 2 equal parts */
    fSash.setWeights(new int[] { 100, 100 });

    fTreeViewer.setContentProvider(new TmfTreeContentProvider());
    fTreeViewer.getTree().setHeaderVisible(true);
    fTreeViewer.setUseHashlookup(true);

    // Creates the columns defined by the column data provider
    for (final TmfBaseColumnData columnData : columnDataList) {
        final TreeViewerColumn treeColumn = new TreeViewerColumn(fTreeViewer, columnData.getAlignment());
        treeColumn.getColumn().setText(columnData.getHeader());
        treeColumn.getColumn().setWidth(columnData.getWidth());
        treeColumn.getColumn().setToolTipText(columnData.getTooltip());

        // If is dummy column
        if (columnData == columnDataList.get(TmfBaseColumnDataProvider.StatsColumn.DUMMY.getIndex())) {
            treeColumn.getColumn().setResizable(false);
        }

        // A comparator is defined.
        if (columnData.getComparator() != null) {
            // Adds a listener on the columns header for sorting purpose.
            treeColumn.getColumn().addSelectionListener(new SelectionAdapter() {

                private ViewerComparator reverseComparator;

                @Override
                public void widgetSelected(SelectionEvent e) {
                    // Initializes the reverse comparator once.
                    if (reverseComparator == null) {
                        reverseComparator = new ViewerComparator() {
                            @Override
                            public int compare(Viewer viewer, Object e1, Object e2) {
                                return -1 * columnData.getComparator().compare(viewer, e1, e2);
                            }
                        };
                    }

                    if (fTreeViewer.getTree().getSortDirection() == SWT.UP
                            || fTreeViewer.getTree().getSortColumn() != treeColumn.getColumn()) {
                        /*
                         * Puts the descendant order if the old order was up
                         * or if the selected column has changed.
                         */
                        fTreeViewer.setComparator(columnData.getComparator());
                        fTreeViewer.getTree().setSortDirection(SWT.DOWN);
                    } else {
                        /*
                         * Puts the ascendant ordering if the selected
                         * column hasn't changed.
                         */
                        fTreeViewer.setComparator(reverseComparator);
                        fTreeViewer.getTree().setSortDirection(SWT.UP);
                    }
                    fTreeViewer.getTree().setSortColumn(treeColumn.getColumn());
                }
            });
        }
        treeColumn.setLabelProvider(columnData.getLabelProvider());
    }

    // Handler that will draw the percentages and the bar charts.
    fTreeViewer.getTree().addListener(SWT.EraseItem, new Listener() {
        @Override
        public void handleEvent(Event event) {
            if (columnDataList.get(event.index).getPercentageProvider() != null) {

                TmfStatisticsTreeNode node = (TmfStatisticsTreeNode) event.item.getData();

                // If node is hidden, exit immediately.
                if (TmfBaseColumnDataProvider.HIDDEN_FOLDER_LEVELS.contains(node.getName())) {
                    return;
                }

                // Otherwise, get percentage and draw bar and text if
                // applicable.
                double percentage = columnDataList.get(event.index).getPercentageProvider().getPercentage(node);

                // The item is selected.
                if ((event.detail & SWT.SELECTED) > 0) {
                    // Draws our own background to avoid overwriting the
                    // bar.
                    event.gc.fillRectangle(event.x, event.y, event.width, event.height);
                    event.detail &= ~SWT.SELECTED;
                }

                // Drawing the percentage text
                // if events are present in top node
                // and the current node is not the top node
                // and if is total or partial events column.
                // If not, exit the method.
                if (!((event.index == TmfBaseColumnDataProvider.StatsColumn.TOTAL.getIndex()
                        || event.index == TmfBaseColumnDataProvider.StatsColumn.PARTIAL.getIndex())
                        && node != node.getTop())) {
                    return;
                }

                long eventValue = event.index == TmfBaseColumnDataProvider.StatsColumn.TOTAL.getIndex()
                        ? node.getTop().getValues().getTotal()
                        : node.getTop().getValues().getPartial();

                if (eventValue != 0) {

                    int oldAlpha = event.gc.getAlpha();
                    Color oldForeground = event.gc.getForeground();
                    Color oldBackground = event.gc.getBackground();

                    // Bar to draw
                    if (percentage != 0) {
                        /*
                         * Draws a transparent gradient rectangle from the
                         * color of foreground and background.
                         */
                        int barWidth = (int) ((fTreeViewer.getTree().getColumn(event.index).getWidth() - 8)
                                * percentage);
                        event.gc.setAlpha(64);
                        event.gc.setForeground(event.item.getDisplay().getSystemColor(SWT.COLOR_BLUE));
                        event.gc.setBackground(
                                event.item.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
                        event.gc.fillGradientRectangle(event.x, event.y, barWidth, event.height, true);
                        event.gc.drawRectangle(event.x, event.y, barWidth, event.height);

                        // Restore old values
                        event.gc.setBackground(oldBackground);
                        event.gc.setAlpha(oldAlpha);
                        event.detail &= ~SWT.BACKGROUND;

                    }

                    String percentageText = TmfStatisticsFormatter.toPercentageText(percentage);
                    String absoluteNumberText = TmfStatisticsFormatter.toColumnData(node,
                            TmfBaseColumnDataProvider.StatsColumn.getColumn(event.index));

                    if (event.width > event.gc.stringExtent(percentageText).x
                            + event.gc.stringExtent(absoluteNumberText).x) {
                        int textHeight = event.gc.stringExtent(percentageText).y;
                        event.gc.setForeground(event.item.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
                        event.gc.drawText(percentageText, event.x, event.y + (event.height - textHeight) / 2,
                                true);
                    }

                    // Restores old values
                    event.gc.setForeground(oldForeground);

                }
            }
        }

    });

    // Initializes the comparator parameters
    fTreeViewer.setComparator(columnDataList.get(0).getComparator());
    fTreeViewer.getTree().setSortColumn(fTreeViewer.getTree().getColumn(0));
    fTreeViewer.getTree().setSortDirection(SWT.DOWN);
}

From source file:org.eclipse.tracecompass.tmf.ui.project.wizards.SelectRootNodeWizardPage.java

License:Open Source License

private TreeViewer doCreateTreeViewer(Composite parent) {
    fCheckboxTreeViewer = new CheckboxTreeViewer(parent, SWT.BORDER);

    fContentProvider = new TmfNavigatorContentProvider() {

        @Override/*from  w  w w.  j a  v  a2s.c  o  m*/
        public Object[] getElements(Object inputElement) {
            return getChildren(inputElement);
        }

        @Override
        public synchronized Object[] getChildren(Object parentElement) {
            if (parentElement instanceof TmfExperimentElement) {
                return ((TmfExperimentElement) parentElement).getTraces().toArray();
            }
            return null;
        }

        @Override
        public boolean hasChildren(Object element) {
            if (element instanceof TmfExperimentElement) {
                return !(((TmfExperimentElement) element).getTraces().isEmpty());
            }
            return false;
        }
    };
    fCheckboxTreeViewer.setContentProvider(fContentProvider);
    fLabelProvider = new TmfNavigatorLabelProvider();
    fCheckboxTreeViewer.setLabelProvider(fLabelProvider);
    fCheckboxTreeViewer.setComparator(new ViewerComparator());

    final Tree tree = fCheckboxTreeViewer.getTree();
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    tree.setLayoutData(gd);
    tree.setHeaderVisible(true);

    final TreeViewerColumn column = new TreeViewerColumn(fCheckboxTreeViewer, SWT.NONE);
    column.getColumn().setText(Messages.SelectRootNodeWizardPage_TraceColumnHeader);
    column.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return fLabelProvider.getText(element);
        }

        @Override
        public Image getImage(Object element) {
            return fLabelProvider.getImage(element);
        }
    });

    // Populate the list of traces from the experiment
    fCheckboxTreeViewer.setInput(fExperiment);
    column.getColumn().pack();

    fCheckboxTreeViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            // Uncheck all elements
            for (Object checkedElement : fCheckboxTreeViewer.getCheckedElements()) {
                fCheckboxTreeViewer.setChecked(checkedElement, false);
            }
            fCheckboxTreeViewer.setChecked(element, event.getChecked());
            setPageComplete(event.getChecked());
        }
    });

    setPageComplete(true);
    // Checks the first element by default
    fCheckboxTreeViewer.getTree().getItem(0).setChecked(true);
    return fCheckboxTreeViewer;
}

From source file:org.eclipse.tracecompass.tmf.ui.project.wizards.SelectTracesWizardPage.java

License:Open Source License

private TreeViewer doCreateTreeViewer(Composite parent) {
    fCheckboxTreeViewer = new CheckboxTreeViewer(parent, SWT.BORDER);
    fContentProvider = new TmfNavigatorContentProvider() {

        @Override/* ww  w  . ja  va  2  s.co m*/
        public Object[] getElements(Object inputElement) {
            return getChildren(inputElement);
        }

        @Override
        public synchronized Object[] getChildren(Object parentElement) {
            // We only care about the content of trace folders
            if (parentElement instanceof TmfTraceFolder) {
                Object[] children = super.getChildren(parentElement);
                List<ITmfProjectModelElement> filteredChildren = new ArrayList<>();
                for (Object child : children) {
                    if (child instanceof TmfTraceElement) {
                        TmfTraceElement traceElement = (TmfTraceElement) child;
                        String traceType = traceElement.getTraceType();
                        if (traceType != null && TmfTraceType.getTraceType(traceType) != null) {
                            filteredChildren.add(traceElement);
                        }
                    } else if (child instanceof TmfTraceFolder) {
                        filteredChildren.add((TmfTraceFolder) child);
                    }
                }
                return filteredChildren.toArray();
            }
            return null;
        }

        @Override
        public boolean hasChildren(Object element) {
            Object[] children = getChildren(element);
            return children != null && children.length > 0;
        }
    };
    fCheckboxTreeViewer.setContentProvider(fContentProvider);
    fLabelProvider = new TmfNavigatorLabelProvider();
    fCheckboxTreeViewer.setLabelProvider(fLabelProvider);
    fCheckboxTreeViewer.setSorter(new ViewerSorter());

    final Tree tree = fCheckboxTreeViewer.getTree();
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    tree.setLayoutData(gd);
    tree.setHeaderVisible(true);

    final TreeViewerColumn column = new TreeViewerColumn(fCheckboxTreeViewer, SWT.NONE);
    column.getColumn().setWidth(COLUMN_WIDTH);
    column.getColumn().setText(Messages.SelectTracesWizardPage_TraceColumnHeader);
    column.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return fLabelProvider.getText(element);
        }

        @Override
        public Image getImage(Object element) {
            return fLabelProvider.getImage(element);
        }
    });

    // Get the list of traces already part of the experiment
    fPreviousTraces = new HashMap<>();
    for (ITmfProjectModelElement child : fExperiment.getChildren()) {
        if (child instanceof TmfTraceElement) {
            TmfTraceElement trace = (TmfTraceElement) child;
            String name = trace.getElementPath();
            fPreviousTraces.put(name, trace);
        }
    }

    // Populate the list of traces to choose from
    Set<String> keys = fPreviousTraces.keySet();
    TmfTraceFolder traceFolder = fProject.getTracesFolder();
    fCheckboxTreeViewer.setInput(traceFolder);

    // Set the checkbox for the traces already included
    setCheckedAlreadyIncludedTraces(keys, fContentProvider.getElements(fCheckboxTreeViewer.getInput()));

    fCheckboxTreeViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            setSubtreeChecked(element, event.getChecked());
            maintainCheckIntegrity(element);
        }
    });

    return fCheckboxTreeViewer;
}

From source file:org.eclipse.ui.ide.markers.compatibility.internal.ExtendedMarkersView.java

License:Open Source License

/**
 * Create the columns for the receiver./*from   w  ww  . j  a  v  a2s.  c  o m*/
 * 
 * @param currentColumns
 *            the columns to refresh
 */
private void createColumns(TreeColumn[] currentColumns) {

    Tree tree = viewer.getTree();
    TableLayout layout = new TableLayout();

    MarkerField[] fields = builder.getVisibleFields();

    for (int i = 0; i < fields.length; i++) {
        MarkerField markerField = fields[i];

        // Take into account the expansion indicator
        int columnWidth = markerField.getDefaultColumnWidth(tree);

        if (i == 0) {
            // Compute and store a font metric
            GC gc = new GC(tree);
            gc.setFont(tree.getFont());
            FontMetrics fontMetrics = gc.getFontMetrics();
            gc.dispose();
            columnWidth = Math.max(columnWidth, fontMetrics.getAverageCharWidth() * 5);
        }

        layout.addColumnData(new ColumnPixelData(columnWidth, true, true));
        TreeViewerColumn column;
        if (i < currentColumns.length)
            column = new TreeViewerColumn(viewer, currentColumns[i]);
        else {
            column = new TreeViewerColumn(viewer, SWT.NONE);
            column.getColumn().setResizable(true);
            column.getColumn().setMoveable(true);
            column.getColumn().addSelectionListener(getHeaderListener());
        }

        column.getColumn().setData(MARKER_FIELD, markerField);
        // Show the help in the first column
        column.setLabelProvider(new MarkerColumnLabelProvider(markerField, i == 0));
        column.getColumn().setText(markerField.getColumnHeaderText());
        column.getColumn().setToolTipText(markerField.getColumnTooltipText());
        column.getColumn().setImage(markerField.getColumnHeaderImage());

        EditingSupport support = markerField.getEditingSupport(viewer);
        if (support != null)
            column.setEditingSupport(support);

        if (builder.getPrimarySortField().equals(markerField))
            updateDirectionIndicator(column.getColumn(), markerField);

    }

    // Remove extra columns
    if (currentColumns.length > fields.length) {
        for (int i = fields.length; i < currentColumns.length; i++) {
            currentColumns[i].dispose();

        }
    }

    viewer.getTree().setLayout(layout);
    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    tree.layout(true);

}

From source file:org.eclipse.ui.internal.views.markers.ExtendedMarkersView.java

License:Open Source License

/**
 * Create the columns for the receiver./*from  w  ww . ja va 2 s  . c om*/
 * 
 * @param currentColumns
 *            the columns to refresh
 * @param widths 
 */
private void createColumns(TreeColumn[] currentColumns, int[] widths) {

    Tree tree = viewer.getTree();
    TableLayout layout = new TableLayout();

    MarkerField[] fields = generator.getVisibleFields();

    for (int i = 0; i < fields.length; i++) {
        MarkerField markerField = fields[i];
        TreeViewerColumn column = null;
        if (i < currentColumns.length)
            column = new TreeViewerColumn(viewer, currentColumns[i]);
        else {
            column = new TreeViewerColumn(viewer, SWT.NONE);
            column.getColumn().setResizable(true);
            column.getColumn().setMoveable(true);
            column.getColumn().addSelectionListener(getHeaderListener());
        }

        column.getColumn().setData(MARKER_FIELD, markerField);
        // Show the help in the first column
        column.setLabelProvider(new MarkerColumnLabelProvider(markerField));
        column.getColumn().setText(markerField.getColumnHeaderText());
        column.getColumn().setToolTipText(markerField.getColumnTooltipText());
        column.getColumn().setImage(markerField.getColumnHeaderImage());

        EditingSupport support = markerField.getEditingSupport(viewer);
        if (support != null)
            column.setEditingSupport(support);

        if (builder.getPrimarySortField().equals(markerField))
            updateDirectionIndicator(column.getColumn(), markerField);

        IMemento columnWidths = null;
        if (memento != null) {
            columnWidths = memento.getChild(TAG_COLUMN_WIDTHS);
        }

        //adjust the column width
        int columnWidth = i < widths.length ? widths[i] : -1;
        columnWidth = getFieldWidth(markerField, columnWidth, false);
        if (columnWidths != null) {
            // save it
            columnWidths.putInteger(markerField.getConfigurationElement()
                    .getAttribute(MarkerSupportInternalUtilities.ATTRIBUTE_ID), columnWidth);
        }
        // Take trim into account if we are using the default value, but not
        // if it is restored.
        if (columnWidth < 0)
            layout.addColumnData(new ColumnPixelData(markerField.getDefaultColumnWidth(tree), true, true));
        else
            layout.addColumnData(new ColumnPixelData(columnWidth, true));
    }

    // Remove extra columns
    if (currentColumns.length > fields.length) {
        for (int i = fields.length; i < currentColumns.length; i++) {
            currentColumns[i].dispose();
        }
    }

    viewer.getTree().setLayout(layout);
    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    tree.layout(true);

}

From source file:org.eclipse.ui.internal.wizards.datatransfer.SmartImportRootWizardPage.java

License:Open Source License

/**
 * @param res//www  .j  a  v a 2s . c o m
 */
private void createProposalsGroup(Composite parent) {
    Composite res = new Composite(parent, SWT.NONE);
    GridLayoutFactory.fillDefaults().numColumns(2).applyTo(res);
    PatternFilter patternFilter = new PatternFilter();
    patternFilter.setIncludeLeadingWildcard(true);
    FilteredTree filterTree = new FilteredTree(res, SWT.BORDER | SWT.CHECK, patternFilter, true) {
        @Override
        public CheckboxTreeViewer doCreateTreeViewer(Composite treeParent, int style) {
            return new CheckboxTreeViewer(treeParent, style);
        }
    };
    tree = (CheckboxTreeViewer) filterTree.getViewer();
    GridData treeGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    treeGridData.heightHint = 90;
    tree.getControl().setLayoutData(treeGridData);
    tree.setContentProvider(new ITreeContentProvider() {
        @Override
        public Object[] getElements(Object inputElement) {
            Map<File, ?> potentialProjects = (Map<File, ?>) inputElement;
            return potentialProjects.keySet().toArray(new File[potentialProjects.size()]);
        }

        @Override
        public Object[] getChildren(Object parentElement) {
            return null;
        }

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

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

    });
    tree.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer v, Object o1, Object o2) {
            return ((File) o1).getAbsolutePath().compareTo(((File) o2).getAbsolutePath());
        }
    });
    tree.setCheckStateProvider(new ICheckStateProvider() {
        @Override
        public boolean isGrayed(Object element) {
            return false;
        }

        @Override
        public boolean isChecked(Object element) {
            return getWizard().getImportJob() == null
                    || getWizard().getImportJob().getDirectoriesToImport() == null
                    || getWizard().getImportJob().getDirectoriesToImport().contains(element);
        }
    });
    tree.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            if (SmartImportRootWizardPage.this.alreadyExistingProjects.contains(event.getElement())) {
                tree.setChecked(event.getElement(), false);
            } else {
                proposalsSelectionChanged();
            }
        }
    });

    tree.getTree().setHeaderVisible(true);
    ViewerColumn pathColumn = new TreeViewerColumn(tree, SWT.NONE);
    pathColumn.setLabelProvider(new FolderForProjectsLabelProvider());
    tree.getTree().getColumn(0).setText(DataTransferMessages.SmartImportProposals_folder);
    tree.getTree().getColumn(0).setWidth(400);
    ViewerColumn projectTypeColumn = new TreeViewerColumn(tree, SWT.NONE);
    projectTypeColumn.setLabelProvider(new ProjectConfiguratorLabelProvider());
    tree.getTree().getColumn(1).setText(DataTransferMessages.SmartImportProposals_importAs);
    tree.getTree().getColumn(1).setWidth(250);

    Composite selectionButtonsGroup = new Composite(res, SWT.NONE);
    GridLayoutFactory.fillDefaults().applyTo(selectionButtonsGroup);
    selectionButtonsGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
    Button selectAllButton = new Button(selectionButtonsGroup, SWT.PUSH);
    setButtonLayoutData(selectAllButton);
    selectAllButton.setText(DataTransferMessages.DataTransfer_selectAll);
    selectAllButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            tree.setCheckedElements(SmartImportRootWizardPage.this.notAlreadyExistingProjects.toArray());
            proposalsSelectionChanged();
        }
    });
    Button deselectAllButton = new Button(selectionButtonsGroup, SWT.PUSH);
    setButtonLayoutData(deselectAllButton);
    deselectAllButton.setText(DataTransferMessages.DataTransfer_deselectAll);
    deselectAllButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            tree.setCheckedElements(new Object[0]);
            proposalsSelectionChanged();
        }
    });

    selectionSummary = new Label(selectionButtonsGroup, SWT.NONE);
    selectionSummary.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, true, 1, 1));
    selectionSummary.setText(NLS.bind(DataTransferMessages.SmartImportProposals_selectionSummary, 0, 0));
    Button hideProjectsAlreadyInWorkspace = new Button(selectionButtonsGroup, SWT.CHECK);
    hideProjectsAlreadyInWorkspace.setText(DataTransferMessages.SmartImportProposals_hideExistingProjects);
    hideProjectsAlreadyInWorkspace.addSelectionListener(new SelectionAdapter() {
        final ViewerFilter existingProjectsFilter = new ViewerFilter() {
            @Override
            public boolean select(Viewer viewer, Object parentElement, Object element) {
                return !alreadyExistingProjects.contains(element);
            }
        };

        @Override
        public void widgetSelected(SelectionEvent e) {
            ViewerFilter[] currentFilters = tree.getFilters();
            ViewerFilter[] newFilters = null;
            if (((Button) e.widget).getSelection()) {
                newFilters = new ViewerFilter[currentFilters.length + 1];
                System.arraycopy(currentFilters, 0, newFilters, 0, currentFilters.length);
                newFilters[newFilters.length - 1] = existingProjectsFilter;
            } else {
                List<ViewerFilter> filters = new ArrayList<>(
                        currentFilters.length > 0 ? currentFilters.length - 1 : 0);
                for (ViewerFilter filter : currentFilters) {
                    if (filter != existingProjectsFilter) {
                        filters.add(filter);
                    }
                }
                newFilters = filters.toArray(new ViewerFilter[filters.size()]);
            }
            tree.setFilters(newFilters);
        }
    });
    tree.setInput(Collections.emptyMap());
}

From source file:org.eclipse.ui.trace.internal.TracingPreferencePage.java

License:Open Source License

/**
 * Create a viewer for the list of debug options that are traceable in the product.
 * //from  w w w  .j a v  a 2 s. co  m
 * @param parent
 *            The parent composite
 */
protected void addBundleViewerSection(Composite parent) {

    tracingTreeTitleLabel = new Label(parent, SWT.NONE);
    tracingTreeTitleLabel.setText(Messages.tracingTreeTile);
    filterTree = new TracingComponentTreeViewer(parent);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(getViewerTree());
    getViewer().setUseHashlookup(true);
    getViewerTree().setHeaderVisible(false);
    getViewer().setLabelProvider(new TracingComponentLabelProvider());
    getViewer().setContentProvider(new TracingComponentContentProvider());
    getViewer().setComparator(new TracingComponentComparator());
    getViewerTree().setLinesVisible(true);
    getViewer().addDoubleClickListener(new TracingDoubleClickListener());
    // change the layout of the tree's composite to TreeColumnLayout so we can setup the columns
    Composite treeViewerComposite = getViewerTree().getParent();
    TreeColumnLayout treeViewerCompositeLayout = new TreeColumnLayout();
    treeViewerComposite.setLayout(treeViewerCompositeLayout);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(treeViewerComposite);
    // there will be 2 columns. (1) trace string (2) value (which will only be populated when it is a non-boolean
    // value)
    // [1] Add the label column (75% column width)
    TreeViewerColumn labelColumn = new TreeViewerColumn(getViewer(), SWT.NONE);
    labelColumn.getColumn().setResizable(true);
    labelColumn.getColumn().setText(Messages.columnHeaderTracingString);
    labelColumn.setLabelProvider(new TracingComponentColumnLabelProvider(TracingConstants.LABEL_COLUMN_INDEX));
    treeViewerCompositeLayout.setColumnData(getViewerTree().getColumn(0), new ColumnWeightData(75));
    // [2] Add the value column (25% column width)
    TreeViewerColumn valueColumn = new TreeViewerColumn(getViewer(), SWT.NONE);
    valueColumn.getColumn().setResizable(true);
    valueColumn.getColumn().setText(Messages.columnHeaderTracingValue);
    valueColumn.setLabelProvider(new TracingComponentColumnLabelProvider(TracingConstants.VALUE_COLUMN_INDEX));
    valueColumn.setEditingSupport(
            new TracingComponentColumnEditingSupport(getViewer(), TracingConstants.VALUE_COLUMN_INDEX));
    treeViewerCompositeLayout.setColumnData(getViewerTree().getColumn(1), new ColumnWeightData(25));

    // install focus cell and cell editor activation for keyboard access (Bug 385100)
    TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(getViewer(),
            new FocusCellOwnerDrawHighlighter(getViewer()));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(getViewer()) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return (event.eventType == KEY_PRESSED && event.keyCode == VALUE_EDITOR_ACTIVATION_KEY) //
                    || event.eventType == TRAVERSAL //
                    || event.eventType == MOUSE_CLICK_SELECTION //
                    || event.eventType == PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(getViewer(), focusCellManager, actSupport, //
            TABBING_HORIZONTAL | TABBING_MOVE_TO_ROW_NEIGHBOR | TABBING_VERTICAL | KEYBOARD_ACTIVATION);
}