List of usage examples for org.eclipse.jdt.core CompletionProposal setParameterNames
public void setParameterNames(char[][] parameterNames)
From source file:org.bonitasoft.studio.groovy.ui.contentassist.VariablesTypeCompletionProposal.java
License:Open Source License
@Override public List<ICompletionProposal> computeCompletionProposals(final ContentAssistInvocationContext context, final IProgressMonitor monitor) { final List<ICompletionProposal> list = new ArrayList<ICompletionProposal>(); if (context instanceof JavaContentAssistInvocationContext) { final ICompilationUnit unit = ((JavaContentAssistInvocationContext) context).getCompilationUnit(); if (unit instanceof GroovyCompilationUnit) { final ITextViewer viewer = context.getViewer(); final List<ScriptVariable> nodes = (List<ScriptVariable>) viewer.getTextWidget() .getData(GroovyViewer.PROCESS_VARIABLES_DATA_KEY); final List<String> keyWords = (List<String>) viewer.getTextWidget() .getData(GroovyViewer.BONITA_KEYWORDS_DATA_KEY); if (((GroovyCompilationUnit) unit).getModuleNode() == null) { return Collections.emptyList(); }/*w w w.ja va 2s . c o m*/ final ContentAssistContext assistContext = new GroovyCompletionProposalComputer() .createContentAssistContext((GroovyCompilationUnit) unit, context.getInvocationOffset(), context.getDocument()); CharSequence prefix = null; try { prefix = context.computeIdentifierPrefix(); } catch (final BadLocationException e) { BonitaStudioLog.error(e); } if (assistContext != null && assistContext.completionNode instanceof VariableExpression) { try { final VariableExpression expr = (VariableExpression) assistContext.completionNode; if (nodes != null) { for (final ScriptVariable f : nodes) { if (expr.getName().equals(f.getName())) { final IType type = javaProject.findType(f.getType()); for (final IMethod m : type.getMethods()) { if (m.getElementName().startsWith(prefix.toString())) { final CompletionProposal proposal = CompletionProposal.create( CompletionProposal.METHOD_REF, context.getInvocationOffset()); proposal.setName(m.getElementName().toCharArray()); proposal.setCompletion( m.getElementName().substring(prefix.length()).toCharArray()); proposal.setFlags(m.getFlags()); if (prefix.length() == m.getElementName().length()) { proposal.setReplaceRange(context.getInvocationOffset(), context.getInvocationOffset()); proposal.setReceiverRange(0, 0); } else { proposal.setReplaceRange( context.getInvocationOffset() - prefix.length(), context.getInvocationOffset()); proposal.setReceiverRange(prefix.length(), prefix.length()); } final char[][] parameters = new char[m.getParameterNames().length][256]; for (int i = 0; i < m.getParameterNames().length; i++) { parameters[i] = m.getParameterNames()[i].toCharArray(); } proposal.setParameterNames(parameters); proposal.setDeclarationSignature( Signature .createTypeSignature( m.getDeclaringType().getElementName(), true) .toCharArray()); proposal.setSignature(Signature .createMethodSignature(m.getParameterTypes(), m.getReturnType()) .toCharArray()); list.add(new JavaMethodCompletionProposal(proposal, (JavaContentAssistInvocationContext) context)); } } } } } if (keyWords != null) { for (final String keyWord : keyWords) { if (expr.getName().equals(keyWord)) { final IType type = javaProject.findType( BonitaSyntaxHighlighting.getTypeForKeyWord(keyWord).getName()); for (final IMethod m : type.getMethods()) { if (m.getElementName().startsWith(prefix.toString())) { final CompletionProposal proposal = CompletionProposal.create( CompletionProposal.METHOD_REF, context.getInvocationOffset()); proposal.setName(m.getElementName().toCharArray()); proposal.setCompletion( m.getElementName().substring(prefix.length()).toCharArray()); proposal.setFlags(m.getFlags()); proposal.getCompletion(); if (prefix.length() == m.getElementName().length()) { proposal.setReplaceRange(context.getInvocationOffset(), context.getInvocationOffset()); proposal.setReceiverRange(0, 0); } else { proposal.setReplaceRange( context.getInvocationOffset() - prefix.length(), context.getInvocationOffset()); proposal.setReceiverRange(prefix.length(), prefix.length()); } final char[][] parameters = new char[m.getParameterNames().length][256]; for (int i = 0; i < m.getParameterNames().length; i++) { parameters[i] = m.getParameterNames()[i].toCharArray(); } proposal.setParameterNames(parameters); proposal.setDeclarationSignature( Signature .createTypeSignature( m.getDeclaringType().getElementName(), true) .toCharArray()); proposal.setSignature(Signature .createMethodSignature(m.getParameterTypes(), m.getReturnType()) .toCharArray()); list.add(new JavaMethodCompletionProposal(proposal, (JavaContentAssistInvocationContext) context)); } } } } } } catch (final JavaModelException e) { BonitaStudioLog.error(e); } } } return list; } return Collections.emptyList(); }