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

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

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ViewerSorter 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:org.eclipse.debug.internal.ui.viewers.AsynchronousModel.java

License:Open Source License

/**
 * Notification from children request monitor
 * //  w w  w  . j  a  v  a2  s . co m
 * @param parentNode parent node
 * @param kids list of model elements
 */
protected void setChildren(final ModelNode parentNode, List kids) {

    final Object[] children = filter(parentNode.getElement(), kids.toArray());
    final AsynchronousViewer viewer = getViewer();
    ViewerSorter sorter = viewer.getSorter();
    if (sorter != null) {
        sorter.sort(viewer, children);
    }

    ModelNode[] prevKids = null;
    ModelNode[] newChildren = null;
    ModelNode[] unmap = null;

    synchronized (this) {
        if (isDisposed()) {
            return;
        }
        prevKids = parentNode.getChildrenNodes();
        if (prevKids == null) {
            newChildren = new ModelNode[children.length];
            for (int i = 0; i < children.length; i++) {
                ModelNode node = new ModelNode(parentNode, children[i]);
                mapElement(children[i], node);
                newChildren[i] = node;
            }
            parentNode.setChildren(newChildren);
        } else {
            newChildren = new ModelNode[children.length];
            unmap = new ModelNode[prevKids.length];
            for (int i = 0; i < prevKids.length; i++) {
                unmap[i] = prevKids[i];
            }
            for (int i = 0; i < children.length; i++) {
                Object child = children[i];
                boolean found = false;
                for (int j = 0; j < prevKids.length; j++) {
                    ModelNode prevKid = prevKids[j];
                    if (prevKid != null && child.equals(prevKid.getElement())) {
                        newChildren[i] = prevKid;
                        prevKids[j] = null;
                        found = true;
                        break;
                    }
                }
                if (!found) {
                    newChildren[i] = new ModelNode(parentNode, child);
                    mapElement(child, newChildren[i]);
                }
            }
            for (int i = 0; i < prevKids.length; i++) {
                ModelNode kid = prevKids[i];
                if (kid != null) {
                    kid.dispose();
                    unmapNode(kid);
                }
            }
            parentNode.setChildren(newChildren);
        }
        if (DEBUG_MODEL) {
            DebugUIPlugin.debug("CHILDREN CHANGED: " + parentNode); //$NON-NLS-1$
            DebugUIPlugin.debug(toString());
        }
    }

    //update viewer outside the lock
    final ModelNode[] finalUnmap = unmap;
    preservingSelection(new Runnable() {
        public void run() {
            if (finalUnmap != null) {
                for (int i = 0; i < finalUnmap.length; i++) {
                    viewer.unmapNode(finalUnmap[i]);
                }
            }
            viewer.nodeChildrenChanged(parentNode);
        }
    });

}

From source file:org.eclipse.jface.tests.performance.RefreshTestContentProvider.java

License:Open Source License

void preSortElements(Viewer viewer, ViewerSorter sorter) {
    sorter.sort(viewer, currentElements);

}

From source file:org.eclipse.jubula.client.ui.utils.TreeViewerIterator.java

License:Open Source License

/**
 * Creates the linear list of tree elements, including the root.
 * /*from w  w w.j ava  2  s .c  om*/
 * @param root The root of the tree or sub-tree.
 */
private void setElements(Object root) {
    if (root == null) {
        return;
    }
    Object[] children = ((ITreeContentProvider) m_viewer.getContentProvider()).getChildren(root);
    // Filter the same elements as in GUI
    for (ViewerFilter vf : m_viewer.getFilters()) {
        children = vf.filter(m_viewer, root, children);
    }
    // Sort elements like sorted in GUI to obtain correct traversal order
    ViewerSorter sorter = m_viewer.getSorter();
    if (sorter != null) {
        sorter.sort(m_viewer, children);
    }
    for (Object node : children) {
        if (node != null) {
            m_elements.add(node);
        }
        setElements(node);
    }
}

From source file:org.eclipse.team.tests.ccvs.ui.PatchTreeTest.java

License:Open Source License

public void testChangeSetModelSorter() throws CoreException {
    MyTreeViewer tree = new MyTreeViewer();
    tree.init();/*from ww w . j a  va  2  s  . c om*/
    ViewerSorter sorter = tree.getSorter();

    UnchangedResourceModelElement elementZ = new UnchangedResourceModelElement(null, getUniqueTestProject("z"));
    ChangeSetDiffNode nodeA = new ChangeSetDiffNode(null, new CVSActiveChangeSet(null, "a"));
    ChangeSetDiffNode nodeB = new ChangeSetDiffNode(null, new CVSActiveChangeSet(null, "b"));
    ChangeSetDiffNode nodeC = new ChangeSetDiffNode(null, new CVSActiveChangeSet(null, "c"));
    Object[] elements = { nodeB, nodeC, elementZ, nodeA };

    sorter.sort(tree, elements);

    assertEquals(nodeA, elements[0]);
    assertEquals(nodeB, elements[1]);
    assertEquals(nodeC, elements[2]);
    assertEquals(elementZ, elements[3]);
}