/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.completion.proposals;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import gw.lang.reflect.IFeatureInfo;
import gw.lang.reflect.IMethodInfo;
import gw.lang.reflect.IPropertyInfo;
import gw.plugin.ij.completion.model.BeanInfoNode;
import gw.plugin.ij.completion.model.BeanTree;
import gw.plugin.ij.lang.psi.impl.resolvers.PsiFeatureResolver;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class PathCompletionProposal extends GosuCompletionProposal {
private final Project _project;
private final BeanTree _beanTree;
public PathCompletionProposal(Project project, BeanTree beanTree) {
_project = project;
_beanTree = beanTree;
}
public BeanTree getBeanTree() {
return _beanTree;
}
@Override
public String toString() {
return _beanTree.toString();
}
@Nullable
@Override
public PsiElement resolve(@NotNull PsiElement context) {
BeanInfoNode beanNode = _beanTree.getBeanNode();
IFeatureInfo featureInfo = beanNode.getFeatureInfo();
if (featureInfo instanceof IMethodInfo) {
return PsiFeatureResolver.resolveMethodOrConstructor((IMethodInfo) featureInfo, context);
} else if (featureInfo instanceof IPropertyInfo) {
return PsiFeatureResolver.resolveProperty((IPropertyInfo) featureInfo, context);
}
return null;
}
@Nullable
@Override
public IFeatureInfo getFeatureInfo() {
return _beanTree.getBeanNode().getFeatureInfo();
}
@Override
public String getGenericName() {
return _beanTree.getBeanNode().getFeatureInfo().getDisplayName();
}
}