List of usage examples for org.eclipse.jface.viewers ITreePathContentProvider getParents
public TreePath[] getParents(Object element);
From source file:org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.java
License:Open Source License
public TreePath[] getParents(Object element) { if (contentProvider instanceof ITreePathContentProvider) { ITreePathContentProvider tpcp = (ITreePathContentProvider) contentProvider; return tpcp.getParents(element); }/*from ww w .jav a2 s . c o m*/ ArrayList segments = new ArrayList(); Object parent = element; do { parent = contentProvider.getParent(parent); if (parent != null && parent != viewer.getInput()) segments.add(0, parent); } while (parent != null && parent != viewer.getInput()); if (!segments.isEmpty()) { // Loop backwards over the array to create the path. return new TreePath[] { new TreePath(segments.toArray()) }; } return NO_PATHS; }
From source file:org.eclipse.ui.internal.navigator.NavigatorSaveablesService.java
License:Open Source License
/** helper to compute the saveables for which elements are part of the tree. * Must be called from a synchronized method. * // ww w. j a va2s. com * @return the saveables */ private Saveable[] computeSaveables() { ITreeContentProvider contentProvider = (ITreeContentProvider) viewer.getContentProvider(); boolean isTreepathContentProvider = contentProvider instanceof ITreePathContentProvider; Object viewerInput = viewer.getInput(); List result = new ArrayList(); Set roots = new HashSet(Arrays.asList(contentProvider.getElements(viewerInput))); SaveablesProvider[] saveablesProviders = getSaveablesProviders(); for (int i = 0; i < saveablesProviders.length; i++) { SaveablesProvider saveablesProvider = saveablesProviders[i]; Saveable[] saveables = saveablesProvider.getSaveables(); for (int j = 0; j < saveables.length; j++) { Saveable saveable = saveables[j]; Object[] elements = saveablesProvider.getElements(saveable); // the saveable is added to the result if at least one of the // elements representing the saveable appears in the tree, i.e. // if its parent chain leads to a root node. boolean foundRoot = false; for (int k = 0; !foundRoot && k < elements.length; k++) { Object element = elements[k]; if (roots.contains(element)) { result.add(saveable); foundRoot = true; } else if (isTreepathContentProvider) { ITreePathContentProvider treePathContentProvider = (ITreePathContentProvider) contentProvider; TreePath[] parentPaths = treePathContentProvider.getParents(element); for (int l = 0; !foundRoot && l < parentPaths.length; l++) { TreePath parentPath = parentPaths[l]; for (int m = 0; !foundRoot && m < parentPath.getSegmentCount(); m++) { if (roots.contains(parentPath.getSegment(m))) { result.add(saveable); foundRoot = true; } } } } else { while (!foundRoot && element != null) { if (roots.contains(element)) { // found a parent chain leading to a root. The // saveable is part of the tree. result.add(saveable); foundRoot = true; } else { element = contentProvider.getParent(element); } } } } } } return (Saveable[]) result.toArray(new Saveable[result.size()]); }
From source file:org.eclipse.ui.internal.navigator.NavigatorSaveablesService.java
License:Open Source License
/** * @param selection/* w w w. ja v a 2 s. com*/ * @param provider * @return the active saveables */ private Saveable[] getActiveSaveablesFromTreePathProvider(IStructuredSelection selection, ITreePathContentProvider provider) { Set result = new HashSet(); for (Iterator it = selection.iterator(); it.hasNext();) { Object element = it.next(); Saveable saveable = getSaveable(element); if (saveable != null) { result.add(saveable); } else { TreePath[] paths = provider.getParents(element); saveable = findSaveable(paths); if (saveable != null) { result.add(saveable); } } } return (Saveable[]) result.toArray(new Saveable[result.size()]); }
From source file:rabbit.ui.internal.viewers.TreePathPatternFilter.java
License:Apache License
@Override protected boolean isParentMatch(Viewer viewer, Object element) { ITreePathContentProvider provider = (ITreePathContentProvider) ((ContentViewer) viewer) .getContentProvider();// w w w .j av a2 s . com TreePath[] parents = provider.getParents(element); if (parents == null) { return false; } for (TreePath parent : parents) { Object[] children = provider.getChildren(parent); for (Object child : children) { if (child == element) { TreePath currentPath = parent.createChildPath(child); if (isMatch(viewer, currentPath)) { return true; } } } } return false; }
From source file:rabbit.ui.internal.viewers.TreePathPatternFilterTest.java
License:Apache License
@Test public void shouldHideTheElementIfTheLabelOfTheElementDoesNotMatchTheFilterText() { TreePath path = new TreePath(new Object[] { "parent", "child" }); ITreePathContentProvider contentProvider = mock(ITreePathContentProvider.class); given(contentProvider.getChildren(path.getParentPath())).willReturn(new Object[] { path.getLastSegment() }); given(contentProvider.getChildren(path)).willReturn(new Object[0]); given(contentProvider.getParents(path.getLastSegment())) .willReturn(new TreePath[] { path.getParentPath() }); TreeViewer v = mock(TreeViewer.class); given(v.getContentProvider()).willReturn(contentProvider); filter.setPattern("not a match"); assertThat(filter.isElementVisible(v, path.getLastSegment()), is(FALSE)); }
From source file:rabbit.ui.internal.viewers.TreePathPatternFilterTest.java
License:Apache License
@Test public void shouldShowTheElementIfTheLabelOfTheElementMatchesTheFilterText() { TreePath path = new TreePath(new Object[] { "parent", "child" }); ITreePathContentProvider contentProvider = mock(ITreePathContentProvider.class); given(contentProvider.getChildren(path.getParentPath())).willReturn(new Object[] { path.getLastSegment() }); given(contentProvider.getParents(path.getLastSegment())) .willReturn(new TreePath[] { path.getParentPath() }); TreeViewer v = mock(TreeViewer.class); given(v.getContentProvider()).willReturn(contentProvider); filter.setPattern("child"); assertThat(filter.isElementVisible(v, path.getLastSegment()), is(TRUE)); }