/******************************************************************************* * Copyright (c) 2005, 2012 eBay Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * *******************************************************************************/ package org.eclipse.vjet.eclipse.codeassist.keywords; import static org.eclipse.dltk.mod.core.CompletionProposal.METHOD_REF; import java.util.List; import org.eclipse.vjet.dsf.jstojava.translator.robust.completion.JstComletionOnMessageSend; import org.eclipse.vjet.dsf.jstojava.translator.robust.completion.JstCompletion; import org.eclipse.dltk.mod.compiler.env.ISourceModule; import org.eclipse.dltk.mod.core.CompletionProposal; import org.eclipse.dltk.mod.core.DLTKCore; import org.eclipse.dltk.mod.core.IMethod; import org.eclipse.dltk.mod.core.IType; import org.eclipse.dltk.mod.core.ModelException; /** * Creates object methods completions * * */ public class MessageSendCompletionHandler extends FieldOrMethodCompletionHandler { private String typeName; private Object jstNode; /* (non-Javadoc) * @see org.eclipse.vjet.eclipse.codeassist.keywords.FieldOrMethodCompletionHandler#complete(org.eclipse.dltk.mod.compiler.env.ISourceModule, int, org.eclipse.vjet.dsf.jstojava.translator.robust.completion.JstCompletion, java.util.List) */ public void complete(ISourceModule module, int position, JstCompletion completion, List<CompletionProposal> list) { this.jstNode = completion.getRealParent(); this.typeName = completion.getOwnerType().getName(); MethodRequestor requestor; requestor = new MethodRequestor(completion.getToken(), true) { @Override protected boolean acceptStatic(int flags) { return true; } }; requestMethods(requestor, module); List<IMethod> methods = requestor.getMethods(); for (IMethod method : methods) { CompletionProposal data; data = CompletionProposal.create(METHOD_REF, position); data.setCompletion("".toCharArray()); data.setReplaceRange(position, position); data.setName(completion.getToken().toCharArray()); try { String[] paramNames = method.getParameters(); char[][] params = createParameters(paramNames); data.setParameterNames(params); } catch (ModelException e) { DLTKCore.error(e.toString(), e); } data.setModelElement(method); list.add(data); } } public Class getCompletionClass() { return JstComletionOnMessageSend.class; } @Override protected void requestMethods(MethodRequestor requestor, ISourceModule module) { IType type = FieldExpressionHandler.getType(module, jstNode, typeName); getMethods(requestor, type); } }