List of usage examples for org.eclipse.jdt.core.search IJavaSearchConstants CLASS
int CLASS
To view the source code for org.eclipse.jdt.core.search IJavaSearchConstants CLASS.
Click Source Link
From source file:ar.com.fluxit.jqa.wizard.page.ThrowingDefinitionWizardPage.java
License:Open Source License
@Override public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); layout.numColumns = 1;// w w w . j a v a 2 s . com container.setLayout(layout); layersTable = new TableViewer(container, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); layersTable.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); layersTable.setContentProvider(ArrayContentProvider.getInstance()); layersTable.getTable().setHeaderVisible(true); layersTable.getTable().setLinesVisible(true); TableViewerColumn layerColumn = new TableViewerColumn(layersTable, SWT.NONE); layerColumn.getColumn().setText("Layer"); layerColumn.getColumn().setWidth(300); layerColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { LayerDescriptor layer = (LayerDescriptor) element; return layer.getName(); } }); TableViewerColumn namePatternColumn = new TableViewerColumn(layersTable, SWT.NONE); namePatternColumn.getColumn().setWidth(300); namePatternColumn.getColumn().setText("Exception super type"); namePatternColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { LayerDescriptor layer = (LayerDescriptor) element; return layer.getExceptionSuperType(); } }); namePatternColumn.setEditingSupport(new EditingSupport(layersTable) { @Override protected boolean canEdit(Object element) { return true; } @Override protected CellEditor getCellEditor(Object element) { TypeSelectionExtension extension = new TypeSelectionExtension() { @Override public ISelectionStatusValidator getSelectionValidator() { return new ISelectionStatusValidator() { @Override public IStatus validate(Object[] selection) { if (selection.length == 1) { try { IType type = (IType) selection[0]; ITypeHierarchy hierarchy = type .newSupertypeHierarchy(new NullProgressMonitor()); IType curr = type; while (curr != null) { if ("java.lang.Throwable".equals(curr.getFullyQualifiedName('.'))) { //$NON-NLS-1$ return Status.OK_STATUS; } curr = hierarchy.getSuperclass(curr); } } catch (JavaModelException e) { Status status = new Status(IStatus.ERROR, JQAEclipsePlugin.PLUGIN_ID, e.getLocalizedMessage(), e); JQAEclipsePlugin.getDefault().getLog().log(status); return Status.CANCEL_STATUS; } } return new Status(IStatus.ERROR, JQAEclipsePlugin.PLUGIN_ID, "Selected item is not an exception"); } }; } }; return new TypeCellEditor(layersTable.getTable(), ThrowingDefinitionWizardPage.this.getContainer(), IJavaSearchConstants.CLASS, "*Exception", extension); } @Override protected Object getValue(Object element) { return ((LayerDescriptor) element).getExceptionSuperType(); } @Override protected void setValue(Object element, Object value) { ((LayerDescriptor) element).setExceptionSuperType((String) value); layersTable.refresh(element, true); } }); layersTable.setInput(getArchitectureDescriptor().getLayers()); setControl(container); ((WizardDialog) getContainer()).addPageChangedListener(this); }
From source file:at.bestsolution.efxclipse.tooling.fxml.editors.FXMLCompletionProposalComputer.java
License:Open Source License
private void createSubtypeProposals(final ContentAssistRequest contentAssistRequest, final CompletionProposalInvocationContext context, IType superType) { IJavaProject jproject = findProject(contentAssistRequest); try {/*w w w. ja va 2 s . c om*/ IJavaSearchScope hierarchyScope = SearchEngine.createHierarchyScope(superType); IJavaSearchScope projectScope = SearchEngine.createJavaSearchScope(new IJavaElement[] { jproject }); IJavaSearchScope scope = new IntersectingJavaSearchScope(projectScope, hierarchyScope); SearchEngine searchEngine = new SearchEngine(); char[] typeName = null; char[] packageName = null; if (!contentAssistRequest.getMatchString().isEmpty()) { typeName = contentAssistRequest.getMatchString().toCharArray(); } searchEngine.searchAllTypeNames(packageName, SearchPattern.R_PATTERN_MATCH, typeName, SearchPattern.R_PREFIX_MATCH | SearchPattern.R_CAMELCASE_MATCH, IJavaSearchConstants.CLASS, scope, new TypeNameRequestor() { @Override public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path) { String sPackageName = new String(packageName); int priority = PRIORITY_LOWER_1; if (sPackageName.startsWith("com.sun.javafx")) { priority -= 10; } StyledString s = new StyledString(new String(simpleTypeName)); s.append(" - " + sPackageName, StyledString.QUALIFIER_STYLER); FXMLCompletionProposal prop = createElementProposal(contentAssistRequest, context, sPackageName + "." + new String(simpleTypeName) + " ", s, false, priority, IconKeys.getIcon(IconKeys.CLASS_KEY), FQN_MATCHER); if (prop != null) { prop.setMatcher(FQN_MATCHER); prop.setTextApplier(new IReplacementTextApplier() { @Override public void apply(IDocument document, ConfigurableCompletionProposal proposal) throws BadLocationException { String proposalReplacementString = proposal.getReplacementString(); List<String> s = getImportedTypes(contentAssistRequest); String shortened = proposalReplacementString .substring(proposalReplacementString.lastIndexOf('.') + 1); if (s.contains(proposalReplacementString.trim())) { proposal.setCursorPosition(shortened.length()); document.replace(proposal.getReplacementOffset(), proposal.getReplacementLength(), shortened); } else { DocumentRewriteSession rewriteSession = null; try { if (document instanceof IDocumentExtension4) { rewriteSession = ((IDocumentExtension4) document) .startRewriteSession( DocumentRewriteSessionType.UNRESTRICTED_SMALL); } } finally { if (rewriteSession != null) { ((IDocumentExtension4) document) .stopRewriteSession(rewriteSession); } // if (viewerExtension != null) // viewerExtension.setRedraw(true); } boolean startWithLineBreak = true; boolean endWithLineBreak = false; Document xmlDoc = contentAssistRequest.getNode().getOwnerDocument(); NodeList list = xmlDoc.getChildNodes(); int offset = 0; List<Node> prs = new ArrayList<Node>(); for (int i = 0; i < list.getLength(); i++) { Node n = list.item(i); if (n.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE) { prs.add(n); } } if (!prs.isEmpty()) { offset = ((IDOMNode) prs.get(prs.size() - 1)).getEndOffset(); } offset = Math.min(proposal.getReplacementOffset(), offset); proposal.setCursorPosition(shortened.length()); document.replace(proposal.getReplacementOffset(), proposal.getReplacementLength(), shortened); String importStatement = (startWithLineBreak ? "\n<?import " : "import ") + proposalReplacementString.trim(); importStatement += "?>"; if (endWithLineBreak) importStatement += "\n\n"; document.replace(offset, 0, importStatement.toString()); proposal.setCursorPosition( proposal.getCursorPosition() + importStatement.length()); } } }); contentAssistRequest.addProposal(prop); } } }, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, new NullProgressMonitor()); } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:bndtools.editor.components.ComponentNameProposalProvider.java
License:Open Source License
@Override protected List<IContentProposal> doGenerateProposals(String contents, int position) { final String prefix = contents.substring(0, position); IJavaProject javaProject = searchContext.getJavaProject(); final List<IContentProposal> result = new ArrayList<IContentProposal>(100); // Resource matches IProject project = javaProject.getProject(); try {/*from www. java2 s . co m*/ project.accept(new IResourceProxyVisitor() { public boolean visit(IResourceProxy proxy) throws CoreException { if (proxy.getType() == IResource.FILE) { if (proxy.getName().toLowerCase().startsWith(prefix) && proxy.getName().toLowerCase().endsWith(XML_SUFFIX)) { result.add(new ResourceProposal(proxy.requestResource())); } return false; } // Recurse into everything else return true; } }, 0); } catch (CoreException e) { Plugin.log(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error searching for resources.", e)); } // Class matches final IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { javaProject }); final TypeNameRequestor requestor = new TypeNameRequestor() { @Override public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path) { if (!Flags.isAbstract(modifiers) && (Flags.isPublic(modifiers) || Flags.isProtected(modifiers))) { result.add(new JavaContentProposal(new String(packageName), new String(simpleTypeName), false)); } }; }; final IRunnableWithProgress runnable = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { new SearchEngine().searchAllTypeNames(null, 0, prefix.toCharArray(), SearchPattern.R_PREFIX_MATCH, IJavaSearchConstants.CLASS, scope, requestor, IJavaSearchConstants.CANCEL_IF_NOT_READY_TO_SEARCH, monitor); } catch (JavaModelException e) { throw new InvocationTargetException(e); } } }; IRunnableContext runContext = searchContext.getRunContext(); try { if (runContext != null) { runContext.run(false, false, runnable); } else { runnable.run(new NullProgressMonitor()); } } catch (InvocationTargetException e) { Plugin.log(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error searching for classes.", e.getTargetException())); } catch (InterruptedException e) { // Reset the interruption status and continue Thread.currentThread().interrupt(); } return result; }
From source file:ca.ecliptical.pde.ds.search.DescriptorQueryParticipant.java
License:Open Source License
public void search(ISearchRequestor requestor, QuerySpecification query, IProgressMonitor monitor) throws CoreException { if (debug.isDebugging()) debug.trace(String.format("Query: %s", query)); //$NON-NLS-1$ // we only look for straight references switch (query.getLimitTo()) { case IJavaSearchConstants.REFERENCES: case IJavaSearchConstants.ALL_OCCURRENCES: break;// w w w. j a v a 2s . c o m default: return; } // we only look for types and methods if (query instanceof ElementQuerySpecification) { searchElement = ((ElementQuerySpecification) query).getElement(); switch (searchElement.getElementType()) { case IJavaElement.TYPE: case IJavaElement.METHOD: break; default: return; } } else { String pattern = ((PatternQuerySpecification) query).getPattern(); boolean ignoreMethodParams = false; searchFor = ((PatternQuerySpecification) query).getSearchFor(); switch (searchFor) { case IJavaSearchConstants.UNKNOWN: case IJavaSearchConstants.METHOD: int leftParen = pattern.lastIndexOf('('); int rightParen = pattern.indexOf(')'); ignoreMethodParams = leftParen == -1 || rightParen == -1 || leftParen >= rightParen; // no break case IJavaSearchConstants.TYPE: case IJavaSearchConstants.CLASS: case IJavaSearchConstants.CLASS_AND_INTERFACE: case IJavaSearchConstants.CLASS_AND_ENUM: case IJavaSearchConstants.INTERFACE: case IJavaSearchConstants.INTERFACE_AND_ANNOTATION: break; default: return; } // searchPattern = PatternConstructor.createPattern(pattern, ((PatternQuerySpecification) query).isCaseSensitive()); int matchMode = getMatchMode(pattern) | SearchPattern.R_ERASURE_MATCH; if (((PatternQuerySpecification) query).isCaseSensitive()) matchMode |= SearchPattern.R_CASE_SENSITIVE; searchPattern = new SearchPatternDescriptor(pattern, matchMode, ignoreMethodParams); } HashSet<IPath> scope = new HashSet<IPath>(); for (IPath path : query.getScope().enclosingProjectsAndJars()) { scope.add(path); } if (scope.isEmpty()) return; this.requestor = requestor; // look through all active bundles IPluginModelBase[] wsModels = PluginRegistry.getWorkspaceModels(); IPluginModelBase[] exModels = PluginRegistry.getExternalModels(); monitor.beginTask(Messages.DescriptorQueryParticipant_taskName, wsModels.length + exModels.length); try { // workspace models for (IPluginModelBase model : wsModels) { if (monitor.isCanceled()) throw new OperationCanceledException(); if (!model.isEnabled() || !(model instanceof IBundlePluginModelBase)) { monitor.worked(1); if (debug.isDebugging()) debug.trace(String.format("Non-bundle model: %s", model)); //$NON-NLS-1$ continue; } IProject project = model.getUnderlyingResource().getProject(); if (!scope.contains(project.getFullPath())) { monitor.worked(1); if (debug.isDebugging()) debug.trace(String.format("Project out of scope: %s", project.getName())); //$NON-NLS-1$ continue; } // we can only search in Java bundle projects (for now) if (!project.hasNature(JavaCore.NATURE_ID)) { monitor.worked(1); if (debug.isDebugging()) debug.trace(String.format("Non-Java project: %s", project.getName())); //$NON-NLS-1$ continue; } PDEModelUtility.modifyModel(new ModelModification(project) { @Override protected void modifyModel(IBaseModel model, IProgressMonitor monitor) throws CoreException { if (model instanceof IBundlePluginModelBase) searchBundle((IBundlePluginModelBase) model, monitor); } }, new SubProgressMonitor(monitor, 1)); } // external models SearchablePluginsManager spm = PDECore.getDefault().getSearchablePluginsManager(); IJavaProject javaProject = spm.getProxyProject(); if (javaProject == null || !javaProject.exists() || !javaProject.isOpen()) { monitor.worked(exModels.length); if (debug.isDebugging()) debug.trace("External Plug-in Search project inaccessible!"); //$NON-NLS-1$ return; } for (IPluginModelBase model : exModels) { if (monitor.isCanceled()) throw new OperationCanceledException(); BundleDescription bd; if (!model.isEnabled() || (bd = model.getBundleDescription()) == null) { monitor.worked(1); if (debug.isDebugging()) debug.trace(String.format("Non-bundle model: %s", model)); //$NON-NLS-1$ continue; } // check scope ArrayList<IClasspathEntry> cpEntries = new ArrayList<IClasspathEntry>(); ClasspathUtilCore.addLibraries(model, cpEntries); ArrayList<IPath> cpEntryPaths = new ArrayList<IPath>(cpEntries.size()); for (IClasspathEntry cpEntry : cpEntries) { cpEntryPaths.add(cpEntry.getPath()); } cpEntryPaths.retainAll(scope); if (cpEntryPaths.isEmpty()) { monitor.worked(1); if (debug.isDebugging()) debug.trace(String.format("External bundle out of scope: %s", model.getInstallLocation())); //$NON-NLS-1$ continue; } if (!spm.isInJavaSearch(bd.getSymbolicName())) { monitor.worked(1); if (debug.isDebugging()) debug.trace(String.format("Non-searchable external model: %s", bd.getSymbolicName())); //$NON-NLS-1$ continue; } searchBundle(model, javaProject, new SubProgressMonitor(monitor, 1)); } } finally { monitor.done(); } }
From source file:ca.ecliptical.pde.ds.search.DescriptorQueryParticipant.java
License:Open Source License
private void searchModel(DSModel dsModel, IJavaProject javaProject, Object matchElement, IProgressMonitor monitor) throws CoreException { IDSComponent component = dsModel.getDSComponent(); if (component == null) { if (debug.isDebugging()) debug.trace(String.format("No component definition found in file: %s", //$NON-NLS-1$ dsModel.getUnderlyingResource() == null ? dsModel.getInstallLocation() : dsModel.getUnderlyingResource().getFullPath())); // TODO de-uglify! return;/* w ww. j a v a 2s . co m*/ } IDSImplementation impl = component.getImplementation(); if (impl == null) { if (debug.isDebugging()) debug.trace(String.format("No component implementation found in file: %s", //$NON-NLS-1$ dsModel.getUnderlyingResource() == null ? dsModel.getInstallLocation() : dsModel.getUnderlyingResource().getFullPath())); // TODO de-uglify! return; } IType implClassType = null; String implClassName = impl.getClassName(); if (implClassName != null) implClassType = javaProject.findType(implClassName, monitor); if ((searchElement != null && searchElement.getElementType() == IJavaElement.TYPE) || searchFor == IJavaSearchConstants.TYPE || searchFor == IJavaSearchConstants.CLASS || searchFor == IJavaSearchConstants.CLASS_AND_INTERFACE || searchFor == IJavaSearchConstants.CLASS_AND_ENUM || searchFor == IJavaSearchConstants.UNKNOWN) { // match specific type references if (matches(searchElement, searchPattern, implClassType)) reportMatch(requestor, impl.getDocumentAttribute(IDSConstants.ATTRIBUTE_IMPLEMENTATION_CLASS), matchElement); } if ((searchElement != null && searchElement.getElementType() == IJavaElement.TYPE) || searchFor == IJavaSearchConstants.TYPE || searchFor == IJavaSearchConstants.CLASS || searchFor == IJavaSearchConstants.CLASS_AND_INTERFACE || searchFor == IJavaSearchConstants.CLASS_AND_ENUM || searchFor == IJavaSearchConstants.INTERFACE || searchFor == IJavaSearchConstants.INTERFACE_AND_ANNOTATION || searchFor == IJavaSearchConstants.UNKNOWN) { IDSService service = component.getService(); if (service != null) { IDSProvide[] provides = service.getProvidedServices(); if (provides != null) { for (IDSProvide provide : provides) { String ifaceName = provide.getInterface(); IType ifaceType = javaProject.findType(ifaceName, monitor); if (matches(searchElement, searchPattern, ifaceType)) reportMatch(requestor, provide.getDocumentAttribute(IDSConstants.ATTRIBUTE_PROVIDE_INTERFACE), matchElement); } } } IDSReference[] references = component.getReferences(); if (references != null) { for (IDSReference reference : references) { String ifaceName = reference.getReferenceInterface(); IType ifaceType = javaProject.findType(ifaceName, monitor); if (matches(searchElement, searchPattern, ifaceType)) reportMatch(requestor, reference.getDocumentAttribute(IDSConstants.ATTRIBUTE_REFERENCE_INTERFACE), matchElement); } } } if ((searchElement != null && searchElement.getElementType() == IJavaElement.METHOD) || searchFor == IJavaSearchConstants.METHOD || searchFor == IJavaSearchConstants.UNKNOWN) { // match specific method references String activate = component.getActivateMethod(); if (activate == null) activate = "activate"; //$NON-NLS-1$ IMethod activateMethod = findActivateMethod(implClassType, activate, monitor); if (matches(searchElement, searchPattern, activateMethod)) { if (component.getActivateMethod() == null) reportMatch(requestor, component, matchElement); else reportMatch(requestor, component.getDocumentAttribute(IDSConstants.ATTRIBUTE_COMPONENT_ACTIVATE), matchElement); } String modified = component.getModifiedMethod(); if (modified != null) { IMethod modifiedMethod = findActivateMethod(implClassType, modified, monitor); if (matches(searchElement, searchPattern, modifiedMethod)) reportMatch(requestor, component.getDocumentAttribute(IDSConstants.ATTRIBUTE_COMPONENT_MODIFIED), matchElement); } String deactivate = component.getDeactivateMethod(); if (deactivate == null) deactivate = "deactivate"; //$NON-NLS-1$ IMethod deactivateMethod = findDeactivateMethod(implClassType, deactivate, monitor); if (matches(searchElement, searchPattern, deactivateMethod)) { if (component.getDeactivateMethod() == null) reportMatch(requestor, component, matchElement); else reportMatch(requestor, component.getDocumentAttribute(IDSConstants.ATTRIBUTE_COMPONENT_DEACTIVATE), matchElement); } IDSReference[] references = component.getReferences(); if (references != null) { for (IDSReference reference : references) { String refIface = reference.getReferenceInterface(); if (refIface == null) { if (debug.isDebugging()) debug.trace(String.format("No reference interface specified: %s", reference)); //$NON-NLS-1$ continue; } String bind = reference.getReferenceBind(); if (bind != null) { IMethod bindMethod = findBindMethod(implClassType, bind, refIface, monitor); if (matches(searchElement, searchPattern, bindMethod)) reportMatch(requestor, reference.getDocumentAttribute(IDSConstants.ATTRIBUTE_REFERENCE_BIND), matchElement); } String unbind = reference.getReferenceUnbind(); if (unbind != null) { IMethod unbindMethod = findBindMethod(implClassType, unbind, refIface, monitor); if (matches(searchElement, searchPattern, unbindMethod)) reportMatch(requestor, reference.getDocumentAttribute(IDSConstants.ATTRIBUTE_REFERENCE_UNBIND), matchElement); } String updated = reference.getXMLAttributeValue("updated"); //$NON-NLS-1$ if (updated != null) { IMethod updatedMethod = findUpdatedMethod(implClassType, updated, monitor); if (matches(searchElement, searchPattern, updatedMethod)) reportMatch(requestor, reference.getDocumentAttribute("updated"), matchElement); //$NON-NLS-1$ } } } } }
From source file:ca.ubc.cs.ferret.tests.support.TestProject.java
License:Open Source License
public void waitForIndexer() throws JavaModelException { new SearchEngine().searchAllTypeNames(null, null, SearchPattern.R_EXACT_MATCH, IJavaSearchConstants.CLASS, SearchEngine.createJavaSearchScope(new IJavaElement[0]), new TypeNameRequestor() { // nothing needs to be done here...we accept everything }, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null); }
From source file:ca.uvic.chisel.javasketch.internal.JavaSearchUtils.java
License:Open Source License
private static IJavaElement searchForType(String classSignature, IJavaSearchScope scope, IProgressMonitor monitor) throws CoreException, InterruptedException { try {/* w w w . j ava 2 s.c o m*/ synchronized (cachedTypes) { IType found = cachedTypes.get(classSignature); if (found != null) { return found; } SearchEngine engine = new SearchEngine(); SearchPattern pattern = null; SearchParticipant participant = SearchEngine.getDefaultSearchParticipant(); LocalSearchRequestor requestor = new LocalSearchRequestor(); pattern = SearchPattern.createPattern(classSignature.replace('$', '.'), IJavaSearchConstants.CLASS, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH); engine.search(pattern, new SearchParticipant[] { participant }, scope, requestor, monitor); if (requestor.matches.size() > 0) { found = (IType) requestor.matches.get(0).getElement(); if (found.getFullyQualifiedName().equals(classSignature)) { cachedTypes.put(classSignature, found); return found; } } String[] className = classSignature.split("\\$"); found = cachedTypes.get(className[0]); if (found == null) { //find the class pattern = SearchPattern.createPattern(className[0], IJavaSearchConstants.CLASS, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH); engine.search(pattern, new SearchParticipant[] { participant }, scope, requestor, monitor); if (monitor.isCanceled()) { throw new InterruptedException(); } if (requestor.matches.size() > 0) { found = (IType) requestor.matches.get(0).getElement(); if (found.getFullyQualifiedName().equals(classSignature)) { for (SearchMatch match : requestor.matches) { IType temp = (IType) match.getElement(); if (temp.getTypeRoot() instanceof ICompilationUnit) { //prefer source types. found = temp; break; } } if (cachedTypes.size() > 100) { cachedTypes.clear(); } cachedTypes.put(className[0], found); } else { found = null; } } } if (found == null) return null; StringBuilder childTypeName = new StringBuilder(); childTypeName.append(className[0]); //check each of the indexes for the sub-types for (int i = 1; i < className.length; i++) { childTypeName.append('$'); childTypeName.append(className[i]); IType parent = found; found = cachedTypes.get(childTypeName.toString()); if (found == null) { boolean isAnonymous = false; Integer occurrenceCount = -1; try { occurrenceCount = Integer.parseInt(className[i]); isAnonymous = true; } catch (NumberFormatException e) { isAnonymous = false; } if (isAnonymous) { if (!parent.isBinary()) { found = parent.getType("", occurrenceCount); if (found != null) { if (found.exists()) { cachedTypes.put(childTypeName.toString(), found); continue; } else { found = null; } } } else { //if it is a binary type, there is no hope for //finding an anonymous inner class. Use the number //as the type name, and cache the handle. found = parent.getType(className[i]); cachedTypes.put(childTypeName.toString(), found); continue; } } ArrayList<IType> childTypes = new ArrayList<IType>(); LinkedList<IJavaElement> children = new LinkedList<IJavaElement>(); children.addAll(Arrays.asList(parent.getChildren())); while (children.size() > 0) { IJavaElement child = children.removeFirst(); if (child instanceof IType) { childTypes.add((IType) child); } else if (child instanceof IMember) { children.addAll(Arrays.asList(((IMember) child).getChildren())); } } int numIndex = 0; while (numIndex < className[i].length() && Character.isDigit(className[i].charAt(numIndex))) { numIndex++; } String name = className[i]; try { //get a number at the beginning to find out if //there is an occurrence count if (numIndex <= name.length()) { occurrenceCount = parseInt(name.substring(0, numIndex)); if (occurrenceCount == null) { occurrenceCount = 1; } if (numIndex < name.length() - 1) { name = name.substring(numIndex); } else { name = ""; } } for (IType childType : childTypes) { if ("".equals(name)) { if (childType.getOccurrenceCount() == occurrenceCount) { found = childType; break; } } else { if (name.equals(childType.getElementName()) && childType.getOccurrenceCount() == occurrenceCount) { found = childType; break; } } } if (found == null) { if ("".equals(name)) { found = parent.getTypeRoot().getJavaProject().findType(classSignature); //found = parent.getType("" + occurrenceCount); } else { found = parent.getType(name, occurrenceCount); } } cachedTypes.put(childTypeName.toString(), found); } catch (Exception e) { e.printStackTrace(); } } } return found; } } catch (Exception e) { SketchPlugin.getDefault().log(e); return null; } }
From source file:com.aliyun.odps.eclipse.launch.configuration.udf.UDFSearchEngine.java
License:Apache License
/** * Searches for all main methods in the given scope. Valid styles are * IJavaElementSearchConstants.CONSIDER_BINARIES and * IJavaElementSearchConstants.CONSIDER_EXTERNAL_JARS * // w ww. ja va 2 s . c o m * @param pm progress monitor * @param scope search scope * @param includeSubtypes whether to consider types that inherit a main method */ public IType[] searchUDFClass(IProgressMonitor pm, IJavaSearchScope scope, boolean includeSubtypes) { int searchTicks = 100; if (includeSubtypes) { searchTicks = 25; } SearchPattern udfPattern = SearchPattern.createPattern("com.aliyun.odps.udf.UDF", //$NON-NLS-1$ IJavaSearchConstants.CLASS, IJavaSearchConstants.IMPLEMENTORS, SearchPattern.R_PATTERN_MATCH); SearchPattern udtfpattern = SearchPattern.createPattern("com.aliyun.odps.udf.UDTF", IJavaSearchConstants.CLASS, IJavaSearchConstants.IMPLEMENTORS, SearchPattern.R_PATTERN_MATCH); SearchParticipant[] participants = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; UDFClassCollector collector = new UDFClassCollector(); IProgressMonitor udfSearchMonitor = new SubProgressMonitor(pm, searchTicks); try { pm.beginTask("Searching for UDF class...", 100); new SearchEngine().search(udfPattern, participants, scope, collector, udfSearchMonitor); pm.beginTask("Searching for UDTF class...", 100); IProgressMonitor udtfSearchMonitor = new SubProgressMonitor(pm, searchTicks); new SearchEngine().search(udtfpattern, participants, scope, collector, udtfSearchMonitor); pm.beginTask("Searching for UDF class...", 100); } catch (CoreException ce) { JDIDebugUIPlugin.log(ce); } List result = collector.getResult(); if (includeSubtypes) { IProgressMonitor subtypesMonitor = new SubProgressMonitor(pm, 75); subtypesMonitor.beginTask("Select UDF|UDTF class", result.size()); Set set = addSubtypes(result, subtypesMonitor, scope); return (IType[]) set.toArray(new IType[set.size()]); } return (IType[]) result.toArray(new IType[result.size()]); }
From source file:com.android.ide.eclipse.adt.internal.editors.layout.gle2.CustomViewFinder.java
License:Open Source License
private Pair<List<String>, List<String>> findViews(final boolean layoutsOnly) { final Set<String> customViews = new HashSet<String>(); final Set<String> thirdPartyViews = new HashSet<String>(); ProjectState state = Sdk.getProjectState(mProject); final List<IProject> libraries = state != null ? state.getFullLibraryProjects() : Collections.<IProject>emptyList(); SearchRequestor requestor = new SearchRequestor() { @Override//from w w w. ja va 2s . c om public void acceptSearchMatch(SearchMatch match) throws CoreException { // Ignore matches in comments if (match.isInsideDocComment()) { return; } Object element = match.getElement(); if (element instanceof ResolvedBinaryType) { // Third party view ResolvedBinaryType type = (ResolvedBinaryType) element; IPackageFragment fragment = type.getPackageFragment(); IPath path = fragment.getPath(); String last = path.lastSegment(); // Filter out android.jar stuff if (last.equals(FN_FRAMEWORK_LIBRARY)) { return; } if (!isValidView(type, layoutsOnly)) { return; } IProject matchProject = match.getResource().getProject(); if (mProject == matchProject || libraries.contains(matchProject)) { String fqn = type.getFullyQualifiedName(); thirdPartyViews.add(fqn); } } else if (element instanceof ResolvedSourceType) { // User custom view IProject matchProject = match.getResource().getProject(); if (mProject == matchProject || libraries.contains(matchProject)) { ResolvedSourceType type = (ResolvedSourceType) element; if (!isValidView(type, layoutsOnly)) { return; } String fqn = type.getFullyQualifiedName(); fqn = fqn.replace('$', '.'); customViews.add(fqn); } } } }; try { IJavaProject javaProject = BaseProjectHelper.getJavaProject(mProject); if (javaProject != null) { String className = layoutsOnly ? CLASS_VIEWGROUP : CLASS_VIEW; IType viewType = javaProject.findType(className); if (viewType != null) { IJavaSearchScope scope = SearchEngine.createHierarchyScope(viewType); SearchParticipant[] participants = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; int matchRule = SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE; SearchPattern pattern = SearchPattern.createPattern("*", IJavaSearchConstants.CLASS, IJavaSearchConstants.IMPLEMENTORS, matchRule); SearchEngine engine = new SearchEngine(); engine.search(pattern, participants, scope, requestor, new NullProgressMonitor()); } } } catch (CoreException e) { AdtPlugin.log(e, null); } List<String> custom = new ArrayList<String>(customViews); List<String> thirdParty = new ArrayList<String>(thirdPartyViews); if (!layoutsOnly) { // Update our cached answers (unless we were filtered on only layouts) mCustomViews = custom; mThirdPartyViews = thirdParty; } return Pair.of(custom, thirdParty); }
From source file:com.android.ide.eclipse.adt.SourceRevealer.java
License:Open Source License
private List<SearchMatch> searchForFile(String fileName) { return searchForPattern(fileName, IJavaSearchConstants.CLASS, MATCH_IS_FILE_PREDICATE); }