summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/gui/Gui.java
diff options
context:
space:
mode:
authorGravatar jeff2014-08-21 01:10:37 -0400
committerGravatar jeff2014-08-21 01:10:37 -0400
commit237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375 (patch)
treeebad059c7fa0bc7723858cb25eed0bb6e95fe42a /src/cuchaz/enigma/gui/Gui.java
parentfixed recognition of inner class tokens (diff)
downloadenigma-fork-237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375.tar.gz
enigma-fork-237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375.tar.xz
enigma-fork-237b2ed2a6b6f537cdbdf9fc9c6d0c7743f34375.zip
fixed call graph searching
added system to navigate multiple tokens for the same entry in a behavior
Diffstat (limited to 'src/cuchaz/enigma/gui/Gui.java')
-rw-r--r--src/cuchaz/enigma/gui/Gui.java53
1 files changed, 41 insertions, 12 deletions
diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java
index 341c149..a5471a7 100644
--- a/src/cuchaz/enigma/gui/Gui.java
+++ b/src/cuchaz/enigma/gui/Gui.java
@@ -28,6 +28,7 @@ import java.awt.event.WindowAdapter;
28import java.awt.event.WindowEvent; 28import java.awt.event.WindowEvent;
29import java.io.File; 29import java.io.File;
30import java.io.IOException; 30import java.io.IOException;
31import java.util.Collection;
31import java.util.Collections; 32import java.util.Collections;
32import java.util.Comparator; 33import java.util.Comparator;
33import java.util.List; 34import java.util.List;
@@ -145,6 +146,7 @@ public class Gui
145 private BoxHighlightPainter m_deobfuscatedHighlightPainter; 146 private BoxHighlightPainter m_deobfuscatedHighlightPainter;
146 private JTree m_inheritanceTree; 147 private JTree m_inheritanceTree;
147 private JTree m_callsTree; 148 private JTree m_callsTree;
149 private JList<Token> m_tokens;
148 private JTabbedPane m_tabs; 150 private JTabbedPane m_tabs;
149 151
150 // dynamic menu items 152 // dynamic menu items
@@ -457,9 +459,29 @@ public class Gui
457 } 459 }
458 } 460 }
459 } ); 461 } );
460 JPanel callPanel = new JPanel(); 462 m_tokens = new JList<Token>();
461 callPanel.setLayout( new BorderLayout() ); 463 m_tokens.setCellRenderer( new TokenListCellRenderer( m_controller ) );
462 callPanel.add( new JScrollPane( m_callsTree ) ); 464 m_tokens.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
465 m_tokens.setLayoutOrientation( JList.VERTICAL );
466 m_tokens.addMouseListener( new MouseAdapter()
467 {
468 @Override
469 public void mouseClicked( MouseEvent event )
470 {
471 if( event.getClickCount() == 2 )
472 {
473 Token selected = m_tokens.getSelectedValue();
474 if( selected != null )
475 {
476 showToken( selected );
477 }
478 }
479 }
480 } );
481 m_tokens.setPreferredSize( new Dimension( 0, 200 ) );
482 JSplitPane callPanel = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, new JScrollPane( m_callsTree ), new JScrollPane( m_tokens ) );
483 callPanel.setResizeWeight( 1 ); // let the top side take all the slack
484 callPanel.resetToPreferredSizes();
463 485
464 // layout controls 486 // layout controls
465 JSplitPane splitLeft = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, obfPanel, deobfPanel ); 487 JSplitPane splitLeft = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, obfPanel, deobfPanel );
@@ -743,6 +765,21 @@ public class Gui
743 m_editor.grabFocus(); 765 m_editor.grabFocus();
744 } 766 }
745 767
768 public void showTokens( Collection<Token> tokens )
769 {
770 Vector<Token> sortedTokens = new Vector<Token>( tokens );
771 Collections.sort( sortedTokens );
772 if( sortedTokens.size() > 1 )
773 {
774 // sort the tokens and update the tokens panel
775 m_tokens.setListData( sortedTokens );
776 m_tokens.setSelectedIndex( 0 );
777 }
778
779 // show the first token
780 showToken( sortedTokens.get( 0 ) );
781 }
782
746 public void setHighlightedTokens( Iterable<Token> obfuscatedTokens, Iterable<Token> deobfuscatedTokens ) 783 public void setHighlightedTokens( Iterable<Token> obfuscatedTokens, Iterable<Token> deobfuscatedTokens )
747 { 784 {
748 // remove any old highlighters 785 // remove any old highlighters
@@ -900,17 +937,9 @@ public class Gui
900 937
901 private void startRename( ) 938 private void startRename( )
902 { 939 {
903 // get the class name
904 ClassEntry classEntry = m_reference.entry.getClassEntry();
905 String className = classEntry.getName();
906 if( classEntry.isInnerClass() )
907 {
908 className = classEntry.getInnerClassName();
909 }
910
911 // init the text box 940 // init the text box
912 final JTextField text = new JTextField(); 941 final JTextField text = new JTextField();
913 text.setText( className ); 942 text.setText( m_reference.entry.getName() );
914 text.setPreferredSize( new Dimension( 360, text.getPreferredSize().height ) ); 943 text.setPreferredSize( new Dimension( 360, text.getPreferredSize().height ) );
915 text.addKeyListener( new KeyAdapter( ) 944 text.addKeyListener( new KeyAdapter( )
916 { 945 {