Example usage for org.eclipse.jdt.core IJavaElement getOpenable

List of usage examples for org.eclipse.jdt.core IJavaElement getOpenable

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaElement getOpenable.

Prototype

IOpenable getOpenable();

Source Link

Document

Returns the first openable parent.

Usage

From source file:at.bestsolution.fxide.jdt.text.javadoc.JavadocContentAccess2.java

License:Open Source License

/**
 * Gets an IJavaElement's Javadoc comment content from the source or Javadoc attachment
 * and renders the tags and links in HTML.
 * Returns <code>null</code> if the element does not have a Javadoc comment or if no source is available.
 *
 * @param element            the element to get the Javadoc of
 * @param useAttachedJavadoc   if <code>true</code> Javadoc will be extracted from attached Javadoc
 *                            if there's no source
 * @return the Javadoc comment content in HTML or <code>null</code> if the element
 *          does not have a Javadoc comment or if no source is available
 * @throws CoreException is thrown when the element's Javadoc cannot be accessed
 */// www. j  a v  a  2 s .com
public static String getHTMLContent(IJavaElement element, boolean useAttachedJavadoc) throws CoreException {
    if (element instanceof IPackageFragment) {
        return getHTMLContent((IPackageFragment) element);
    }
    if (element instanceof IPackageDeclaration) {
        return getHTMLContent((IPackageDeclaration) element);
    }
    if (!(element instanceof IMember || element instanceof ITypeParameter
            || (element instanceof ILocalVariable && (((ILocalVariable) element).isParameter())))) {
        return null;
    }
    String sourceJavadoc = getHTMLContentFromSource(element);
    if (sourceJavadoc == null || sourceJavadoc.length() == 0 || sourceJavadoc.trim().equals("{@inheritDoc}")) { //$NON-NLS-1$
        if (useAttachedJavadoc) {
            if (element.getOpenable().getBuffer() == null) { // only if no source available
                return element.getAttachedJavadoc(null);
            }
            IMember member = null;
            if (element instanceof ILocalVariable) {
                member = ((ILocalVariable) element).getDeclaringMember();
            } else if (element instanceof ITypeParameter) {
                member = ((ITypeParameter) element).getDeclaringMember();
            } else if (element instanceof IMember) {
                member = (IMember) element;
            }
            if (canInheritJavadoc(member)) {
                IMethod method = (IMethod) member;
                String attachedDocInHierarchy = findAttachedDocInHierarchy(method);

                // Prepend "Overrides:" / "Specified by:" reference headers to make clear
                // that description has been copied from super method.
                if (attachedDocInHierarchy == null)
                    return sourceJavadoc;
                StringBuffer superMethodReferences = createSuperMethodReferences(method);
                if (superMethodReferences == null)
                    return attachedDocInHierarchy;
                superMethodReferences.append(attachedDocInHierarchy);
                return superMethodReferences.toString();
            }
        }
    }
    return sourceJavadoc;
}

From source file:at.bestsolution.fxide.jdt.text.viewersupport.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the label for a import container, import or package declaration. Considers the D_* flags.
 *
 * @param declaration the element to render
 * @param flags the rendering flags. Flags with names starting with 'D_' are considered.
 */// ww w . ja v a  2 s .com
public void appendDeclarationLabel(IJavaElement declaration, long flags) {
    if (getFlag(flags, JavaElementLabels.D_QUALIFIED)) {
        IJavaElement openable = (IJavaElement) declaration.getOpenable();
        if (openable != null) {
            appendElementLabel(openable, JavaElementLabels.CF_QUALIFIED | JavaElementLabels.CU_QUALIFIED
                    | (flags & QUALIFIER_FLAGS));
            fBuffer.append('/');
        }
    }
    if (declaration.getElementType() == IJavaElement.IMPORT_CONTAINER) {
        fBuffer.append(JavaUIMessages.JavaElementLabels_import_container);
    } else {
        fBuffer.append(getElementName(declaration));
    }
    // post qualification
    if (getFlag(flags, JavaElementLabels.D_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        IJavaElement openable = (IJavaElement) declaration.getOpenable();
        if (openable != null) {
            fBuffer.append(JavaElementLabels.CONCAT_STRING);
            appendElementLabel(openable, JavaElementLabels.CF_QUALIFIED | JavaElementLabels.CU_QUALIFIED
                    | (flags & QUALIFIER_FLAGS));
        }
        //         if (getFlag(flags, JavaElementLabels.COLORIZE)) {
        //            fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
        //         }
    }
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavaDocLocations.java

License:Open Source License

/**
 * Returns the reason for why the Javadoc of the Java element could not be retrieved.
 *
 * @param element whose Javadoc could not be retrieved
 * @param root the root of the Java element
 * @return the String message for why the Javadoc could not be retrieved for the Java element or
 *         <code>null</code> if the Java element is from a source container
 * @since 3.9/* ww  w  . j a va2s .  c om*/
 */
public static String getExplanationForMissingJavadoc(IJavaElement element, IPackageFragmentRoot root) {
    String message = null;
    try {
        boolean isBinary = (root.exists() && root.getKind() == IPackageFragmentRoot.K_BINARY);
        if (isBinary) {
            boolean hasAttachedJavadoc = JavaDocLocations.getJavadocBaseLocation(element) != null;
            boolean hasAttachedSource = root.getSourceAttachmentPath() != null;
            IOpenable openable = element.getOpenable();
            boolean hasSource = openable.getBuffer() != null;

            // Provide hint why there's no Java doc
            if (!hasAttachedSource && !hasAttachedJavadoc)
                message = CorextMessages.JavaDocLocations_noAttachments;
            else if (!hasAttachedJavadoc && !hasSource)
                message = CorextMessages.JavaDocLocations_noAttachedJavadoc;
            else if (!hasAttachedSource)
                message = CorextMessages.JavaDocLocations_noAttachedSource;
            else if (!hasSource)
                message = CorextMessages.JavaDocLocations_noInformation;

        }
    } catch (JavaModelException e) {
        message = CorextMessages.JavaDocLocations_error_gettingJavadoc;
        LOG.error(message, e);
    }
    return message;
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the label for a import container, import or package declaration. Considers the D_* flags.
 *
 * @param declaration the element to render
 * @param flags the rendering flags. Flags with names starting with 'D_' are considered.
 *//*from  w  w w . j  a v  a2  s.c  om*/
public void appendDeclarationLabel(IJavaElement declaration, long flags) {
    if (getFlag(flags, JavaElementLabels.D_QUALIFIED)) {
        IJavaElement openable = (IJavaElement) declaration.getOpenable();
        if (openable != null) {
            appendElementLabel(openable, JavaElementLabels.CF_QUALIFIED | JavaElementLabels.CU_QUALIFIED
                    | (flags & QUALIFIER_FLAGS));
            fBuffer.append('/');
        }
    }
    if (declaration.getElementType() == IJavaElement.IMPORT_CONTAINER) {
        fBuffer.append("import declarations");
    } else {
        fBuffer.append(getElementName(declaration));
    }
    // post qualification
    if (getFlag(flags, JavaElementLabels.D_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        IJavaElement openable = (IJavaElement) declaration.getOpenable();
        if (openable != null) {
            fBuffer.append(JavaElementLabels.CONCAT_STRING);
            appendElementLabel(openable, JavaElementLabels.CF_QUALIFIED | JavaElementLabels.CU_QUALIFIED
                    | (flags & QUALIFIER_FLAGS));
        }
        //         if (getFlag(flags, JavaElementLabels.COLORIZE)) {
        //            fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
        //         }
    }
}

From source file:com.microsoft.javapkgsrv.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the label for a import container, import or package declaration. Considers the D_* flags.
 *
 * @param declaration the element to render
 * @param flags the rendering flags. Flags with names starting with 'D_' are considered.
 *///w ww . j av  a2 s .  co  m
public void appendDeclarationLabel(IJavaElement declaration, long flags) {
    if (getFlag(flags, D_QUALIFIED)) {
        IJavaElement openable = (IJavaElement) declaration.getOpenable();
        if (openable != null) {
            appendElementLabel(openable, CF_QUALIFIED | CU_QUALIFIED | (flags & QUALIFIER_FLAGS));
            fBuffer.append('/');
        }
    }
    if (declaration.getElementType() == IJavaElement.IMPORT_CONTAINER) {
        fBuffer.append("import declarations");
    } else {
        fBuffer.append(getElementName(declaration));
    }
    // post qualification
    if (getFlag(flags, D_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        IJavaElement openable = (IJavaElement) declaration.getOpenable();
        if (openable != null) {
            fBuffer.append(CONCAT_STRING);
            appendElementLabel(openable, CF_QUALIFIED | CU_QUALIFIED | (flags & QUALIFIER_FLAGS));
        }
    }
}

From source file:com.microsoft.javapkgsrv.JavaParser.java

License:MIT License

public List<FindDefinitionResponse.JavaElement> ProcessFindDefinintionRequest(String fileParseContents,
        String typeRootId, int cursorPosition) throws Exception {
    if (ActiveTypeRoots.containsKey(typeRootId)) {
        ITypeRoot cu = ActiveTypeRoots.get(typeRootId);
        cu.getBuffer().setContents(fileParseContents.toCharArray());
        IJavaElement[] elements = cu.codeSelect(cursorPosition, 0);

        List<FindDefinitionResponse.JavaElement> ret = new ArrayList<FindDefinitionResponse.JavaElement>();
        for (IJavaElement element : elements) {
            String definition = element.toString();
            String path = element.getResource() != null ? element.getResource().getLocation().toOSString()
                    : element.getPath().toOSString();
            //String path = element.getPath().makeAbsolute().toOSString(); // element.getPath().toString();

            boolean isAvailable = false;
            int posStart = -1;
            int posLength = 0;
            String contents = null;
            String classFileName = null;
            IClassFile classFileObj = null;

            ISourceReference srcRef = (ISourceReference) element;
            if (srcRef != null) {
                ISourceRange range = srcRef.getSourceRange();
                if (SourceRange.isAvailable(range)) {
                    isAvailable = true;//  w  w  w. jav a  2 s  . co  m
                    posStart = range.getOffset();
                    posLength = range.getLength();

                    //if (path.endsWith(".jar"))
                    //{
                    IOpenable op = element.getOpenable();
                    if (op != null && op instanceof IClassFile) {
                        IBuffer buff = op.getBuffer();
                        classFileObj = (IClassFile) op;
                        classFileName = classFileObj.getElementName();
                        contents = buff.getContents();
                    }
                    //}
                }
            }

            FindDefinitionResponse.JavaElement.Builder retItem = FindDefinitionResponse.JavaElement.newBuilder()
                    .setDefinition(definition).setFilePath(path).setHasSource(isAvailable)
                    .setPositionStart(posStart).setPositionLength(posLength);

            if (contents != null) {
                //int hashCode = classFileObj.hashCode();
                String handle = classFileObj.getHandleIdentifier();
                ActiveTypeRoots.put(handle, classFileObj);

                retItem.setFileName(classFileName);
                retItem.setTypeRootIdentifier(TypeRootIdentifier.newBuilder().setHandle(handle).build());
            }
            System.out.println(retItem.toString());
            if (contents != null) {
                retItem.setFileContents(contents);
            }
            ret.add(retItem.build());
        }
        return ret;
    }
    return null;
}

From source file:com.redhat.ceylon.eclipse.code.explorer.PackageExplorerPart.java

License:Open Source License

private Object getVisibleParent(Object object) {
    // Fix for http://dev.eclipse.org/bugs/show_bug.cgi?id=19104
    if (object == null)
        return null;
    if (!(object instanceof IJavaElement))
        return object;
    IJavaElement element2 = (IJavaElement) object;
    switch (element2.getElementType()) {
    case IJavaElement.IMPORT_DECLARATION:
    case IJavaElement.PACKAGE_DECLARATION:
    case IJavaElement.IMPORT_CONTAINER:
    case IJavaElement.TYPE:
    case IJavaElement.METHOD:
    case IJavaElement.FIELD:
    case IJavaElement.INITIALIZER:
        // select parent cu/classfile
        element2 = (IJavaElement) element2.getOpenable();
        break;/*from   w  w  w .j a v a  2s  . c  om*/
    case IJavaElement.JAVA_MODEL:
        element2 = null;
        break;
    }
    return element2;
}

From source file:org.codehaus.groovy.eclipse.search.SyntheticAccessorQueryParticipant.java

License:Apache License

public void search(ISearchRequestor requestor, QuerySpecification querySpecification, IProgressMonitor monitor)
        throws CoreException {
    if (querySpecification instanceof ElementQuerySpecification) {
        accessorRequestor = new SyntheticAccessorSearchRequestor();
        IJavaElement element = ((ElementQuerySpecification) querySpecification).getElement();
        accessorRequestor.findSyntheticMatches(element, querySpecification.getLimitTo(),
                getSearchParticipants(), querySpecification.getScope(),
                new UISearchRequestor(requestor, element.getOpenable() instanceof GroovyCompilationUnit),
                monitor);// www. ja  va  2s  . c o  m
    }
}

From source file:org.eclipse.ajdt.internal.ui.wizards.exports.AJJarPackageWizard.java

License:Open Source License

private void addJavaElement(List selectedElements, IJavaElement je) {
    if (je.getElementType() == IJavaElement.COMPILATION_UNIT)
        selectedElements.add(je);/*  ww w . ja  va 2 s . c o m*/
    else if (je.getElementType() == IJavaElement.CLASS_FILE)
        selectedElements.add(je);
    else if (je.getElementType() == IJavaElement.JAVA_PROJECT)
        selectedElements.add(je);
    else if (je.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
        if (!JavaModelUtil.getPackageFragmentRoot(je).isArchive())
            selectedElements.add(je);
    } else if (je.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT) {
        if (!((IPackageFragmentRoot) je).isArchive())
            selectedElements.add(je);
    } else {
        IOpenable openable = je.getOpenable();
        if (openable instanceof ICompilationUnit)
            selectedElements.add(((ICompilationUnit) openable).getPrimary());
        else if (openable instanceof IClassFile && !JavaModelUtil.getPackageFragmentRoot(je).isArchive())
            selectedElements.add(openable);
    }
}

From source file:org.eclipse.e4.demo.simpleide.jdt.internal.editor.viewer.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the label for a import container, import or package declaration.
 * Considers the D_* flags./*from   w w w.j av a 2 s.  c o  m*/
 * 
 * @param declaration
 *            the element to render
 * @param flags
 *            the rendering flags. Flags with names starting with 'D_' are
 *            considered.
 */
public void appendDeclarationLabel(IJavaElement declaration, long flags) {
    if (getFlag(flags, JavaElementLabels.D_QUALIFIED)) {
        IJavaElement openable = (IJavaElement) declaration.getOpenable();
        if (openable != null) {
            appendElementLabel(openable, JavaElementLabels.CF_QUALIFIED | JavaElementLabels.CU_QUALIFIED
                    | (flags & QUALIFIER_FLAGS));
            fBuffer.append('/');
        }
    }
    if (declaration.getElementType() == IJavaElement.IMPORT_CONTAINER) {
        fBuffer.append(messages.JavaElementLabels_import_container());
    } else {
        fBuffer.append(declaration.getElementName());
    }
    // post qualification
    if (getFlag(flags, JavaElementLabels.D_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        IJavaElement openable = (IJavaElement) declaration.getOpenable();
        if (openable != null) {
            fBuffer.append(JavaElementLabels.CONCAT_STRING);
            appendElementLabel(openable, JavaElementLabels.CF_QUALIFIED | JavaElementLabels.CU_QUALIFIED
                    | (flags & QUALIFIER_FLAGS));
        }
        if (getFlag(flags, JavaElementLabels.COLORIZE)) {
            fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
        }
    }
}