2424import cn .enaium .joe .gui .panel .CodeAreaPanel ;
2525import cn .enaium .joe .util .*;
2626import cn .enaium .joe .util .classes .ASMClassLoader ;
27- import cn .enaium .joe .util .reflection .ReflectionHelper ;
2827import org .fife .ui .rsyntaxtextarea .SyntaxConstants ;
29- import org .objectweb .asm .ClassReader ;
3028import org .objectweb .asm .util .ASMifier ;
3129import org .objectweb .asm .util .TraceClassVisitor ;
3230
@@ -44,42 +42,44 @@ public ASMifierTablePanel(ClassNode classNode) {
4442 setLayout (new BorderLayout ());
4543 CodeAreaPanel codeAreaPanel = this .codeAreaPanel = new CodeAreaPanel () {{
4644 KeyStrokeUtil .register (getTextArea (), JavaOctetEditor .getInstance ().config .getByClass (ApplicationConfig .class ).keymap .getValue ().save .getValue (), () -> {
47- try {
48- String className = "ASMifier" + Integer .toHexString (classNode .getInternalName ().hashCode ()) + Integer .toHexString (getTextArea ().getText ().hashCode ());
49- String stringBuilder =
50- "import org.objectweb.asm.AnnotationVisitor;" +
51- "import org.objectweb.asm.Attribute;" +
52- "import org.objectweb.asm.ClassReader;" +
53- "import org.objectweb.asm.ClassWriter;" +
54- "import org.objectweb.asm.ConstantDynamic;" +
55- "import org.objectweb.asm.FieldVisitor;" +
56- "import org.objectweb.asm.Handle;" +
57- "import org.objectweb.asm.Label;" +
58- "import org.objectweb.asm.MethodVisitor;" +
59- "import org.objectweb.asm.Opcodes;" +
60- "import org.objectweb.asm.RecordComponentVisitor;" +
61- "import org.objectweb.asm.ModuleVisitor;" +
62- "import org.objectweb.asm.Type;" +
63- "import org.objectweb.asm.TypePath;" +
64- "public class " + className + " implements Opcodes" +
65- "{" +
66- "public static byte[] dump() throws Exception {" +
67- getTextArea ().getText () +
68- "return classWriter.toByteArray();" +
69- "}" +
70- "}" ;
45+ if (ClassTabPanel .classTabIndex == 2 ) {
46+ try {
47+ String className = "ASMifier" + Integer .toHexString (classNode .getInternalName ().hashCode ()) + Integer .toHexString (getTextArea ().getText ().hashCode ());
48+ String stringBuilder =
49+ "import org.objectweb.asm.AnnotationVisitor;" +
50+ "import org.objectweb.asm.Attribute;" +
51+ "import org.objectweb.asm.ClassReader;" +
52+ "import org.objectweb.asm.ClassWriter;" +
53+ "import org.objectweb.asm.ConstantDynamic;" +
54+ "import org.objectweb.asm.FieldVisitor;" +
55+ "import org.objectweb.asm.Handle;" +
56+ "import org.objectweb.asm.Label;" +
57+ "import org.objectweb.asm.MethodVisitor;" +
58+ "import org.objectweb.asm.Opcodes;" +
59+ "import org.objectweb.asm.RecordComponentVisitor;" +
60+ "import org.objectweb.asm.ModuleVisitor;" +
61+ "import org.objectweb.asm.Type;" +
62+ "import org.objectweb.asm.TypePath;" +
63+ "public class " + className + " implements Opcodes" +
64+ "{" +
65+ "public static byte[] dump() throws Exception {" +
66+ getTextArea ().getText () +
67+ "return classWriter.toByteArray();" +
68+ "}" +
69+ "}" ;
7170
72- StringWriter errorTracer = new StringWriter ();
73- byte [] dumpClazz = Compiler .compileSingle (className , stringBuilder , errorTracer );
74- if (dumpClazz == null ) {
75- MessageUtil .error (errorTracer .toString ());
71+ StringWriter errorTracer = new StringWriter ();
72+ byte [] dumpClazz = Compiler .compileSingle (className , stringBuilder , errorTracer );
73+ if (dumpClazz == null ) {
74+ MessageUtil .error (errorTracer .toString ());
75+ }
76+ byte [] dumps = (byte [])new ASMClassLoader ().defineClass (className , dumpClazz ).getMethod ("dump" ).invoke (null );
77+ classNode .accept (ClassNode .of (dumps ));
78+ MessageUtil .info (LangUtil .i18n ("success" ));
79+ EditSaveSuccessEvent .trigger (classNode .getInternalName ());
80+ } catch (Throwable e ) {
81+ MessageUtil .error (e );
7682 }
77- byte [] dumps = (byte [])new ASMClassLoader ().defineClass (className , dumpClazz ).getMethod ("dump" ).invoke (null );
78- classNode .accept (ClassNode .of (dumps ));
79- MessageUtil .info (LangUtil .i18n ("success" ));
80- EditSaveSuccessEvent .trigger (classNode .getInternalName ());
81- } catch (Throwable e ) {
82- MessageUtil .error (e );
8383 }
8484 });
8585 }};
0 commit comments