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

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

Introduction

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

Prototype

public void setImports(String[] imports);

Source Link

Document

Sets the import declarations for this evaluation context.

Usage

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

protected IEvaluationContext getEvaluationContext(IJavaProject project) {
    IEvaluationContext evalCtx = null;
    if (project != null) {
        evalCtx = project.newEvaluationContext();
    }//from w w w.  j a va2s.  co  m
    if (evalCtx != null) {
        evalCtx.setImports(getImports());
    }
    return evalCtx;
}