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:org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentsStatisticsViewer.java

License:Open Source License

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

        @Override/*from ww w .j  a v a2s  .  c o  m*/
        public List<@Nullable TmfTreeColumnData> getColumnData() {
            /* All columns are sortable */
            List<@Nullable TmfTreeColumnData> columns = new ArrayList<>();
            TmfTreeColumnData column = new TmfTreeColumnData(COLUMN_NAMES[0]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return n1.getName().compareTo(n2.getName());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[1]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Long.compare(n1.getEntry().getMin(), n2.getEntry().getMin());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[2]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Long.compare(n1.getEntry().getMax(), n2.getEntry().getMax());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[3]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Double.compare(n1.getEntry().getMean(), n2.getEntry().getMean());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[4]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Double.compare(n1.getEntry().getStdDev(), n2.getEntry().getStdDev());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[5]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Long.compare(n1.getEntry().getNbElements(), n2.getEntry().getNbElements());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[6]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Double.compare(n1.getEntry().getTotal(), n2.getEntry().getTotal());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(""); //$NON-NLS-1$
            columns.add(column);
            return columns;
        }

    };
}

From source file:org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer.java

License:Open Source License

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

        @Override//w  ww. j av  a 2s  .co m
        public List<@Nullable TmfTreeColumnData> getColumnData() {
            /* All columns are sortable */
            List<@Nullable TmfTreeColumnData> columns = new ArrayList<>();
            TmfTreeColumnData column = new TmfTreeColumnData(COLUMN_NAMES[0]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return n1.getName().compareTo(n2.getName());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[1]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Long.compare(n1.getEntry().getMin(), n2.getEntry().getMin());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[2]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Long.compare(n1.getEntry().getMax(), n2.getEntry().getMax());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[3]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Double.compare(n1.getEntry().getAverage(), n2.getEntry().getAverage());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[4]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Double.compare(n1.getEntry().getStdDev(), n2.getEntry().getStdDev());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[5]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Long.compare(n1.getEntry().getNbSegments(), n2.getEntry().getNbSegments());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[6]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Double.compare(n1.getEntry().getTotal(), n2.getEntry().getTotal());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(""); //$NON-NLS-1$
            columns.add(column);
            return columns;
        }

    };
}

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  . ja  va 2s .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.analysis.os.linux.ui.views.latency.statistics.AbstractSegmentStoreStatisticsViewer.java

License:Open Source License

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

        @Override//from w w  w  .  ja v a 2 s. c  o  m
        public List<@Nullable TmfTreeColumnData> getColumnData() {
            /* All columns are sortable */
            List<@Nullable TmfTreeColumnData> columns = new ArrayList<>();
            TmfTreeColumnData column = new TmfTreeColumnData(COLUMN_NAMES[0]);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    LatencyTreeViewerEntry n1 = (LatencyTreeViewerEntry) e1;
                    LatencyTreeViewerEntry n2 = (LatencyTreeViewerEntry) e2;

                    return n1.getName().compareTo(n2.getName());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[1]);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    LatencyTreeViewerEntry n1 = (LatencyTreeViewerEntry) e1;
                    LatencyTreeViewerEntry n2 = (LatencyTreeViewerEntry) e2;

                    return Long.compare(n1.getEntry().getMin(), n2.getEntry().getMin());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[2]);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    LatencyTreeViewerEntry n1 = (LatencyTreeViewerEntry) e1;
                    LatencyTreeViewerEntry n2 = (LatencyTreeViewerEntry) e2;

                    return Long.compare(n1.getEntry().getMax(), n2.getEntry().getMax());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[3]);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    LatencyTreeViewerEntry n1 = (LatencyTreeViewerEntry) e1;
                    LatencyTreeViewerEntry n2 = (LatencyTreeViewerEntry) e2;

                    return Double.compare(n1.getEntry().getAverage(), n2.getEntry().getAverage());

                }
            });
            columns.add(column);

            return columns;
        }

    };
}

From source file:org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer.java

License:Open Source License

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

        @Override/*  w  w w  .j ava 2  s .  c  o  m*/
        public List<@Nullable TmfTreeColumnData> getColumnData() {
            /* All columns are sortable */
            List<@Nullable TmfTreeColumnData> columns = new ArrayList<>();
            TmfTreeColumnData column = new TmfTreeColumnData(COLUMN_NAMES[0]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return n1.getName().compareTo(n2.getName());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[1]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Long.compare(n1.getEntry().getMin(), n2.getEntry().getMin());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[2]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Long.compare(n1.getEntry().getMax(), n2.getEntry().getMax());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[3]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Double.compare(n1.getEntry().getAverage(), n2.getEntry().getAverage());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(COLUMN_NAMES[4]);
            column.setAlignment(SWT.RIGHT);
            column.setComparator(new ViewerComparator() {
                @Override
                public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) {
                    if ((e1 == null) || (e2 == null)) {
                        return 0;
                    }

                    SegmentStoreStatisticsEntry n1 = (SegmentStoreStatisticsEntry) e1;
                    SegmentStoreStatisticsEntry n2 = (SegmentStoreStatisticsEntry) e2;

                    return Double.compare(n1.getEntry().getStdDev(), n2.getEntry().getStdDev());

                }
            });
            columns.add(column);
            column = new TmfTreeColumnData(""); //$NON-NLS-1$
            columns.add(column);
            return columns;
        }

    };
}

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// w  w  w. jav a 2 s  . c  o  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//ww w . ja v  a2s .  c om
        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.tests.statistics.TmfBaseColumnDataTest.java

License:Open Source License

/**
 * Pre-test setup/*from  www .  jav a2  s .c o  m*/
 */
@Before
public void init() {
    fHeader = "test Column1";
    fWidth = 300;
    fAlignment = SWT.LEFT;
    fToolTip = "Tooltip " + fHeader;
    fLabelProvider = new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((TmfStatisticsTreeNode) element).getName();
        }

        @Override
        public Image getImage(Object element) {
            return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
        }
    };
    fComparator = 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());
        }
    };
    fPercentageProvider = new ITmfColumnPercentageProvider() {
        @Override
        public double getPercentage(TmfStatisticsTreeNode node) {
            TmfStatisticsTreeNode parent = node;
            do {
                parent = parent.getParent();
            } while (parent != null && parent.getValues().getTotal() == 0);

            if (parent == null) {
                return 0;
            }
            return (double) node.getValues().getTotal() / parent.getValues().getTotal();
        }
    };

    TmfStatisticsTree baseData = new TmfStatisticsTree();
    fTraceName = "trace1";
    fTreeNode = new TmfStatisticsTreeNode(baseData, baseData.getRootNode(), fTraceName);

    fBaseColumnData = new TmfBaseColumnData(fHeader, fWidth, fAlignment, fToolTip, fLabelProvider, fComparator,
            fPercentageProvider);
}

From source file:org.eclipse.ui.activities.ActivityCategoryPreferencePage.java

License:Open Source License

/**
 * @param parent/*from  w  w  w . java2 s  .c  om*/
 */
private void createCategoryArea(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.marginHeight = layout.marginWidth = 0;
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    composite.setLayout(layout);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.widthHint = 200;
    composite.setLayoutData(data);
    Label label = new Label(composite, SWT.NONE);
    label.setText(strings.getProperty(CATEGORY_NAME, ActivityMessages.ActivityEnabler_categories) + ':');
    Table table = new Table(composite, SWT.CHECK | SWT.BORDER | SWT.SINGLE);
    table.addSelectionListener(new SelectionAdapter() {

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {
            if (e.detail == SWT.CHECK) {
                TableItem tableItem = (TableItem) e.item;

                ICategory category = (ICategory) tableItem.getData();
                if (isLocked(category)) {
                    tableItem.setChecked(true);
                    e.doit = false; // veto the check
                    return;
                }
                Set activitySet = WorkbenchActivityHelper.getActivityIdsForCategory(category);
                if (tableItem.getChecked()) {
                    activitySet.addAll(workingCopy.getEnabledActivityIds());
                } else {
                    HashSet newSet = new HashSet(workingCopy.getEnabledActivityIds());
                    newSet.removeAll(activitySet);
                    activitySet = newSet;
                }

                workingCopy.setEnabledActivityIds(activitySet);
                updateCategoryCheckState(); // even though we're reacting to
                // a check change we may need to
                // refresh a greying change.
                // Just process the whole thing.
            }
        }
    });
    categoryViewer = new CheckboxTableViewer(table);
    categoryViewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
    categoryViewer.setContentProvider(new CategoryContentProvider());
    CategoryLabelProvider categoryLabelProvider = new CategoryLabelProvider(true);
    workingCopy.addActivityManagerListener(categoryLabelProvider);
    categoryViewer.setLabelProvider(categoryLabelProvider);
    categoryViewer.setComparator(new ViewerComparator());
    categoryViewer.addFilter(new EmptyCategoryFilter());

    categoryViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
         */
        public void selectionChanged(SelectionChangedEvent event) {
            ICategory element = (ICategory) ((IStructuredSelection) event.getSelection()).getFirstElement();
            setDetails(element);
        }
    });
    categoryViewer.setInput(workingCopy.getDefinedCategoryIds());

    updateCategoryCheckState();
}

From source file:org.eclipse.ui.dialogs.TypeFilteringDialog.java

License:Open Source License

protected Control createDialogArea(Composite parent) {
    // page group
    Composite composite = (Composite) super.createDialogArea(parent);
    createMessageArea(composite);//from  w w  w  . j  a  v a2  s.  c  om
    listViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT;
    data.widthHint = SIZING_SELECTION_WIDGET_WIDTH;
    listViewer.getTable().setLayoutData(data);
    listViewer.getTable().setFont(parent.getFont());
    listViewer.setLabelProvider(FileEditorMappingLabelProvider.INSTANCE);
    listViewer.setContentProvider(ArrayContentProvider.getInstance());
    listViewer.setComparator(new ViewerComparator());
    addSelectionButtons(composite);
    createUserEntryGroup(composite);
    initializeViewer();
    // initialize page
    if (this.initialSelections != null && !this.initialSelections.isEmpty()) {
        checkInitialSelections();
    }
    return composite;
}