Example usage for org.eclipse.jdt.core IMethod getJavadocRange

List of usage examples for org.eclipse.jdt.core IMethod getJavadocRange

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IMethod getJavadocRange.

Prototype

ISourceRange getJavadocRange() throws JavaModelException;

Source Link

Document

Returns the Javadoc range if this element is from source or if this element is a binary element with an attached source, null otherwise.

Usage

From source file:eu.modelwriter.marker.internal.MarkerFactory.java

License:Open Source License

/**
 * Creates a Marker from TreeSelection// w ww . ja v  a  2 s . c o  m
 */
@SuppressWarnings({ "resource" })
public static IMarker createMarker(final IResource res, final ITreeSelection selection) {
    if (selection == null) {
        final MessageDialog dialog = new MessageDialog(MarkerActivator.getShell(), "Mark Information", null,
                "Please perform a valid selection", MessageDialog.WARNING, new String[] { "OK" }, 0);
        dialog.open();
        return null;
    } else if (MarkerFactory.findMarkerByTreeSelection(selection, res) != null) {
        final MessageDialog dialog = new MessageDialog(MarkerActivator.getShell(), "Mark Information", null,
                "In these area, there is already a marker", MessageDialog.WARNING, new String[] { "OK" }, 0);
        dialog.open();
        return null;
    }

    // Fetch IResource
    final IWorkbench workbench = PlatformUI.getWorkbench();
    final IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
    final IWorkbenchPage page = window.getActivePage();
    final IEditorPart editor = page.getActiveEditor();
    final IFileEditorInput input = (IFileEditorInput) editor.getEditorInput();
    final IFile file = input.getFile();

    IMarker marker = null;
    if (MarkerActivator.getEditor() instanceof EcoreEditor
            && selection.getFirstElement() instanceof ENamedElement
            && ((ENamedElement) selection.getFirstElement()).getName() != null
            && !((ENamedElement) selection.getFirstElement()).getName().isEmpty()) {

        marker = MarkerFactory.createEcoreMarker(selection, file, res, editor);

    } else if (editor instanceof EcoreEditor && selection.getFirstElement() != null) {
        marker = MarkerFactory.createInstanceMarker(selection, file, res, editor);
    } else if (editor instanceof CompilationUnitEditor) {
        final Object element = selection.getFirstElement();

        String content = null;
        try {
            content = new Scanner(file.getContents()).useDelimiter("\\Z").next();
        } catch (final CoreException e1) {
            e1.printStackTrace();
        }
        int startOffset = 0;
        int length = 0;

        if (element instanceof IField) {
            final IField field = (IField) element;
            try {
                final ISourceRange nameRange = field.getNameRange();
                final int nameStartOffset = nameRange.getOffset();
                final int nameEndOffset = nameStartOffset + nameRange.getLength();

                final ISourceRange sourceRange = field.getSourceRange();
                startOffset = field.getJavadocRange().getOffset() + field.getJavadocRange().getLength() + 1;
                if (nameEndOffset + 1 == sourceRange.getOffset() + sourceRange.getLength()) {
                    length = sourceRange.getOffset() + sourceRange.getLength() - startOffset;
                } else {
                    final int indexOfAssignment = content.indexOf("=", nameEndOffset);
                    length = indexOfAssignment - startOffset;
                }

            } catch (final JavaModelException e) {
                e.printStackTrace();
            }
        } else if (element instanceof IInitializer) {
            final IInitializer initializer = (IInitializer) element;
            try {
                final ISourceRange sourceRange = initializer.getSourceRange();
                startOffset = initializer.getJavadocRange().getOffset()
                        + initializer.getJavadocRange().getLength() + 1;
                length = sourceRange.getLength();
            } catch (final JavaModelException e) {
                e.printStackTrace();
            }
        } else if (element instanceof IMethod) {
            final IMethod method = (IMethod) element;
            try {
                final ISourceRange nameRange = method.getNameRange();
                final int nameStartOffset = nameRange.getOffset();
                final int nameEndOffset = nameStartOffset + nameRange.getLength();

                final ISourceRange sourceRange = method.getSourceRange();
                startOffset = method.getJavadocRange().getOffset() + method.getJavadocRange().getLength() + 1;
                if (content.toCharArray()[sourceRange.getOffset() + sourceRange.getLength() - 1] == '}') {
                    final int indexOfParanthesis = content.indexOf("{", nameEndOffset);
                    length = indexOfParanthesis - startOffset;
                } else if (content.toCharArray()[sourceRange.getOffset() + sourceRange.getLength()
                        - 1] == ';') {
                    length = sourceRange.getLength();
                }

            } catch (final JavaModelException e) {
                e.printStackTrace();
            }
        } else if (element instanceof IType) {
            final IType type = (IType) element;
            try {
                final ISourceRange nameRange = type.getNameRange();
                final int nameStartOffset = nameRange.getOffset();
                final int nameEndOffset = nameStartOffset + nameRange.getLength();

                final int indexOfParanthesis = content.indexOf("{", nameEndOffset);

                startOffset = type.getJavadocRange().getOffset() + type.getJavadocRange().getLength() + 1;
                length = indexOfParanthesis - startOffset;
            } catch (final JavaModelException e) {
                e.printStackTrace();
            }
        }

        final IDocument document = new Document(content);
        final TextSelection textSelection = new TextSelection(document, startOffset, length);
        return MarkerFactory.createMarker(file, textSelection);

    } else {
        final MessageDialog dialog = new MessageDialog(MarkerActivator.getShell(), "Mark Information", null,
                "Please perform a valid selection", MessageDialog.WARNING, new String[] { "OK" }, 0);
        dialog.open();
    }
    return marker;
}

From source file:hydrograph.ui.expression.editor.datastructure.MethodDetails.java

License:Apache License

private String createFormattedJavaDoc(IMethod iMethod) throws JavaModelException {
    String source = iMethod.getSource();
    if (iMethod.getJavadocRange() != null) {
        javaDoc = StringUtils.substring(source, 0, iMethod.getJavadocRange().getLength());
        javaDoc = StringUtils.replaceEachRepeatedly(javaDoc, new String[] { "/*", "*/", "*" },
                new String[] { Constants.EMPTY_STRING, Constants.EMPTY_STRING, Constants.EMPTY_STRING });
    }/*from   ww  w. jav  a2s .c  o  m*/
    return javaDoc;
}

From source file:org.eclim.plugin.jdt.command.junit.JUnitFindTestCommand.java

License:Open Source License

@Override
public Object execute(CommandLine commandLine) throws Exception {
    String projectName = commandLine.getValue(Options.PROJECT_OPTION);
    String file = commandLine.getValue(Options.FILE_OPTION);
    int offset = getOffset(commandLine);

    IProject project = ProjectUtils.getProject(projectName);
    IJavaProject javaProject = JavaUtils.getJavaProject(project);
    JUnit4TestFinder finder = new JUnit4TestFinder();

    ICompilationUnit src = JavaUtils.getCompilationUnit(javaProject, file);
    ICompilationUnit result = null;//from ww w. ja v a  2  s  .  com
    if (finder.isTest(src.getTypes()[0])) {
        result = JUnitUtils.findClass(javaProject, src.getTypes()[0]);
        if (result == null) {
            return Services.getMessage("junit.testing.class.not.found");
        }
    } else {
        result = JUnitUtils.findTest(javaProject, src.getTypes()[0]);
        if (result == null) {
            return Services.getMessage("junit.testing.test.not.found");
        }
    }

    IType resultType = result.getTypes()[0];
    String name = resultType.getElementName();
    ISourceReference ref = resultType;
    ISourceRange docRange = resultType.getJavadocRange();

    IJavaElement element = src.getElementAt(offset);
    if (element != null && element.getElementType() == IJavaElement.METHOD) {
        IMethod method = null;
        if (finder.isTest(src.getTypes()[0])) {
            method = JUnitUtils.findClassMethod(result, (IMethod) element);
        } else {
            method = JUnitUtils.findTestMethod(result, (IMethod) element);
        }
        if (method != null) {
            name = method.getElementName();
            ref = method;
            docRange = method.getJavadocRange();
        }
    }

    String lineDelim = result.findRecommendedLineSeparator();
    int docLength = docRange != null ? docRange.getLength() + lineDelim.length() : 0;
    return Position.fromOffset(result.getResource().getLocation().toOSString(), name,
            ref.getSourceRange().getOffset() + docLength, 0);
}

From source file:org.eclipseguru.gwt.core.internal.codegen.AsyncServiceCodeGenerator.java

License:Open Source License

@Override
protected void createTypeMembers(final IType createdType, final ImportsManager imports,
        final IProgressMonitor monitor) throws CoreException {
    monitor.beginTask(NLS.bind("Generating methods in ''{0}''...", createdType.getElementName()), 10);
    try {/*from  w  w w  .j a  v  a  2 s  .c  o  m*/

        // add all existing imports
        writeImports(imports);

        // add all public methods
        final IMethod[] methods = getMethods();
        for (final IMethod method : methods) {
            // skip constructors and binary, static, private or protected methods
            if (method.isConstructor() || method.isBinary() || Flags.isStatic(method.getFlags())
                    || Flags.isPrivate(method.getFlags()) || Flags.isProtected(method.getFlags())) {
                continue;
            }

            final StringBuffer methodContent = new StringBuffer();

            // javadoc
            final ISourceRange javadocRange = method.getJavadocRange();
            if (null != javadocRange) {
                final IBuffer buffer = method.getOpenable().getBuffer();
                if (buffer != null) {
                    methodContent.append(buffer.getText(javadocRange.getOffset(), javadocRange.getLength()));
                }
            }

            // Java 1.5 features
            final boolean is50OrHigher = JavaModelUtil.is50OrHigher(createdType.getJavaProject());

            // disabled because GWT compiler complains about missing type javax.annotation.Generated
            //            // @Generated annotation
            //            if (is50OrHigher) {
            //               methodContent.append('@');
            //               methodContent.append(imports.addImport(GENERATED));
            //               methodContent.append('(');
            //               methodContent.append("value={").append('"').append(GENERATOR).append('"').append('}');
            //               methodContent.append(',');
            //               methodContent.append("date=").append('"').append(DATE_FORMAT_ISO8601.format(new Date())).append('"');
            //               methodContent.append(',');
            //               methodContent.append("comments=").append('"').append("from ").append(remoteServiceType.getFullyQualifiedName('.')).append('[').append(Signature.toString(method.getSignature(), method.getElementName(), method.getParameterNames(), true, true)).append(']').append('"');
            //               methodContent.append(')');
            //               methodContent.append(' ');
            //            }

            // generics declaration
            if (is50OrHigher && (method.getTypeParameters().length > 0)) {
                appendMethodTypeParameters(method, methodContent);
                methodContent.append(' ');
            }

            // methos declaration
            methodContent.append(Signature.toString(Signature.SIG_VOID));
            methodContent.append(' ');
            methodContent.append(method.getElementName());

            // parameters
            methodContent.append('(');
            if (method.getParameterTypes().length > 0) {
                appendMethodParameters(method, methodContent);
                methodContent.append(", ");
            }
            appendAsyncCallbackParameter(method, imports, methodContent, is50OrHigher);
            methodContent.append(')');

            // method is abstract and without exceptions
            methodContent.append(';');

            // create the method
            createdType.createMethod(methodContent.toString(), null, false, null);
        }

        // update Javadoc
        updateJavadoc(createdType, ProgressUtil.subProgressMonitor(monitor, 1));

    } finally {
        monitor.done();
    }
}