/** * Returns all of the openables defined in the region of this type hierarchy. Returns a map from * IJavaScriptProject to ArrayList of Openable */ private HashMap determineOpenablesInRegion(IProgressMonitor monitor) { try { HashMap allOpenables = new HashMap(); IJavaScriptElement[] roots = ((RegionBasedTypeHierarchy) this.hierarchy).region.getElements(); int length = roots.length; if (monitor != null) monitor.beginTask("", length); // $NON-NLS-1$ for (int i = 0; i < length; i++) { IJavaScriptElement root = roots[i]; IJavaScriptProject javaProject = root.getJavaScriptProject(); ArrayList openables = (ArrayList) allOpenables.get(javaProject); if (openables == null) { openables = new ArrayList(); allOpenables.put(javaProject, openables); } switch (root.getElementType()) { case IJavaScriptElement.JAVASCRIPT_PROJECT: injectAllOpenablesForJavaProject((IJavaScriptProject) root, openables); break; case IJavaScriptElement.PACKAGE_FRAGMENT_ROOT: injectAllOpenablesForPackageFragmentRoot((IPackageFragmentRoot) root, openables); break; case IJavaScriptElement.PACKAGE_FRAGMENT: injectAllOpenablesForPackageFragment((IPackageFragment) root, openables); break; case IJavaScriptElement.CLASS_FILE: case IJavaScriptElement.JAVASCRIPT_UNIT: openables.add(root); break; case IJavaScriptElement.TYPE: IType type = (IType) root; if (type.isBinary()) { openables.add(type.getClassFile()); } else { openables.add(type.getJavaScriptUnit()); } break; default: break; } worked(monitor, 1); } return allOpenables; } finally { if (monitor != null) monitor.done(); } }
private Object[] getPackageContents(IPackageFragment fragment) throws JavaScriptModelException { ISourceReference[] sourceRefs; if (fragment.getKind() == IPackageFragmentRoot.K_SOURCE) { sourceRefs = fragment.getJavaScriptUnits(); } else { IClassFile[] classFiles = fragment.getClassFiles(); List topLevelClassFile = new ArrayList(); for (int i = 0; i < classFiles.length; i++) { IType type = classFiles[i].getType(); if (type != null && type.getDeclaringType() == null && !type.isAnonymous() && !type.isLocal()) topLevelClassFile.add(classFiles[i]); } sourceRefs = (ISourceReference[]) topLevelClassFile.toArray(new ISourceReference[topLevelClassFile.size()]); } Object[] result = new Object[0]; for (int i = 0; i < sourceRefs.length; i++) result = concatenate(result, removeImportAndPackageDeclarations(getChildren(sourceRefs[i]))); return concatenate(result, fragment.getNonJavaScriptResources()); }
protected void computeResult() { TypeNameMatch[] selected = fContent.getSelection(); if (selected == null || selected.length == 0) { setResult(null); return; } // If the scope is null then it got computed by the type selection component. if (fScope == null) { fScope = fContent.getScope(); } OpenTypeHistory history = OpenTypeHistory.getInstance(); List result = new ArrayList(selected.length); for (int i = 0; i < selected.length; i++) { TypeNameMatch typeInfo = selected[i]; IType type = typeInfo.getType(); if (!type.exists()) { String title = JavaUIMessages.TypeSelectionDialog_errorTitle; IPackageFragmentRoot root = typeInfo.getPackageFragmentRoot(); String containerName = JavaScriptElementLabels.getElementLabel(root, JavaScriptElementLabels.ROOT_QUALIFIED); String message = Messages.format( JavaUIMessages.TypeSelectionDialog_dialogMessage, new String[] {typeInfo.getFullyQualifiedName(), containerName}); MessageDialog.openError(getShell(), title, message); history.remove(typeInfo); setResult(null); } else { history.accessed(typeInfo); result.add(type); } } setResult(result); }
/* (non-Javadoc) * @see org.eclipse.wst.jsdt.internal.corext.callhierarchy.IImplementorFinder#findImplementingTypes(org.eclipse.wst.jsdt.core.IType, org.eclipse.core.runtime.IProgressMonitor) */ public Collection findImplementingTypes(IType type, IProgressMonitor progressMonitor) { ITypeHierarchy typeHierarchy; try { typeHierarchy = type.newTypeHierarchy(progressMonitor); IType[] implementingTypes = typeHierarchy.getAllClasses(); HashSet result = new HashSet(Arrays.asList(implementingTypes)); return result; } catch (JavaScriptModelException e) { JavaScriptPlugin.log(e); } return null; }
private Object[] getChildren(IType type) throws JavaScriptModelException { IParent parent; if (type.isBinary()) parent = type.getClassFile(); else { parent = type.getJavaScriptUnit(); } if (type.getDeclaringType() != null) return type.getChildren(); // Add import declarations IJavaScriptElement[] members = parent.getChildren(); ArrayList tempResult = new ArrayList(members.length); for (int i = 0; i < members.length; i++) if ((members[i] instanceof IImportContainer)) tempResult.add(members[i]); tempResult.addAll(Arrays.asList(type.getChildren())); return tempResult.toArray(); }