/*******************************************************************************
* 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 java.util.List;
import org.eclipse.vjet.dsf.jst.expr.FieldAccessExpr;
import org.eclipse.vjet.dsf.jst.expr.MtdInvocationExpr;
import org.eclipse.vjet.dsf.jst.expr.ObjCreationExpr;
import org.eclipse.vjet.dsf.jst.term.JstIdentifier;
import org.eclipse.vjet.dsf.jstojava.translator.robust.completion.JstCompletion;
import org.eclipse.vjet.dsf.jstojava.translator.robust.completion.JstCompletionOnQualifiedNameReference;
import org.eclipse.dltk.mod.compiler.env.ISourceModule;
import org.eclipse.dltk.mod.core.CompletionProposal;
public class QualifiedNameReferenceHandler implements ICompletionHandler {
private MemberAccessHandler handler = new MemberAccessHandler();
public void complete(ISourceModule module, int position,
JstCompletion completion, List<CompletionProposal> list) {
String token = completion.getToken();
Object jstNode = completion.getRealParent();
if (jstNode instanceof FieldAccessExpr) {
// token = ((FieldAccessExpr) jstNode).getName().getName();
String fullCompletionToken = completion.getToken();
token = fullCompletionToken.substring(fullCompletionToken
.lastIndexOf(CompletionConstants.DOT) + 1);
jstNode = ((FieldAccessExpr) jstNode).getExpr();
} else if (jstNode instanceof MtdInvocationExpr) {
jstNode = ((MtdInvocationExpr) jstNode).getQualifyExpr();
} else if (jstNode instanceof JstIdentifier){
String fullCompletionToken = completion.getToken();
token = fullCompletionToken.substring(fullCompletionToken
.lastIndexOf(CompletionConstants.DOT) + 1);
}
if (jstNode instanceof ObjCreationExpr){
ObjCreationExpr expr = (ObjCreationExpr) jstNode;
jstNode = expr.getInvocationExpr();
}
CompletionContext.setVariableContext(true);
completion.setToken(token);
handler.init(module, position, completion, list);
handler.complete(jstNode);
}
public Class getCompletionClass() {
return JstCompletionOnQualifiedNameReference.class;
}
}