List of usage examples for org.eclipse.jface.viewers ViewerSorter sort
public void sort(final Viewer viewer, Object[] elements)
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]); }