Skip to content

Commit 133fa40

Browse files
committed
improved file type detection / disable action for files outside of the module
1 parent f545ea2 commit 133fa40

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

src/org/ollide/java2smali/GenerateAction.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,18 @@
33
import com.intellij.openapi.actionSystem.AnAction;
44
import com.intellij.openapi.actionSystem.AnActionEvent;
55
import com.intellij.openapi.actionSystem.LangDataKeys;
6-
import com.intellij.openapi.actionSystem.PlatformDataKeys;
76
import com.intellij.openapi.compiler.CompileContext;
87
import com.intellij.openapi.compiler.CompileStatusNotification;
98
import com.intellij.openapi.compiler.CompilerManager;
10-
import com.intellij.openapi.editor.Editor;
119
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
1210
import com.intellij.openapi.module.Module;
1311
import com.intellij.openapi.project.Project;
1412
import com.intellij.openapi.roots.ProjectRootManager;
1513
import com.intellij.openapi.vfs.LocalFileSystem;
1614
import com.intellij.openapi.vfs.VirtualFile;
17-
import com.intellij.psi.PsiClass;
18-
import com.intellij.psi.PsiElement;
1915
import com.intellij.psi.PsiFile;
2016
import com.intellij.psi.PsiJavaFile;
21-
import com.intellij.psi.util.PsiTreeUtil;
17+
import com.intellij.psi.PsiManager;
2218

2319
import java.io.File;
2420
import java.io.IOException;
@@ -31,33 +27,36 @@ public class GenerateAction extends AnAction {
3127
private static final String SMALI_EXTENSION = ".smali";
3228

3329
public void actionPerformed(AnActionEvent e) {
34-
PsiJavaFile javaFile = (PsiJavaFile) getPsiClassFromContext(e).getContainingFile();
30+
VirtualFile vFile = getVirtualFileFromContext(e);
3531

3632
Project p = e.getProject();
37-
Module module = ProjectRootManager.getInstance(p).getFileIndex().getModuleForFile(javaFile.getVirtualFile());
33+
Module module = ProjectRootManager.getInstance(p).getFileIndex().getModuleForFile(vFile);
34+
PsiJavaFile javaFile = (PsiJavaFile) PsiManager.getInstance(p).findFile(vFile);
3835

39-
// Compile the javaFile's module
36+
// Compile the vFile's module
4037
CompilerCallback compilerCallback = new CompilerCallback(module, javaFile);
4138
CompilerManager.getInstance(p).compile(module, compilerCallback);
4239
}
4340

4441
@Override
4542
public void update(AnActionEvent e) {
46-
PsiClass psiClass = getPsiClassFromContext(e);
47-
e.getPresentation().setEnabled(psiClass != null && psiClass.getContainingFile() instanceof PsiJavaFile);
43+
boolean enabled = false;
44+
45+
VirtualFile vFile = getVirtualFileFromContext(e);
46+
if (vFile != null) {
47+
String extension = vFile.getFileType().getDefaultExtension();
48+
Module m = ProjectRootManager.getInstance(e.getProject()).getFileIndex().getModuleForFile(vFile);
49+
enabled = "java".equals(extension) && m != null;
50+
}
51+
e.getPresentation().setEnabled(enabled);
4852
}
4953

50-
private PsiClass getPsiClassFromContext(AnActionEvent e) {
54+
private VirtualFile getVirtualFileFromContext(AnActionEvent e) {
5155
PsiFile psiFile = e.getData(LangDataKeys.PSI_FILE);
52-
Editor editor = e.getData(PlatformDataKeys.EDITOR);
53-
54-
if (psiFile == null || editor == null) {
56+
if (psiFile == null) {
5557
return null;
5658
}
57-
58-
int offset = editor.getCaretModel().getOffset();
59-
PsiElement elementAt = psiFile.findElementAt(offset);
60-
return PsiTreeUtil.getParentOfType(elementAt, PsiClass.class);
59+
return psiFile.getVirtualFile();
6160
}
6261

6362
private static VirtualFile getSourceRootFile(PsiFile file) {

0 commit comments

Comments
 (0)