Example usage for org.eclipse.jdt.core CompletionContext TOKEN_KIND_STRING_LITERAL

List of usage examples for org.eclipse.jdt.core CompletionContext TOKEN_KIND_STRING_LITERAL

Introduction

In this page you can find the example usage for org.eclipse.jdt.core CompletionContext TOKEN_KIND_STRING_LITERAL.

Prototype

int TOKEN_KIND_STRING_LITERAL

To view the source code for org.eclipse.jdt.core CompletionContext TOKEN_KIND_STRING_LITERAL.

Click Source Link

Document

The completion token is a string literal.

Usage

From source file:org.eclipse.babel.tapiji.tools.java.ui.MessageCompletionProposalComputer.java

License:Open Source License

@Override
public List<ICompletionProposal> computeCompletionProposals(ContentAssistInvocationContext context,
        IProgressMonitor monitor) {//from   w  w  w.j av  a 2  s . com

    List<ICompletionProposal> completions = new ArrayList<ICompletionProposal>();

    if (!InternationalizationNature.hasNature(
            ((JavaContentAssistInvocationContext) context).getCompilationUnit().getResource().getProject())) {
        return completions;
    }

    try {
        JavaContentAssistInvocationContext javaContext = ((JavaContentAssistInvocationContext) context);
        CompletionContext coreContext = javaContext.getCoreContext();

        int tokenStart = coreContext.getTokenStart();
        int tokenEnd = coreContext.getTokenEnd();
        int tokenOffset = coreContext.getOffset();
        boolean isStringLiteral = coreContext.getTokenKind() == CompletionContext.TOKEN_KIND_STRING_LITERAL;

        if (cu == null) {
            manager = ResourceBundleManager
                    .getManager(javaContext.getCompilationUnit().getResource().getProject());

            resource = javaContext.getCompilationUnit().getResource();

            csav = new ResourceAuditVisitor(null, manager.getProject().getName());

            cu = ASTutilsUI.getAstRoot(ASTutilsUI.getCompilationUnit(resource));

            cu.accept(csav);
        }

        if (coreContext.getTokenKind() == CompletionContext.TOKEN_KIND_NAME
                && (tokenEnd + 1) - tokenStart > 0) {

            // Cal10n extension
            String[] metaData = ASTutils.getCal10nEnumLiteralDataAtPos(manager.getProject().getName(), cu,
                    tokenOffset - 1);

            if (metaData != null) {
                completions.add(new KeyRefactoringProposal(tokenOffset, metaData[1],
                        manager.getProject().getName(), metaData[0], metaData[2]));
            }

            return completions;
        }

        if (tokenStart < 0) {
            // is string literal in front of cursor?
            StringLiteral strLit = ASTutils.getStringLiteralAtPos(cu, tokenOffset - 1);
            if (strLit != null) {
                tokenStart = strLit.getStartPosition();
                tokenEnd = tokenStart + strLit.getLength() - 1;
                tokenOffset = tokenOffset - 1;
                isStringLiteral = true;
            } else {
                tokenStart = tokenOffset;
                tokenEnd = tokenOffset;
            }
        }

        if (isStringLiteral) {
            tokenStart++;
        }

        tokenEnd = Math.max(tokenEnd, tokenStart);

        String fullToken = "";

        if (tokenStart < tokenEnd) {
            fullToken = context.getDocument().get(tokenStart, tokenEnd - tokenStart);
        }

        // Check if the string literal is up to be written within the
        // context of a resource-bundle accessor method
        if (csav.getKeyAt(new Long(tokenOffset)) != null && isStringLiteral) {
            completions.addAll(getResourceBundleCompletionProposals(tokenStart, tokenEnd, tokenOffset,
                    isStringLiteral, fullToken, manager, csav, resource));
        } else if (csav.getRBReferenceAt(new Long(tokenOffset)) != null && isStringLiteral) {
            completions.addAll(getRBReferenceCompletionProposals(tokenStart, tokenEnd, fullToken,
                    isStringLiteral, manager, resource));
        } else {
            completions.addAll(getBasicJavaCompletionProposals(tokenStart, tokenEnd, tokenOffset, fullToken,
                    isStringLiteral, manager, csav, resource));
        }
        if (completions.size() == 1) {
            completions.add(new NoActionProposal());
        }

    } catch (Exception e) {
        Logger.logError(e);
    }
    return completions;
}

From source file:org.eclipse.jpt.jaxb.ui.internal.JaxbJavaCompletionProposalComputer.java

License:Open Source License

private List<ICompletionProposal> computeCompletionProposals_(JavaContentAssistInvocationContext context) {
    ICompilationUnit cu = context.getCompilationUnit();
    IFile file = (cu != null) ? getCorrespondingResource(cu) : null;
    IContentType contentType = (file != null) ? ContentTypeTools.contentType(file) : null;

    if (contentType == null || !contentType.isKindOf(JavaResourceCompilationUnit.CONTENT_TYPE)) {
        return Collections.emptyList();
    }//from ww w. j a v  a 2s .c  o m

    JaxbProject jaxbProject = this.getJaxbProject(file.getProject());
    if (jaxbProject == null) {
        return Collections.emptyList();
    }

    Iterable<? extends JaxbContextNode> javaNodes = jaxbProject.getPrimaryJavaNodes(cu);
    if (IterableTools.isEmpty(javaNodes)) {
        return Collections.emptyList();
    }

    CompletionContext cc = context.getCoreContext();

    // the context's "token" is really a sort of "prefix" - it does NOT
    // correspond to the "start" and "end" we get below... 
    char[] prefix = cc.getToken();
    Predicate<String> filter = this.buildPrefixFilter(prefix);
    // the token "kind" tells us if we are in a String literal already - CompletionContext.TOKEN_KIND_STRING_LITERAL
    int tokenKind = cc.getTokenKind();
    // the token "start" is the offset of the token's first character
    int tokenStart = cc.getTokenStart();
    // the token "end" is the offset of the token's last character (yuk)
    int tokenEnd = cc.getTokenEnd();
    if (tokenStart == -1) { // not sure why this happens - see bug 242286
        return Collections.emptyList();
    }

    //      System.out.println("token start: " + tokenStart);
    //      System.out.println("token end: " + tokenEnd);
    //      System.out.println("token kind: " + tokenKind);
    //      String source = cu.getSource();
    //      String token = source.substring(Math.max(0, tokenStart), Math.min(source.length(), tokenEnd + 1));
    //      System.out.println("token: =>" + token + "<=");
    //      String snippet = source.substring(Math.max(0, tokenStart - 20), Math.min(source.length(), tokenEnd + 21));
    //      System.out.println("surrounding snippet: =>" + snippet + "<=");

    List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>();
    for (JaxbContextNode javaNode : javaNodes) {
        for (String proposal : this.buildCompletionProposals(javaNode, context.getInvocationOffset(), filter)) {
            if (tokenKind == CompletionContext.TOKEN_KIND_STRING_LITERAL) {//already quoted
                proposals.add(new CompletionProposal(proposal, tokenStart, tokenEnd - tokenStart - 1,
                        proposal.length()));
            } else {//add the quotes
                proposals.add(new CompletionProposal("\"" + proposal + "\"", tokenStart, //$NON-NLS-1$//$NON-NLS-2$
                        tokenEnd - tokenStart + 1, proposal.length() + 2));
            }
        }
    }
    return proposals;
}

From source file:org.eclipse.jpt.jpa.ui.internal.JpaJavaCompletionProposalComputer.java

License:Open Source License

private List<ICompletionProposal> computeCompletionProposals_(JavaContentAssistInvocationContext context) {
    ICompilationUnit cu = context.getCompilationUnit();
    if (cu == null) {
        return Collections.emptyList();
    }/*from w w  w . ja v  a2  s.  c o  m*/

    IFile file = this.getCorrespondingResource(cu);
    if (file == null) {
        return Collections.emptyList();
    }

    JpaFile jpaFile = this.getJpaFile(file);
    if (jpaFile == null) {
        return Collections.emptyList();
    }

    Collection<JpaStructureNode> rootStructureNodes = CollectionTools
            .collection(jpaFile.getRootStructureNodes());
    if (rootStructureNodes.isEmpty()) {
        return Collections.emptyList();
    }

    CompletionContext cc = context.getCoreContext();

    // the context's "token" is really a sort of "prefix" - it does NOT
    // correspond to the "start" and "end" we get below... 
    char[] prefix = cc.getToken();
    Predicate<String> filter = this.buildPrefixFilter(prefix);
    // the token "kind" tells us if we are in a String literal already - CompletionContext.TOKEN_KIND_STRING_LITERAL
    int tokenKind = cc.getTokenKind();
    // the token "start" is the offset of the token's first character
    int tokenStart = cc.getTokenStart();
    // the token "end" is the offset of the token's last character (yuk)
    int tokenEnd = cc.getTokenEnd();
    if (tokenStart == -1) { // not sure why this happens - see bug 242286
        return Collections.emptyList();
    }

    //      System.out.println("token start: " + tokenStart);
    //      System.out.println("token end: " + tokenEnd);
    //      System.out.println("token kind: " + tokenKind);
    //      String source = cu.getSource();
    //      String token = source.substring(Math.max(0, tokenStart), Math.min(source.length(), tokenEnd + 1));
    //      System.out.println("token: =>" + token + "<=");
    //      String snippet = source.substring(Math.max(0, tokenStart - 20), Math.min(source.length(), tokenEnd + 21));
    //      System.out.println("surrounding snippet: =>" + snippet + "<=");

    List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>();
    for (JpaStructureNode structureNode : rootStructureNodes) {
        for (String s : this.buildCompletionProposals((JavaPersistentType) structureNode,
                context.getInvocationOffset(), filter)) {
            if (tokenKind == CompletionContext.TOKEN_KIND_STRING_LITERAL) {//already quoted
                proposals.add(new CompletionProposal(s, tokenStart + 1, tokenEnd - tokenStart - 1, s.length()));
            } else {//add the quotes
                proposals.add(new CompletionProposal("\"" + s + "\"", tokenStart, tokenEnd - tokenStart + 1, //$NON-NLS-1$//$NON-NLS-2$
                        s.length() + 2));
            }
        }
    }
    return proposals;
}

From source file:org.eclipse.objectteams.otdt.tests.model.CompletionTestsRequestor2.java

License:Open Source License

public String getContext() {
    if (this.context == null)
        return "";

    StringBuffer buffer = new StringBuffer();

    if (!this.shortContext) {
        buffer.append("completion offset=");
        buffer.append(context.getOffset());
        buffer.append('\n');

        buffer.append("completion range=[");
        buffer.append(context.getTokenStart());
        buffer.append(", ");
        buffer.append(context.getTokenEnd());
        buffer.append("]\n");

        char[] token = context.getToken();
        buffer.append("completion token=");
        if (token == null) {
            buffer.append("null");
        } else {/* ww w. ja va2 s  . c  o  m*/
            buffer.append('\"');
            buffer.append(token);
            buffer.append('\"');
        }
        buffer.append('\n');

        buffer.append("completion token kind=");
        int tokenKind = context.getTokenKind();
        if (tokenKind == CompletionContext.TOKEN_KIND_STRING_LITERAL) {
            buffer.append("TOKEN_KIND_STRING_LITERAL");
        } else if (tokenKind == CompletionContext.TOKEN_KIND_NAME) {
            buffer.append("TOKEN_KIND_NAME");
        } else {
            buffer.append("TOKEN_KIND_UNKNOWN");
        }
        buffer.append('\n');
    }
    char[][] expectedTypesSignatures = this.context.getExpectedTypesSignatures();
    buffer.append("expectedTypesSignatures=");
    if (expectedTypesSignatures == null) {
        buffer.append(NULL_LITERAL);
    } else {
        buffer.append('{');
        for (int i = 0; i < expectedTypesSignatures.length; i++) {
            if (i > 0)
                buffer.append(',');
            buffer.append(expectedTypesSignatures[i]);

        }
        buffer.append('}');
    }
    buffer.append('\n');

    char[][] expectedTypesKeys = this.context.getExpectedTypesKeys();
    buffer.append("expectedTypesKeys=");
    if (expectedTypesSignatures == null) {
        buffer.append(NULL_LITERAL);
    } else {
        buffer.append('{');
        for (int i = 0; i < expectedTypesKeys.length; i++) {
            if (i > 0)
                buffer.append(',');
            buffer.append(expectedTypesKeys[i]);

        }
        buffer.append('}');
    }

    if (!this.shortContext) {
        buffer.append('\n');

        int locationType = this.context.getTokenLocation();
        if (locationType == 0) {
            buffer.append("completion token location=UNKNOWN"); //$NON-NLS-1$
        } else {
            buffer.append("completion token location={"); //$NON-NLS-1$
            boolean first = true;
            if ((locationType & CompletionContext.TL_MEMBER_START) != 0) {
                if (!first)
                    buffer.append(',');
                buffer.append("MEMBER_START"); //$NON-NLS-1$
                first = false;
            }
            if ((locationType & CompletionContext.TL_STATEMENT_START) != 0) {
                if (!first)
                    buffer.append(',');
                buffer.append("STATEMENT_START"); //$NON-NLS-1$
                first = false;
            }
            buffer.append('}');
        }
    }

    if (this.computeEnclosingElement) {
        buffer.append('\n');
        buffer.append("enclosingElement="); //$NON-NLS-1$
        JavaElement enclosingElement = (JavaElement) this.context.getEnclosingElement();
        if (enclosingElement == null) {
            buffer.append("null"); //$NON-NLS-1$
        } else {
            buffer.append(enclosingElement.toStringWithAncestors(true /*show resolved info*/));
        }
    }

    if (this.computeVisibleElements) {
        buffer.append('\n');

        IJavaElement[] visibleElements = this.context.getVisibleElements(this.assignableType);
        buffer.append("visibleElements="); //$NON-NLS-1$
        if (visibleElements == null) {
            buffer.append("null"); //$NON-NLS-1$
        } else if (visibleElements.length == 0) {
            buffer.append("{}"); //$NON-NLS-1$
        } else {
            buffer.append('{');
            buffer.append('\n');
            for (int i = 0; i < visibleElements.length; i++) {
                JavaElement element = (JavaElement) visibleElements[i];
                buffer.append('\t');
                buffer.append(element.toStringWithAncestors(true /*show resolved info*/));
                buffer.append(",\n"); //$NON-NLS-1$
            }
            buffer.append('}');
        }
    }

    //buffer.append('\n');

    return buffer.toString();
}

From source file:org.nuxeo.ide.connect.completion.StudioProposalComputer.java

License:Open Source License

@SuppressWarnings("rawtypes")
@Override/*  w ww.jav a2  s. co  m*/
public List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) {

    if (context instanceof JavaContentAssistInvocationContext) {
        JavaContentAssistInvocationContext jctx = (JavaContentAssistInvocationContext) context;
        IJavaProject jproject = jctx.getProject();
        if (jproject == null) {
            return Collections.emptyList();
        }
        StudioProjectBinding binding = ConnectPlugin.getStudioProvider().getBinding(jproject.getProject());
        if (binding == null) {
            return Collections.emptyList();
        }
        // look if we are in a string literal and initialize locations
        CompletionContext cc = jctx.getCoreContext();
        int offset = context.getInvocationOffset();
        int replacementLength = -1;
        String prefix = null;
        if (cc.getTokenKind() == CompletionContext.TOKEN_KIND_STRING_LITERAL) {
            offset = cc.getTokenStart();
            int end = cc.getTokenEnd();
            replacementLength = end - offset + 1;
            prefix = new String(cc.getToken());
        } else {
            Point p = jctx.getViewer().getSelectedRange();
            replacementLength = p.y;
        }

        // assignment case
        IType type = jctx.getExpectedType();
        if (type != null && "java.lang.String".equals(type.getFullyQualifiedName())) {
            StudioAssignmentProposalCollector collector = new StudioAssignmentProposalCollector(jctx, binding);
            collector.initialize(offset, replacementLength, prefix);
            return collector.getProposals();
        }
        // method arg case
        ICompilationUnit unit = jctx.getCompilationUnit();
        StudioArgumentProposalCollector collector = new StudioArgumentProposalCollector(jctx, binding);
        collector.initialize(offset, replacementLength, prefix);
        try {
            unit.codeComplete(offset, collector, new NullProgressMonitor());
            return collector.getProposals();
        } catch (Exception e) {
            UI.showError("Error while compiling studio proposal", e);
        }
    }
    return Collections.emptyList();
}