Example usage for org.eclipse.jface.viewers ITreePathContentProvider getChildren

List of usage examples for org.eclipse.jface.viewers ITreePathContentProvider getChildren

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ITreePathContentProvider getChildren.

Prototype

public Object[] getChildren(TreePath parentPath);

Source Link

Document

Returns the child elements of the last element in the given path.

Usage

From source file:com.jointlogic.breadcrumbs.sampleapp.api.BreadcrumbViewer.java

License:Open Source License

/**
 * Generates the parent chain of the given element.
 * /*from   w  w w  .  jav  a 2  s  .c  o  m*/
 * @param element
 *            element to build the parent chain for
 * @return the first index of an item in fBreadcrumbItems which is not part
 *         of the chain
 */
private void buildItemChain(final Object input) {
    if (this.fBreadcrumbItems.size() > 0) {
        final BreadcrumbItem last = (BreadcrumbItem) this.fBreadcrumbItems
                .get(this.fBreadcrumbItems.size() - 1);
        last.setIsLastItem(false);
    }

    int index = 0;
    boolean updateLayout = false;
    if (input != null) {
        final ITreePathContentProvider contentProvider = (ITreePathContentProvider) getContentProvider();
        TreePath path = new TreePath(new Object[0]);

        // Top level elements need to be retrieved using getElements(), rest
        // using getChildren().
        Object[] children = contentProvider.getElements(input);
        Object element = children != null && children.length != 0 ? children[0] : null;
        while (element != null) {
            path = path.createChildPath(element);

            // All but last item are hidden if the viewer is in a vertical
            // toolbar.
            children = contentProvider.getChildren(path);
            if ((getStyle() & SWT.VERTICAL) == 0 || children == null || children.length == 0) {
                updateLayout = updateOrCreateItem(index++, path, element) || updateLayout;
            }

            if (children != null && children.length != 0) {
                element = children[0];
            } else {
                break;
            }

        }
    }

    BreadcrumbItem last = null;
    if (index <= this.fBreadcrumbItems.size()) {
        last = (BreadcrumbItem) this.fBreadcrumbItems.get(index - 1);
        last.setIsLastItem(true);

    }

    while (index < this.fBreadcrumbItems.size()) {
        updateLayout = true;
        final BreadcrumbItem item = (BreadcrumbItem) this.fBreadcrumbItems
                .remove(this.fBreadcrumbItems.size() - 1);
        if (item.hasFocus() && last != null) {
            last.setFocus(true);
        }
        if (item == this.fSelectedItem) {
            selectItem(null);
        }
        if (item.getData() != null) {
            unmapElement(item.getData());
        }
        item.dispose();
    }

    if (updateLayout) {
        updateSize();
        this.fContainer.layout(true, true);
    }
}

From source file:cz.robotron.examples.jface.treePathFiltered.TreePathPatternFilter.java

License:Open Source License

/**
 * @see PatternFilter#isParentMatch(Viewer, Object)
 *///from  ww  w . ja va  2  s .  co  m
@Override
protected boolean isParentMatch(Viewer viewer, Object element) {
    TreePath elementPath = (TreePath) element;

    boolean proceed = allowDescend(elementPath);
    if (!proceed) {
        return false;
    }

    Object[] children;
    ITreePathContentProvider cp = ((ITreePathContentProvider) ((AbstractTreeViewer) viewer)
            .getContentProvider());

    children = cp.getChildren(elementPath);

    if ((children != null) && (children.length > 0)) {
        // convert children to tree paths
        List<TreePath> pathChildren = TreePathFilteredTree.getPathsForElements(elementPath, children);

        return isAnyVisible(viewer, element, pathChildren.toArray());
    }
    return false;
}

From source file:org.eclipse.debug.internal.ui.viewers.breadcrumb.BreadcrumbViewer.java

License:Open Source License

/**
 * Generates the parent chain of the given element.
 * @param input element to build the parent chain for
 *//*  ww  w . j  a va2  s  .c o  m*/
private void buildItemChain(Object input) {
    if (fBreadcrumbItems.size() > 0) {
        BreadcrumbItem last = (BreadcrumbItem) fBreadcrumbItems.get(fBreadcrumbItems.size() - 1);
        last.setIsLastItem(false);
    }

    int index = 0;
    boolean updateLayout = false;
    if (input != null) {
        ITreePathContentProvider contentProvider = (ITreePathContentProvider) getContentProvider();
        TreePath path = new TreePath(new Object[0]);

        // Top level elements need to be retrieved using getElements(), rest 
        // using getChildren().
        Object[] children = contentProvider.getElements(input);
        Object element = children != null && children.length != 0 ? children[0] : null;
        while (element != null) {
            path = path.createChildPath(element);

            // All but last item are hidden if the viewer is in a vertical toolbar.
            children = contentProvider.getChildren(path);
            if ((getStyle() & SWT.VERTICAL) == 0 || children == null || children.length == 0) {
                updateLayout = updateOrCreateItem(index++, path, element) || updateLayout;
            }

            if (children != null && children.length != 0) {
                element = children[0];
            } else {
                break;
            }

        }
    }

    BreadcrumbItem last = null;
    if (index <= fBreadcrumbItems.size()) {
        last = ((BreadcrumbItem) fBreadcrumbItems.get(index - 1));
        last.setIsLastItem(true);
    }

    while (index < fBreadcrumbItems.size()) {
        updateLayout = true;
        BreadcrumbItem item = (BreadcrumbItem) fBreadcrumbItems.remove(fBreadcrumbItems.size() - 1);
        if (item.hasFocus() && last != null) {
            last.setFocus(true);
        }
        if (item == fSelectedItem) {
            selectItem(null);
        }
        if (item.getData() != null)
            unmapElement(item.getData());
        item.dispose();
    }

    if (updateLayout) {
        updateSize();
        fContainer.layout(true, true);
    }
}

From source file:org.eclipse.swt.nebula.nebface.ctabletreeviewer.CTableTreeViewer.java

License:Open Source License

protected Object[] getRawChildren(Object parent) {
    Object[] result = null;/*from www . j  a  va2 s .c  o m*/
    TreePath path;
    if (parent instanceof TreePath) {
        path = (TreePath) parent;
        parent = path.getLastSegment();
    } else {
        path = null;
    }
    if (parent != null) {
        IStructuredContentProvider cp = (IStructuredContentProvider) getContentProvider();
        if (cp != null) {
            if (cp instanceof ITreeContentProvider) {
                ITreeContentProvider tcp = (ITreeContentProvider) cp;
                // if Flat, must iteratively get all children and return them as one array
                //   so that the filters and sorters hit every element
                // if NOT Flat (Hierarchical) then only return the direct elements or children
                //   requested - the getSortedChildren method will compile all branches after
                //   being filtered
                if (getCTableTree().isFlat()) {
                    Object[] oa;
                    if (equals(parent, getRoot())) {
                        oa = tcp.getElements(parent);
                    } else {
                        oa = tcp.getChildren(parent);
                    }
                    Set s = new HashSet(oa.length);
                    for (int i = 0; i < oa.length; i++) {
                        s.add(oa[i]);
                        s.addAll(Arrays.asList(getRawChildren(oa[i])));
                    }
                    result = s.isEmpty() ? new Object[0] : s.toArray();
                } else {
                    if (equals(parent, getRoot())) {
                        result = tcp.getElements(parent);
                    } else {
                        result = tcp.getChildren(parent);
                    }
                }
            } else if (cp instanceof ITreePathContentProvider) {
                ITreePathContentProvider tpcp = (ITreePathContentProvider) cp;
                // if Flat, must iteratively get all children and return them as one array
                //   so that the filters and sorters hit every element
                // if NOT Flat (Hierarchical) then only return the direct elements or children
                //   requested - the getSortedChildren method will compile all branches after
                //   being filtered
                if (getCTableTree().isFlat()) {
                    Object[] oa;
                    if (equals(parent, getRoot())) {
                        oa = tpcp.getElements(parent);
                    } else {
                        if (path == null) {
                            // A path was not provided so try and find one
                            Widget w = findItem(parent);
                            if (w instanceof Item) {
                                Item item = (Item) w;
                                path = getTreePathFromItem(item);
                            }
                            if (path == null) {
                                path = new TreePath(new Object[] { parent });
                            }
                        }
                        oa = tpcp.getChildren(path);
                    }
                    Set s = new HashSet(oa.length);
                    for (int i = 0; i < oa.length; i++) {
                        s.add(oa[i]);
                        s.addAll(Arrays.asList(getRawChildren(oa[i])));
                    }
                    result = s.isEmpty() ? new Object[0] : s.toArray();
                } else {
                    if (equals(parent, getRoot())) {
                        result = tpcp.getElements(parent);
                    } else {
                        if (path == null) {
                            // A path was not provided so try and find one
                            Widget w = findItem(parent);
                            if (w instanceof Item) {
                                Item item = (Item) w;
                                path = getTreePathFromItem(item);
                            }
                            if (path == null) {
                                path = new TreePath(new Object[] { parent });
                            }
                        }
                        result = tpcp.getChildren(path);
                    }
                }
            } else {
                result = cp.getElements(parent);
            }
            assertElementsNotNull(result);
        }
    }
    return (result != null) ? result : new Object[0];
}

From source file:org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.java

License:Open Source License

public Object[] getChildren(TreePath parentPath) {
    if (contentProvider instanceof ITreePathContentProvider) {
        ITreePathContentProvider tpcp = (ITreePathContentProvider) contentProvider;
        Object[] children = tpcp.getChildren(parentPath);
        return children;
    }//from   w  ww . j a v a 2  s . c  om
    return getChildren(parentPath.getLastSegment());
}

From source file:org.neuro4j.studio.debug.ui.views.BreadcrumbViewer.java

License:Apache License

/**
 * Generates the parent chain of the given element.
 * /*from w w  w .jav  a2 s  .  c  om*/
 * @param element
 *        element to build the parent chain for
 * @return the first index of an item in fBreadcrumbItems which is not
 *         part of the chain
 */
private void buildItemChain(Object input) {
    if (fBreadcrumbItems.size() > 0) {
        BreadcrumbItem last = (BreadcrumbItem) fBreadcrumbItems.get(fBreadcrumbItems.size() - 1);
        last.setIsLastItem(false);
    }

    int index = 0;
    boolean updateLayout = false;
    if (input != null) {
        ITreePathContentProvider contentProvider = (ITreePathContentProvider) getContentProvider();
        TreePath path = new TreePath(new Object[0]);

        // Top level elements need to be retrieved using getElements(), rest
        // using getChildren().
        Object[] children = contentProvider.getElements(input);
        Object element = children != null && children.length != 0 ? children[0] : null;
        while (element != null) {
            path = path.createChildPath(element);

            // All but last item are hidden if the viewer is in a vertical toolbar.
            children = contentProvider.getChildren(path);
            if ((getStyle() & SWT.VERTICAL) == 0 || children == null || children.length == 0) {
                updateLayout = updateOrCreateItem(index++, path, element) || updateLayout;
            }

            if (children != null && children.length != 0) {
                element = children[0];
            } else {
                break;
            }

        }
    }

    BreadcrumbItem last = null;
    if (index <= fBreadcrumbItems.size()) {
        last = ((BreadcrumbItem) fBreadcrumbItems.get(index - 1));
        last.setIsLastItem(true);
    }

    while (index < fBreadcrumbItems.size()) {
        updateLayout = true;
        BreadcrumbItem item = (BreadcrumbItem) fBreadcrumbItems.remove(fBreadcrumbItems.size() - 1);
        if (item.hasFocus() && last != null) {
            last.setFocus(true);
        }
        if (item == fSelectedItem) {
            selectItem(null);
        }
        if (item.getData() != null)
            unmapElement(item.getData());
        item.dispose();
    }

    if (updateLayout) {
        updateSize();
        fContainer.layout(true, true);
    }
}

From source file:org.openscada.ui.breadcrumbs.BreadcrumbViewer.java

License:Open Source License

/**
 * Generates the parent chain of the given element.
 * //from   w  w  w. ja v a2 s .c om
 * @param element
 *            element to build the parent chain for
 * @return the first index of an item in fBreadcrumbItems which is not part
 *         of the chain
 */
private void buildItemChain(final Object input) {
    if (this.fBreadcrumbItems.size() > 0) {
        final BreadcrumbItem last = (BreadcrumbItem) this.fBreadcrumbItems
                .get(this.fBreadcrumbItems.size() - 1);
        last.setIsLastItem(false);
    }

    int index = 0;
    boolean updateLayout = false;
    if (input != null) {
        final ITreePathContentProvider contentProvider = (ITreePathContentProvider) getContentProvider();
        TreePath path = new TreePath(new Object[0]);

        // Top level elements need to be retrieved using getElements(), rest
        // using getChildren().
        Object[] children = contentProvider.getElements(input);
        Object element = children != null && children.length != 0 ? children[0] : null;
        while (element != null) {
            path = path.createChildPath(element);

            // All but last item are hidden if the viewer is in a vertical
            // toolbar.
            children = contentProvider.getChildren(path);
            if ((getStyle() & SWT.VERTICAL) == 0 || children == null || children.length == 0) {
                updateLayout = updateOrCreateItem(index++, path, element) || updateLayout;
            }

            if (children != null && children.length != 0) {
                element = children[0];
            } else {
                break;
            }

        }
    }

    BreadcrumbItem last = null;
    if (index <= this.fBreadcrumbItems.size()) {
        last = (BreadcrumbItem) this.fBreadcrumbItems.get(index - 1);
        last.setIsLastItem(true);
    }

    while (index < this.fBreadcrumbItems.size()) {
        updateLayout = true;
        final BreadcrumbItem item = (BreadcrumbItem) this.fBreadcrumbItems
                .remove(this.fBreadcrumbItems.size() - 1);
        if (item.hasFocus() && last != null) {
            last.setFocus(true);
        }
        if (item == this.fSelectedItem) {
            selectItem(null);
        }
        if (item.getData() != null) {
            unmapElement(item.getData());
        }
        item.dispose();
    }

    if (updateLayout) {
        updateSize();
        this.fContainer.layout(true, true);
    }
}

From source file:rabbit.ui.internal.viewers.FilterableTreePathContentProviderTest.java

License:Apache License

@Test
public void getChildrenShouldRetainTheOrderOfTheChildrenWhenNoFiltering() {
    Object[] children = { 9, 29, "adf", 0 };
    TreePath parent = newPath();/*from w w w  .ja  va 2 s . com*/
    ITreePathContentProvider p = create(parent, children);
    assertThat(p.getChildren(parent), equalTo(children));
}

From source file:rabbit.ui.internal.viewers.FilterableTreePathContentProviderTest.java

License:Apache License

@Test
public void getChildrenShouldReturnAllChildrenIfNoFiltering() {
    Object[] expectedChildren1 = { Integer.valueOf(0), "100" };
    Object[] expectedChildren2 = { "1", "2" };

    TreePath parent1 = newPath("1");
    TreePath parent2 = newPath("2");
    ITreePathContentProvider mock = mock(ITreePathContentProvider.class);
    given(mock.getChildren(parent1)).willReturn(expectedChildren1);
    given(mock.getChildren(parent2)).willReturn(expectedChildren2);
    FilterableTreePathContentProvider provider = create(mock);

    assertThat(provider.getChildren(parent1), equalTo(expectedChildren1));
    assertThat(provider.getChildren(parent2), equalTo(expectedChildren2));
}

From source file:rabbit.ui.internal.viewers.FilterableTreePathContentProviderTest.java

License:Apache License

private final ForwardingTreePathContentProvider create() {
    ITreePathContentProvider p = mock(ITreePathContentProvider.class);
    given(p.getChildren(Mockito.<TreePath>any())).willReturn(EMPTY_ARRAY);
    given(p.getElements(Mockito.any())).willReturn(EMPTY_ARRAY);
    given(p.hasChildren(Mockito.<TreePath>any())).willReturn(Boolean.FALSE);
    return create(p);
}