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

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

Introduction

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

Prototype

public int getTokenKind() 

Source Link

Document

Returns the kind of completion token being proposed.

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 .ja  v a2s  .  c o  m*/

    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 w w w  .  j a  v a 2s .  co  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  ww .  j  ava 2 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.nuxeo.ide.connect.completion.StudioProposalComputer.java

License:Open Source License

@SuppressWarnings("rawtypes")
@Override//from   w ww  .  ja  v  a  2 s  . c o  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();
}