Example usage for org.eclipse.jdt.core.eval IEvaluationContext codeComplete

List of usage examples for org.eclipse.jdt.core.eval IEvaluationContext codeComplete

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.eval IEvaluationContext codeComplete.

Prototype

public void codeComplete(String codeSnippet, int position,
        org.eclipse.jdt.core.ICodeCompletionRequestor requestor) throws JavaModelException;

Source Link

Document

Performs a code completion at the given position in the given code snippet, reporting results to the given completion requestor.

Usage

From source file:com.google.gwt.eclipse.core.editors.java.contentassist.JsniCompletionProcessor.java

License:Open Source License

private IJavaCompletionProposal[] computePackageAndTypeProposals(String js, int lineStartOffset,
        int cursorOffset) throws JavaModelException {
    Matcher matcher = PACKAGE_OR_TYPE_REF_START.matcher(js);
    if (!matcher.find()) {
        // Bail if we're not inside a JSNI Java package/type reference
        return null;
    }//  w  ww. j  a va  2 s  . c  o m

    // Extract from the match the (maybe partial) package/type reference
    int refOffset = matcher.start(1) + lineStartOffset;
    int refLength = cursorOffset - refOffset;
    String partialRef = matcher.group(1);

    CompletionProposalCollector requestor = JsniCompletionProposalCollector
            .createPackageAndTypeProposalCollector(cu, refOffset, refLength);
    IEvaluationContext evalContext = createEvaluationContext();
    evalContext.codeComplete(partialRef, partialRef.length(), requestor);
    return requestor.getJavaCompletionProposals();
}

From source file:com.google.gwt.eclipse.core.uibinder.contentassist.computers.CodeCompleteProposalComputer.java

License:Open Source License

public static void completeCodeUsingAlphabet(IEvaluationContext evalContext,
        ProposalGeneratingCompletionRequestor requestor) throws JavaModelException {
    for (char letter = 'a'; letter <= 'z'; letter++) {
        evalContext.codeComplete(String.valueOf(letter), 1, requestor);
        if (requestor.getProposals().size() > 0) {
            /*//from  ww  w  .  j a  v a  2s  . c  o m
             * Once we've hit a letter that returns at least one valid proposal,
             * bail out.
             */
            return;
        }
    }
}

From source file:com.google.gwt.eclipse.core.uibinder.contentassist.computers.CodeCompleteProposalComputer.java

License:Open Source License

public void computeProposals(List<ICompletionProposal> proposals) throws UiBinderException {
    try {//from w ww . ja v a  2s .c  om
        IEvaluationContext evalContext = createEvaluationContext();

        // for <ui:import field='____'> autocomplete
        if (packageName != null) {
            evalContext.setPackageName(packageName);
        }

        ProposalGeneratingCompletionRequestor requestor = new ProposalGeneratingCompletionRequestor(
                getReplaceOffset(), getReplaceLength(), allowedCompletionTypes, getJavaProject(),
                forceFullyQualifiedFieldNames);

        if (getEnteredText().trim().length() == 0) {
            completeCodeUsingAlphabet(evalContext, requestor);
        } else {
            evalContext.codeComplete(getEnteredText(), getEnteredText().length(), requestor);
        }
        proposals.addAll(requestor.getProposals());
    } catch (JavaModelException e) {
        throw new UiBinderException(e);
    }
}

From source file:com.google.gwt.eclipse.core.uibinder.contentassist.computers.JavaElExpressionProposalComputer.java

License:Open Source License

public void computeProposals(List<ICompletionProposal> proposals) throws UiBinderException {
    IEvaluationContext evalContext = createEvaluationContext();

    try {//from  w  w w  .  j  a  va2 s  .  co  m
        // Get proposals for instance methods and static methods by treating the
        // Java type as an instance.
        // Since the type does not necessarily have to have a zero-arg
        // constructor, we use a local variable in the completion request below
        JavaElExpressionCompletionRequestor requestor = new JavaElExpressionCompletionRequestor(
                CompletionProposal.METHOD_REF);
        String snippet = javaType.getFullyQualifiedName('.') + " tmpVar; tmpVar." + getEnteredText();
        evalContext.codeComplete(snippet, snippet.length(), requestor);
        proposals.addAll(requestor.getProposals());

    } catch (JavaModelException e) {
        throw new UiBinderException(e);
    }
}

From source file:com.google.gwt.eclipse.core.uibinder.contentassist.computers.WidgetProposalComputer.java

License:Open Source License

public void computeProposals(List<ICompletionProposal> proposals) throws UiBinderException {

    if (!isWidgetAllowed()) {
        return;//from  w w w.j  a  va 2s .c  o  m
    }

    IEvaluationContext evalContext = createEvaluationContext();
    String packageName = null;
    String prefix = XmlUtilities.getPrefix(enteredText);
    if (prefix != null) {
        packageName = packageManager.getPackageName(prefix);
        if (packageName == null) {
            // The user has specified a namespace prefix but there is not a matching
            // package, so no widgets here
            return;
        }
    }

    ProposalGeneratingCompletionRequestor requestor = new WidgetCompletionRequestor(packageName);

    String unprefixedEnteredText = XmlUtilities.getUnprefixed(enteredText);

    try {
        if (unprefixedEnteredText.trim().length() > 0) {
            evalContext.codeComplete(enteredText, enteredText.length(), requestor);
        } else {
            // Offer all possible types available to the project as
            // completions. See
            // http://code.google.com/p/google-plugin-for-eclipse/issues/detail?id=11
            CodeCompleteProposalComputer.completeCodeUsingAlphabet(evalContext, requestor);
        }
        proposals.addAll(requestor.getProposals());
    } catch (JavaModelException e) {
        throw new UiBinderException(e);
    }
}

From source file:org.drools.eclipse.editors.completion.DefaultCompletionProcessor.java

License:Apache License

protected List getAllClassProposals(final String classNameStart, final int documentOffset,
        final String prefix) {
    List result = new ArrayList();
    IJavaProject javaProject = getCurrentJavaProject();
    if (javaProject == null) {
        return result;
    }/*www.  java  2 s  .com*/
    CompletionProposalCollector collector = new CompletionProposalCollector(javaProject) {
        public void accept(CompletionProposal proposal) {
            if (proposal.getKind() == org.eclipse.jdt.core.CompletionProposal.PACKAGE_REF
                    || proposal.getKind() == org.eclipse.jdt.core.CompletionProposal.TYPE_REF) {
                super.accept(proposal);
            }
        }
    };
    collector.acceptContext(new CompletionContext());
    try {
        IEvaluationContext evalContext = javaProject.newEvaluationContext();
        evalContext.codeComplete(classNameStart, classNameStart.length(), collector);
        IJavaCompletionProposal[] proposals = collector.getJavaCompletionProposals();
        for (int i = 0; i < proposals.length; i++) {
            if (proposals[i] instanceof AbstractJavaCompletionProposal) {
                AbstractJavaCompletionProposal javaProposal = (AbstractJavaCompletionProposal) proposals[i];
                int replacementOffset = documentOffset
                        - (classNameStart.length() - javaProposal.getReplacementOffset());
                javaProposal.setReplacementOffset(replacementOffset);
                if (javaProposal instanceof LazyJavaTypeCompletionProposal) {
                    String completionPrefix = classNameStart
                            .substring(classNameStart.length() - javaProposal.getReplacementLength());
                    int dotIndex = completionPrefix.lastIndexOf('.');
                    // match up to the last dot in order to make higher level matching still work (camel case...)
                    if (dotIndex != -1) {
                        javaProposal.setReplacementString(
                                ((LazyJavaTypeCompletionProposal) javaProposal).getQualifiedTypeName());
                    }
                }
                result.add(proposals[i]);
            }
        }
    } catch (Throwable t) {
        DroolsEclipsePlugin.log(t);
    }
    return result;
}

From source file:org.drools.eclipse.editors.completion.DefaultCompletionProcessor.java

License:Apache License

protected void requestJavaCompletionProposals(final String javaText, final String prefix,
        final int documentOffset, Map params, Collection results, boolean useDrools, boolean useContext) {

    String javaTextWithoutPrefix = CompletionUtil.getTextWithoutPrefix(javaText, prefix);
    // boolean to filter default Object methods produced by code completion when in the beginning of a statement
    boolean filterObjectMethods = false;
    if ("".equals(javaTextWithoutPrefix.trim())
            || CompletionUtil.START_OF_NEW_JAVA_STATEMENT.matcher(javaTextWithoutPrefix).matches()) {
        filterObjectMethods = true;//from   w w w  . jav  a  2  s  . c om
    }
    IJavaProject javaProject = getCurrentJavaProject();
    if (javaProject == null) {
        return;
    }

    CompletionProposalCollector collector = new CompletionProposalCollector(javaProject);
    collector.acceptContext(new CompletionContext());

    try {
        IEvaluationContext evalContext = javaProject.newEvaluationContext();
        List imports = getImports();
        if (imports != null && imports.size() > 0) {
            evalContext.setImports((String[]) imports.toArray(new String[imports.size()]));
        }
        StringBuffer javaTextWithParams = new StringBuffer();
        Iterator iterator = params.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry entry = (Map.Entry) iterator.next();
            // this does not seem to work, so adding variables manually
            // evalContext.newVariable((String) entry.getValue(), (String) entry.getKey(), null);
            javaTextWithParams.append(entry.getValue() + " " + entry.getKey() + ";\n");
        }
        if (useDrools) {
            javaTextWithParams.append("org.drools.spi.KnowledgeHelper drools;");
            javaTextWithParams.append("org.drools.runtime.rule.RuleContext kcontext;");
        }
        if (useContext) {
            javaTextWithParams.append("org.drools.spi.ProcessContext context;");
            javaTextWithParams.append("org.drools.runtime.process.ProcessContext kcontext;");
        }
        javaTextWithParams.append(javaText);
        String jtext = javaTextWithParams.toString();
        String fixedText = new KnowledgeHelperFixer().fix(jtext);

        evalContext.codeComplete(fixedText, fixedText.length(), collector);
        IJavaCompletionProposal[] proposals = collector.getJavaCompletionProposals();
        for (int i = 0; i < proposals.length; i++) {
            if (proposals[i] instanceof AbstractJavaCompletionProposal) {
                AbstractJavaCompletionProposal javaProposal = (AbstractJavaCompletionProposal) proposals[i];
                int replacementOffset = documentOffset
                        - (fixedText.length() - javaProposal.getReplacementOffset());
                javaProposal.setReplacementOffset(replacementOffset);
                if (javaProposal instanceof LazyJavaTypeCompletionProposal) {
                    String completionPrefix = javaText
                            .substring(javaText.length() - javaProposal.getReplacementLength());
                    int dotIndex = completionPrefix.lastIndexOf('.');
                    // match up to the last dot in order to make higher level matching still work (camel case...)
                    if (dotIndex != -1) {
                        javaProposal.setReplacementString(
                                ((LazyJavaTypeCompletionProposal) javaProposal).getQualifiedTypeName());
                    }
                }
                if (!filterObjectMethods || !(proposals[i] instanceof JavaMethodCompletionProposal)) {
                    results.add(proposals[i]);
                }
            }
        }
    } catch (Throwable t) {
        DroolsEclipsePlugin.log(t);
    }
}

From source file:org.hibernate.eclipse.criteriaeditor.CriteriaEditor.java

License:Open Source License

public void codeComplete(String prefix, CompletionProposalCollector collector, int position,
        IJavaProject project) throws JavaModelException {
    String code = getSourceViewer().getDocument().get();
    code = prefix + code;/*from   ww  w  .j  a  va2  s. c o  m*/
    IEvaluationContext e = getEvaluationContext(project);
    if (e != null) {
        e.codeComplete(code, prefix.length() + position, collector);
    }
}

From source file:org.hibernate.eclipse.hqleditor.CompletionHelper.java

License:Open Source License

static public ICompletionProposal[] completeOnJavaTypes(IJavaProject javaProject, Settings settings,
        String packageName, String start, int offset) {

    if (javaProject != null) {
        IEvaluationContext context = javaProject.newEvaluationContext();
        if (packageName != null) {
            context.setPackageName(packageName);
        }//from ww w . j a  v  a  2 s.  c  om

        HibernateResultCollector rc = new HibernateResultCollector(javaProject);
        rc.acceptContext(new CompletionContext());
        //rc.reset(offset, javaProject, null);
        rc.setAccepts(settings);
        try {
            // cannot send in my own document as it won't compile as
            // java - so we just send in
            // the smallest snippet possible
            context.codeComplete(start, start.length(), rc);
        } catch (JavaModelException jme) {
            HibernateConsolePlugin.getDefault().logErrorMessage(
                    HibernateConsoleMessages.CompletionHelper_could_not_complete_java_types, jme);
        }
        IJavaCompletionProposal[] results = rc.getJavaCompletionProposals();
        transpose(start, offset, results);
        return results;
    }
    return new ICompletionProposal[0];
}