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

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

Introduction

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

Prototype

public void sort(final Viewer viewer, Object[] elements) 

Source Link

Document

Sorts the given elements in-place, modifying the given array.

Usage

From source file:com.codeandme.tools.ui.TableExporter.java

License:Open Source License

/**
 * Prints the whole data area.//from   w  w w.  ja  v  a2 s  .  c  om
 * 
 * @param output
 *            output stream
 * @throws IOException
 *             if an I/O error occurs.
 */
protected void printData(OutputStream output) throws IOException {
    IContentProvider contentProvider = fViewer.getContentProvider();
    if (contentProvider instanceof IStructuredContentProvider) {
        Object input = fViewer.getInput();
        Object[] elements = ((IStructuredContentProvider) contentProvider).getElements(input);

        // filter elements
        if (fFilterElements) {
            for (ViewerFilter filter : fViewer.getFilters())
                elements = filter.filter(fViewer, (Object) null, elements);
        }

        // sort elements
        if (fSortElements) {
            ViewerComparator comparator = fViewer.getComparator();
            if (comparator != null)
                comparator.sort(fViewer, elements);
        }

        // print elements
        for (Object element : elements)
            printDataRow(output, element);
    }
}

From source file:de.femodeling.e4.ui.progress.internal.DetailedProgressViewer.java

License:Open Source License

public void add(Object[] elements) {
    ViewerComparator sorter = getComparator();

    // Use a Set in case we are getting something added that exists
    Set newItems = new HashSet(elements.length);

    Control[] existingChildren = control.getChildren();
    for (int i = 0; i < existingChildren.length; i++) {
        if (existingChildren[i].getData() != null)
            newItems.add(existingChildren[i].getData());
    }/*from  w  w w.  ja va  2 s . c om*/

    for (int i = 0; i < elements.length; i++) {
        if (elements[i] != null)
            newItems.add(elements[i]);
    }

    JobTreeElement[] infos = new JobTreeElement[newItems.size()];
    newItems.toArray(infos);

    if (sorter != null) {
        sorter.sort(this, infos);
    }

    // Update with the new elements to prevent flash
    for (int i = 0; i < existingChildren.length; i++) {
        ((ProgressInfoItem) existingChildren[i]).dispose();
    }

    int totalSize = Math.min(newItems.size(), MAX_DISPLAYED);

    for (int i = 0; i < totalSize; i++) {
        ProgressInfoItem item = createNewItem(infos[i]);
        item.setColor(i);
    }

    control.layout(true);
    updateForShowingProgress();
}

From source file:fr.opensagres.eclipse.jsbuild.internal.ui.views.JSBuildFileView.java

License:Open Source License

private void setProjectViewerSelectionAfterDeletion() {
    Object[] children = getProjects();
    if (children.length > 0) {
        ViewerComparator comparator = projectViewer.getComparator();
        comparator.sort(projectViewer, children);
        IStructuredSelection selection = new StructuredSelection(children[0]);
        projectViewer.setSelection(selection);
        handleSelectionChanged(selection);
    }//from  ww  w  .  j  av a  2s.c om
}

From source file:org.eclipse.e4.ui.internal.progress.DetailedProgressViewer.java

License:Open Source License

@Override
public void add(Object[] elements) {
    ViewerComparator sorter = getComparator();

    // Use a Set in case we are getting something added that exists
    Set<Object> newItems = new HashSet<Object>(elements.length);

    Control[] existingChildren = control.getChildren();
    for (int i = 0; i < existingChildren.length; i++) {
        if (existingChildren[i].getData() != null)
            newItems.add(existingChildren[i].getData());
    }//from www . ja  v a  2s  .  c  o m

    for (int i = 0; i < elements.length; i++) {
        if (elements[i] != null)
            newItems.add(elements[i]);
    }

    JobTreeElement[] infos = new JobTreeElement[newItems.size()];
    newItems.toArray(infos);

    if (sorter != null) {
        sorter.sort(this, infos);
    }

    // Update with the new elements to prevent flash
    for (int i = 0; i < existingChildren.length; i++) {
        ((ProgressInfoItem) existingChildren[i]).dispose();
    }

    int totalSize = Math.min(newItems.size(), MAX_DISPLAYED);

    for (int i = 0; i < totalSize; i++) {
        ProgressInfoItem item = createNewItem(infos[i]);
        item.setColor(i);
    }

    control.layout(true);
    updateForShowingProgress();
}

From source file:org.eclipse.e4.ui.progress.internal.DetailedProgressViewer.java

License:Open Source License

@Override
public void add(Object[] elements) {
    ViewerComparator sorter = getComparator();

    // Use a Set in case we are getting something added that exists
    Set<Object> newItems = new HashSet<>(elements.length);

    Control[] existingChildren = control.getChildren();
    for (int i = 0; i < existingChildren.length; i++) {
        if (existingChildren[i].getData() != null)
            newItems.add(existingChildren[i].getData());
    }//from  w ww  . ja va  2  s. com

    for (int i = 0; i < elements.length; i++) {
        if (elements[i] != null)
            newItems.add(elements[i]);
    }

    JobTreeElement[] infos = new JobTreeElement[newItems.size()];
    newItems.toArray(infos);

    if (sorter != null) {
        sorter.sort(this, infos);
    }

    // Update with the new elements to prevent flash
    for (int i = 0; i < existingChildren.length; i++) {
        ((ProgressInfoItem) existingChildren[i]).dispose();
    }

    int totalSize = Math.min(newItems.size(), MAX_DISPLAYED);

    for (int i = 0; i < totalSize; i++) {
        ProgressInfoItem item = createNewItem(infos[i]);
        item.setColor(i);
    }

    control.layout(true);
    updateForShowingProgress();
}

From source file:org.eclipse.equinox.internal.p2.ui.discovery.util.ControlListViewer.java

License:Open Source License

public void add(Object[] elements) {
    ViewerComparator sorter = getComparator();

    // Use a Set in case we are getting something added that exists
    Set<Object> newItems = new HashSet<Object>(elements.length);

    Control[] existingChildren = control.getChildren();
    for (Control element : existingChildren) {
        if (element.getData() != null) {
            newItems.add(element.getData());
        }/* ww  w .j  a  va  2 s. c  om*/
    }

    for (Object element : elements) {
        if (element != null) {
            newItems.add(element);
        }
    }

    Object[] infos = new Object[newItems.size()];
    newItems.toArray(infos);

    if (sorter != null) {
        sorter.sort(this, infos);
    }

    // Update with the new elements to prevent flash
    for (Control element : existingChildren) {
        ((ControlListItem) element).dispose();
    }

    for (int i = 0; i < infos.length; i++) {
        ControlListItem item = createNewItem(infos[i]);
        item.updateColors(i);
    }

    control.layout(true);
    doUpdateContent();
}

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

License:Open Source License

public void setVisible(boolean visible) {
    fCurrentSelection = null;//  w ww.ja  v  a 2 s .co  m
    final RefactoringWizard refactoringWizard = getRefactoringWizard();
    if (hasChanges()) {
        fPageContainer.showPage(fStandardPage);
        AbstractChangeNode treeViewerInput = (AbstractChangeNode) fTreeViewer.getInput();
        if (visible && treeViewerInput != null) {
            IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
            if (selection.isEmpty()) {
                ITreeContentProvider provider = (ITreeContentProvider) fTreeViewer.getContentProvider();
                ViewerComparator comparator = fTreeViewer.getComparator();
                PreviewNode element = getFirstNonCompositeChange(provider, comparator, treeViewerInput);
                if (element != null) {
                    if (refactoringWizard != null
                            && refactoringWizard.internalGetExpandFirstNode(InternalAPI.INSTANCE)) {
                        Object[] subElements = provider.getElements(element);
                        if (subElements != null && subElements.length > 0) {
                            comparator.sort(fTreeViewer, subElements);
                            fTreeViewer.expandToLevel(element, 999);
                        }
                    }
                    fTreeViewer.setSelection(new StructuredSelection(element));
                }
            }
        } else if (!visible) // dispose the previewer
            fCurrentPreviewViewer.setInput(new ChangePreviewViewerInput(new NullChange()));
        ((FilterDropDownAction) fFilterDropDownAction).initialize(collectGroupCategories());
        super.setVisible(visible);
        fTreeViewer.getControl().setFocus();
    } else {
        fPageContainer.showPage(fNullPage);
        super.setVisible(visible);
    }
    if (refactoringWizard != null)
        refactoringWizard.internalSetPreviewShown(InternalAPI.INSTANCE, visible);
}

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

License:Open Source License

private PreviewNode getFirstNonCompositeChange(ITreeContentProvider provider, ViewerComparator comparator,
        AbstractChangeNode input) {/*from  ww w .ja  v  a2s  .  c o  m*/
    PreviewNode focus = input;
    Change change = input.getChange();
    while (change != null && change instanceof CompositeChange) {
        PreviewNode[] children = (PreviewNode[]) provider.getElements(focus);
        if (children == null || children.length == 0)
            return null;
        comparator.sort(fTreeViewer, children);
        focus = children[0];
        change = (focus instanceof AbstractChangeNode) ? ((AbstractChangeNode) focus).getChange() : null;
    }
    return focus;
}

From source file:org.eclipse.thym.ui.plugins.internal.PluginControlListViewer.java

License:Open Source License

public void add(Object[] elements) {
    ViewerComparator sorter = getComparator();

    // Use a Set in case we are getting something added that exists
    Set<Object> newItems = new HashSet<Object>(elements.length);

    Control[] existingChildren = control.getChildren();
    for (Control element : existingChildren) {
        if (element.getData() != null) {
            newItems.add(element.getData());
        }//from   w  w  w  .j  a va  2  s .co  m
    }

    for (Object element : elements) {
        if (element != null) {
            newItems.add(element);
        }
    }

    Object[] infos = new Object[newItems.size()];
    newItems.toArray(infos);

    if (sorter != null) {
        sorter.sort(this, infos);
    }

    // Update with the new elements to prevent flash
    for (Control element : existingChildren) {
        ((ControlListItem<?>) element).dispose();
    }

    for (int i = 0; i < infos.length; i++) {
        createNewItem(infos[i]);
    }

    control.layout(true);
    doUpdateContent();
}

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

License:Open Source License

/**
 * Build all of the markers in the receiver.
 * /*from  w  w w  . j  a  v a 2 s  . com*/
 * @param collector
 * @param monitor
 */
public void buildAllMarkers(IProgressMonitor monitor) {
    building = true;
    MarkerList newMarkers;
    try {
        int markerLimit = view.getMarkerLimit();
        monitor.beginTask(MarkerMessages.MarkerView_19, markerLimit == -1 ? 60 : 100);
        try {
            monitor.subTask(MarkerMessages.MarkerView_waiting_on_changes);

            if (monitor.isCanceled())
                return;

            monitor.subTask(MarkerMessages.MarkerView_searching_for_markers);
            SubProgressMonitor subMonitor = new SubProgressMonitor(monitor, 10);
            MarkerFilter[] filters = view.getEnabledFilters();
            if (filters.length > 0)
                newMarkers = MarkerList.compute(filters, subMonitor, true);
            else
                // Grab any filter as a disabled filter gives all of them
                newMarkers = MarkerList.compute(new MarkerFilter[] { view.getAllFilters()[0] }, subMonitor,
                        true);

            if (monitor.isCanceled())
                return;

            view.refreshMarkerCounts(monitor);

        } catch (CoreException e) {
            Policy.handle(e);
            newMarkers = new MarkerList();
            return;
        }

        if (monitor.isCanceled())
            return;

        ViewerComparator sorter = view.getViewer().getComparator();

        if (markerLimit == -1 || isShowingHierarchy()) {
            sorter.sort(view.getViewer(), newMarkers.toArray());
        } else {

            monitor.subTask(MarkerMessages.MarkerView_18);
            SubProgressMonitor mon = new SubProgressMonitor(monitor, 40);

            newMarkers = SortUtil.getFirst(newMarkers, (Comparator) sorter, markerLimit, mon);
            if (monitor.isCanceled())
                return;

            sorter.sort(view.getViewer(), newMarkers.toArray());
        }

        if (newMarkers.getSize() == 0) {
            categories = new MarkerCategory[0];
            lastMarkers = newMarkers;
            monitor.done();
            return;
        }

        monitor.subTask(MarkerMessages.MarkerView_queueing_updates);

        if (monitor.isCanceled())
            return;

        if (isShowingHierarchy()) {
            MarkerCategory[] newCategories = buildHierarchy(newMarkers, 0, newMarkers.getSize() - 1, 0);
            if (monitor.isCanceled())
                return;
            categories = newCategories;
        }

        lastMarkers = newMarkers;
        monitor.done();
    } finally {
        building = false;
    }

}