private List<AutocompleteResponse.Completion> Autocomplete(ITypeRoot cu, int cursorPosition) throws JavaModelException { final List<AutocompleteResponse.Completion> proposals = new ArrayList<AutocompleteResponse.Completion>(); cu.codeComplete(cursorPosition, new CompletionRequestor() { @Override public void accept(CompletionProposal proposal) { try { System.out.println(proposal.toString()); proposals.add(translateToCompletion(proposal)); } catch(Exception e) { e.printStackTrace(); } } }); return proposals; }
private List<ParamHelpResponse.Signature> ParamHelp(ITypeRoot cu, int cursorPosition) throws JavaModelException { final List<ParamHelpResponse.Signature> proposals = new ArrayList<ParamHelpResponse.Signature>(); cu.codeComplete(cursorPosition, new CompletionRequestor() { @Override public void accept(CompletionProposal proposal) { try { System.out.println(proposal.toString()); if (proposal.getKind() == CompletionProposal.METHOD_REF) { char[] javaSig = proposal.getSignature(); ParamHelpResponse.Signature.Builder sig = ParamHelpResponse.Signature.newBuilder() .setName(new String(proposal.getName())) .setReturnValue(new String(Signature.toCharArray(Signature.getReturnType(javaSig)))); char[][] javaParamTypes = Signature.getParameterTypes(javaSig); for(char[] javaParamType: javaParamTypes) { sig.addParameters(ParamHelpResponse.Parameter.newBuilder() .setName(new String(Signature.toCharArray(javaParamType))) .build()); } proposals.add(sig.build()); } } catch(Exception e) { e.printStackTrace(); } } }); return proposals; }
/** * The CompletionEngine is responsible for computing source completions. * * It requires a searchable name environment, which supports some * specific search APIs, and a requestor to feed back the results to a UI. * * @param nameEnvironment org.eclipse.jdt.internal.codeassist.ISearchableNameEnvironment * used to resolve type/package references and search for types/packages * based on partial names. * * @param requestor org.eclipse.jdt.internal.codeassist.ICompletionRequestor * since the engine might produce answers of various forms, the engine * is associated with a requestor able to accept all possible completions. * * @param settings java.util.Map * set of options used to configure the code assist engine. */ public CompletionEngine( SearchableEnvironment nameEnvironment, CompletionRequestor requestor, Map settings, IJavaProject javaProject, WorkingCopyOwner owner, IProgressMonitor monitor) { super(settings); this.javaProject = javaProject; this.requestor = requestor; this.nameEnvironment = nameEnvironment; this.typeCache = new HashtableOfObject(5); this.openedBinaryTypes = 0; this.sourceLevel = javaProject.getOption(JavaCore.COMPILER_SOURCE, true); this.complianceLevel = javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true); this.problemFactory = new CompletionProblemFactory(Locale.getDefault()); this.problemReporter = new ProblemReporter( DefaultErrorHandlingPolicies.proceedWithAllProblems(), this.compilerOptions, this.problemFactory); this.lookupEnvironment = new LookupEnvironment(this, this.compilerOptions, this.problemReporter, nameEnvironment); this.parser = new CompletionParser(this.problemReporter, this.requestor.isExtendedContextRequired(), monitor); this.owner = owner; this.monitor = monitor; }
/** * The CompletionEngine is responsible for computing source completions. * * It requires a searchable name environment, which supports some * specific search APIs, and a requestor to feed back the results to a UI. * * @param nameEnvironment org.eclipse.jdt.internal.codeassist.ISearchableNameEnvironment * used to resolve type/package references and search for types/packages * based on partial names. * * @param requestor org.eclipse.jdt.internal.codeassist.ICompletionRequestor * since the engine might produce answers of various forms, the engine * is associated with a requestor able to accept all possible completions. * * @param settings java.util.Map * set of options used to configure the code assist engine. */ public CompletionEngine( SearchableEnvironment nameEnvironment, CompletionRequestor requestor, Map settings, IJavaProject javaProject, WorkingCopyOwner owner, IProgressMonitor monitor) { super(settings); this.javaProject = javaProject; this.requestor = requestor; this.nameEnvironment = nameEnvironment; this.typeCache = new HashtableOfObject(5); this.openedBinaryTypes = 0; this.sourceLevel = javaProject.getOption(JavaCore.COMPILER_SOURCE, true); this.complianceLevel = javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true); this.problemFactory = new CompletionProblemFactory(Locale.getDefault()); this.problemReporter = new ProblemReporter( DefaultErrorHandlingPolicies.proceedWithAllProblems(), this.compilerOptions, this.problemFactory); this.lookupEnvironment = new LookupEnvironment(this, this.compilerOptions, this.problemReporter, nameEnvironment); this.parser = new CompletionParser(this.problemReporter, this.requestor.isExtendedContextRequired()); this.owner = owner; this.monitor = monitor; }
public static String[] getStaticImportFavorites(ICompilationUnit cu, final String elementName, boolean isMethod, String[] favorites) throws JavaModelException { StringBuffer dummyCU= new StringBuffer(); String packName= cu.getParent().getElementName(); IType type= cu.findPrimaryType(); if (type == null) { return new String[0]; } if (packName.length() > 0) { dummyCU.append("package ").append(packName).append(';'); //$NON-NLS-1$ } dummyCU.append("public class ").append(type.getElementName()).append("{\n static {\n").append(elementName); // static initializer //$NON-NLS-1$//$NON-NLS-2$ int offset= dummyCU.length(); dummyCU.append("\n}\n }"); //$NON-NLS-1$ ICompilationUnit newCU= null; try { newCU= cu.getWorkingCopy(null); newCU.getBuffer().setContents(dummyCU.toString()); final HashSet<String> result= new HashSet<>(); CompletionRequestor requestor= new CompletionRequestor(true) { @Override public void accept(CompletionProposal proposal) { if (elementName.equals(new String(proposal.getName()))) { CompletionProposal[] requiredProposals= proposal.getRequiredProposals(); for (int i= 0; i < requiredProposals.length; i++) { CompletionProposal curr= requiredProposals[i]; if (curr.getKind() == CompletionProposal.METHOD_IMPORT || curr.getKind() == CompletionProposal.FIELD_IMPORT) { result.add(JavaModelUtil.concatenateName(Signature.toCharArray(curr.getDeclarationSignature()), curr.getName())); } } } } }; if (isMethod) { requestor.setIgnored(CompletionProposal.METHOD_REF, false); requestor.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.METHOD_IMPORT, true); } else { requestor.setIgnored(CompletionProposal.FIELD_REF, false); requestor.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.FIELD_IMPORT, true); } requestor.setFavoriteReferences(favorites); newCU.codeComplete(offset, requestor); return result.toArray(new String[result.size()]); } finally { if (newCU != null) { newCU.discardWorkingCopy(); } } }
@Override public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, CompletionRequestor requestor) throws JavaModelException { // TODO Auto-generated method stub }
@Override public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, CompletionRequestor requestor, IProgressMonitor monitor) throws JavaModelException { // TODO Auto-generated method stub }
@Override public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, CompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException { // TODO Auto-generated method stub }
@Override public void codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, CompletionRequestor requestor, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException { // TODO Auto-generated method stub }
public static String[] getStaticImportFavorites( ICompilationUnit cu, final String elementName, boolean isMethod, String[] favorites) throws JavaModelException { StringBuffer dummyCU = new StringBuffer(); String packName = cu.getParent().getElementName(); IType type = cu.findPrimaryType(); if (type == null) return new String[0]; if (packName.length() > 0) { dummyCU.append("package ").append(packName).append(';'); // $NON-NLS-1$ } dummyCU .append("public class ") .append(type.getElementName()) .append("{\n static {\n") .append(elementName); // static initializer //$NON-NLS-1$//$NON-NLS-2$ int offset = dummyCU.length(); dummyCU.append("\n}\n }"); // $NON-NLS-1$ ICompilationUnit newCU = null; try { newCU = cu.getWorkingCopy(null); newCU.getBuffer().setContents(dummyCU.toString()); final HashSet<String> result = new HashSet<String>(); CompletionRequestor requestor = new CompletionRequestor(true) { @Override public void accept(CompletionProposal proposal) { if (elementName.equals(new String(proposal.getName()))) { CompletionProposal[] requiredProposals = proposal.getRequiredProposals(); for (int i = 0; i < requiredProposals.length; i++) { CompletionProposal curr = requiredProposals[i]; if (curr.getKind() == CompletionProposal.METHOD_IMPORT || curr.getKind() == CompletionProposal.FIELD_IMPORT) { result.add( JavaModelUtil.concatenateName( Signature.toCharArray(curr.getDeclarationSignature()), curr.getName())); } } } } }; if (isMethod) { requestor.setIgnored(CompletionProposal.METHOD_REF, false); requestor.setAllowsRequiredProposals( CompletionProposal.METHOD_REF, CompletionProposal.METHOD_IMPORT, true); } else { requestor.setIgnored(CompletionProposal.FIELD_REF, false); requestor.setAllowsRequiredProposals( CompletionProposal.FIELD_REF, CompletionProposal.FIELD_IMPORT, true); } requestor.setFavoriteReferences(favorites); newCU.codeComplete(offset, requestor); return result.toArray(new String[result.size()]); } finally { if (newCU != null) { newCU.discardWorkingCopy(); } } }
/** * {@inheritDoc} */ @Override public void codeComplete(final int offset, final CompletionRequestor requestor) throws JavaModelException { compilationUnit.codeComplete(offset, requestor); }
/** * {@inheritDoc} */ @Override public void codeComplete(final int offset, final CompletionRequestor requestor, final IProgressMonitor monitor) throws JavaModelException { compilationUnit.codeComplete(offset, requestor, monitor); }
/** * {@inheritDoc} */ @Override public void codeComplete(final int offset, final CompletionRequestor requestor, final WorkingCopyOwner owner) throws JavaModelException { compilationUnit.codeComplete(offset, requestor, owner); }
/** * {@inheritDoc} */ @Override public void codeComplete(final int offset, final CompletionRequestor requestor, final WorkingCopyOwner owner, final IProgressMonitor monitor) throws JavaModelException { compilationUnit.codeComplete(offset, requestor, owner, monitor); }
public static String[] getStaticImportFavorites(ICompilationUnit cu, final String elementName, boolean isMethod, String[] favorites) throws JavaModelException { StringBuffer dummyCU= new StringBuffer(); String packName= cu.getParent().getElementName(); IType type= cu.findPrimaryType(); if (type == null) return new String[0]; if (packName.length() > 0) { dummyCU.append("package ").append(packName).append(';'); //$NON-NLS-1$ } dummyCU.append("public class ").append(type.getElementName()).append("{\n static {\n").append(elementName); // static initializer //$NON-NLS-1$//$NON-NLS-2$ int offset= dummyCU.length(); dummyCU.append("\n}\n }"); //$NON-NLS-1$ ICompilationUnit newCU= null; try { newCU= cu.getWorkingCopy(null); newCU.getBuffer().setContents(dummyCU.toString()); final HashSet<String> result= new HashSet<String>(); CompletionRequestor requestor= new CompletionRequestor(true) { @Override public void accept(CompletionProposal proposal) { if (elementName.equals(new String(proposal.getName()))) { CompletionProposal[] requiredProposals= proposal.getRequiredProposals(); for (int i= 0; i < requiredProposals.length; i++) { CompletionProposal curr= requiredProposals[i]; if (curr.getKind() == CompletionProposal.METHOD_IMPORT || curr.getKind() == CompletionProposal.FIELD_IMPORT) { result.add(JavaModelUtil.concatenateName(Signature.toCharArray(curr.getDeclarationSignature()), curr.getName())); } } } } }; if (isMethod) { requestor.setIgnored(CompletionProposal.METHOD_REF, false); requestor.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.METHOD_IMPORT, true); } else { requestor.setIgnored(CompletionProposal.FIELD_REF, false); requestor.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.FIELD_IMPORT, true); } requestor.setFavoriteReferences(favorites); newCU.codeComplete(offset, requestor); return result.toArray(new String[result.size()]); } finally { if (newCU != null) { newCU.discardWorkingCopy(); } } }
public void codeCompletion(String packageName, String fileName, int offset, CompletionRequestor requestor) throws JavaModelException { ICompilationUnit compilationUnit = getCompilationUnit(packageName, fileName); compilationUnit.codeComplete(offset, requestor); }