List of usage examples for org.eclipse.jface.viewers IStructuredContentProvider getElements
public Object[] getElements(Object inputElement);
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(); }