Example usage for org.eclipse.jface.viewers IStructuredContentProvider getElements

List of usage examples for org.eclipse.jface.viewers IStructuredContentProvider getElements

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers IStructuredContentProvider getElements.

Prototype

public Object[] getElements(Object inputElement);

Source Link

Document

Returns the elements to display in the viewer when its input is set to the given element.

Usage

From source file:co.edu.unal.colswe.changescribe.core.decorator.ProblemLabelDecorator.java

License:Open Source License

private List<Object> getAffectedElements(Set<IResource> resources) {
    List<Object> result = new ArrayList<Object>();
    if (viewer.getContentProvider() instanceof IStructuredContentProvider) {
        IStructuredContentProvider contentProvider = (IStructuredContentProvider) viewer.getContentProvider();
        Object[] elements = contentProvider.getElements(null);
        for (Object element : elements) {
            IResource resource = AdapterUtils.adapt(element, IResource.class);
            if (resource != null && resources.contains(resource))
                result.add(element);//from   w  w w. j a v  a 2 s.c  om
        }
    }
    return result;
}

From source file:com.amalto.workbench.utils.Util.java

License:Open Source License

public static Object[] getAllObject(Object elem, List<Object> objList, IStructuredContentProvider provider) {
    Object[] elems = provider.getElements(elem);
    for (Object obj : elems) {
        if (obj == null) {
            continue;
        }/* www. ja v  a 2 s .c o  m*/
        if (obj instanceof XSDModelGroup || obj instanceof XSDElementDeclaration || obj instanceof XSDParticle
                || obj instanceof XSDTypeDefinition) {
            if (!objList.contains(obj)) {
                objList.add(obj);

                getAllObject(obj, objList, provider);
            }
        }
    }

    return objList.toArray();

}

From source file:com.amalto.workbench.utils.Util.java

License:Open Source License

public static void collectElementPaths(IStructuredContentProvider provider, Object input, XSDParticle toSearch,
        Set<String> paths, String inputPath) {
    if (input == null || paths == null || provider == null) {
        return;//  www . j  av  a2  s.c o  m
    }
    Object[] elems = provider.getElements(input);
    if (elems != null && elems.length > 0) {
        for (Object obj : elems) {
            if (obj == null) {
                continue;
            }
            String curPath = inputPath;
            if (obj instanceof XSDElementDeclaration) {
                String name = ((XSDElementDeclaration) obj).getName();
                if (curPath == null) {
                    curPath = name;
                } else {
                    curPath += "/" + name; //$NON-NLS-1$
                }
            }
            if (obj instanceof XSDParticle) {
                XSDParticleContent content = ((XSDParticle) obj).getContent();
                if (content instanceof XSDElementDeclaration) {
                    String name = ((XSDElementDeclaration) content).getName();
                    curPath += "/" + name; //$NON-NLS-1$
                }
                if (obj == toSearch) {
                    paths.add(curPath);
                    break;
                }
            }
            collectElementPaths(provider, obj, toSearch, paths, curPath);

        }
    }
}

From source file:com.amalto.workbench.utils.Util.java

License:Open Source License

/**
 * return {fk,fk info,fk filter} element
 *///from www  . j av a 2  s .com
public static Object[] getAllForeignKeyRelatedInfos(Object elem, List<Object> objList,
        IStructuredContentProvider provider, final Set<Object> visited) {
    if (elem == null || objList == null || visited == null || provider == null) {
        return null;
    }

    visited.add(elem);

    Object[] elems = provider.getElements(elem);
    if (elems != null && elems.length > 0) {
        for (Object obj : elems) {
            if (obj == null) {
                continue;
            }

            if (obj instanceof Element) {
                Element e = (Element) obj;
                if (e.getLocalName().equals("appinfo")) {//$NON-NLS-1$
                    String source = e.getAttribute("source");//$NON-NLS-1$
                    if (source != null && !objList.contains(e)) {
                        if (source.equals("X_ForeignKey") || source.equals("X_ForeignKeyInfo") //$NON-NLS-1$ //$NON-NLS-2$
                                || source.equals("X_ForeignKey_Filter")) {//$NON-NLS-1$
                            objList.add(e);
                        }
                    }
                }
            } else {
                if (!visited.contains(obj)) {
                    getAllForeignKeyRelatedInfos(obj, objList, provider, visited);
                }
            }
        }
    }

    return objList.toArray();
}

From source file:com.amalto.workbench.utils.UtilMockTest.java

License:Open Source License

@Test
public void testGetAllForeignKeyRelatedInfos() {
    String localName = "appinfo"; //$NON-NLS-1$
    String attr_key = "source"; //$NON-NLS-1$
    String[] fkRelatedInfo = { "X_ForeignKey", "X_ForeignKeyInfo", "X_ForeignKey_Filter" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    String namespaceURI = "http://www.w3.org/XML/1998/namespace"; //$NON-NLS-1$

    Object elem1 = XSDFactory.eINSTANCE.createXSDElementDeclaration();
    List<Object> objList = new ArrayList<Object>();
    Set<Object> visited = new HashSet<Object>();
    IStructuredContentProvider provider = mock(IStructuredContentProvider.class);

    Object[] allForeignKeyRelatedInfos = Util.getAllForeignKeyRelatedInfos(null, new ArrayList<Object>(),
            provider, visited);/*from  w ww.ja  va2 s. c  o m*/
    assertNull(allForeignKeyRelatedInfos);
    allForeignKeyRelatedInfos = Util.getAllForeignKeyRelatedInfos(new Object(), null, provider, visited);
    assertNull(allForeignKeyRelatedInfos);
    allForeignKeyRelatedInfos = Util.getAllForeignKeyRelatedInfos(new Object(), new ArrayList<Object>(), null,
            visited);
    assertNull(allForeignKeyRelatedInfos);
    allForeignKeyRelatedInfos = Util.getAllForeignKeyRelatedInfos(new Object(), new ArrayList<Object>(),
            provider, null);
    assertNull(allForeignKeyRelatedInfos);
    allForeignKeyRelatedInfos = Util.getAllForeignKeyRelatedInfos(new Object(), new ArrayList<Object>(),
            provider, visited);
    assertNotNull(allForeignKeyRelatedInfos);
    assertTrue(allForeignKeyRelatedInfos.length == 0);

    try {
        Document doc = getEmptyDocument();

        Object[] elems1 = new Object[4];
        for (int i = 0; i < elems1.length - 1; i++) {
            Element fkRelatedElement = doc.createElementNS(namespaceURI, localName);
            fkRelatedElement.setAttribute(attr_key, fkRelatedInfo[i]);
            elems1[i] = fkRelatedElement;
        }
        Object elem2 = XSDFactory.eINSTANCE.createXSDElementDeclaration();
        elems1[3] = elem2;

        Object[] elems2 = new Object[3];
        for (int i = 0; i < elems2.length; i++) {
            Element fkRelatedElement = doc.createElementNS(namespaceURI, localName);
            fkRelatedElement.setAttribute(attr_key, fkRelatedInfo[i]);
            elems2[i] = fkRelatedElement;
        }

        when(provider.getElements(eq(elem1))).thenReturn(elems1);
        when(provider.getElements(eq(elem2))).thenReturn(elems2);

        allForeignKeyRelatedInfos = Util.getAllForeignKeyRelatedInfos(elem1, objList, provider, visited);
        assertNotNull(allForeignKeyRelatedInfos);
        assertEquals(6, allForeignKeyRelatedInfos.length);
        assertArrayEquals(objList.toArray(), allForeignKeyRelatedInfos);

        for (int j = 0; j < elems1.length - 1; j++) {
            assertTrue(objList.contains(elems1[j]));
        }
        for (int j = 0; j < elems2.length; j++) {
            assertTrue(objList.contains(elems1[j]));
        }
    } catch (ParserConfigurationException e) {
        log.error(e.getMessage(), e);
    }

}

From source file:com.aptana.editor.common.outline.CommonQuickOutlinePage.java

License:Open Source License

/**
 * Reveals position.// www.j  ava  2  s  . c  o  m
 * 
 * @param documentPos
 *            - document position.
 */
void revealPosition(int documentPos) {
    IStructuredContentProvider provider = (IStructuredContentProvider) getTreeViewer().getContentProvider();
    final Object[] originalElements = provider.getElements(_treeViewer.getInput());
    if (originalElements == null || originalElements.length == 0) {
        return;
    }

    // list of outline elements
    List<Object> elements = new ArrayList<Object>();

    // map from outline elements to the list of its parent elements
    // we need such a construction due to the fact that OutlineItem has no information about its parent
    final Map<Object, List<Object>> parents = new IdentityHashMap<Object, List<Object>>();

    for (Object el : originalElements) {
        elements.add(el);
    }

    if (provider instanceof ITreeContentProvider) {
        ITreeContentProvider treeContentProvider = (ITreeContentProvider) provider;
        for (Object element : originalElements) {
            expandElement(element, treeContentProvider, elements, parents);
        }
    }

    Object bestElement = null;
    int bestElementStartingOffset = -1;
    int bestElementEndingOffset = -1;

    for (Object element : elements) {
        int start = -1;
        int end = -1;
        if (element instanceof IParseNode) {
            IParseNode node = (IParseNode) element;
            start = node.getStartingOffset();
            end = node.getEndingOffset();
        } else if (element instanceof CommonOutlineItem) {
            int refNodeStart = ((CommonOutlineItem) element).getReferenceNode().getStartingOffset();
            int refNodeEnd = ((CommonOutlineItem) element).getReferenceNode().getEndingOffset();
            int elementStart = ((CommonOutlineItem) element).getStartingOffset();
            int elementEnd = ((CommonOutlineItem) element).getEndingOffset();
            start = (refNodeStart < elementStart) ? refNodeStart : elementStart;
            end = (refNodeEnd > elementEnd) ? refNodeEnd : elementEnd;
        }

        if (start != -1) {
            if (start <= documentPos && end >= documentPos) {
                // choosing the node having the least length
                if (bestElement == null || bestElementEndingOffset - bestElementStartingOffset > end - start) {
                    bestElement = element;
                    bestElementStartingOffset = start;
                    bestElementEndingOffset = end;
                }
            }
        }
    }
    final Object toReveal = bestElement;
    WorkbenchJob job = new WorkbenchJob("Initial reveal") {//$NON-NLS-1$
        /**
         * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
         */
        public IStatus runInUIThread(IProgressMonitor monitor) {
            if (_treeViewer.getControl().isDisposed()) {
                return Status.CANCEL_STATUS;
            }

            try {
                // don't want the user to see updates that will be made to the tree
                _treeViewer.getControl().setRedraw(false);
                _treeViewer.refresh(true);

                // _treeViewer.setSelection(new StructuredSelection(toReveal), true);
                List<Object> path = new ArrayList<Object>();
                List<Object> p = parents.get(toReveal);
                if (p != null) {
                    path.addAll(p);
                }
                path.add(toReveal);
                TreePath treePath = new TreePath(path.toArray());
                _treeViewer.setSelection(new TreeSelection(treePath), true);
            } finally {
                // done updating the tree - set redraw back to true
                _treeViewer.getControl().setRedraw(true);
            }

            return Status.OK_STATUS;
        }
    };

    if (bestElement != null) {
        job.schedule(FILTER_REFRESH_DELAY);
    }
}

From source file:com.aptana.editor.common.outline.CommonQuickOutlinePage.java

License:Open Source License

/**
 * createRefreshJob/*w  ww  . j  av a  2  s . c om*/
 * 
 * @return Workbench job
 */
private WorkbenchJob createRefreshJob() {
    return new WorkbenchJob("Refresh Filter") {//$NON-NLS-1$
        /**
         * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
         */
        public IStatus runInUIThread(IProgressMonitor monitor) {
            if (_treeViewer.getControl().isDisposed()) {
                return Status.CANCEL_STATUS;
            }

            if (_pattern == null) {
                return Status.OK_STATUS;
            }

            _filter.setPattern(_pattern);

            try {
                // don't want the user to see updates that will be made to the tree
                _treeViewer.getControl().setRedraw(false);
                _treeViewer.refresh(true);

                if (_pattern.length() > 0) {
                    /*
                     * Expand elements one at a time. After each is expanded, check to see if the filter text has
                     * been modified. If it has, then cancel the refresh job so the user doesn't have to endure
                     * expansion of all the nodes.
                     */
                    IStructuredContentProvider provider = (IStructuredContentProvider) _treeViewer
                            .getContentProvider();
                    Object[] elements = provider.getElements(_treeViewer.getInput());

                    for (int i = 0; i < elements.length; i++) {
                        if (monitor.isCanceled()) {
                            return Status.CANCEL_STATUS;
                        }

                        _treeViewer.expandToLevel(elements[i], AbstractTreeViewer.ALL_LEVELS);
                    }

                    TreeItem[] items = _treeViewer.getTree().getItems();

                    if (items.length > 0) {
                        // to prevent scrolling
                        _treeViewer.getTree().showItem(items[0]);
                    }
                }
            } finally {
                // done updating the tree - set redraw back to true
                _treeViewer.getControl().setRedraw(true);
            }

            return Status.OK_STATUS;
        }

    };
}

From source file:com.aptana.ide.server.ui.views.GenericServersView.java

License:Open Source License

private void updateExpandAllAction() {
    UIJob updateActionState = new UIJob("") {
        public IStatus runInUIThread(IProgressMonitor monitor) {
            if (expandAction != null) {
                IStructuredContentProvider contentProvider = (IStructuredContentProvider) serverViewer
                        .getContentProvider();
                Object[] elements = contentProvider.getElements(serverViewer.getInput());
                boolean atleastOneExpandable = false;
                for (Object element : elements) {
                    if (serverViewer.isExpandable(element)) {
                        atleastOneExpandable = true;
                        break;
                    }//from  www  .  j  av  a2  s  . co  m
                }
                expandAction.setEnabled(atleastOneExpandable);
            }
            return Status.OK_STATUS;
        }
    };
    updateActionState.setPriority(UIJob.INTERACTIVE);
    updateActionState.setSystem(true);
    updateActionState.schedule(10);
}

From source file:com.aptana.ide.views.outline.UnifiedQuickOutlinePage.java

License:Open Source License

/**
 * Reveals position.//from   w w  w  . ja v a 2 s . com
 * @param documentPos - document position.
 */
public void revealPosition(int documentPos) {
    IStructuredContentProvider provider = createProvider();
    final Object[] originalElements = provider.getElements(_treeViewer.getInput());
    if (originalElements == null || originalElements.length == 0) {
        return;
    }

    //list of outline elements
    List<Object> elements = new ArrayList<Object>();

    //map from outline elements to the list of its parent elements
    //we need such a construction due to the fact that OutlineItem has no information about its parent 
    final Map<Object, List<Object>> parents = new IdentityHashMap<Object, List<Object>>();

    for (Object el : originalElements) {
        elements.add(el);
    }

    if (provider instanceof ITreeContentProvider) {
        ITreeContentProvider treeContentProvider = (ITreeContentProvider) provider;
        for (Object element : originalElements) {
            expandElement(element, treeContentProvider, elements, parents);
        }
    }

    //       TreePath path = new TreePath(new Object[]{elements.get(0), elements.get(4)});
    //       _treeViewer.setSelection(new TreeSelection(path), true);

    Object bestElement = null;
    int bestElementStartingOffset = -1;
    int bestElementEndingOffset = -1;

    for (Object element : elements) {
        int start = -1;
        int end = -1;
        if (element instanceof IParseNode) {
            IParseNode node = (IParseNode) element;
            start = node.getStartingOffset();
            end = node.getEndingOffset();
        } else if (element instanceof OutlineItem) {
            int refNodeStart = ((OutlineItem) element).getReferenceNode().getStartingOffset();
            int refNodeEnd = ((OutlineItem) element).getReferenceNode().getEndingOffset();
            int elementStart = ((OutlineItem) element).getStartingOffset();
            int elementEnd = ((OutlineItem) element).getEndingOffset();
            start = refNodeStart < elementStart ? refNodeStart : elementStart;
            end = refNodeEnd > elementEnd ? refNodeEnd : elementEnd;
            //                start = ((OutlineItem) element).getStartingOffset();
            //                end = ((OutlineItem) element).getEndingOffset();
        }

        if (start != -1) {
            if (start <= documentPos && end >= documentPos) {
                //choosing the node having the least length
                if (bestElement == null || bestElementEndingOffset - bestElementStartingOffset > end - start) {
                    bestElement = element;
                    bestElementStartingOffset = start;
                    bestElementEndingOffset = end;
                }
            }
        }
    }
    final Object toReveal = bestElement;
    WorkbenchJob job = new WorkbenchJob("Initial reveal") {//$NON-NLS-1$
        /**
         * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
         */
        public IStatus runInUIThread(IProgressMonitor monitor) {
            if (_treeViewer.getControl().isDisposed()) {
                return Status.CANCEL_STATUS;
            }

            try {
                // don't want the user to see updates that will be made to the tree
                _treeViewer.getControl().setRedraw(false);
                _treeViewer.refresh(true);

                //_treeViewer.setSelection(new StructuredSelection(toReveal), true);
                List<Object> path = new ArrayList<Object>();
                List<Object> p = parents.get(toReveal);
                if (p != null) {
                    path.addAll(p);
                }
                path.add(toReveal);
                TreePath treePath = new TreePath(path.toArray());
                _treeViewer.setSelection(new TreeSelection(treePath), true);
            } finally {
                // done updating the tree - set redraw back to true
                _treeViewer.getControl().setRedraw(true);
            }

            return Status.OK_STATUS;
        }
    };

    if (bestElement != null) {
        job.schedule(FILTER_REFRESH_DELAY);
    }
}

From source file:com.aptana.ide.xul.FirefoxOutline.java

License:Open Source License

/**
 * @see com.aptana.ide.editors.unified.ContributedOutline#createControl(org.eclipse.swt.widgets.Composite)
 *///from  w  ww.j  a v  a 2 s  .co m
public void createControl(Composite parent) {
    treeViewer = new TreeViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE);
    treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    treeViewer.getTree().setLayout(new GridLayout(1, true));
    treeViewer.setLabelProvider(new DOMLabelProvider());
    treeViewer.setAutoExpandLevel(3);
    treeViewer.setContentProvider(new DOMContentProvider());
    treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            if (selection.size() == 1) {
                nsIDOMNode node = (nsIDOMNode) selection.getFirstElement();
                browser.highlightElement(node);
            }
        }

    });
    treeViewer.addFilter(new InternalNodeFilter());
    filter = new PatternFilter() {

        protected boolean isLeafMatch(Viewer viewer, Object element) {
            if (element instanceof nsIDOMNode) {
                if (((nsIDOMNode) element).getNodeType() == nsIDOMNode.ELEMENT_NODE) {
                    nsIDOMElement e = (nsIDOMElement) ((nsIDOMNode) element)
                            .queryInterface(nsIDOMElement.NS_IDOMELEMENT_IID);
                    if (Activator.INTERNAL_ID.equals(e.getAttribute("class"))) //$NON-NLS-1$
                    {
                        return false;
                    }
                }
                DOMLabelProvider prov = (DOMLabelProvider) treeViewer.getLabelProvider();
                return this.wordMatches(prov.getText(element));
            }
            return true;
        }

    };
    treeViewer.addFilter(filter);
    refreshJob = new WorkbenchJob("Refresh Filter") {//$NON-NLS-1$
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
         */
        public IStatus runInUIThread(IProgressMonitor monitor) {
            if (treeViewer.getControl().isDisposed()) {
                return Status.CANCEL_STATUS;
            }

            if (pattern == null) {
                return Status.OK_STATUS;
            }

            filter.setPattern(pattern);

            try {
                // don't want the user to see updates that will be made to the tree
                treeViewer.getControl().setRedraw(false);
                treeViewer.refresh(true);

                if (pattern.length() > 0) {
                    /*
                     * Expand elements one at a time. After each is expanded, check to see if the filter text has
                     * been modified. If it has, then cancel the refresh job so the user doesn't have to endure
                     * expansion of all the nodes.
                     */
                    IStructuredContentProvider provider = (IStructuredContentProvider) treeViewer
                            .getContentProvider();
                    Object[] elements = provider.getElements(treeViewer.getInput());
                    for (int i = 0; i < elements.length; i++) {
                        if (monitor.isCanceled()) {
                            return Status.CANCEL_STATUS;
                        }
                        treeViewer.expandToLevel(elements[i], AbstractTreeViewer.ALL_LEVELS);
                    }

                    TreeItem[] items = treeViewer.getTree().getItems();
                    if (items.length > 0) {
                        // to prevent scrolling
                        treeViewer.getTree().showItem(items[0]);
                    }

                }
            } finally {
                // done updating the tree - set redraw back to true
                treeViewer.getControl().setRedraw(true);
            }
            return Status.OK_STATUS;
        }

    };
    TreeItem item = new TreeItem(treeViewer.getTree(), SWT.NONE);
    item.setText(Messages.getString("FirefoxOutline.Select_Tab_To_Load_Outline")); //$NON-NLS-1$
    refreshJob.setSystem(true);
    refresh();
}