diff options
| author | 2014-08-13 00:22:12 -0400 | |
|---|---|---|
| committer | 2014-08-13 00:22:12 -0400 | |
| commit | cc74d0e62cfdcf14c5918234f69d587d264807ed (patch) | |
| tree | 7a11bd6af9b7cd2f28c3dbd43a281b4036464f77 /src/cuchaz/enigma/gui/Gui.java | |
| parent | got simple method call graph working! (diff) | |
| download | enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.tar.gz enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.tar.xz enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.zip | |
added support for field access searches
added proper detection/handling for constructors
Diffstat (limited to 'src/cuchaz/enigma/gui/Gui.java')
| -rw-r--r-- | src/cuchaz/enigma/gui/Gui.java | 60 |
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 | ||
| 68 | import cuchaz.enigma.Constants; | 68 | import cuchaz.enigma.Constants; |
| 69 | import cuchaz.enigma.analysis.ClassInheritanceTreeNode; | 69 | import cuchaz.enigma.analysis.ClassInheritanceTreeNode; |
| 70 | import cuchaz.enigma.analysis.FieldCallsTreeNode; | ||
| 70 | import cuchaz.enigma.analysis.MethodCallsTreeNode; | 71 | import cuchaz.enigma.analysis.MethodCallsTreeNode; |
| 71 | import cuchaz.enigma.analysis.MethodInheritanceTreeNode; | 72 | import cuchaz.enigma.analysis.MethodInheritanceTreeNode; |
| 72 | import cuchaz.enigma.analysis.Token; | 73 | import cuchaz.enigma.analysis.Token; |
| 73 | import cuchaz.enigma.mapping.ArgumentEntry; | 74 | import cuchaz.enigma.mapping.ArgumentEntry; |
| 74 | import cuchaz.enigma.mapping.ClassEntry; | 75 | import cuchaz.enigma.mapping.ClassEntry; |
| 76 | import cuchaz.enigma.mapping.ConstructorEntry; | ||
| 75 | import cuchaz.enigma.mapping.Entry; | 77 | import cuchaz.enigma.mapping.Entry; |
| 76 | import cuchaz.enigma.mapping.EntryPair; | 78 | import cuchaz.enigma.mapping.EntryPair; |
| 77 | import cuchaz.enigma.mapping.FieldEntry; | 79 | import 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(); |