diff options
Diffstat (limited to 'src/cuchaz/enigma/gui/Gui.java')
| -rw-r--r-- | src/cuchaz/enigma/gui/Gui.java | 53 |
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; | |||
| 28 | import java.awt.event.WindowEvent; | 28 | import java.awt.event.WindowEvent; |
| 29 | import java.io.File; | 29 | import java.io.File; |
| 30 | import java.io.IOException; | 30 | import java.io.IOException; |
| 31 | import java.util.Collection; | ||
| 31 | import java.util.Collections; | 32 | import java.util.Collections; |
| 32 | import java.util.Comparator; | 33 | import java.util.Comparator; |
| 33 | import java.util.List; | 34 | import 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 | { |