List of usage examples for org.eclipse.jdt.core IJavaElement LOCAL_VARIABLE
int LOCAL_VARIABLE
To view the source code for org.eclipse.jdt.core IJavaElement LOCAL_VARIABLE.
Click Source Link
From source file:com.microsoft.javapkgsrv.JavaElementLabelComposer.java
License:Open Source License
/** * Appends the label for a Java element with the flags as defined by this class. * * @param element the element to render//from w w w .j a v a 2 s.co m * @param flags the rendering flags. */ public void appendElementLabel(IJavaElement element, long flags) { int type = element.getElementType(); IPackageFragmentRoot root = null; if (type != IJavaElement.JAVA_MODEL && type != IJavaElement.JAVA_PROJECT && type != IJavaElement.PACKAGE_FRAGMENT_ROOT) root = (IPackageFragmentRoot) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (root != null && getFlag(flags, PREPEND_ROOT_PATH)) { appendPackageFragmentRootLabel(root, ROOT_QUALIFIED); fBuffer.append(CONCAT_STRING); } switch (type) { case IJavaElement.METHOD: appendMethodLabel((IMethod) element, flags); break; case IJavaElement.FIELD: appendFieldLabel((IField) element, flags); break; case IJavaElement.LOCAL_VARIABLE: appendLocalVariableLabel((ILocalVariable) element, flags); break; case IJavaElement.TYPE_PARAMETER: appendTypeParameterLabel((ITypeParameter) element, flags); break; case IJavaElement.INITIALIZER: appendInitializerLabel((IInitializer) element, flags); break; case IJavaElement.TYPE: appendTypeLabel((IType) element, flags); break; case IJavaElement.CLASS_FILE: appendClassFileLabel((IClassFile) element, flags); break; case IJavaElement.COMPILATION_UNIT: appendCompilationUnitLabel((ICompilationUnit) element, flags); break; case IJavaElement.PACKAGE_FRAGMENT: appendPackageFragmentLabel((IPackageFragment) element, flags); break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: appendPackageFragmentRootLabel((IPackageFragmentRoot) element, flags); break; case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.PACKAGE_DECLARATION: appendDeclarationLabel(element, flags); break; case IJavaElement.JAVA_PROJECT: case IJavaElement.JAVA_MODEL: fBuffer.append(element.getElementName()); break; default: fBuffer.append(element.getElementName()); } if (root != null && getFlag(flags, APPEND_ROOT_PATH)) { int offset = fBuffer.length(); fBuffer.append(CONCAT_STRING); appendPackageFragmentRootLabel(root, ROOT_QUALIFIED); } }
From source file:com.redhat.ceylon.eclipse.code.explorer.JavaElementImageProvider.java
License:Open Source License
/** * Returns an image descriptor for a java element. This is the base image, no overlays. * @param element the element//from w w w . j a v a 2s . co m * @param renderFlags the image flags * @return returns the image descriptor */ public ImageDescriptor getBaseImageDescriptor(IJavaElement element, int renderFlags) { try { switch (element.getElementType()) { case IJavaElement.INITIALIZER: return JavaPluginImages.DESC_MISC_PRIVATE; // 23479 case IJavaElement.METHOD: { IMethod method = (IMethod) element; IType declType = method.getDeclaringType(); int flags = method.getFlags(); if (declType.isEnum() && isDefaultFlag(flags) && method.isConstructor()) return JavaPluginImages.DESC_MISC_PRIVATE; return getMethodImageDescriptor(JavaModelUtil.isInterfaceOrAnnotation(declType), flags); } case IJavaElement.FIELD: { IMember member = (IMember) element; IType declType = member.getDeclaringType(); return getFieldImageDescriptor(JavaModelUtil.isInterfaceOrAnnotation(declType), member.getFlags()); } case IJavaElement.LOCAL_VARIABLE: return JavaPluginImages.DESC_OBJS_LOCAL_VARIABLE; case IJavaElement.PACKAGE_DECLARATION: return JavaPluginImages.DESC_OBJS_PACKDECL; case IJavaElement.IMPORT_DECLARATION: return JavaPluginImages.DESC_OBJS_IMPDECL; case IJavaElement.IMPORT_CONTAINER: return JavaPluginImages.DESC_OBJS_IMPCONT; case IJavaElement.TYPE: { IType type = (IType) element; IType declType = type.getDeclaringType(); boolean isInner = declType != null; boolean isInInterfaceOrAnnotation = isInner && JavaModelUtil.isInterfaceOrAnnotation(declType); return getTypeImageDescriptor(isInner, isInInterfaceOrAnnotation, type.getFlags(), useLightIcons(renderFlags)); } case IJavaElement.PACKAGE_FRAGMENT_ROOT: { IPackageFragmentRoot root = (IPackageFragmentRoot) element; IPath attach = root.getSourceAttachmentPath(); if (root.getKind() == IPackageFragmentRoot.K_BINARY) { if (root.isArchive()) { if (root.isExternal()) { if (attach == null) { return JavaPluginImages.DESC_OBJS_EXTJAR; } else { return JavaPluginImages.DESC_OBJS_EXTJAR_WSRC; } } else { if (attach == null) { return JavaPluginImages.DESC_OBJS_JAR; } else { return JavaPluginImages.DESC_OBJS_JAR_WSRC; } } } else { if (attach == null) { return JavaPluginImages.DESC_OBJS_CLASSFOLDER; } else { return JavaPluginImages.DESC_OBJS_CLASSFOLDER_WSRC; } } } else { return JavaPluginImages.DESC_OBJS_PACKFRAG_ROOT; } } case IJavaElement.PACKAGE_FRAGMENT: return getPackageFragmentIcon(element); case IJavaElement.COMPILATION_UNIT: return JavaPluginImages.DESC_OBJS_CUNIT; case IJavaElement.CLASS_FILE: /* this is too expensive for large packages try { IClassFile cfile= (IClassFile)element; if (cfile.isClass()) return JavaPluginImages.IMG_OBJS_CFILECLASS; return JavaPluginImages.IMG_OBJS_CFILEINT; } catch(JavaModelException e) { // fall through; }*/ return JavaPluginImages.DESC_OBJS_CFILE; case IJavaElement.JAVA_PROJECT: IJavaProject jp = (IJavaProject) element; if (jp.getProject().isOpen()) { IProject project = jp.getProject(); IWorkbenchAdapter adapter = (IWorkbenchAdapter) project.getAdapter(IWorkbenchAdapter.class); if (adapter != null) { ImageDescriptor result = adapter.getImageDescriptor(project); if (result != null) return result; } return DESC_OBJ_PROJECT; } return DESC_OBJ_PROJECT_CLOSED; case IJavaElement.JAVA_MODEL: return JavaPluginImages.DESC_OBJS_JAVA_MODEL; case IJavaElement.TYPE_PARAMETER: return JavaPluginImages.DESC_OBJS_TYPEVARIABLE; case IJavaElement.ANNOTATION: return JavaPluginImages.DESC_OBJS_ANNOTATION; default: // ignore. Must be a new, yet unknown Java element // give an advanced IWorkbenchAdapter the chance IWorkbenchAdapter wbAdapter = (IWorkbenchAdapter) element.getAdapter(IWorkbenchAdapter.class); if (wbAdapter != null && !(wbAdapter instanceof JavaWorkbenchAdapter)) { // avoid recursion ImageDescriptor imageDescriptor = wbAdapter.getImageDescriptor(element); if (imageDescriptor != null) { return imageDescriptor; } } return JavaPluginImages.DESC_OBJS_GHOST; } } catch (JavaModelException e) { if (e.isDoesNotExist()) return JavaPluginImages.DESC_OBJS_UNKNOWN; JavaPlugin.log(e); return JavaPluginImages.DESC_OBJS_GHOST; } }
From source file:de.loskutov.bco.views.BytecodeOutlineView.java
License:Open Source License
/** * @return IJavaElement which fits in the current selection in java editor *//*from w ww .j a v a2s .c o m*/ private IJavaElement getCurrentJavaElement() { IJavaElement childEl = null; try { childEl = JdtUtils.getElementAtOffset(javaInput, currentSelection); if (childEl != null) { switch (childEl.getElementType()) { case IJavaElement.METHOD: case IJavaElement.FIELD: case IJavaElement.INITIALIZER: case IJavaElement.TYPE: break; case IJavaElement.LOCAL_VARIABLE: childEl = childEl.getAncestor(IJavaElement.METHOD); break; default: childEl = null; break; } } } catch (JavaModelException e) { // the exception is mostly occured if java structure was // changed and current element is not more exist in model // e.g. on rename/delete/move operation. // so it is not an error for user, but info for us BytecodeOutlinePlugin.log(e, IStatus.INFO); setJavaInput(null); lastChildElement = null; } return childEl; }
From source file:dynamicrefactoring.util.selection.TextSelectionInfo.java
License:Open Source License
/** * Determina el tipo de elemento seleccionado en una ventana. * Solo tiene en consideracin los tipos indicados por #typeName, #methodName * #formalArgumentName, #fieldName y #parameterName. * /*from w ww .j ava 2s. co m*/ * @return el nombre completamente cualificado del tipo de elemento * seleccionado, o <code>null</code> si no es ninguno de los admitidos. */ @Override public String getSelectionType() { if (this.selectionName == null) { IJavaElement selectedElement = this.getSelectedJavaElement(); if (selectedElement != null) { if (selectedElement.getElementType() != IJavaElement.LOCAL_VARIABLE) this.selectionName = decodeElementType(selectedElement.getElementType()); // Las variables locales necesitan un tratamiento especial. else this.selectionName = decodeElementType( new JavaLocalVariableProcessor((ILocalVariable) selectedElement) .discernLocalVariable()); } } if (selectionName != null) return selectionName; return ""; }
From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.java
License:Open Source License
/********************************************************************************/ void rename(String proj, String bid, String file, int start, int end, String name, String handle, String newname, boolean keeporig, boolean getters, boolean setters, boolean dohier, boolean qual, boolean refs, boolean dosimilar, boolean textocc, boolean doedit, String filespat, IvyXmlWriter xw) throws BedrockException { FileData fd = file_map.get(file);/* w w w.java 2 s .c o m*/ ICompilationUnit icu; if (doedit) { // icu = fd.getDefaultUnit(); icu = fd.getEditableUnit(bid); } else icu = fd.getEditableUnit(bid); IJavaElement[] elts; try { elts = icu.codeSelect(start, end - start); } catch (JavaModelException e) { throw new BedrockException("Bad location: " + e, e); } IJavaElement relt = null; for (IJavaElement ije : elts) { if (handle != null && !handle.equals(ije.getHandleIdentifier())) continue; if (name != null && !name.equals(ije.getElementName())) continue; relt = ije; break; } if (relt == null) throw new BedrockException("Item to rename not found"); String id = null; switch (relt.getElementType()) { case IJavaElement.COMPILATION_UNIT: id = IJavaRefactorings.RENAME_COMPILATION_UNIT; break; case IJavaElement.FIELD: IField ifld = (IField) relt; try { if (ifld.isEnumConstant()) id = IJavaRefactorings.RENAME_ENUM_CONSTANT; else id = IJavaRefactorings.RENAME_FIELD; } catch (JavaModelException e) { } break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: case IJavaElement.PACKAGE_FRAGMENT: id = IJavaRefactorings.RENAME_PACKAGE; break; case IJavaElement.LOCAL_VARIABLE: id = IJavaRefactorings.RENAME_LOCAL_VARIABLE; break; case IJavaElement.TYPE: id = IJavaRefactorings.RENAME_TYPE; break; case IJavaElement.TYPE_PARAMETER: id = IJavaRefactorings.RENAME_TYPE_PARAMETER; break; case IJavaElement.METHOD: id = IJavaRefactorings.RENAME_METHOD; break; case IJavaElement.ANNOTATION: case IJavaElement.CLASS_FILE: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.INITIALIZER: case IJavaElement.JAVA_MODEL: case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_DECLARATION: break; } if (id == null) throw new BedrockException("Invalid element type to rename"); RenameJavaElementDescriptor renamer; RefactoringContribution rfc = RefactoringCore.getRefactoringContribution(id); if (rfc == null) { xw.begin("FAILURE"); xw.field("TYPE", "SETUP"); xw.textElement("ID", id); xw.end("FAILURE"); renamer = new RenameJavaElementDescriptor(id); } else { renamer = (RenameJavaElementDescriptor) rfc.createDescriptor(); } renamer.setJavaElement(relt); renamer.setKeepOriginal(keeporig); renamer.setNewName(newname); if (proj != null) renamer.setProject(proj); renamer.setRenameGetters(getters); renamer.setRenameSetters(setters); renamer.setUpdateHierarchy(dohier); renamer.setUpdateQualifiedNames(qual); renamer.setUpdateReferences(refs); renamer.setUpdateSimilarDeclarations(dosimilar); renamer.setUpdateTextualOccurrences(textocc); if (filespat != null) renamer.setFileNamePatterns(filespat); RefactoringStatus sts = renamer.validateDescriptor(); if (!sts.isOK()) { xw.begin("FAILURE"); xw.field("TYPE", "VALIDATE"); BedrockUtil.outputStatus(sts, xw); xw.end("FAILURE"); return; } try { Refactoring refactor = renamer.createRefactoring(sts); if (refactor == null) { xw.begin("FAILURE"); xw.field("TYPE", "CREATE"); xw.textElement("RENAMER", renamer.toString()); xw.textElement("REFACTOR", renamer.toString()); xw.textElement("STATUS", sts.toString()); xw.end("FAILURE"); return; } refactor.setValidationContext(null); // this seems to reset files from disk (mutliple times) sts = refactor.checkAllConditions(new NullProgressMonitor()); if (!sts.isOK()) { xw.begin("FAILURE"); xw.field("TYPE", "CHECK"); BedrockUtil.outputStatus(sts, xw); xw.end("FAILURE"); if (sts.hasFatalError()) return; } BedrockPlugin.logD("RENAME: Refactoring checked"); Change chng = refactor.createChange(new NullProgressMonitor()); BedrockPlugin.logD("RENAME: Refactoring change created"); if (doedit && chng != null) { chng.perform(new NullProgressMonitor()); } else if (chng != null) { xw.begin("EDITS"); BedrockUtil.outputChange(chng, xw); xw.end("EDITS"); } } catch (CoreException e) { throw new BedrockException("Problem creating refactoring: " + e, e); } BedrockPlugin.logD("RENAME RESULT = " + xw.toString()); }
From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.java
License:Open Source License
/********************************************************************************/ // This shouldn't be needed since edits in a window should also be made in the default // buffer and hence in the actual compilation unit that would be reported void getActiveElements(IJavaElement root, List<IJavaElement> rslt) { switch (root.getElementType()) { case IJavaElement.ANNOTATION: case IJavaElement.CLASS_FILE: case IJavaElement.FIELD: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.INITIALIZER: case IJavaElement.JAVA_MODEL: case IJavaElement.LOCAL_VARIABLE: case IJavaElement.METHOD: case IJavaElement.PACKAGE_DECLARATION: case IJavaElement.TYPE: case IJavaElement.TYPE_PARAMETER: default:/*from w w w .ja v a 2 s .com*/ break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: IPackageFragmentRoot pfr = (IPackageFragmentRoot) root; try { if (pfr.getKind() == IPackageFragmentRoot.K_SOURCE && pfr.hasChildren()) { IJavaElement[] chld = pfr.getChildren(); for (IJavaElement c : chld) getActiveElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_FRAGMENT: IParent par = (IParent) root; try { if (par.hasChildren()) { IJavaElement[] chld = par.getChildren(); for (IJavaElement c : chld) getActiveElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.COMPILATION_UNIT: ICompilationUnit cu = (ICompilationUnit) root; IProject ip = cu.getJavaProject().getProject(); File f = BedrockUtil.getFileForPath(cu.getPath(), ip); String fnm = f.getPath(); FileData fd = file_map.get(fnm); if (fd == null) rslt.add(cu); else { rslt.add(fd.getSearchUnit()); } break; } }
From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.java
License:Open Source License
void getWorkingElements(IJavaElement root, List<ICompilationUnit> rslt) { switch (root.getElementType()) { case IJavaElement.ANNOTATION: case IJavaElement.CLASS_FILE: case IJavaElement.FIELD: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.INITIALIZER: case IJavaElement.JAVA_MODEL: case IJavaElement.LOCAL_VARIABLE: case IJavaElement.METHOD: case IJavaElement.PACKAGE_DECLARATION: case IJavaElement.TYPE: case IJavaElement.TYPE_PARAMETER: default:/*w w w . j av a2 s . c o m*/ break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: IPackageFragmentRoot pfr = (IPackageFragmentRoot) root; try { if (pfr.getKind() == IPackageFragmentRoot.K_SOURCE && pfr.hasChildren()) { IJavaElement[] chld = pfr.getChildren(); for (IJavaElement c : chld) getWorkingElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_FRAGMENT: IParent par = (IParent) root; try { if (par.hasChildren()) { IJavaElement[] chld = par.getChildren(); for (IJavaElement c : chld) getWorkingElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.COMPILATION_UNIT: ICompilationUnit cu = (ICompilationUnit) root; IProject ip = cu.getJavaProject().getProject(); File f = BedrockUtil.getFileForPath(cu.getPath(), ip); String fnm = f.getPath(); FileData fd = file_map.get(fnm); if (fd != null) { rslt.add(fd.getEditableUnit(null)); } break; } }
From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.java
License:Open Source License
void getCompilationElements(IJavaElement root, List<ICompilationUnit> rslt) { switch (root.getElementType()) { case IJavaElement.ANNOTATION: case IJavaElement.CLASS_FILE: case IJavaElement.FIELD: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.INITIALIZER: case IJavaElement.JAVA_MODEL: case IJavaElement.LOCAL_VARIABLE: case IJavaElement.METHOD: case IJavaElement.PACKAGE_DECLARATION: case IJavaElement.TYPE: case IJavaElement.TYPE_PARAMETER: default://w w w . j ava 2 s.co m break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: IPackageFragmentRoot pfr = (IPackageFragmentRoot) root; try { if (pfr.getKind() == IPackageFragmentRoot.K_SOURCE && pfr.hasChildren()) { IJavaElement[] chld = pfr.getChildren(); for (IJavaElement c : chld) getCompilationElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_FRAGMENT: IParent par = (IParent) root; try { if (par.hasChildren()) { IJavaElement[] chld = par.getChildren(); for (IJavaElement c : chld) getCompilationElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.COMPILATION_UNIT: ICompilationUnit cu = (ICompilationUnit) root; IProject ip = cu.getJavaProject().getProject(); File f = BedrockUtil.getFileForPath(cu.getPath(), ip); String fnm = f.getPath(); FileData fd = file_map.get(fnm); if (fd != null) { rslt.add(fd.getEditableUnit(null)); } else rslt.add(cu); break; } }
From source file:edu.brown.cs.bubbles.bedrock.BedrockJava.java
License:Open Source License
/********************************************************************************/ void handleFindAll(String proj, String file, int start, int end, boolean defs, boolean refs, boolean impls, boolean equiv, boolean exact, boolean system, boolean typeof, boolean ronly, boolean wonly, IvyXmlWriter xw) throws BedrockException { IJavaProject ijp = getJavaProject(proj); IPath fp = new Path(file); int limit = 0; if (defs && refs) limit = IJavaSearchConstants.ALL_OCCURRENCES; else if (defs) limit = IJavaSearchConstants.DECLARATIONS; else if (refs) limit = IJavaSearchConstants.REFERENCES; int flimit = limit; if (ronly)/*from w w w.j a v a 2 s. c o m*/ flimit = IJavaSearchConstants.READ_ACCESSES; else if (wonly) flimit = IJavaSearchConstants.WRITE_ACCESSES; int mrule = -1; if (equiv) mrule = SearchPattern.R_EQUIVALENT_MATCH; else if (exact) mrule = SearchPattern.R_EXACT_MATCH; SearchPattern pat = null; IJavaSearchScope scp = null; ICompilationUnit icu = our_plugin.getProjectManager().getCompilationUnit(proj, file); if (icu == null) throw new BedrockException("Compilation unit not found for " + fp); icu = getCompilationElement(icu); ICompilationUnit[] working = null; FindFilter filter = null; IJavaElement cls = null; char[] packagename = null; char[] typename = null; try { BedrockPlugin.logD("Getting search scopes"); IJavaElement[] pelt; if (ijp != null) pelt = new IJavaElement[] { ijp }; else pelt = getAllProjects(); working = getWorkingElements(pelt); int fg = IJavaSearchScope.SOURCES | IJavaSearchScope.REFERENCED_PROJECTS; if (system) fg |= IJavaSearchScope.SYSTEM_LIBRARIES | IJavaSearchScope.APPLICATION_LIBRARIES; scp = SearchEngine.createJavaSearchScope(pelt, fg); BedrockPlugin.logD("Locating item to search for"); IJavaElement[] elts = icu.codeSelect(start, end - start); if (typeof) { Set<IJavaElement> nelt = new LinkedHashSet<IJavaElement>(); for (int i = 0; i < elts.length; ++i) { IType typ = null; String tnm = null; switch (elts[i].getElementType()) { case IJavaElement.FIELD: tnm = ((IField) elts[i]).getTypeSignature(); break; case IJavaElement.LOCAL_VARIABLE: tnm = ((ILocalVariable) elts[i]).getTypeSignature(); break; case IJavaElement.METHOD: typ = ((IMethod) elts[i]).getDeclaringType(); break; default: nelt.add(elts[i]); break; } if (typ != null) nelt.add(typ); else if (tnm != null && ijp != null) { IJavaElement elt = ijp.findElement(tnm, null); if (elt != null) { nelt.add(elt); typ = null; } else { while (tnm.startsWith("[")) { String xtnm = tnm.substring(1); if (xtnm == null) break; tnm = xtnm; } int ln = tnm.length(); String xtnm = tnm; if (tnm.startsWith("L") && tnm.endsWith(";")) { xtnm = tnm.substring(1, ln - 1); } else if (tnm.startsWith("Q") && tnm.endsWith(";")) { xtnm = tnm.substring(1, ln - 1); } if (xtnm != null) tnm = xtnm; int idx1 = tnm.lastIndexOf("."); if (idx1 > 0) { String pkgnm = tnm.substring(0, idx1); xtnm = tnm.substring(idx1 + 1); if (xtnm != null) tnm = xtnm; pkgnm = pkgnm.replace('$', '.'); packagename = pkgnm.toCharArray(); } tnm = tnm.replace('$', '.'); typename = tnm.toCharArray(); } if (typename != null) { BedrockPlugin.logD("Handling type names"); FindTypeHandler fth = new FindTypeHandler(ijp); SearchEngine se = new SearchEngine(working); se.searchAllTypeNames(packagename, SearchPattern.R_EXACT_MATCH, typename, SearchPattern.R_EXACT_MATCH, IJavaSearchConstants.TYPE, scp, fth, IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null); nelt.addAll(fth.getFoundItems()); } } } IJavaElement[] nelts = new IJavaElement[nelt.size()]; elts = nelt.toArray(nelts); } if (elts.length == 1 && !typeof) { xw.begin("SEARCHFOR"); switch (elts[0].getElementType()) { case IJavaElement.FIELD: xw.field("TYPE", "Field"); break; case IJavaElement.LOCAL_VARIABLE: xw.field("TYPE", "Local"); break; case IJavaElement.METHOD: xw.field("TYPE", "Function"); break; case IJavaElement.TYPE: case IJavaElement.TYPE_PARAMETER: xw.field("TYPE", "Class"); cls = elts[0]; break; } xw.text(elts[0].getElementName()); xw.end("SEARCHFOR"); } int etyp = -1; for (int i = 0; i < elts.length; ++i) { SearchPattern sp; int xlimit = limit; switch (elts[i].getElementType()) { case IJavaElement.FIELD: case IJavaElement.LOCAL_VARIABLE: xlimit = flimit; break; case IJavaElement.TYPE: if (impls) xlimit = IJavaSearchConstants.IMPLEMENTORS; break; case IJavaElement.METHOD: if (impls) xlimit |= IJavaSearchConstants.IGNORE_DECLARING_TYPE; break; } if (mrule < 0) sp = SearchPattern.createPattern(elts[i], xlimit); else sp = SearchPattern.createPattern(elts[i], xlimit, mrule); if (pat == null) pat = sp; else pat = SearchPattern.createOrPattern(pat, sp); if (etyp < 0) etyp = elts[i].getElementType(); } if (etyp == IJavaElement.METHOD) { if (impls) { if (defs) filter = new ImplementFilter(elts); } else if (defs && !refs) filter = new ClassFilter(elts); } } catch (JavaModelException e) { BedrockPlugin.logE("SEARCH PROBLEM: " + e); e.printStackTrace(); throw new BedrockException("Can't find anything to search for", e); } if (pat == null) { BedrockPlugin.logW("Nothing to search for"); return; } BedrockPlugin.logD("Setting up search"); SearchEngine se = new SearchEngine(working); SearchParticipant[] parts = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; FindHandler fh = new FindHandler(xw, filter, false); BedrockPlugin.logD( "BEGIN SEARCH " + pat + " " + parts.length + " " + " " + scp + " :: COPIES: " + working.length); try { se.search(pat, parts, scp, fh, null); } catch (Throwable e) { throw new BedrockException("Problem doing find all search for " + pat + ": " + e, e); } if (cls != null && defs) { // need to add the actual class definition BedrockUtil.outputJavaElement(cls, false, xw); } }
From source file:edu.brown.cs.bubbles.bedrock.BedrockJava.java
License:Open Source License
/********************************************************************************/ void getFullyQualifiedName(String proj, String file, int start, int end, IvyXmlWriter xw) throws BedrockException { String name = null;//from w ww . j av a 2 s .c o m String key = null; String sgn = null; String hdl = null; ICompilationUnit icu = our_plugin.getProjectManager().getCompilationUnit(proj, file); if (icu == null) throw new BedrockException("Compilation unit not found for " + file); icu = getCompilationElement(icu); try { IJavaElement[] elts = icu.codeSelect(start, end - start); for (int i = 0; i < elts.length && name == null; ++i) { switch (elts[i].getElementType()) { case IJavaElement.JAVA_PROJECT: case IJavaElement.JAVA_MODEL: case IJavaElement.PACKAGE_FRAGMENT_ROOT: case IJavaElement.CLASS_FILE: case IJavaElement.PACKAGE_FRAGMENT: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.TYPE_PARAMETER: case IJavaElement.COMPILATION_UNIT: default: break; case IJavaElement.TYPE: IType typ = (IType) elts[i]; name = typ.getFullyQualifiedName(); key = typ.getKey(); break; case IJavaElement.FIELD: IField fld = ((IField) elts[i]); name = fld.getDeclaringType().getFullyQualifiedName() + "." + fld.getElementName(); key = fld.getKey(); sgn = fld.getTypeSignature(); break; case IJavaElement.METHOD: IMethod mthd = ((IMethod) elts[i]); name = mthd.getDeclaringType().getFullyQualifiedName() + "." + mthd.getElementName(); key = mthd.getKey(); sgn = mthd.getSignature(); // TODO: might want to add signture here as well break; case IJavaElement.INITIALIZER: IInitializer init = ((IInitializer) elts[i]); name = init.getDeclaringType().getFullyQualifiedName() + ".<clinit>"; break; case IJavaElement.PACKAGE_DECLARATION: name = ((IPackageDeclaration) elts[i]).getElementName(); break; case IJavaElement.LOCAL_VARIABLE: ILocalVariable lcl = (ILocalVariable) elts[i]; name = lcl.getHandleIdentifier(); sgn = lcl.getTypeSignature(); break; } hdl = elts[i].getHandleIdentifier(); } } catch (CoreException e) { throw new BedrockException("Problem getting name", e); } if (name == null) { return; // throw new BedrockException("No identifier at location"); } xw.begin("FULLYQUALIFIEDNAME"); xw.field("NAME", name); if (key != null) xw.field("KEY", key); if (sgn != null) xw.field("TYPE", sgn); if (hdl != null) xw.field("HANDLE", hdl); xw.end(); }