/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.lang.psi.impl.resolvers;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiClassOwner;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.PsiManagerImpl;
import gw.lang.reflect.IType;
import gw.plugin.ij.lang.psi.api.ITypeResolver;
import gw.plugin.ij.util.FileUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class FileBasedTypeResolver implements ITypeResolver {
@Nullable
@Override
public PsiElement resolveType(@NotNull IType type, @NotNull PsiElement ctx) {
final List<VirtualFile> files = FileUtil.getTypeResourceFiles(type);
if (!files.isEmpty()) {
final PsiFile psiFile = PsiManagerImpl.getInstance(ctx.getProject()).findFile(files.get(0));
if (psiFile instanceof PsiClassOwner) {
final PsiClass[] classes = ((PsiClassOwner) psiFile).getClasses();
if (classes.length > 0) {
return classes[0];
}
}
return psiFile;
}
return null;
}
@Nullable
@Override
public PsiClass resolveType(String strFullName, PsiElement ctx) {
return null;
}
}