List of usage examples for org.eclipse.jdt.core IJavaElement CLASS_FILE
int CLASS_FILE
To view the source code for org.eclipse.jdt.core IJavaElement CLASS_FILE.
Click Source Link
From source file:com.drgarbage.bytecodevisualizer.editors.BytecodeEditor.java
License:Apache License
/** * Selects the given line and revaluate visible position. * @param bytecodeDocumentLine the line number of the bytecode document * @param elementName // w w w. j a v a2s . com * @param elementType the element type one of {@link IJavaElement IJavaElement.CLASS_FILE}, * {@link IJavaElement IJavaElement.FIELD} or {@link IJavaElement IJavaElement.METHOD}. * @see IJavaElement */ public void selectBytecodeLineAndReveal(int bytecodeDocumentLine, String elementName, int elementType) { IDocument document = byteCodeDocumentProvider.getBytecodeDocument(getBytecodeEditorInput()); try { /* get line information */ IRegion region = document.getLineInformation(bytecodeDocumentLine); int lineStartOffset = region.getOffset(); int lineLenght = region.getLength(); String lineString = document.get(lineStartOffset, lineLenght); if (elementName == null) { super.selectAndReveal(lineStartOffset, 0); } int elementIndex, elementLength; switch (elementType) { case IJavaElement.CLASS_FILE: elementIndex = lineString.indexOf(" " + elementName + " {") + 1; break; case IJavaElement.FIELD: elementIndex = lineString.indexOf(" " + elementName + ";") + 1; break; case IJavaElement.METHOD: elementIndex = lineString.indexOf(" " + elementName + "(") + 1; break; default: elementIndex = 0; elementLength = 0; } /* name not found */ if (elementIndex == 0) { elementLength = 0; } else { elementLength = elementName.length(); } super.selectAndReveal(lineStartOffset + elementIndex, elementLength); } catch (BadLocationException e) { /*nothing to do */} }
From source file:com.drgarbage.bytecodevisualizer.editors.BytecodeEditor.java
License:Apache License
/** * Selects the line for the given element: * - ClassFileSection// www. j a v a 2 s. co m * - MethodSection * - Variable * * @param element * @param line * @param markLine true if the line has to be marked */ public void setSelection(IJavaElement element, int line, boolean markLine) { if (element == null) { return; } switch (element.getElementType()) { case IJavaElement.FIELD: /* select field */ String fieldName = element.getElementName(); IFieldSection fieldSection = byteCodeDocumentProvider.getClassFileDocument() .findFieldSection(fieldName); if (fieldSection != null) { selectBytecodeLineAndReveal(fieldSection.getBytecodeDocumentLine(), fieldName, IJavaElement.FIELD); } break; case IJavaElement.METHOD: /* select method */ IMethod method = (IMethod) element; try { String methodName; if (method.isConstructor()) { methodName = "<init>"; } else { methodName = method.getElementName(); } String methodSignature = ClassFileDocumentsUtils.resolveMethodSignature(method); IMethodSection methodSection = byteCodeDocumentProvider.getClassFileDocument() .findMethodSection(methodName, methodSignature); if (methodSection != null) { if (line == IClassFileEditor.INVALID_LINE || line == IClassFileEditor.METHOD_DECLARATION_LINE) { if (method.isConstructor()) { methodName = method.getElementName(); } selectBytecodeLineAndReveal(methodSection.getFirstLine(), methodName, IJavaElement.METHOD); } else { selectLineAndRevaluate2(methodSection.getBytecodeLine(line) - 1, markLine); } break; } } catch (JavaModelException e) { BytecodeVisualizerPlugin .log(new Status(IStatus.ERROR, BytecodeVisualizerPlugin.PLUGIN_ID, e.getMessage(), e)); } default: /* select class */ IClassFileDocument doc = byteCodeDocumentProvider.getClassFileDocument(); if (doc != null) { int docLine = doc.getClassSignatureDocumentLine(); selectBytecodeLineAndReveal(docLine, element.getElementName(), IJavaElement.CLASS_FILE); } } /* call cursor hook */ doHandleCursorPositionChanged(); }
From source file:com.google.inject.tools.ideplugin.eclipse.EclipseJavaElement.java
License:Apache License
private String getType(IJavaElement element, String signature) { try {//from w ww . ja va 2 s.c o m IType type = null; ICompilationUnit compilationUnit = (ICompilationUnit) element .getAncestor(IJavaElement.COMPILATION_UNIT); if (compilationUnit != null) { type = compilationUnit.getAllTypes()[0]; } else { IClassFile classFile = (IClassFile) element.getAncestor(IJavaElement.CLASS_FILE); if (classFile != null) { type = classFile.getType(); } } String resolvedSignature = TypeUtil.resolveTypeSignature(type, signature, false); String className = getClassNameFromResolvedSignature(resolvedSignature); return className; } catch (Throwable e) { return null; } }
From source file:com.google.inject.tools.ideplugin.eclipse.EclipseJavaElement.java
License:Apache License
private boolean findIsConcreteClass(String signature) { try {//from w w w . java 2 s. co m IType type = null; ICompilationUnit compilationUnit = (ICompilationUnit) element .getAncestor(IJavaElement.COMPILATION_UNIT); if (compilationUnit != null) { type = compilationUnit.getAllTypes()[0]; } else { IClassFile classFile = (IClassFile) element.getAncestor(IJavaElement.CLASS_FILE); if (classFile != null) { type = classFile.getType(); } } IType resolvedType = TypeUtil.resolveType(type, signature); return findIsConcreteClass(resolvedType); } catch (Throwable throwable) { return false; } }
From source file:com.iw.plugins.spindle.ui.util.Revealer.java
License:Mozilla Public License
/** * @param useSelection//from ww w . j a v a2 s . c o m * @return */ private static ISelection checkSelectionForJarEntryFile(ISelection useSelection, IJavaProject jproject) { if (useSelection.isEmpty() || !(useSelection instanceof IStructuredSelection)) return useSelection; IStructuredSelection structured = (IStructuredSelection) useSelection; Object first = structured.getFirstElement(); if (structured.size() > 1 || !(first instanceof IJarEntryResource)) return useSelection; IJarEntryResource jarResource = (IJarEntryResource) first; IPath path = jarResource.getFullPath().removeFileExtension(); String name = path.lastSegment(); IPackageFragment[] fragments = null; try { if (jproject != null) { IPackageFragment frag = (IPackageFragment) jarResource.getParent(); if (frag != null) fragments = new IPackageFragment[] { frag }; } else { fragments = JarEntryFileUtil.getPackageFragments(ResourcesPlugin.getWorkspace().getRoot(), jarResource); } if (fragments.length != 1) return useSelection; // check to see if there is an IClassFile in the package IJavaElement[] children = fragments[0].getChildren(); if (children.length > 0) { IClassFile revealInstead = null; for (int i = 0; i < children.length; i++) { if (children[i].getElementType() != IJavaElement.CLASS_FILE) continue; revealInstead = (IClassFile) children[i]; String temp = revealInstead.getElementName(); temp = temp.substring(0, temp.length() - 6); if (temp.equals(name)) return new StructuredSelection(revealInstead); } if (revealInstead != null) return new StructuredSelection(revealInstead); } return new StructuredSelection(fragments[0]); } catch (CoreException e) { UIPlugin.log(e); } return useSelection; }
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.jav a 2 s .com * @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.mountainminds.eclemma.internal.ui.coverageview.SelectionTracker.java
License:Open Source License
/** * Try to identify a nested java element of the given element from a textual * selection in its source code. This might be possible if the given element * is a compilation unit or class file.//from ww w .j a v a 2 s.c om * * @param unit * unit to search * @param selection * selection within this unit * @return nested element or the unit itself */ private IJavaElement findElementAtCursor(IJavaElement unit, ISelection selection) { int pos = -1; if (selection instanceof ITextSelection) { pos = ((ITextSelection) selection).getOffset(); } if (selection instanceof IMarkSelection) { pos = ((IMarkSelection) selection).getOffset(); } if (pos == -1) return unit; IJavaElement element = null; try { switch (unit.getElementType()) { case IJavaElement.COMPILATION_UNIT: element = ((ICompilationUnit) unit).getElementAt(pos); break; case IJavaElement.CLASS_FILE: element = ((IClassFile) unit).getElementAt(pos); break; } } catch (JavaModelException e) { // we ignore this } return element == null ? unit : element; }
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 ww . ja v a2 s . 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:com.redhat.ceylon.eclipse.code.explorer.PackageExplorerContentProvider.java
License:Open Source License
/** * Processes a delta recursively. When more than two children are affected the * tree is fully refreshed starting at this node. * * @param delta the delta to process/*from w ww .ja v a 2s . c o m*/ * @param runnables the resulting view changes as runnables (type {@link Runnable}) * @return true is returned if the conclusion is to refresh a parent of an element. In that case no siblings need * to be processed * @throws JavaModelException thrown when the access to an element failed */ private boolean processDelta(IJavaElementDelta delta, Collection<Runnable> runnables) throws JavaModelException { int kind = delta.getKind(); int flags = delta.getFlags(); IJavaElement element = delta.getElement(); int elementType = element.getElementType(); if (elementType != IJavaElement.JAVA_MODEL && elementType != IJavaElement.JAVA_PROJECT) { IJavaProject proj = element.getJavaProject(); if (proj == null || !proj.getProject().isOpen()) // TODO: Not needed if parent already did the 'open' check! return false; } if (elementType == IJavaElement.PACKAGE_FRAGMENT) { if ((flags & (IJavaElementDelta.F_CONTENT | IJavaElementDelta.F_CHILDREN)) == IJavaElementDelta.F_CONTENT) { // TODO: This should never be true for folders (F_CONTENT is only for files) if (!fIsFlatLayout) { Object parent = getHierarchicalPackageParent((IPackageFragment) element); if (!(parent instanceof IPackageFragmentRoot)) { postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables); return true; } } // content change, without children info (for example resource added/removed to class folder package) postRefresh(internalGetParent(element), PARENT, element, runnables); return true; } if (!fIsFlatLayout) { if (kind == IJavaElementDelta.REMOVED) { final Object parent = getHierarchicalPackageParent((IPackageFragment) element); if (parent instanceof IPackageFragmentRoot) { postRemove(element, runnables); return false; } else { postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables); return true; } } else if (kind == IJavaElementDelta.ADDED) { final Object parent = getHierarchicalPackageParent((IPackageFragment) element); if (parent instanceof IPackageFragmentRoot) { if (fFoldPackages) { postRefresh(parent, PARENT, element, runnables); return true; } else { postAdd(parent, element, runnables); return false; } } else { postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables); return true; } } handleAffectedChildren(delta, element, runnables); return false; } } if (elementType == IJavaElement.COMPILATION_UNIT) { ICompilationUnit cu = (ICompilationUnit) element; if (!JavaModelUtil.isPrimary(cu)) { return false; } if (!getProvideMembers() && cu.isWorkingCopy() && kind == IJavaElementDelta.CHANGED) { return false; } if (kind == IJavaElementDelta.CHANGED && !isStructuralCUChange(flags)) { return false; // test moved ahead } if (!isOnClassPath(cu)) { // TODO: isOnClassPath expensive! Should be put after all cheap tests return false; } } if (elementType == IJavaElement.JAVA_PROJECT) { // handle open and closing of a project if ((flags & (IJavaElementDelta.F_CLOSED | IJavaElementDelta.F_OPENED)) != 0) { postRefresh(element, ORIGINAL, element, runnables); return false; } // if the class path has changed we refresh the entire project if ((flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0) { postRefresh(element, ORIGINAL, element, runnables); return false; } // if added it could be that the corresponding IProject is already shown. Remove it first. // bug 184296 if (kind == IJavaElementDelta.ADDED) { postRemove(element.getResource(), runnables); postAdd(element.getParent(), element, runnables); return false; } } if (kind == IJavaElementDelta.REMOVED) { Object parent = internalGetParent(element); if (element instanceof IPackageFragment) { // refresh package fragment root to allow filtering empty (parent) packages: bug 72923 if (fViewer.testFindItem(parent) != null) postRefresh(parent, PARENT, element, runnables); return true; } else if (element instanceof IPackageFragmentRoot) { // libs and class folders can show up twice (in library container and as resource at original location) IResource resource = element.getResource(); if (resource != null && !resource.exists()) postRemove(resource, runnables); } postRemove(element, runnables); if (parent instanceof IPackageFragment) postUpdateIcon((IPackageFragment) parent, runnables); // we are filtering out empty subpackages, so we // a package becomes empty we remove it from the viewer. if (isPackageFragmentEmpty(element.getParent())) { if (fViewer.testFindItem(parent) != null) postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables); return true; } return false; } if (kind == IJavaElementDelta.ADDED) { Object parent = internalGetParent(element); // we are filtering out empty subpackages, so we // have to handle additions to them specially. if (parent instanceof IPackageFragment) { Object grandparent = internalGetParent(parent); // 1GE8SI6: ITPJUI:WIN98 - Rename is not shown in Packages View // avoid posting a refresh to an invisible parent if (parent.equals(fInput)) { postRefresh(parent, PARENT, element, runnables); } else { // refresh from grandparent if parent isn't visible yet if (fViewer.testFindItem(parent) == null) postRefresh(grandparent, GRANT_PARENT, element, runnables); else { postRefresh(parent, PARENT, element, runnables); } } return true; } else { if (element instanceof IPackageFragmentRoot && ((IPackageFragmentRoot) element).getKind() != IPackageFragmentRoot.K_SOURCE) { // libs and class folders can show up twice (in library container or under project, and as resource at original location) IResource resource = element.getResource(); if (resource != null) { Object resourceParent = super.internalGetParent(resource); if (resourceParent != null) { IJavaProject proj = element.getJavaProject(); if (fShowLibrariesNode || !resourceParent.equals(proj)) { postAdd(resourceParent, resource, runnables); } } } } postAdd(parent, element, runnables); } } if (elementType == IJavaElement.COMPILATION_UNIT || elementType == IJavaElement.CLASS_FILE) { if (kind == IJavaElementDelta.CHANGED) { // isStructuralCUChange already performed above postRefresh(element, ORIGINAL, element, runnables); } return false; } if (elementType == IJavaElement.PACKAGE_FRAGMENT_ROOT) { // the contents of an external JAR has changed if ((flags & IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED) != 0) { postRefresh(element, ORIGINAL, element, runnables); return false; } if ((flags & (IJavaElementDelta.F_CONTENT | IJavaElementDelta.F_CHILDREN)) == IJavaElementDelta.F_CONTENT) { // TODO: This should never be true for folders (F_CONTENT is only for files) // content change, without children info (for example resource added/removed to class folder package) postRefresh(internalGetParent(element), PARENT, element, runnables); return true; } // the source attachment of a JAR has changed if ((flags & (IJavaElementDelta.F_SOURCEATTACHED | IJavaElementDelta.F_SOURCEDETACHED)) != 0) postUpdateIcon(element, runnables); if (isClassPathChange(delta)) { // throw the towel and do a full refresh of the affected java project. postRefresh(element.getJavaProject(), PROJECT, element, runnables); return true; } } handleAffectedChildren(delta, element, runnables); return false; }
From source file:de.loskutov.bco.ui.actions.BytecodeAction.java
License:Open Source License
protected TypedElement createTypedElement(IJavaElement javaElement, BitSet modes) { String name;//from w ww. j a v a 2 s . co m IClassFile classFile = (IClassFile) javaElement.getAncestor(IJavaElement.CLASS_FILE); // existing read-only class files if (classFile != null) { name = classFile.getPath().toOSString(); if (!name.endsWith(".class")) { //$NON-NLS-1$ name += '/' + JdtUtils.getFullBytecodeName(classFile); } } else { // usual eclipse - generated bytecode name = JdtUtils.getByteCodePath(javaElement); } String methodName = null; if (javaElement.getElementType() == IJavaElement.METHOD || javaElement.getElementType() == IJavaElement.INITIALIZER) { methodName = JdtUtils.getMethodSignature(javaElement); if (methodName != null) { name += ":" + methodName; } } return new TypedElement(name, methodName, TypedElement.TYPE_BYTECODE, javaElement, modes); }