1717package cn .enaium .joe .gui .panel .file .tabbed .tab .classes ;
1818
1919import cn .enaium .joe .JavaOctetEditor ;
20- import cn .enaium .joe .Instance ;
2120import cn .enaium .joe .event .events .EditSaveSuccessEvent ;
2221import cn .enaium .joe .util .LangUtil ;
2322import org .objectweb .asm .tree .ClassNode ;
2423
2524import javax .swing .*;
2625import java .awt .*;
27- import java .util .Arrays ;
2826import java .util .WeakHashMap ;
2927
3028/**
3129 * @author Enaium
3230 */
3331public class ClassTabPanel extends JPanel {
32+ public static int classTabIndex = 0 ;
3433
3534 protected TraceBytecodeTabPanel traceBytecodeTabPanel ;
3635 protected DecompileTabPanel decompileTabPanel ;
@@ -51,31 +50,31 @@ public ClassTabPanel(ClassNode classNode) {
5150 jTabbedPane .addTab (LangUtil .i18n ("class.tab.decompileEdit" ), decompileTabPanel = new DecompileTabPanel (classNode ));
5251 jTabbedPane .addTab (LangUtil .i18n ("class.tab.visitorEdit" ), asmTablePanel = new ASMifierTablePanel (classNode ));
5352 jTabbedPane .addTab (LangUtil .i18n ("class.tab.infoEdit" ), classInfoTabPanel = new ClassInfoTabPanel (classNode ));
54- jTabbedPane .setSelectedIndex (Instance . INSTANCE . classTabIndex );
53+ jTabbedPane .setSelectedIndex (classTabIndex );
5554 internalName2panel .put (classNode .name , this );
5655 jTabbedPane .addChangeListener (e -> {
57- Instance . INSTANCE . classTabIndex = jTabbedPane .getSelectedIndex ();
56+ classTabIndex = jTabbedPane .getSelectedIndex ();
5857 for (ClassTabPanel panel : internalName2panel .values ()){
5958 if (panel != null ){
60- panel .jTabbedPane .setSelectedIndex (Instance . INSTANCE . classTabIndex );
59+ panel .jTabbedPane .setSelectedIndex (classTabIndex );
6160 }
6261 }
6362 });
6463 add (this .jTabbedPane = jTabbedPane );
6564 }
6665
67- public void update (){
68- traceBytecodeTabPanel .update ();
69- decompileTabPanel .update ();
70- asmTablePanel .update ();
66+ public void update (boolean forced ){
67+ if ( forced || classTabIndex != 0 ) traceBytecodeTabPanel .update ();
68+ if ( forced || classTabIndex != 1 ) decompileTabPanel .update ();
69+ if ( forced || cclassTabIndex != 2 ) asmTablePanel .update ();
7170 }
7271
7372 static {
7473 JavaOctetEditor .getInstance ().event .register (EditSaveSuccessEvent .class , event -> {
7574 if (internalName2panel .containsKey (event .classInternalName ())){
7675 ClassTabPanel panel = internalName2panel .get (event .classInternalName ());
7776 if (panel != null ){
78- panel .update ();
77+ panel .update (false );
7978 }
8079 }
8180 });
0 commit comments