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

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

Introduction

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

Prototype

public char[] getToken() 

Source Link

Document

Returns the completed token.

Usage

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();
    }//w  w w. ja  v a2  s. 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 ww  .  j a  va 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.eclipselabs.stlipse.javaeditor.JavaCompletionProposalComputer.java

License:Open Source License

public List<ICompletionProposal> computeCompletionProposals(ContentAssistInvocationContext context,
        IProgressMonitor monitor) {/*from   www .j  av  a 2  s .  c o m*/
    List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>();
    if (context instanceof JavaContentAssistInvocationContext) {
        JavaContentAssistInvocationContext javaContext = (JavaContentAssistInvocationContext) context;
        CompletionContext coreContext = javaContext.getCoreContext();
        ICompilationUnit unit = javaContext.getCompilationUnit();
        try {
            if (unit != null && unit.isStructureKnown()) {
                int offset = javaContext.getInvocationOffset();
                IJavaElement element = unit.getElementAt(offset);
                if (element != null && element instanceof IAnnotatable) {
                    ValueInfo valueInfo = scanAnnotation(offset, (IAnnotatable) element);
                    if (valueInfo != null) {
                        int replacementLength = valueInfo.getValueLength();
                        IJavaProject project = javaContext.getProject();
                        String beanFqn = unit.getType(element.getParent().getElementName())
                                .getFullyQualifiedName();
                        if (valueInfo.isField()) {
                            if (valueInfo.isPropertyOmmitted()) {
                                StringBuilder matchStr = resolveBeanPropertyName(element);
                                if (matchStr.length() > 0) {
                                    char[] token = coreContext.getToken();
                                    matchStr.append('.').append(token);
                                    Map<String, String> fields = BeanPropertyCache.searchFields(project,
                                            beanFqn, matchStr.toString(), false, -1, false);
                                    proposals.addAll(BeanPropertyCache.buildFieldNameProposal(fields,
                                            String.valueOf(token), coreContext.getTokenStart() + 1,
                                            replacementLength));
                                }
                            } else {
                                String input = String.valueOf(coreContext.getToken());
                                Map<String, String> fields = BeanPropertyCache.searchFields(project, beanFqn,
                                        input, false, -1, false);
                                proposals.addAll(BeanPropertyCache.buildFieldNameProposal(fields, input,
                                        coreContext.getTokenStart() + 1, replacementLength));
                            }
                        } else if (valueInfo.isEventHandler()) {
                            String input = String.valueOf(coreContext.getToken());
                            boolean isNot = false;
                            if (input.length() > 0 && input.startsWith("!")) {
                                isNot = true;
                                input = input.length() > 1 ? input.substring(1) : "";
                            }
                            List<String> events = BeanPropertyCache.searchEventHandler(project, beanFqn, input,
                                    false, false);
                            int relevance = events.size();
                            for (String event : events) {
                                String replaceStr = isNot ? "!" + event : event;
                                ICompletionProposal proposal = new JavaCompletionProposal(replaceStr,
                                        coreContext.getTokenStart() + 1, replacementLength, replaceStr.length(),
                                        Activator.getIcon(), event, null, null, relevance--);
                                proposals.add(proposal);
                            }
                        }
                    }
                }
            }
        } catch (JavaModelException e) {
            Activator.log(Status.ERROR, "Something went wrong.", e);
        }
    }
    return proposals;
}

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

License:Open Source License

@SuppressWarnings("rawtypes")
@Override//w  ww.  j av  a  2s .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();
}