Example usage for org.eclipse.jdt.core CompletionProposal CONSTRUCTOR_INVOCATION

List of usage examples for org.eclipse.jdt.core CompletionProposal CONSTRUCTOR_INVOCATION

Introduction

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

Prototype

int CONSTRUCTOR_INVOCATION

To view the source code for org.eclipse.jdt.core CompletionProposal CONSTRUCTOR_INVOCATION.

Click Source Link

Document

Completion is a reference to a constructor.

Usage

From source file:iot.jcypher.eclipse.JCypherCompletionProposalComputer.java

License:Apache License

private List<ICompletionProposal> internalComputeCompletionProposals(int offset,
        JavaContentAssistInvocationContext context) {
    ICompilationUnit unit = context.getCompilationUnit();
    if (unit == null)
        return Collections.emptyList();

    ITextViewer viewer = context.getViewer();

    CompletionProposalCollector collector = createCollector(context);
    collector.setInvocationContext(context);

    collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_REF, true);
    collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_IMPORT, true);
    collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.FIELD_IMPORT, true);

    collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_REF, true);
    collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_IMPORT, true);
    collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.METHOD_IMPORT, true);

    collector.setAllowsRequiredProposals(CompletionProposal.CONSTRUCTOR_INVOCATION, CompletionProposal.TYPE_REF,
            true);/*  ww  w.j  a v a  2  s  . com*/

    collector.setAllowsRequiredProposals(CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION,
            CompletionProposal.TYPE_REF, true);
    collector.setAllowsRequiredProposals(CompletionProposal.ANONYMOUS_CLASS_DECLARATION,
            CompletionProposal.TYPE_REF, true);

    collector.setAllowsRequiredProposals(CompletionProposal.TYPE_REF, CompletionProposal.TYPE_REF, true);

    try {
        Point selection = viewer.getSelectedRange();
        if (selection.y > 0)
            collector.setReplacementLength(selection.y);
        unit.codeComplete(offset, collector, fTimeoutProgressMonitor);
    } catch (OperationCanceledException x) {
        fErrorMessage = "Code assist took too long and is incomplete. Please close the list and type more characters";
    } catch (JavaModelException x) {
        Shell shell = viewer.getTextWidget().getShell();
        if (x.isDoesNotExist() && !unit.getJavaProject().isOnClasspath(unit))
            MessageDialog.openInformation(shell, "Cannot Perform Operation",
                    "The compilation unit is not on the build path of a Java project.");
        else
            ErrorDialog.openError(shell, "Error Accessing Compilation Unit", "Cannot access compilation unit",
                    x.getStatus());
    }

    ICompletionProposal[] javaProposals = collector.getJavaCompletionProposals();

    List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>(Arrays.asList(javaProposals));
    if (proposals.size() == 0) {
        String error = collector.getErrorMessage();
        if (error.length() > 0)
            fErrorMessage = error;
    }
    return buildJCypherProposals(proposals);
}

From source file:org.codehaus.groovy.eclipse.codeassist.processors.GroovyProposalTypeSearchRequestor.java

License:Apache License

private ICompletionProposal proposeConstructor(char[] simpleTypeName, int parameterCount, char[] signature,
        char[][] parameterTypes, char[][] parameterNames, int modifiers, char[] packageName, int typeModifiers,
        int accessibility, char[] typeName, char[] fullyQualifiedName, boolean isQualified, int extraFlags) {

    // only show context information and only for methods
    // that exactly match the name. This happens when we are at the
    // start of an argument or an open paren
    String simpleTypeNameStr = String.valueOf(simpleTypeName);
    String fullyQualifiedNameStr = String.valueOf(fullyQualifiedName);
    if (contextOnly && !completionExpression.equals(simpleTypeNameStr)
            && !completionExpression.equals(fullyQualifiedNameStr)) {
        return null;
    }/*from ww w . java  2s  .  c o  m*/

    char[] typeCompletion;
    if (isQualified) {
        typeCompletion = fullyQualifiedName;
        if (packageName == null || packageName.length == 0) {
            typeCompletion = simpleTypeName;
        }
    } else {
        typeCompletion = simpleTypeName;
    }

    float relevanceMultiplier = 1;
    relevanceMultiplier += accessibility == IAccessRule.K_ACCESSIBLE ? 2 : -1;
    relevanceMultiplier += computeRelevanceForCaseMatching(this.completionExpression.toCharArray(),
            simpleTypeName);

    int augmentedModifiers = modifiers;
    if (Flags.isDeprecated(typeModifiers)) {
        augmentedModifiers |= Flags.AccDeprecated;
    }

    if (parameterCount == -1) {
        // default constructor
        parameterNames = CharOperation.NO_CHAR_CHAR;
        parameterTypes = CharOperation.NO_CHAR_CHAR;
    } else {
        int parameterNamesLength = parameterNames == null ? 0 : parameterNames.length;
        if (parameterCount != parameterNamesLength) {
            parameterNames = null;
        }
    }

    GroovyCompletionProposal proposal = createProposal(
            contextOnly ? CompletionProposal.METHOD_REF : CompletionProposal.CONSTRUCTOR_INVOCATION,
            offset - 1);
    char[] declarationSignature = CompletionEngine.createNonGenericTypeSignature(packageName, typeName);
    proposal.setDeclarationSignature(declarationSignature);

    if (contextOnly) {
        proposal.setReplaceRange(actualCompletionPosition, actualCompletionPosition);
        proposal.setTokenRange(actualCompletionPosition, actualCompletionPosition);
        proposal.setCompletion(CharOperation.NO_CHAR);
    } else {
        // otherwise this is a normal constructor proposal
        proposal.setCompletion(this.completionExpression.toCharArray());
        // looks strange, but this is just copying similar code in
        // CompletionEngine.java
        proposal.setReplaceRange(this.offset + this.replaceLength, this.offset + this.replaceLength);
        proposal.setTokenRange(this.offset, this.actualCompletionPosition);
        proposal.setCompletion(new char[] { '(', ')' });

        // provides the import statement
        GroovyCompletionProposal typeProposal = createTypeProposal(packageName, typeModifiers, accessibility,
                typeName, fullyQualifiedName, isQualified, typeCompletion, augmentedModifiers,
                declarationSignature);
        proposal.setRequiredProposals(new CompletionProposal[] { typeProposal });
    }

    if (signature == null) {
        proposal.setSignature(createConstructorSignature(parameterTypes, isQualified));
    } else {
        char[] copy = new char[signature.length];
        System.arraycopy(signature, 0, copy, 0, copy.length);
        CharOperation.replace(copy, '/', '.');
        proposal.setSignature(copy);
    }

    if (parameterNames != null) {
        proposal.setParameterNames(parameterNames);
    } else {
        proposal.setHasNoParameterNamesFromIndex(true);
        if (mockEngine == null) {
            // used for caching types only
            mockEngine = new CompletionEngine(null, new CompletionRequestor() {

                @Override
                public void accept(CompletionProposal proposal) {

                }
            }, null, null, null, null);
        }
        proposal.setCompletionEngine(mockEngine);
    }

    proposal.setDeclarationPackageName(packageName);
    proposal.setDeclarationTypeName(simpleTypeName);
    proposal.setParameterTypeNames(parameterTypes);
    // proposal.setParameterPackageNames(); not right
    proposal.setName(simpleTypeName);

    proposal.setIsContructor(true);

    proposal.setRelevance(Relevance.MEDIUM_HIGH.getRelevance(relevanceMultiplier));

    proposal.setFlags(augmentedModifiers);

    proposal.setTypeName(simpleTypeName);
    proposal.setAccessibility(typeModifiers);
    proposal.setPackageName(packageName);

    LazyJavaCompletionProposal lazyProposal = new GroovyJavaMethodCompletionProposal(proposal, javaContext,
            getProposalOptions());
    lazyProposal.setRelevance(proposal.getRelevance());
    if (proposal.hasParameters()) {
        lazyProposal.setTriggerCharacters(ProposalUtils.METHOD_WITH_ARGUMENTS_TRIGGERS);
    } else {
        lazyProposal.setTriggerCharacters(ProposalUtils.METHOD_TRIGGERS);
    }
    ImportRewrite r = groovyRewriter.getImportRewrite(monitor);
    if (r != null) {
        ReflectionUtils.setPrivateField(LazyJavaTypeCompletionProposal.class, "fImportRewrite", lazyProposal,
                r);
    }
    if (contextOnly) {
        ((GroovyJavaMethodCompletionProposal) lazyProposal).contextOnly();
    }

    return lazyProposal;
}

From source file:org.eclipse.flux.jdt.services.CompletionProposalDescriptionProvider.java

License:Open Source License

/**
 * Creates and returns a parameter list of the given method or type proposal suitable for
 * display. The list does not include parentheses. The lower bound of parameter types is
 * returned.//  w ww. ja va2  s  .  c  o m
 * <p>
 * Examples:
 * 
 * <pre>
 *   &quot;void method(int i, String s)&quot; -&gt; &quot;int i, String s&quot;
 *   &quot;? extends Number method(java.lang.String s, ? super Number n)&quot; -&gt; &quot;String s, Number n&quot;
 * </pre>
 * 
 * </p>
 * 
 * @param proposal the proposal to create the parameter list for
 * @return the list of comma-separated parameters suitable for display
 */
public StringBuilder createParameterList(CompletionProposal proposal) {
    int kind = proposal.getKind();
    switch (kind) {
    case CompletionProposal.METHOD_REF:
    case CompletionProposal.CONSTRUCTOR_INVOCATION:
        return appendUnboundedParameterList(new StringBuilder(), proposal);
    case CompletionProposal.TYPE_REF:
    case CompletionProposal.JAVADOC_TYPE_REF:
        return appendTypeParameterList(new StringBuilder(), proposal);
    case CompletionProposal.ANONYMOUS_CLASS_DECLARATION:
    case CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION:
        return appendUnboundedParameterList(new StringBuilder(), proposal);
    default:
        Assert.isLegal(false);
        return null; // dummy
    }
}

From source file:org.eclipse.flux.jdt.services.CompletionProposalDescriptionProvider.java

License:Open Source License

/**
 * Creates a display label with styles for a given <code>CompletionProposal</code>.
 *
 * @param proposal the completion proposal to create the display label for
 * @return the display label for <code>proposal</code>
 *
 * @since 3.4//from  ww  w. j a v  a 2  s .  c o  m
 */
public StringBuilder createDescription(CompletionProposal proposal) {
    switch (proposal.getKind()) {
    case CompletionProposal.METHOD_NAME_REFERENCE:
    case CompletionProposal.METHOD_REF:
    case CompletionProposal.CONSTRUCTOR_INVOCATION:
    case CompletionProposal.METHOD_REF_WITH_CASTED_RECEIVER:
    case CompletionProposal.POTENTIAL_METHOD_DECLARATION:
        if (fContext != null && fContext.isInJavadoc())
            return createJavadocMethodProposalLabel(proposal);
        return createMethodProposalLabel(proposal);
    case CompletionProposal.METHOD_DECLARATION:
        return createOverrideMethodProposalLabel(proposal);
    case CompletionProposal.ANONYMOUS_CLASS_DECLARATION:
    case CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION:
        return createAnonymousTypeLabel(proposal);
    case CompletionProposal.TYPE_REF:
        return createTypeProposalLabel(proposal);
    case CompletionProposal.JAVADOC_TYPE_REF:
        return createJavadocTypeProposalLabel(proposal);
    case CompletionProposal.JAVADOC_FIELD_REF:
    case CompletionProposal.JAVADOC_VALUE_REF:
    case CompletionProposal.JAVADOC_BLOCK_TAG:
    case CompletionProposal.JAVADOC_INLINE_TAG:
    case CompletionProposal.JAVADOC_PARAM_REF:
        return createJavadocSimpleProposalLabel(proposal);
    case CompletionProposal.JAVADOC_METHOD_REF:
        return createJavadocMethodProposalLabel(proposal);
    case CompletionProposal.PACKAGE_REF:
        return createPackageProposalLabel(proposal);
    case CompletionProposal.ANNOTATION_ATTRIBUTE_REF:
    case CompletionProposal.FIELD_REF:
    case CompletionProposal.FIELD_REF_WITH_CASTED_RECEIVER:
        return createLabelWithTypeAndDeclaration(proposal);
    case CompletionProposal.LOCAL_VARIABLE_REF:
    case CompletionProposal.VARIABLE_DECLARATION:
        return createSimpleLabelWithType(proposal);
    case CompletionProposal.KEYWORD:
    case CompletionProposal.LABEL_REF:
        return createSimpleLabel(proposal);
    default:
        Assert.isTrue(false);
        return null;
    }
}

From source file:org.eclipse.flux.jdt.services.CompletionProposalReplacementProvider.java

License:Open Source License

private boolean isSupportingRequiredProposals(CompletionProposal proposal) {
    return proposal != null && (proposal.getKind() == CompletionProposal.METHOD_REF
            || proposal.getKind() == CompletionProposal.FIELD_REF
            || proposal.getKind() == CompletionProposal.TYPE_REF
            || proposal.getKind() == CompletionProposal.CONSTRUCTOR_INVOCATION
            || proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION);
}

From source file:org.eclipse.flux.jdt.services.CompletionProposalReplacementProvider.java

License:Open Source License

private void appendMethodNameReplacement(StringBuilder buffer, CompletionProposal proposal) {
    if (proposal.getKind() == CompletionProposal.METHOD_REF_WITH_CASTED_RECEIVER) {
        String coreCompletion = String.valueOf(proposal.getCompletion());
        //         String lineDelimiter = TextUtilities.getDefaultLineDelimiter(getTextViewer().getDocument());
        //         String replacement= CodeFormatterUtil.format(CodeFormatter.K_EXPRESSION, coreCompletion, 0, lineDelimiter, fInvocationContext.getProject());
        //         buffer.append(replacement.substring(0, replacement.lastIndexOf('.') + 1));
        buffer.append(coreCompletion);/*from   ww w  .  j a  va  2 s  . c  om*/
    }

    if (proposal.getKind() != CompletionProposal.CONSTRUCTOR_INVOCATION)
        buffer.append(proposal.getName());

    buffer.append(LPAREN);
}

From source file:org.eclipse.flux.jdt.services.ContentAssistService.java

License:Open Source License

protected JSONArray computeContentAssist(String username, String resourcePath, int offset, String prefix)
        throws JSONException {
    final List<CompletionProposal> proposals = new ArrayList<CompletionProposal>();
    final CompletionContext[] completionContextParam = new CompletionContext[] { null };

    ICompilationUnit liveEditUnit = liveEditUnits.getLiveEditUnit(username, resourcePath);
    try {//from  w w  w  .  j a va2  s .com
        if (liveEditUnit != null) {
            CompletionRequestor collector = new CompletionRequestor() {
                @Override
                public void accept(CompletionProposal proposal) {
                    proposals.add(proposal);
                }

                @Override
                public void acceptContext(CompletionContext context) {
                    super.acceptContext(context);
                    completionContextParam[0] = context;
                }

            };

            // Allow completions for unresolved types - since 3.3
            collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_REF,
                    true);
            collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_IMPORT,
                    true);
            collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.FIELD_IMPORT,
                    true);

            collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_REF,
                    true);
            collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_IMPORT,
                    true);
            collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF,
                    CompletionProposal.METHOD_IMPORT, true);

            collector.setAllowsRequiredProposals(CompletionProposal.CONSTRUCTOR_INVOCATION,
                    CompletionProposal.TYPE_REF, true);

            collector.setAllowsRequiredProposals(CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION,
                    CompletionProposal.TYPE_REF, true);
            collector.setAllowsRequiredProposals(CompletionProposal.ANONYMOUS_CLASS_DECLARATION,
                    CompletionProposal.TYPE_REF, true);

            collector.setAllowsRequiredProposals(CompletionProposal.TYPE_REF, CompletionProposal.TYPE_REF,
                    true);

            liveEditUnit.codeComplete(offset, collector, new NullProgressMonitor());
        }
    } catch (JavaModelException e) {
        e.printStackTrace();
    }

    List<JSONObject> jsonProposals = new ArrayList<JSONObject>(proposals.size());
    CompletionContext completionContext = completionContextParam[0];
    for (CompletionProposal proposal : proposals) {
        JSONObject jsonDescription = getDescription(proposal, completionContext);
        ProposalReplcamentInfo replacementInfo = new CompletionProposalReplacementProvider(liveEditUnit,
                proposal, completionContext, offset, prefix).createReplacement();

        JSONObject jsonProposal = new JSONObject();
        jsonProposal.put("description", jsonDescription);
        jsonProposal.put("proposal", replacementInfo.replacement);
        int initOffset = offset - prefix.length();
        if (replacementInfo.extraChanges != null) {
            jsonProposal.put("additionalEdits", Utils.editsToJsonArray(replacementInfo.extraChanges));
            initOffset += Utils.getOffsetAdjustment(replacementInfo.extraChanges, initOffset);
        }
        if (replacementInfo.positions != null && !replacementInfo.positions.isEmpty()) {
            jsonProposal.put("positions", getPositions(replacementInfo.positions, initOffset));
        }
        jsonProposal.put("escapePosition", initOffset + replacementInfo.replacement.length());
        jsonProposal.put("style", "attributedString");
        jsonProposal.put("replace", true);
        jsonProposal.put("relevance", proposal.getRelevance());

        jsonProposals.add(jsonProposal);
    }

    Collections.sort(jsonProposals, new Comparator<JSONObject>() {
        @Override
        public int compare(JSONObject o1, JSONObject o2) {
            try {
                int diff = o2.getInt("relevance") - o1.getInt("relevance");
                if (diff == 0) {
                    JSONArray nameDescription1 = o1.getJSONObject("description").getJSONArray("segments");
                    JSONArray nameDescription2 = o2.getJSONObject("description").getJSONArray("segments");
                    StringBuilder nameBuffer1 = new StringBuilder();
                    for (int i = 0; i < nameDescription1.length(); i++) {
                        nameBuffer1.append(nameDescription1.getJSONObject(i).getString("value"));
                    }
                    StringBuilder nameBuffer2 = new StringBuilder();
                    for (int i = 0; i < nameDescription2.length(); i++) {
                        nameBuffer2.append(nameDescription2.getJSONObject(i).getString("value"));
                    }
                    return nameBuffer1.toString().compareTo(nameBuffer2.toString());
                } else {
                    return diff;
                }
            } catch (JSONException e) {
                return -1;
            }
        }
    });

    return new JSONArray(jsonProposals);
}

From source file:org.eclipse.recommenders.completion.rcp.utils.ProposalUtils.java

License:Open Source License

private static boolean isKindSupported(CompletionProposal proposal) {
    switch (proposal.getKind()) {
    case CompletionProposal.METHOD_REF:
        return true;
    case CompletionProposal.METHOD_REF_WITH_CASTED_RECEIVER:
        return true;
    case CompletionProposal.METHOD_DECLARATION:
        return true;
    case CompletionProposal.CONSTRUCTOR_INVOCATION:
        return true;
    default:/*  www  .ja  v a 2  s  .  co  m*/
        return false;
    }
}

From source file:org.eclipse.recommenders.internal.constructors.rcp.ConstructorCompletionSessionProcessor.java

License:Open Source License

@Override
public boolean startSession(final IRecommendersCompletionContext context) {
    if (!isCompletionRequestSupported(context)) {
        return false;
    }//from   www .j a  v a 2  s .co  m

    IType expectedType = context.getExpectedType().orNull();
    if (expectedType == null) {
        return false;
    }

    final ConstructorModel model;
    Result<UniqueTypeName> res = pcProvider.tryToUniqueName(expectedType);
    switch (res.getReason()) {
    case OK:
        model = modelProvider.acquireModel(res.get()).orNull();
        break;
    case REASON_NOT_IN_CACHE:
        new PrefetchModelArchiveJob<ConstructorModel>(expectedType, pcProvider, modelProvider).schedule(200);
        // fall-through
    case ABSENT:
    default:
        return false;
    }

    try {
        if (model == null) {
            return false;
        }

        Map<IJavaCompletionProposal, CompletionProposal> proposals = context.getProposals();
        final Map<CompletionProposal, IMethodName> foundConstructors = new HashMap<>();
        int runningTotal = 0;
        for (Entry<IJavaCompletionProposal, CompletionProposal> entry : proposals.entrySet()) {
            CompletionProposal coreProposal = entry.getValue();
            if (coreProposal.getKind() != CompletionProposal.CONSTRUCTOR_INVOCATION) {
                continue;
            }
            IMethodName methodName = methodNameProvider.toMethodName(coreProposal).orNull();
            if (methodName == null) {
                continue;
            }
            if (!methodName.isInit()) {
                continue;
            }
            int constructorCallCount = model.getConstructorCallCount(methodName);
            if (constructorCallCount == 0) {
                continue;
            }
            foundConstructors.put(coreProposal, methodName);
            runningTotal += constructorCallCount;
        }
        final int foundConstructorsTotal = runningTotal;

        if (foundConstructorsTotal == 0) {
            return false;
        }

        Iterable<Recommendation<CompletionProposal>> recommendations = Iterables.transform(
                foundConstructors.entrySet(),
                new Function<Entry<CompletionProposal, IMethodName>, Recommendation<CompletionProposal>>() {

                    @Override
                    public Recommendation<CompletionProposal> apply(
                            Entry<CompletionProposal, IMethodName> entry) {
                        IMethodName methodName = entry.getValue();
                        double relevance = model.getConstructorCallCount(methodName)
                                / (double) foundConstructorsTotal;
                        return Recommendation.newRecommendation(entry.getKey(), relevance);
                    }
                });

        List<Recommendation<CompletionProposal>> topRecommendations = Recommendations.top(recommendations,
                prefs.maxNumberOfProposals, prefs.minProposalPercentage / 100.0);
        if (topRecommendations.isEmpty()) {
            return false;
        }

        recommationationsMap = Recommendations.asMap(topRecommendations);

        return true;
    } finally {
        modelProvider.releaseModel(model);
    }
}

From source file:org.eclipse.recommenders.internal.constructors.rcp.ConstructorCompletionSessionProcessorTest.java

License:Open Source License

@Before
public void setUp() {
    when(objectInitCoreProposal.getKind()).thenReturn(CompletionProposal.CONSTRUCTOR_INVOCATION);
    when(stringInitCoreProposal.getKind()).thenReturn(CompletionProposal.CONSTRUCTOR_INVOCATION);

    when(objectInitProcessableProposal.getCoreProposal()).thenReturn(Optional.of(objectInitCoreProposal));
    when(stringInitProcessableProposal.getCoreProposal()).thenReturn(Optional.of(stringInitCoreProposal));
}