summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/gui/Gui.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/gui/Gui.java')
-rw-r--r--src/cuchaz/enigma/gui/Gui.java60
1 files changed, 43 insertions, 17 deletions
diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java
index 072fb3a..1d2d3ab 100644
--- a/src/cuchaz/enigma/gui/Gui.java
+++ b/src/cuchaz/enigma/gui/Gui.java
@@ -67,11 +67,13 @@ import com.google.common.collect.Lists;
67 67
68import cuchaz.enigma.Constants; 68import cuchaz.enigma.Constants;
69import cuchaz.enigma.analysis.ClassInheritanceTreeNode; 69import cuchaz.enigma.analysis.ClassInheritanceTreeNode;
70import cuchaz.enigma.analysis.FieldCallsTreeNode;
70import cuchaz.enigma.analysis.MethodCallsTreeNode; 71import cuchaz.enigma.analysis.MethodCallsTreeNode;
71import cuchaz.enigma.analysis.MethodInheritanceTreeNode; 72import cuchaz.enigma.analysis.MethodInheritanceTreeNode;
72import cuchaz.enigma.analysis.Token; 73import cuchaz.enigma.analysis.Token;
73import cuchaz.enigma.mapping.ArgumentEntry; 74import cuchaz.enigma.mapping.ArgumentEntry;
74import cuchaz.enigma.mapping.ClassEntry; 75import cuchaz.enigma.mapping.ClassEntry;
76import cuchaz.enigma.mapping.ConstructorEntry;
75import cuchaz.enigma.mapping.Entry; 77import cuchaz.enigma.mapping.Entry;
76import cuchaz.enigma.mapping.EntryPair; 78import cuchaz.enigma.mapping.EntryPair;
77import cuchaz.enigma.mapping.FieldEntry; 79import cuchaz.enigma.mapping.FieldEntry;
@@ -419,7 +421,7 @@ public class Gui
419 Object node = path.getLastPathComponent(); 421 Object node = path.getLastPathComponent();
420 if( node instanceof MethodCallsTreeNode ) 422 if( node instanceof MethodCallsTreeNode )
421 { 423 {
422 m_controller.openEntry( ((MethodCallsTreeNode)node).getMethodEntry() ); 424 m_controller.openEntry( ((MethodCallsTreeNode)node).getEntry() );
423 } 425 }
424 } 426 }
425 } 427 }
@@ -438,7 +440,7 @@ public class Gui
438 m_tabs = new JTabbedPane(); 440 m_tabs = new JTabbedPane();
439 m_tabs.setPreferredSize( new Dimension( 250, 0 ) ); 441 m_tabs.setPreferredSize( new Dimension( 250, 0 ) );
440 m_tabs.addTab( "Inheritance", inheritancePanel ); 442 m_tabs.addTab( "Inheritance", inheritancePanel );
441 m_tabs.addTab( "Method Calls", callPanel ); 443 m_tabs.addTab( "Call Graph", callPanel );
442 JSplitPane splitRight = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, true, centerPanel, m_tabs ); 444 JSplitPane splitRight = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, true, centerPanel, m_tabs );
443 splitRight.setResizeWeight( 1 ); // let the left side take all the slack 445 splitRight.setResizeWeight( 1 ); // let the left side take all the slack
444 splitRight.resetToPreferredSizes(); 446 splitRight.resetToPreferredSizes();
@@ -770,6 +772,10 @@ public class Gui
770 { 772 {
771 showMethodEntryPair( (EntryPair<? extends MethodEntry>)pair ); 773 showMethodEntryPair( (EntryPair<? extends MethodEntry>)pair );
772 } 774 }
775 else if( pair.deobf instanceof ConstructorEntry )
776 {
777 showConstructorEntryPair( (EntryPair<? extends ConstructorEntry>)pair );
778 }
773 else if( pair.deobf instanceof ArgumentEntry ) 779 else if( pair.deobf instanceof ArgumentEntry )
774 { 780 {
775 showArgumentEntryPair( (EntryPair<? extends ArgumentEntry>)pair ); 781 showArgumentEntryPair( (EntryPair<? extends ArgumentEntry>)pair );
@@ -800,6 +806,12 @@ public class Gui
800 addNameValue( m_infoPanel, "Signature", pair.deobf.getSignature() ); 806 addNameValue( m_infoPanel, "Signature", pair.deobf.getSignature() );
801 } 807 }
802 808
809 private void showConstructorEntryPair( EntryPair<? extends ConstructorEntry> pair )
810 {
811 addNameValue( m_infoPanel, "Constructor", pair.deobf.getClassEntry().getName() );
812 addNameValue( m_infoPanel, "Signature", pair.deobf.getSignature() );
813 }
814
803 private void showArgumentEntryPair( EntryPair<? extends ArgumentEntry> pair ) 815 private void showArgumentEntryPair( EntryPair<? extends ArgumentEntry> pair )
804 { 816 {
805 addNameValue( m_infoPanel, "Argument", pair.deobf.getName() ); 817 addNameValue( m_infoPanel, "Argument", pair.deobf.getName() );
@@ -815,7 +827,7 @@ public class Gui
815 container.add( panel ); 827 container.add( panel );
816 828
817 JLabel label = new JLabel( name + ":", JLabel.RIGHT ); 829 JLabel label = new JLabel( name + ":", JLabel.RIGHT );
818 label.setPreferredSize( new Dimension( 80, label.getPreferredSize().height ) ); 830 label.setPreferredSize( new Dimension( 100, label.getPreferredSize().height ) );
819 panel.add( label ); 831 panel.add( label );
820 832
821 panel.add( unboldLabel( new JLabel( value, JLabel.LEFT ) ) ); 833 panel.add( unboldLabel( new JLabel( value, JLabel.LEFT ) ) );
@@ -824,23 +836,27 @@ public class Gui
824 private void onCaretMove( int pos ) 836 private void onCaretMove( int pos )
825 { 837 {
826 Token token = m_controller.getToken( pos ); 838 Token token = m_controller.getToken( pos );
827 m_renameMenu.setEnabled( token != null ); 839 boolean isToken = token != null;
828 if( token == null )
829 {
830 clearEntryPair();
831 return;
832 }
833 840
834 m_selectedEntryPair = m_controller.getEntryPair( token ); 841 m_selectedEntryPair = m_controller.getEntryPair( token );
835 boolean isClassEntry = m_selectedEntryPair.obf instanceof ClassEntry; 842 boolean isClassEntry = isToken && m_selectedEntryPair.obf instanceof ClassEntry;
836 boolean isFieldEntry = m_selectedEntryPair.obf instanceof FieldEntry; 843 boolean isFieldEntry = isToken && m_selectedEntryPair.obf instanceof FieldEntry;
837 boolean isMethodEntry = m_selectedEntryPair.obf instanceof MethodEntry; 844 boolean isMethodEntry = isToken && m_selectedEntryPair.obf instanceof MethodEntry;
845 boolean isConstructorEntry = isToken && m_selectedEntryPair.obf instanceof ConstructorEntry;
838 846
839 showEntryPair( m_selectedEntryPair ); 847 if( isToken )
848 {
849 showEntryPair( m_selectedEntryPair );
850 }
851 else
852 {
853 clearEntryPair();
854 }
840 855
841 m_showInheritanceMenu.setEnabled( isClassEntry || isMethodEntry ); 856 m_renameMenu.setEnabled( isToken );
842 m_showCallsMenu.setEnabled( isMethodEntry ); 857 m_showInheritanceMenu.setEnabled( isClassEntry || isMethodEntry || isConstructorEntry );
843 m_openEntryMenu.setEnabled( isClassEntry || isFieldEntry || isMethodEntry ); 858 m_showCallsMenu.setEnabled( isFieldEntry || isMethodEntry || isConstructorEntry );
859 m_openEntryMenu.setEnabled( isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry );
844 m_openPreviousMenu.setEnabled( m_controller.hasPreviousEntry() ); 860 m_openPreviousMenu.setEnabled( m_controller.hasPreviousEntry() );
845 } 861 }
846 862
@@ -945,11 +961,21 @@ public class Gui
945 return; 961 return;
946 } 962 }
947 963
948 if( m_selectedEntryPair.obf instanceof MethodEntry ) 964 if( m_selectedEntryPair.obf instanceof FieldEntry )
965 {
966 FieldCallsTreeNode node = m_controller.getFieldCalls( (FieldEntry)m_selectedEntryPair.obf );
967 m_callsTree.setModel( new DefaultTreeModel( node ) );
968 }
969 else if( m_selectedEntryPair.obf instanceof MethodEntry )
949 { 970 {
950 MethodCallsTreeNode node = m_controller.getMethodCalls( (MethodEntry)m_selectedEntryPair.obf ); 971 MethodCallsTreeNode node = m_controller.getMethodCalls( (MethodEntry)m_selectedEntryPair.obf );
951 m_callsTree.setModel( new DefaultTreeModel( node ) ); 972 m_callsTree.setModel( new DefaultTreeModel( node ) );
952 } 973 }
974 else if( m_selectedEntryPair.obf instanceof ConstructorEntry )
975 {
976 MethodCallsTreeNode node = m_controller.getMethodCalls( (ConstructorEntry)m_selectedEntryPair.obf );
977 m_callsTree.setModel( new DefaultTreeModel( node ) );
978 }
953 979
954 m_tabs.setSelectedIndex( 1 ); 980 m_tabs.setSelectedIndex( 1 );
955 redraw(); 981 redraw();