Skip to content

Commit e93e469

Browse files
committed
Support for Idea 10.0.2 + allow bytecode outline for classes in jar files with sources (issue #7)
1 parent b6565ae commit e93e469

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

META-INF/plugin.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
<description>Displays bytecode for Java classes and ASMified code which will help you in your class generation.</description>
44
<version>0.3</version>
55
<vendor>Cédric Champeau</vendor>
6-
<idea-version since-build="8000"/>
6+
<idea-version since-build="103.14"/>
77

88
<change-notes><![CDATA[
9+
<b>Version 0.3.1</b>
10+
<ul>
11+
<li>Updated for IntelliJ IDEA 10.0.2</li>
12+
</ul>
913
<b>Version 0.3</b>
1014
<ul>
1115
<li>Add diff view popup which shows the differences with the previous version of bytecode</li>

src/org/objectweb/asm/idea/ShowBytecodeOutlineAction.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@
1818

1919
package org.objectweb.asm.idea;
2020

21-
import com.intellij.openapi.actionSystem.AnAction;
22-
import com.intellij.openapi.actionSystem.AnActionEvent;
23-
import com.intellij.openapi.actionSystem.PlatformDataKeys;
24-
import com.intellij.openapi.actionSystem.Presentation;
21+
import com.intellij.openapi.actionSystem.*;
2522
import com.intellij.openapi.application.Application;
2623
import com.intellij.openapi.application.ApplicationManager;
2724
import com.intellij.openapi.compiler.CompileContext;
@@ -30,6 +27,7 @@
3027
import com.intellij.openapi.compiler.CompilerManager;
3128
import com.intellij.openapi.editor.Editor;
3229
import com.intellij.openapi.fileEditor.FileDocumentManager;
30+
import com.intellij.openapi.fileEditor.FileEditor;
3331
import com.intellij.openapi.module.Module;
3432
import com.intellij.openapi.module.ModuleUtil;
3533
import com.intellij.openapi.project.Project;
@@ -39,6 +37,7 @@
3937
import com.intellij.openapi.wm.ToolWindowManager;
4038
import com.intellij.psi.*;
4139
import com.intellij.psi.codeStyle.CodeStyleManager;
40+
import com.intellij.psi.util.PsiUtil;
4241
import org.objectweb.asm.ClassReader;
4342
import org.objectweb.asm.ClassVisitor;
4443
import org.objectweb.asm.idea.config.ASMPluginComponent;
@@ -90,9 +89,14 @@ public void actionPerformed(AnActionEvent e) {
9089
final CompilerModuleExtension cme = CompilerModuleExtension.getInstance(module);
9190
final CompilerManager compilerManager = CompilerManager.getInstance(project);
9291
final VirtualFile[] files = {virtualFile};
93-
final CompileScope compileScope = compilerManager.createFilesCompileScope(files);
9492
if ("class".equals(virtualFile.getExtension())) {
9593
updateToolWindowContents(project, virtualFile);
94+
} else if (!virtualFile.isInLocalFileSystem() && !virtualFile.isWritable()) {
95+
// probably a source file in a library
96+
final PsiClass[] psiClasses = ((PsiClassOwner) psiFile).getClasses();
97+
if (psiClasses.length>0) {
98+
updateToolWindowContents(project, psiClasses[0].getOriginalElement().getContainingFile().getVirtualFile());
99+
}
96100
} else {
97101
final Application application = ApplicationManager.getApplication();
98102
application.runWriteAction(new Runnable() {
@@ -102,14 +106,11 @@ public void run() {
102106
});
103107
application.executeOnPooledThread(new Runnable() {
104108
public void run() {
109+
final CompileScope compileScope = compilerManager.createFilesCompileScope(files);
105110
final VirtualFile[] result = {null};
106111
VirtualFile[] outputDirectories = cme == null ? null : cme.getOutputRoots(true);
107112
if (outputDirectories != null && compilerManager.isUpToDate(compileScope)) {
108113
result[0] = findClassFile(outputDirectories, psiFile);
109-
if (result[0]==null && cme!=null) {
110-
// check if file is in test output directory
111-
112-
}
113114
} else {
114115
final Semaphore semaphore = new Semaphore(1);
115116
try {
@@ -129,7 +130,7 @@ public void finished(boolean aborted, int errors, int warnings, final CompileCon
129130
}
130131
semaphore.release();
131132
}
132-
}, true);
133+
});
133134
}
134135
});
135136
try {

0 commit comments

Comments
 (0)