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

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

Introduction

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

Prototype

CompletionContext

Source Link

Usage

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;
    }//from   w  w w  .ja  v  a 2 s  . c  om
    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.  j ava 2s  .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.JavaCompletionProcessor.java

License:Open Source License

public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int position) {
    try {//from  ww  w.  j a  va  2 s  .  co m
        setErrorMessage(null);
        if (editor.getConsoleConfiguration() == null) {
            setErrorMessage(HibernateConsoleMessages.JavaCompletionProcessor_no_console_configuration_found);
            return new ICompletionProposal[0];
        }
        String prefix = HibernateConsoleMessages.JavaCompletionProcessor_session_session; // has to do this because of https://bugs.eclipse.org/bugs/show_bug.cgi?id=141518

        IJavaCompletionProposal[] results = new IJavaCompletionProposal[0];
        IJavaProject[] projects = null;
        //try {
        projects = ProjectUtils.findJavaProjects(editor.getConsoleConfiguration());
        /*} catch (RuntimeException e){
           String mess = NLS.bind(HibernateConsoleMessages.JavaCompletionProcessor_error_find_project,
          editor.getConsoleConfiguration().getName());
           HibernateConsolePlugin.getDefault().logErrorMessage(mess, e);
        }*/
        for (int i = 0; projects != null && i < projects.length && results.length <= 0; i++) {
            IJavaProject javaProject = projects[i];
            collector = new CompletionProposalCollector(javaProject);
            collector.acceptContext(new CompletionContext());
            try {
                editor.codeComplete(prefix, collector, position, javaProject);
            } catch (JavaModelException x) {
                Shell shell = viewer.getTextWidget().getShell();
                ErrorDialog.openError(shell, HibernateConsoleMessages.JavaCompletionProcessor_error,
                        HibernateConsoleMessages.JavaCompletionProcessor_error_while_performing_code_completion,
                        x.getStatus());
                HibernateConsolePlugin.getDefault().log(x);
            }
            results = collector.getJavaCompletionProposals();
        }

        CompletionHelper.transpose(null, -prefix.length(), results);

        /*if (editor.getConsoleConfiguration().getConfiguration() == null){
           ICompletionProposal[] results2 = new ICompletionProposal[results.length + 1];
           System.arraycopy(results, 0, results2, 1, results.length);
           results2[0] = new LoadConsoleCFGCompletionProposal(editor.getConsoleConfiguration());
           return results2;
        }*/

        return results;
    } finally {
        if (collector != null) {
            setErrorMessage(collector.getErrorMessage());
            collector = null;
        }
    }
}

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);
        }/*w w  w.ja v a  2s  .  c o  m*/

        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];
}

From source file:org.hibernate.eclipse.mapper.extractor.FieldPropertyHandler.java

License:Open Source License

public ICompletionProposal[] attributeCompletionProposals(IJavaProject project, Node node, String attributeName,
        String start, int offset) {
    //   TODO: should also try to find properties getXXX()
    if (project != null) {

        Node parentNode = node.getParentNode();
        String typename = null;/*from   w  w w  .  java2s .  co m*/

        typename = this.extractor.getNearestType(project, parentNode);

        if (typename == null) {
            return new IJavaCompletionProposal[0]; // could not locate type
        }
        HibernateResultCollector rc = null;
        try {
            IType type = project.findType(typename);
            if (type == null)
                return new ICompletionProposal[0]; //nothing to look for then
            rc = new HibernateResultCollector(project);
            rc.acceptContext(new CompletionContext());
            rc.setAccepts(false, false, false, false, true, false); // TODO: only handle properties ?
            //rc.reset(offset, javaProject, null);

            type.codeComplete(start.toCharArray(), -1, start.length(), new char[0][0], new char[0][0],
                    new int[0], false, rc);
        } catch (JavaModelException jme) {
            // TODO: report
        }

        IJavaCompletionProposal[] results = rc.getJavaCompletionProposals();
        CompletionHelper.transpose(start, offset, results);
        return results;
    }

    return new ICompletionProposal[0];
}