/******************************************************************************* * 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.IJstType; import org.eclipse.vjet.dsf.jstojava.translator.robust.completion.JstCompletion; import org.eclipse.vjet.dsf.jstojava.translator.robust.completion.JstExpectsOnTypeCompletion; import org.eclipse.vjet.eclipse.core.IJSType; import org.eclipse.vjet.vjo.tool.typespace.TypeSpaceMgr; 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.IType; import org.eclipse.dltk.mod.core.ModelException; /** * Provides package/type completion proposals inside "expects" block * * */ public class ExpectsCompletionHandler extends BaseCompletionHandler { public void complete(ISourceModule module, int position, JstCompletion completion, List<CompletionProposal> list) { super.complete(module, position, completion, list); } public Class getCompletionClass() { return JstExpectsOnTypeCompletion.class; } @Override protected boolean checkType(IType type, IType currentType) { try { //TODO check correct if type is module String name = type.getFullyQualifiedName().replace('/', '.'); String groupName = type.getScriptProject().getElementName(); IJstType jstType = TypeSpaceMgr.findType(groupName, name); if (!(type instanceof IJSType) || !((IJSType) type).isInterface()) return false; if(jstType == null || jstType.isMixin()) return false; } catch (ModelException e) { DLTKCore.error(e.toString(), e); } return super.checkType(type, currentType); } }