collector = new FillArgumentNamesCompletionProposalCollector(ctx); } else { collector = new CompletionProposalCollector(ctx.getCompilationUnit(), false); this.collector.acceptContext(ctx.getCoreContext()); this.collector.setInvocationContext(ctx); collector.setIgnored(ANNOTATION_ATTRIBUTE_REF, false); collector.setIgnored(ANONYMOUS_CLASS_DECLARATION, false); collector.setIgnored(ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION, false); collector.setIgnored(FIELD_REF, false); collector.setIgnored(FIELD_REF_WITH_CASTED_RECEIVER, false); collector.setIgnored(KEYWORD, false); collector.setIgnored(LABEL_REF, false); collector.setIgnored(LOCAL_VARIABLE_REF, false); collector.setIgnored(METHOD_DECLARATION, false); collector.setIgnored(METHOD_NAME_REFERENCE, false); collector.setIgnored(METHOD_REF, false); collector.setIgnored(CONSTRUCTOR_INVOCATION, false); collector.setIgnored(METHOD_REF_WITH_CASTED_RECEIVER, false); collector.setIgnored(PACKAGE_REF, false); collector.setIgnored(POTENTIAL_METHOD_DECLARATION, false); collector.setIgnored(VARIABLE_DECLARATION, false); collector.setIgnored(TYPE_REF, false); collector.setAllowsRequiredProposals(FIELD_REF, TYPE_REF, true); collector.setAllowsRequiredProposals(FIELD_REF, TYPE_IMPORT, true); collector.setAllowsRequiredProposals(FIELD_REF, FIELD_IMPORT, true); collector.setAllowsRequiredProposals(METHOD_REF, TYPE_REF, true); collector.setAllowsRequiredProposals(METHOD_REF, TYPE_IMPORT, true);
private IJavaCompletionProposal[] createJdtProposals(final CompletionProposal proposal) { final int oldLength = collector.getJavaCompletionProposals().length; collector.accept(proposal); // order matters ;) final IJavaCompletionProposal[] jdtProposals = collector.getJavaCompletionProposals(); final IJavaCompletionProposal[] newProposals = subarray(jdtProposals, oldLength, jdtProposals.length); return newProposals; }
/** * Returns the keyword proposals that are available in this context, possibly none. * <p> * <strong>Note:</strong> This method may run * {@linkplain ICodeAssist#codeComplete(int, org.eclipse.jdt.core.CompletionRequestor) codeComplete} * on the compilation unit. * </p> * * @return the available keyword proposals */ public IJavaCompletionProposal[] getKeywordProposals() { if (fKeywordProposals == null) { if (fCollector != null && !fCollector.isIgnored(CompletionProposal.KEYWORD) && fCollector.getContext() != null) { // use the existing collector if it exists, collects keywords, and has already been invoked fKeywordProposals= fCollector.getKeywordCompletionProposals(); } else { // otherwise, retrieve keywords ourselves computeKeywordsAndContext(); } } return fKeywordProposals; }
/** * Returns the invocation context. If none has been set via * {@link #setInvocationContext(JavaContentAssistInvocationContext)}, a new one is created. * * @return invocationContext the invocation context * @since 3.2 */ protected final JavaContentAssistInvocationContext getInvocationContext() { if (fInvocationContext == null) setInvocationContext(new JavaContentAssistInvocationContext(getCompilationUnit())); return fInvocationContext; }
private void configureInterestedProposalTypes() { collector.setIgnored(ANNOTATION_ATTRIBUTE_REF, false); collector.setIgnored(ANONYMOUS_CLASS_DECLARATION, false); collector.setIgnored(ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION, false); collector.setIgnored(FIELD_REF, false); collector.setIgnored(FIELD_REF_WITH_CASTED_RECEIVER, false); collector.setIgnored(KEYWORD, false); collector.setIgnored(LABEL_REF, false); collector.setIgnored(LOCAL_VARIABLE_REF, false); collector.setIgnored(METHOD_DECLARATION, false); collector.setIgnored(METHOD_NAME_REFERENCE, false); collector.setIgnored(METHOD_REF, false); collector.setIgnored(CONSTRUCTOR_INVOCATION, false); collector.setIgnored(METHOD_REF_WITH_CASTED_RECEIVER, false); collector.setIgnored(PACKAGE_REF, false); collector.setIgnored(POTENTIAL_METHOD_DECLARATION, false); collector.setIgnored(VARIABLE_DECLARATION, false); collector.setIgnored(TYPE_REF, false); collector.setAllowsRequiredProposals(FIELD_REF, TYPE_REF, true); collector.setAllowsRequiredProposals(FIELD_REF, TYPE_IMPORT, true); collector.setAllowsRequiredProposals(FIELD_REF, FIELD_IMPORT, true); collector.setAllowsRequiredProposals(METHOD_REF, TYPE_REF, true); collector.setAllowsRequiredProposals(METHOD_REF, TYPE_IMPORT, true); collector.setAllowsRequiredProposals(METHOD_REF, METHOD_IMPORT, true); collector.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true); collector.setAllowsRequiredProposals(ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION, TYPE_REF, true); collector.setAllowsRequiredProposals(ANONYMOUS_CLASS_DECLARATION, TYPE_REF, true); collector.setAllowsRequiredProposals(TYPE_REF, TYPE_REF, true);
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.setFavoriteReferences(getFavoriteStaticMembers()); collector.setReplacementLength(selection.y); ICompletionProposal[] javaProposals= collector.getJavaCompletionProposals(); int contextInformationOffset= guessContextInformationPosition(context); if (contextInformationOffset != offset) { String error= collector.getErrorMessage(); if (error.length() > 0) fErrorMessage= error;
CompletionProposalCollector collector= new CompletionProposalCollector(cu); collector.setIgnored(CompletionProposal.KEYWORD, false); collector.setIgnored(CompletionProposal.ANNOTATION_ATTRIBUTE_REF, true); collector.setIgnored(CompletionProposal.ANONYMOUS_CLASS_DECLARATION, true); collector.setIgnored(CompletionProposal.FIELD_REF, true); collector.setIgnored(CompletionProposal.LABEL_REF, true); collector.setIgnored(CompletionProposal.LOCAL_VARIABLE_REF, true); collector.setIgnored(CompletionProposal.METHOD_DECLARATION, true); collector.setIgnored(CompletionProposal.METHOD_NAME_REFERENCE, true); collector.setIgnored(CompletionProposal.METHOD_REF, true); collector.setIgnored(CompletionProposal.PACKAGE_REF, true); collector.setIgnored(CompletionProposal.POTENTIAL_METHOD_DECLARATION, true); collector.setIgnored(CompletionProposal.VARIABLE_DECLARATION, true); collector.setIgnored(CompletionProposal.JAVADOC_BLOCK_TAG, true); collector.setIgnored(CompletionProposal.JAVADOC_FIELD_REF, true); collector.setIgnored(CompletionProposal.JAVADOC_INLINE_TAG, true); collector.setIgnored(CompletionProposal.JAVADOC_METHOD_REF, true); collector.setIgnored(CompletionProposal.JAVADOC_PARAM_REF, true); collector.setIgnored(CompletionProposal.JAVADOC_TYPE_REF, true); collector.setIgnored(CompletionProposal.JAVADOC_VALUE_REF, true); collector.setIgnored(CompletionProposal.TYPE_REF, true); fCoreContext= collector.getContext(); if (fKeywordProposals == null) fKeywordProposals= collector.getKeywordCompletionProposals(); if (fLabelProvider == null) fLabelProvider= collector.getLabelProvider(); } catch (JavaModelException x) { JavaPlugin.log(x);
setErrorMessage(null); try { fCollector = new CompletionProposalCollector(fEditor.getJavaProject()); fEditor.codeComplete(fCollector); } catch (JavaModelException x) { IJavaCompletionProposal[] results= fCollector.getJavaCompletionProposals(); setErrorMessage(fCollector.getErrorMessage()); fCollector = null;
long start= DEBUG ? System.currentTimeMillis() : 0; try { if (isFiltered(proposal)) return; acceptPotentialMethodDeclaration(proposal); } else { IJavaCompletionProposal javaProposal= createJavaCompletionProposal(proposal); if (javaProposal != null) { fJavaProposals.add(javaProposal);
@Override protected CompletionProposalCollector createCollector(JavaContentAssistInvocationContext context) { CompletionProposalCollector collector= super.createCollector(context); collector.setIgnored(CompletionProposal.JAVADOC_TYPE_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_FIELD_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_METHOD_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_PARAM_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_VALUE_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_BLOCK_TAG, false); collector.setIgnored(CompletionProposal.JAVADOC_INLINE_TAG, false); collector.setIgnored(CompletionProposal.TYPE_REF, false); collector.setIgnored(CompletionProposal.FIELD_REF, false); collector.setIgnored(CompletionProposal.METHOD_REF, false); return collector; } }
/** * Returns <code>true</code> if <code>proposal</code> is filtered, e.g. * should not be proposed to the user, <code>false</code> if it is valid. * <p> * Subclasses may extends this method. The default implementation filters * proposals set to be ignored via * {@linkplain CompletionRequestor#setIgnored(int, boolean) setIgnored} and * types set to be ignored in the preferences. * </p> * * @param proposal the proposal to filter * @return <code>true</code> to filter <code>proposal</code>, * <code>false</code> to let it pass */ protected boolean isFiltered(CompletionProposal proposal) { if (isIgnored(proposal.getKind())) return true; char[] declaringType= getDeclaringType(proposal); return declaringType!= null && TypeFilter.isFiltered(declaringType); }
/** * Creates the collector used to get proposals from core. * * @param context the context * @return the collector */ protected CompletionProposalCollector createCollector(JavaContentAssistInvocationContext context) { if (PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES)) return new FillArgumentNamesCompletionProposalCollector(context); else return new CompletionProposalCollector(context.getCompilationUnit(), true); }
public void setReplacementLength(final int y) { collector.setReplacementLength(y); } }
@Override public boolean isIgnored(final int completionProposalKind) { return collector.isIgnored(completionProposalKind); };
protected boolean isFiltered(CompletionProposal proposal) { if (proposal.getKind() == CompletionProposal.LOCAL_VARIABLE_REF) { if (Arrays.equals(proposal.getName(), fgHiddenLocal)) { return true; } } return super.isFiltered(proposal); }
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); 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); collector.setFavoriteReferences(getFavoriteStaticMembers()); collector.setReplacementLength(selection.y); unit.codeComplete(offset, collector, fTimeoutProgressMonitor); } catch (OperationCanceledException x) { ICompletionProposal[] javaProposals= collector.getJavaCompletionProposals(); int contextInformationOffset= guessMethodContextInformationPosition(context); if (contextInformationOffset != offset) { String error= collector.getErrorMessage(); if (error.length() > 0)
CompletionProposalCollector collector= new CompletionProposalCollector(cu, true); collector.setIgnored(CompletionProposal.KEYWORD, false); fCoreContext= collector.getContext(); if (fKeywordProposals == null) fKeywordProposals= collector.getKeywordCompletionProposals(); if (fLabelProvider == null) fLabelProvider= collector.getLabelProvider(); } catch (JavaModelException x) { if (!x.isDoesNotExist() || cu.getJavaProject() == null || cu.getJavaProject().isOnClasspath(cu))
long start= JavaPlugin.DEBUG_RESULT_COLLECTOR ? System.currentTimeMillis() : 0; try { if (isFiltered(proposal)) return; acceptPotentialMethodDeclaration(proposal); } else { IJavaCompletionProposal javaProposal= createJavaCompletionProposal(proposal); if (javaProposal != null) { fJavaProposals.add(javaProposal);
@Override protected CompletionProposalCollector createCollector(JavaContentAssistInvocationContext context) { CompletionProposalCollector collector= super.createCollector(context); collector.setIgnored(CompletionProposal.JAVADOC_TYPE_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_FIELD_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_METHOD_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_PARAM_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_VALUE_REF, false); collector.setIgnored(CompletionProposal.JAVADOC_BLOCK_TAG, false); collector.setIgnored(CompletionProposal.JAVADOC_INLINE_TAG, false); collector.setIgnored(CompletionProposal.TYPE_REF, false); collector.setIgnored(CompletionProposal.FIELD_REF, false); collector.setIgnored(CompletionProposal.METHOD_REF, false); return collector; } }
/** * Returns <code>true</code> if <code>proposal</code> is filtered, e.g. * should not be proposed to the user, <code>false</code> if it is valid. * <p> * Subclasses may extends this method. The default implementation filters * proposals set to be ignored via * {@linkplain CompletionRequestor#setIgnored(int, boolean) setIgnored} and * types set to be ignored in the preferences. * </p> * * @param proposal the proposal to filter * @return <code>true</code> to filter <code>proposal</code>, * <code>false</code> to let it pass */ protected boolean isFiltered(CompletionProposal proposal) { if (isIgnored(proposal.getKind())) return true; char[] declaringType= getDeclaringType(proposal); return declaringType!= null && TypeFilter.isFiltered(declaringType); }