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

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

Introduction

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

Prototype

public ViewerComparator() 

Source Link

Document

Creates a new ViewerComparator , which uses the default comparator to sort strings.

Usage

From source file:ext.org.eclipse.jdt.internal.ui.wizards.buildpaths.SetFilterWizardPage.java

License:Open Source License

private ListDialogField<String> createListContents(CPListElement entryToEdit, String key, String label,
        ImageDescriptor descriptor, String[] buttonLabels) {
    ExclusionPatternAdapter adapter = new ExclusionPatternAdapter();

    ListDialogField<String> patternList = new ListDialogField<String>(adapter, buttonLabels,
            new ExclusionInclusionLabelProvider(descriptor));
    patternList.setDialogFieldListener(adapter);
    patternList.setLabelText(label);/*from  ww w . j  a  va2 s. c o m*/
    patternList.enableButton(IDX_EDIT, false);

    IPath[] pattern = (IPath[]) entryToEdit.getAttribute(key);

    ArrayList<String> elements = new ArrayList<String>(pattern.length);
    for (int i = 0; i < pattern.length; i++) {
        String patternName = pattern[i].toString();
        if (patternName.length() > 0)
            elements.add(patternName);
    }
    patternList.setElements(elements);
    patternList.selectFirstElement();
    patternList.enableButton(IDX_ADD_MULTIPLE, fCurrSourceFolder != null);
    patternList.setViewerComparator(new ViewerComparator());
    return patternList;
}

From source file:ext.org.eclipse.jdt.internal.ui.wizards.buildpaths.VariableBlock.java

License:Open Source License

public VariableBlock(boolean inPreferencePage, String initSelection) {

    fSelectedElements = new ArrayList<CPVariableElement>(0);
    fEditOnDoubleclick = inPreferencePage;
    fAskToBuild = true;//from  w  w  w .j ava 2  s. c  o  m

    String[] buttonLabels = new String[] { NewWizardMessages.VariableBlock_vars_add_button,
            NewWizardMessages.VariableBlock_vars_edit_button,
            NewWizardMessages.VariableBlock_vars_remove_button };

    VariablesAdapter adapter = new VariablesAdapter();

    CPVariableElementLabelProvider labelProvider = new CPVariableElementLabelProvider(inPreferencePage);

    fVariablesList = new ListDialogField<CPVariableElement>(adapter, buttonLabels, labelProvider);
    fVariablesList.setDialogFieldListener(adapter);
    fVariablesList.setLabelText(NewWizardMessages.VariableBlock_vars_label);
    fVariablesList.setRemoveButtonIndex(2);

    fVariablesList.enableButton(1, false);

    fVariablesList.setViewerComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1 instanceof CPVariableElement && e2 instanceof CPVariableElement) {
                return getComparator().compare(((CPVariableElement) e1).getName(),
                        ((CPVariableElement) e2).getName());
            }
            return super.compare(viewer, e1, e2);
        }
    });
    refresh(initSelection);
}

From source file:fr.inria.atlanmod.emftocsp.ui.widgets.impl.ElementSelectionWidget.java

License:Open Source License

private void createContents() {
    setLayout(new FormLayout());
    FormData formData = new FormData();
    formData.left = new FormAttachment(0, 0);
    formData.top = new FormAttachment(0, 0);
    formData.right = new FormAttachment(100, -5);
    formData.bottom = new FormAttachment(90, 0/*-5*/);

    final DrillDownComposite ddComposite = new DrillDownComposite(this, SWT.BORDER);
    ddComposite.setLayoutData(formData);
    treeViewer = new TreeViewer(ddComposite);
    ddComposite.setChildTree(treeViewer);

    if (!mandatorySelection) {
        FormData formData2 = new FormData();
        formData2.left = new FormAttachment(0, 0);
        formData2.top = new FormAttachment(90, 0);
        formData2.right = new FormAttachment(100, -5);
        formData2.bottom = new FormAttachment(100, 0/*-5*/);
        chkDisableSelection = new Button(this, SWT.CHECK);
        chkDisableSelection.setLayoutData(formData2);
        chkDisableSelection.setText("Skip selection");
        chkDisableSelection.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
                ddComposite.setEnabled(!chkDisableSelection.getSelection());
                treeViewer.getControl().setEnabled(!chkDisableSelection.getSelection());
                if (!ddComposite.getEnabled())
                    elementSelectionChanged(null);
                else
                    elementSelectionChanged((IStructuredSelection) treeViewer.getSelection());
            }/*  www  .  j a  v  a  2  s  . c om*/
        });
    }

    treeViewer.setComparator(new ViewerComparator());
    treeViewer.setUseHashlookup(true);
    treeViewer.setContentProvider(new TreeContentProvider());
    treeViewer.setLabelProvider(new TreeLabelProvider());
    treeViewer.setInput(ResourcesPlugin.getWorkspace().getRoot().getProjects());
    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            elementSelectionChanged((IStructuredSelection) event.getSelection());
        }
    });
}

From source file:fr.inria.linuxtools.tmf.ui.viewers.statistics.model.TmfBaseColumnDataProvider.java

License:Open Source License

/**
 * Create basic columns to represent the statistics data
 *///  w w  w  .j  a  v a 2 s  . c  o  m
public TmfBaseColumnDataProvider() {
    /* List that will be used to create the table. */
    ImmutableList.Builder<TmfBaseColumnData> builder = new ImmutableList.Builder<>();
    /* Column showing the name of the events and its level in the tree */
    builder.add(new TmfBaseColumnData(LEVEL_COLUMN, 200, SWT.LEFT, LEVEL_COLUMN_TIP, new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((TmfStatisticsTreeNode) element).getName();
        }

        @Override
        public Image getImage(Object element) {
            TmfStatisticsTreeNode node = (TmfStatisticsTreeNode) element;
            if (HIDDEN_FOLDER_LEVELS.contains(node.getName())) {
                return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
            }
            return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
        }
    }, new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            TmfStatisticsTreeNode n1 = (TmfStatisticsTreeNode) e1;
            TmfStatisticsTreeNode n2 = (TmfStatisticsTreeNode) e2;

            return n1.getName().compareTo(n2.getName());
        }
    }, null));

    /* Column showing the total number of events */
    builder.add(new TmfBaseColumnData(EVENTS_COUNT_COLUMN, 140, SWT.RIGHT, EVENTS_COUNT_COLUMN_TIP,
            new ColumnLabelProvider() {
                @Override
                public String getText(Object element) {
                    TmfStatisticsTreeNode node = (TmfStatisticsTreeNode) element;
                    if (!HIDDEN_FOLDER_LEVELS.contains(node.getName())) {
                        return TmfStatisticsFormatter.toColumnData(node, StatsColumn.TOTAL);
                    }
                    return EMPTY_STRING;
                }
            }, new ViewerComparator() {
                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    TmfStatisticsTreeNode n1 = (TmfStatisticsTreeNode) e1;
                    TmfStatisticsTreeNode n2 = (TmfStatisticsTreeNode) e2;

                    return (int) (n1.getValues().getTotal() - n2.getValues().getTotal());
                }
            }, new ITmfColumnPercentageProvider() {
                @Override
                public double getPercentage(TmfStatisticsTreeNode node) {
                    TmfStatisticsTreeNode top = node.getTop();
                    return (top == null || top.getValues().getTotal() == 0) ? 0
                            : (double) (node.getValues().getTotal()) / top.getValues().getTotal();
                }
            }));

    /* Column showing the number of events within the selected time range */
    builder.add(new TmfBaseColumnData(PARTIAL_EVENTS_COUNT_COLUMN, 140, SWT.RIGHT, PARTIAL_COUNT_COLUMN_TIP,
            new ColumnLabelProvider() {
                @Override
                public String getText(Object element) {
                    TmfStatisticsTreeNode node = (TmfStatisticsTreeNode) element;
                    if (!HIDDEN_FOLDER_LEVELS.contains(node.getName())) {
                        return TmfStatisticsFormatter.toColumnData(node, StatsColumn.PARTIAL);
                    }
                    return EMPTY_STRING;
                }

            }, new ViewerComparator() {
                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    TmfStatisticsTreeNode n1 = (TmfStatisticsTreeNode) e1;
                    TmfStatisticsTreeNode n2 = (TmfStatisticsTreeNode) e2;

                    return (int) (n1.getValues().getPartial() - n2.getValues().getPartial());
                }
            }, new ITmfColumnPercentageProvider() {
                @Override
                public double getPercentage(TmfStatisticsTreeNode node) {
                    TmfStatisticsTreeNode top = node.getTop();
                    return (top == null || top.getValues().getPartial() == 0) ? 0
                            : (double) (node.getValues().getPartial()) / top.getValues().getPartial();
                }
            }));

    /* Dummy column used to "fix" the display on Linux (using GTK) */
    builder.add(new TmfBaseColumnData(EMPTY_STRING, 1, SWT.RIGHT, EMPTY_STRING, new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return EMPTY_STRING;
        }
    }, new ViewerComparator(), new ITmfColumnPercentageProvider() {
        @Override
        public double getPercentage(TmfStatisticsTreeNode node) {
            return 0;
        }
    }));

    fColumnData = builder.build();
}

From source file:fr.inria.linuxtools.tmf.ui.viewers.statistics.TmfStatisticsViewer.java

License:Open Source License

/**
 * Initialize the content that will be drawn in this viewer
 *
 * @param parent/*from  w  w  w . j a v  a  2 s .  c o  m*/
 *            The parent of the control to create
 */
protected void initContent(Composite parent) {
    final List<TmfBaseColumnData> columnDataList = getColumnDataProvider().getColumnData();

    fTreeViewer = new TreeViewer(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    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:fr.inria.linuxtools.tmf.ui.viewers.tree.TmfTreeColumnData.java

License:Open Source License

/**
 * Create a TreeColumn with this column's data and adds it to a {@link Tree}
 *
 * @param treeViewer/*from   www  .  j  a  v a2  s.  c om*/
 *            The {@link TreeViewer} object to add the column to
 * @return The newly created {@link TreeViewerColumn}
 */
@NonNull
public TreeViewerColumn createColumn(final TreeViewer treeViewer) {
    final TreeViewerColumn column = new TreeViewerColumn(treeViewer, getAlignment());
    final TmfTreeColumnData columnData = this;
    column.getColumn().setText(getText());
    if (getWidth() != -1) {
        column.getColumn().setWidth(getWidth());
    }
    if (getTooltip() != null) {
        column.getColumn().setToolTipText(getTooltip());
    }
    column.getColumn().setMoveable(isMovable());

    /* Add the comparator to sort the column */
    if (getComparator() != null) {
        column.getColumn().addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {

                if (treeViewer.getTree().getSortDirection() == SWT.UP
                        || treeViewer.getTree().getSortColumn() != column.getColumn()) {
                    /*
                     * Puts the descendant order if the old order was up
                     * or if the selected column has changed.
                     */
                    treeViewer.setComparator(columnData.getComparator());
                    treeViewer.getTree().setSortDirection(SWT.DOWN);
                } else {
                    ViewerComparator reverseComparator;
                    /* Initializes the reverse comparator. */
                    reverseComparator = new ViewerComparator() {
                        @Override
                        public int compare(Viewer viewer, Object e1, Object e2) {
                            return -1 * columnData.getComparator().compare(viewer, e1, e2);
                        }
                    };

                    /*
                     * Puts the ascendant ordering if the selected
                     * column hasn't changed.
                     */
                    treeViewer.setComparator(reverseComparator);
                    treeViewer.getTree().setSortDirection(SWT.UP);
                }
                treeViewer.getTree().setSortColumn(column.getColumn());
            }
        });
    }

    return column;
}

From source file:fr.inria.linuxtools.tmf.ui.views.statesystem.TmfStateSystemViewer.java

License:Open Source License

@Override
protected ITmfTreeColumnDataProvider getColumnDataProvider() {
    return new ITmfTreeColumnDataProvider() {

        @Override//from   w ww.j  av a 2s .  c o m
        public List<TmfTreeColumnData> getColumnData() {
            List<TmfTreeColumnData> columns = new ArrayList<>();
            TmfTreeColumnData column = new TmfTreeColumnData(Messages.TreeNodeColumnLabel);
            columns.add(column);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    TmfTreeViewerEntry n1 = (TmfTreeViewerEntry) e1;
                    TmfTreeViewerEntry n2 = (TmfTreeViewerEntry) e2;

                    return n1.getName().compareTo(n2.getName());
                }
            });
            columns.add(new TmfTreeColumnData(Messages.QuarkColumnLabel));
            columns.add(new TmfTreeColumnData(Messages.ValueColumnLabel));
            columns.add(new TmfTreeColumnData(Messages.TypeColumnLabel));
            columns.add(new TmfTreeColumnData(Messages.StartTimeColumLabel));
            columns.add(new TmfTreeColumnData(Messages.EndTimeColumLabel));
            columns.add(new TmfTreeColumnData(Messages.AttributePathColumnLabel));
            return columns;
        }

    };
}

From source file:fr.inria.soctrace.framesoc.ui.histogram.view.HistogramView.java

License:Open Source License

@Override
public void createFramesocPartControl(Composite parent) {

    statusLineManager = getViewSite().getActionBars().getStatusLineManager();

    // parent layout
    GridLayout gl_parent = new GridLayout(1, false);
    gl_parent.verticalSpacing = 2;/*from ww w . j  av  a  2s. c  o  m*/
    gl_parent.marginWidth = 0;
    gl_parent.horizontalSpacing = 0;
    gl_parent.marginHeight = 0;
    parent.setLayout(gl_parent);

    // Sash
    SashForm sashForm = new SashForm(parent, SWT.NONE);
    sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    // Chart Composite
    compositeChart = new Composite(sashForm, SWT.BORDER);
    FillLayout fl_compositeChart = new FillLayout(SWT.HORIZONTAL);
    compositeChart.setLayout(fl_compositeChart);
    compositeChart.addControlListener(new ControlAdapter() {
        @Override
        public void controlResized(ControlEvent e) {
            int width = Math.max(compositeChart.getSize().x - 40, 1);
            numberOfTicks = Math.max(width / TIMESTAMP_MAX_SIZE, 1);
            refresh(false, false, true);
        }
    });

    // Configuration Composite
    compositeConf = new Composite(sashForm, SWT.NONE);
    GridLayout gl_compositeConf = new GridLayout(1, false);
    gl_compositeConf.marginHeight = 1;
    gl_compositeConf.verticalSpacing = 0;
    gl_compositeConf.marginWidth = 0;
    compositeConf.setLayout(gl_compositeConf);
    compositeConf.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    // Tab folder
    TabFolder tabFolder = new TabFolder(compositeConf, SWT.NONE);
    tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    PatternFilter filter = new TreePatternFilter();
    TreeContentProvider contentProvider = new TreeContentProvider();
    ViewerComparator treeComparator = new ViewerComparator();
    SelectionChangedListener selectionChangeListener = new SelectionChangedListener();
    CheckStateListener checkStateListener = new CheckStateListener();

    SquareIconLabelProvider p = null;

    // Tab item types
    TabItem tbtmEventTypes = new TabItem(tabFolder, SWT.NONE);
    tbtmEventTypes.setData(ConfigurationDimension.TYPE);
    tbtmEventTypes.setText(ConfigurationDimension.TYPE.getName());
    filter.setIncludeLeadingWildcard(true);
    FilteredCheckboxTree typeTree = new FilteredCheckboxTree(tabFolder, SWT.BORDER, filter, true);
    configurationMap.get(ConfigurationDimension.TYPE).tree = typeTree;
    typeTree.getViewer().setContentProvider(contentProvider);
    p = new EventTypeTreeLabelProvider();
    labelProviders.add(p);
    typeTree.getViewer().setLabelProvider(p);
    typeTree.getViewer().setComparator(treeComparator);
    typeTree.addCheckStateListener(checkStateListener);
    typeTree.getViewer().addSelectionChangedListener(selectionChangeListener);
    tbtmEventTypes.setControl(typeTree);

    // Tab item producers
    TabItem tbtmEventProducers = new TabItem(tabFolder, SWT.NONE);
    tbtmEventProducers.setData(ConfigurationDimension.PRODUCERS);
    tbtmEventProducers.setText(ConfigurationDimension.PRODUCERS.getName());
    FilteredCheckboxTree prodTree = new FilteredCheckboxTree(tabFolder, SWT.BORDER, filter, true);
    configurationMap.get(ConfigurationDimension.PRODUCERS).tree = prodTree;
    prodTree.getViewer().setContentProvider(contentProvider);
    p = new EventProducerTreeLabelProvider();
    labelProviders.add(p);
    prodTree.getViewer().setLabelProvider(p);
    prodTree.getViewer().setComparator(treeComparator);
    prodTree.addCheckStateListener(checkStateListener);
    prodTree.getViewer().addSelectionChangedListener(selectionChangeListener);
    tbtmEventProducers.setControl(prodTree);

    // sash weights
    sashForm.setWeights(new int[] { 80, 20 });
    // tab switch
    tabFolder.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            currentDimension = (ConfigurationDimension) event.item.getData();
            enableTreeButtons();
            enableSubTreeButtons();
        }
    });

    // Buttons
    Composite compositeBtn = new Composite(compositeConf, SWT.BORDER);
    GridLayout gl_compositeBtn = new GridLayout(10, false);
    gl_compositeBtn.marginWidth = 1;
    gl_compositeBtn.horizontalSpacing = 1;
    compositeBtn.setLayout(gl_compositeBtn);
    compositeBtn.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false, 1, 1));

    btnCheckall = new Button(compositeBtn, SWT.NONE);
    btnCheckall.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
    btnCheckall.setToolTipText("Check all");
    btnCheckall.setImage(ResourceManager.getPluginImage(Activator.PLUGIN_ID, "icons/check_all.png"));
    btnCheckall.setEnabled(false);
    btnCheckall.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (configurationMap.get(currentDimension).roots != null) {
                FilteredCheckboxTree tree = configurationMap.get(currentDimension).tree;
                TreeContentProvider provider = (TreeContentProvider) tree.getViewer().getContentProvider();
                Object[] roots = provider.getElements(tree.getViewer().getInput());
                for (Object root : roots) {
                    checkElementAndSubtree(root);
                }
                selectionChanged();
            }
        }
    });

    btnUncheckall = new Button(compositeBtn, SWT.NONE);
    btnUncheckall.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    btnUncheckall.setToolTipText("Uncheck all");
    btnUncheckall.setImage(ResourceManager.getPluginImage(Activator.PLUGIN_ID, "icons/uncheck_all.png"));
    btnUncheckall.setEnabled(false);
    btnUncheckall.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            configurationMap.get(currentDimension).tree.setCheckedElements(EMPTY_ARRAY);
            selectionChanged();
        }
    });

    Label separator = new Label(compositeBtn, SWT.SEPARATOR | SWT.VERTICAL);
    GridData gd_separator = new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1);
    gd_separator.horizontalIndent = 2;
    gd_separator.widthHint = 5;
    gd_separator.heightHint = 20;
    separator.setLayoutData(gd_separator);

    btnCheckSubtree = new Button(compositeBtn, SWT.NONE);
    btnCheckSubtree.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    btnCheckSubtree.setToolTipText("Check subtree");
    btnCheckSubtree.setImage(ResourceManager.getPluginImage(Activator.PLUGIN_ID, "icons/check_subtree.png"));
    btnCheckSubtree.setEnabled(false);
    btnCheckSubtree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (configurationMap.get(currentDimension).roots != null) {
                ITreeNode node = getCurrentSelection(configurationMap.get(currentDimension).tree);
                if (node == null)
                    return;
                checkElementAndSubtree(node);
                selectionChanged();
            }
        }
    });

    btnUncheckSubtree = new Button(compositeBtn, SWT.NONE);
    btnUncheckSubtree.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    btnUncheckSubtree.setToolTipText("Uncheck subtree");
    btnUncheckSubtree
            .setImage(ResourceManager.getPluginImage(Activator.PLUGIN_ID, "icons/uncheck_subtree.png"));
    btnUncheckSubtree.setEnabled(false);
    btnUncheckSubtree.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (configurationMap.get(currentDimension).roots != null) {
                ITreeNode node = getCurrentSelection(configurationMap.get(currentDimension).tree);
                if (node == null)
                    return;
                uncheckElement(node);
                uncheckAncestors(node);
                selectionChanged();
            }
        }
    });

    // Time management bar
    Composite timeComposite = new Composite(parent, SWT.BORDER);
    timeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    GridLayout gl_timeComposite = new GridLayout(1, false);
    gl_timeComposite.horizontalSpacing = 0;
    timeComposite.setLayout(gl_timeComposite);
    // time manager
    timeBar = new TimeBar(timeComposite, SWT.NONE, true, true);
    timeBar.setEnabled(false);
    IStatusLineManager statusLineManager = getViewSite().getActionBars().getStatusLineManager();
    timeBar.setStatusLineManager(statusLineManager);
    timeBar.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            TimeInterval barInterval = timeBar.getSelection();
            if (marker == null) {
                addNewMarker(barInterval.startTimestamp, barInterval.endTimestamp);
            } else {
                marker.setStartValue(barInterval.startTimestamp);
                marker.setEndValue(barInterval.endTimestamp);
            }
            selectedTs0 = barInterval.startTimestamp;
            selectedTs1 = barInterval.endTimestamp;
            timeChanged = !barInterval.equals(loadedInterval);
        }
    });
    // button to synch the timebar, producers and type with the current loaded data
    timeBar.getSynchButton().setToolTipText("Reset Timebar, Types and Producers");
    timeBar.getSynchButton().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (loadedInterval != null) {
                timeBar.setSelection(loadedInterval);
                if (marker != null && plot != null) {
                    plot.removeDomainMarker(marker);
                    marker = null;
                }
            }
            for (ConfigurationData data : configurationMap.values()) {
                data.tree.setCheckedElements(data.checked);
            }
            timeChanged = false;
            enableTreeButtons();
            enableSubTreeButtons();
        }
    });
    // load button
    timeBar.getLoadButton().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (timeChanged || configurationChanged) {
                loadHistogram(currentShownTrace, timeBar.getSelection());
            }
        }
    });

    // build toolbar
    IActionBars actionBars = getViewSite().getActionBars();
    IToolBarManager toolBar = actionBars.getToolBarManager();
    TableTraceIntervalAction.add(toolBar, createTableAction());
    GanttTraceIntervalAction.add(toolBar, createGanttAction());
    PieTraceIntervalAction.add(toolBar, createPieAction());
    enableActions(false);
}

From source file:fr.inria.soctrace.framesoc.ui.views.TraceTreeView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {

    checked = new HashSet<>();
    tracesLoader = new TraceLoader();
    viewer = new TreeViewer(parent, SWT.MULTI);
    viewer.setContentProvider(new TreeContentProvider());
    viewer.setLabelProvider(new TreeLabelProvider());
    viewer.setInput(tracesLoader.loadFromDB());

    // default comparator
    viewer.setComparator(new ViewerComparator());

    // double click
    viewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override//from   w w  w  . j a  va  2s  .  c om
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection thisSelection = (IStructuredSelection) event.getSelection();
            if (TraceSelection.isFolderNode(thisSelection)) {
                FolderNode folder = (FolderNode) thisSelection.getFirstElement();
                boolean expanded = viewer.getExpandedState(folder);
                viewer.setExpandedState(folder, !expanded);
                return;
            }
            if (!TraceSelection.isSelectionValid(thisSelection) || !FramesocPartManager.getInstance()
                    .isFramesocPartExisting(FramesocViews.GANTT_CHART_VIEW_ID)) {
                return;
            }

            setSelectionBusVariables(thisSelection);

            TraceNode selectedNode = (TraceNode) thisSelection.getFirstElement();
            TraceIntervalDescriptor des = new TraceIntervalDescriptor();
            des.setTrace(selectedNode.getTrace());
            des.setTimeInterval(TimeInterval.NOT_SPECIFIED);
            logger.debug(des.toString());
            FramesocBus.getInstance().send(FramesocBusTopic.TOPIC_UI_GANTT_DISPLAY_TIME_INTERVAL, des);
        }
    });

    // key listener
    viewer.getControl().addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(final KeyEvent event) {
            if (event.keyCode == SWT.DEL) {
                HandlerUtils.launchCommand(getSite(), "fr.inria.soctrace.framesoc.ui.commands.deleteDB");
            }
        }
    });

    // Context menu
    MenuManager menuManager = new MenuManager();
    Menu menu = menuManager.createContextMenu(viewer.getTree());
    viewer.getTree().setMenu(menu);
    getSite().registerContextMenu(menuManager, viewer);

    menuManager.addMenuListener(new IMenuListener() {
        @Override
        public void menuAboutToShow(IMenuManager manager) {
            // show the menu only on leaf nodes
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            if (!TraceSelection.isSelectionValid(selection)) {
                manager.removeAll();
                return;
            }
            if (selection.size() > 1) {
                manager.remove(COMMAND_FRAMESOC_PARTS);
                manager.remove(COMMAND_COPY_DB_NAME);
            }
            setSelectionBusVariables(selection);
        }

    });

    // build the toolbar
    buildToolbar(parent);

    // register the selection listener
    getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(listener);

    // provide our selection for other viewers
    getSite().setSelectionProvider(viewer);

    // expand all
    viewer.expandAll();
    viewer.refresh();

    // resources
    boldFont = resourceManager
            .createFont(FontDescriptor.createFrom(viewer.getTree().getFont()).setStyle(SWT.BOLD));
    normalFont = viewer.getTree().getFont();

}

From source file:fr.inria.soctrace.tools.filters.ui.views.FilterView.java

License:Open Source License

@Override
public void createPartControl(final Composite parent) {

    // Highest Component
    final SashForm sashForm = new SashForm(parent, SWT.NONE);

    final TabFolder tabFolder = new TabFolder(sashForm, SWT.NONE);

    final TabItem tbtmTimeFilter = new TabItem(tabFolder, SWT.NONE);
    tbtmTimeFilter.setText("Time Filter");

    final SashForm sashForm_2 = new SashForm(tabFolder, SWT.VERTICAL);
    tbtmTimeFilter.setControl(sashForm_2);

    final Composite composite_2 = new Composite(sashForm_2, SWT.NONE);
    composite_2.setLayout(new GridLayout(1, false));

    final Combo comboTraces = new Combo(composite_2, SWT.READ_ONLY);
    comboTraces.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
    comboTraces.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));

    final Group grpResultLabel = new Group(sashForm_2, SWT.NONE);
    grpResultLabel.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    grpResultLabel.setText("Result Label");
    grpResultLabel.setLayout(new GridLayout(1, false));

    label = new Text(grpResultLabel, SWT.BORDER);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    label.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));

    final Group groupEventTypes = new Group(sashForm_2, SWT.NONE);
    groupEventTypes.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    groupEventTypes.setText("Event Types");
    final GridLayout gl_groupEventTypes = new GridLayout(2, false);
    gl_groupEventTypes.horizontalSpacing = 0;
    groupEventTypes.setLayout(gl_groupEventTypes);

    listViewerEventTypes = new ListViewer(groupEventTypes, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    listViewerEventTypes.setContentProvider(new ArrayContentProvider());
    listViewerEventTypes.setLabelProvider(new EventTypeLabelProvider());
    listViewerEventTypes.setComparator(new ViewerComparator());
    final List listEventTypes = listViewerEventTypes.getList();
    listEventTypes.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    listEventTypes.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    final ScrolledComposite scrCompositeEventTypeButtons = new ScrolledComposite(groupEventTypes,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    scrCompositeEventTypeButtons.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
    scrCompositeEventTypeButtons.setExpandHorizontal(true);
    scrCompositeEventTypeButtons.setExpandVertical(true);

    final Composite compositeEventTypeButtons = new Composite(scrCompositeEventTypeButtons, SWT.NONE);
    compositeEventTypeButtons.setLayout(new GridLayout(1, false));

    final Button btnAddEventTypes = new Button(compositeEventTypeButtons, SWT.NONE);
    btnAddEventTypes.setText("Add");
    btnAddEventTypes.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    btnAddEventTypes.setImage(null);//ww w . java2 s.  com
    btnAddEventTypes.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    btnAddEventTypes.addSelectionListener(new TypesSelectionAdapter());

    final Button btnRemoveEventTypes = new Button(compositeEventTypeButtons, SWT.NONE);
    btnRemoveEventTypes.setText("Remove");
    btnRemoveEventTypes.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    btnRemoveEventTypes.setImage(null);
    btnRemoveEventTypes.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    scrCompositeEventTypeButtons.setContent(compositeEventTypeButtons);
    scrCompositeEventTypeButtons.setMinSize(compositeEventTypeButtons.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    btnRemoveEventTypes.addSelectionListener(new RemoveSelectionAdapter(listViewerEventTypes));
    final Group groupIdleStates = new Group(sashForm_2, SWT.NONE);
    groupIdleStates.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    groupIdleStates.setText("Idle States");
    final GridLayout gl_groupIdleStates = new GridLayout(2, false);
    gl_groupIdleStates.horizontalSpacing = 0;
    gl_groupIdleStates.verticalSpacing = 0;
    groupIdleStates.setLayout(gl_groupIdleStates);

    listViewerIdleStates = new ListViewer(groupIdleStates, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    listViewerIdleStates.setContentProvider(new ArrayContentProvider());
    listViewerIdleStates.setComparator(new ViewerComparator());
    final List listIdleStates = listViewerIdleStates.getList();
    final GridData gd_listIdleStates = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    gd_listIdleStates.widthHint = 203;
    listIdleStates.setLayoutData(gd_listIdleStates);
    listIdleStates.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));

    final ScrolledComposite scrCompositeIdleStateButton = new ScrolledComposite(groupIdleStates,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    scrCompositeIdleStateButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
    scrCompositeIdleStateButton.setExpandHorizontal(true);
    scrCompositeIdleStateButton.setExpandVertical(true);

    final Composite compositeIdleStateButtons = new Composite(scrCompositeIdleStateButton, SWT.NONE);
    compositeIdleStateButtons.setLayout(new GridLayout(1, false));

    final Button btnAddIdleStates = new Button(compositeIdleStateButtons, SWT.NONE);
    btnAddIdleStates.setText("Add");
    btnAddIdleStates.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    btnAddIdleStates.setImage(null);
    btnAddIdleStates.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    btnAddIdleStates.addSelectionListener(new IdlesSelectionAdapter());

    final Button btnRemoveIdle = new Button(compositeIdleStateButtons, SWT.NONE);
    btnRemoveIdle.setText("Remove");
    btnRemoveIdle.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    btnRemoveIdle.setImage(null);
    btnRemoveIdle.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    scrCompositeIdleStateButton.setContent(compositeIdleStateButtons);
    scrCompositeIdleStateButton.setMinSize(compositeIdleStateButtons.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    btnRemoveIdle.addSelectionListener(new RemoveSelectionAdapter(listViewerIdleStates));

    final Group grpResultType = new Group(sashForm_2, SWT.NONE);
    grpResultType.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    grpResultType.setText("Result Type");
    grpResultType.setLayout(new GridLayout(2, false));

    btnEvent = new Button(grpResultType, SWT.RADIO);
    btnEvent.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, true, 1, 1));
    btnEvent.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    btnEvent.setText("Events");

    btnEventProducer = new Button(grpResultType, SWT.RADIO);
    btnEventProducer.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, true, 1, 1));
    btnEventProducer.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    btnEventProducer.setText("Event Producers");

    final Group grpEventProducers = new Group(sashForm_2, SWT.NONE);
    grpEventProducers.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    grpEventProducers.setText("Settings");
    grpEventProducers.setLayout(new GridLayout(2, false));

    include = new Button(grpEventProducers, SWT.RADIO);
    include.setSelection(true);
    include.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    include.setText("Included in Time Interval");

    exclude = new Button(grpEventProducers, SWT.RADIO);
    exclude.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    exclude.setText("Excluded from Time Interval");

    final Group groupTime = new Group(sashForm_2, SWT.NONE);
    groupTime.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    groupTime.setText("Time Interval");
    groupTime.setLayout(new GridLayout(2, false));

    final Label lblStartTimestamp = new Label(groupTime, SWT.NONE);
    lblStartTimestamp.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    lblStartTimestamp.setText("Start Timestamp");

    timestampStart = new Text(groupTime, SWT.BORDER);
    timestampStart.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    timestampStart.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    timestampStart.addModifyListener(new ConfModificationListener());

    final Label lblEndTimestamp = new Label(groupTime, SWT.NONE);
    lblEndTimestamp.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    lblEndTimestamp.setText("End Timestamp");

    timestampEnd = new Text(groupTime, SWT.BORDER);
    timestampEnd.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    timestampEnd.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    timestampEnd.addModifyListener(new ConfModificationListener());

    final Composite composite = new Composite(sashForm_2, SWT.NONE);
    composite.setLayout(new GridLayout(1, false));

    final Button btnProcess = new Button(composite, SWT.NONE);
    btnProcess.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1));
    btnProcess.setFont(SWTResourceManager.getFont("Cantarell", 9, SWT.NORMAL));
    btnProcess.setText("Process");
    sashForm_2.setWeights(new int[] { 49, 56, 125, 123, 64, 49, 97, 46 });

    btnProcess.addSelectionListener(new RunSelectionListener());
    comboTraces.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(final SelectionEvent e) {
            cleanAll();
            try {
                loader.load(traceMap.get(comboTraces.getSelectionIndex()));
                timestampStart.setText(String.valueOf(loader.getMinTimestamp()));
                timestampEnd.setText(String.valueOf(loader.getMaxTimestamp()));
            } catch (final SoCTraceException e1) {
                MessageDialog.openError(getSite().getShell(), "Exception", e1.getMessage());
            }
        }
    });
    int index = 0;
    for (final Trace t : loader.getTraces()) {
        comboTraces.add(t.getAlias(), index);
        traceMap.put(index, t);
        index++;
    }

    final GridData gd_listIdle = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    gd_listIdle.widthHint = 203;
    sashForm.setWeights(new int[] { 268 });
    include.addSelectionListener(new IncludeSelectionListener());
    exclude.addSelectionListener(new ExcludeSelectionListener());
    btnEvent.addSelectionListener(new EventSelectionListener());
    btnEventProducer.addSelectionListener(new EventProducerSelectionListener());
    label.addModifyListener(new ConfModificationListener());
    cleanAll();

}