List of usage examples for org.eclipse.jdt.core CompletionProposal CONSTRUCTOR_INVOCATION
int CONSTRUCTOR_INVOCATION
To view the source code for org.eclipse.jdt.core CompletionProposal CONSTRUCTOR_INVOCATION.
Click Source Link
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> * "void method(int i, String s)" -> "int i, String s" * "? extends Number method(java.lang.String s, ? super Number n)" -> "String s, Number n" * </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)); }