diff options
| -rw-r--r-- | src/cuchaz/enigma/gui/Gui.java | 85 |
1 files changed, 67 insertions, 18 deletions
diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java index 1f967c0..f9afb64 100644 --- a/src/cuchaz/enigma/gui/Gui.java +++ b/src/cuchaz/enigma/gui/Gui.java | |||
| @@ -47,6 +47,7 @@ import javax.swing.JPanel; | |||
| 47 | import javax.swing.JPopupMenu; | 47 | import javax.swing.JPopupMenu; |
| 48 | import javax.swing.JScrollPane; | 48 | import javax.swing.JScrollPane; |
| 49 | import javax.swing.JSplitPane; | 49 | import javax.swing.JSplitPane; |
| 50 | import javax.swing.JTabbedPane; | ||
| 50 | import javax.swing.JTextField; | 51 | import javax.swing.JTextField; |
| 51 | import javax.swing.ListSelectionModel; | 52 | import javax.swing.ListSelectionModel; |
| 52 | import javax.swing.WindowConstants; | 53 | import javax.swing.WindowConstants; |
| @@ -99,6 +100,7 @@ public class Gui | |||
| 99 | private JPanel m_infoPanel; | 100 | private JPanel m_infoPanel; |
| 100 | private BoxHighlightPainter m_obfuscatedHighlightPainter; | 101 | private BoxHighlightPainter m_obfuscatedHighlightPainter; |
| 101 | private BoxHighlightPainter m_deobfuscatedHighlightPainter; | 102 | private BoxHighlightPainter m_deobfuscatedHighlightPainter; |
| 103 | private JPanel m_inheritancePanel; | ||
| 102 | 104 | ||
| 103 | // dynamic menu items | 105 | // dynamic menu items |
| 104 | private JMenuItem m_closeJarMenu; | 106 | private JMenuItem m_closeJarMenu; |
| @@ -107,6 +109,7 @@ public class Gui | |||
| 107 | private JMenuItem m_saveMappingsAsMenu; | 109 | private JMenuItem m_saveMappingsAsMenu; |
| 108 | private JMenuItem m_closeMappingsMenu; | 110 | private JMenuItem m_closeMappingsMenu; |
| 109 | private JMenuItem m_renameMenu; | 111 | private JMenuItem m_renameMenu; |
| 112 | private JMenuItem m_inheritanceMenu; | ||
| 110 | 113 | ||
| 111 | // state | 114 | // state |
| 112 | private EntryPair<Entry> m_selectedEntryPair; | 115 | private EntryPair<Entry> m_selectedEntryPair; |
| @@ -197,17 +200,7 @@ public class Gui | |||
| 197 | @Override | 200 | @Override |
| 198 | public void caretUpdate( CaretEvent event ) | 201 | public void caretUpdate( CaretEvent event ) |
| 199 | { | 202 | { |
| 200 | m_selectedEntryPair = m_controller.getEntryPair( event.getDot() ); | 203 | onCaretMove( event.getDot() ); |
| 201 | if( m_selectedEntryPair != null ) | ||
| 202 | { | ||
| 203 | showEntryPair( m_selectedEntryPair ); | ||
| 204 | m_renameMenu.setEnabled( true ); | ||
| 205 | } | ||
| 206 | else | ||
| 207 | { | ||
| 208 | clearEntryPair(); | ||
| 209 | m_renameMenu.setEnabled( false ); | ||
| 210 | } | ||
| 211 | } | 204 | } |
| 212 | } ); | 205 | } ); |
| 213 | m_editor.addKeyListener( new KeyAdapter( ) | 206 | m_editor.addKeyListener( new KeyAdapter( ) |
| @@ -244,15 +237,39 @@ public class Gui | |||
| 244 | popupMenu.add( menu ); | 237 | popupMenu.add( menu ); |
| 245 | m_renameMenu = menu; | 238 | m_renameMenu = menu; |
| 246 | } | 239 | } |
| 240 | { | ||
| 241 | JMenuItem menu = new JMenuItem( "Show Inheritance" ); | ||
| 242 | menu.addActionListener( new ActionListener( ) | ||
| 243 | { | ||
| 244 | @Override | ||
| 245 | public void actionPerformed( ActionEvent event ) | ||
| 246 | { | ||
| 247 | showInheritance(); | ||
| 248 | } | ||
| 249 | } ); | ||
| 250 | popupMenu.add( menu ); | ||
| 251 | m_inheritanceMenu = menu; | ||
| 252 | } | ||
| 253 | |||
| 254 | // init inheritance panel | ||
| 255 | m_inheritancePanel = new JPanel(); | ||
| 247 | 256 | ||
| 248 | // layout controls | 257 | // layout controls |
| 249 | JSplitPane splitLeft = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, obfPanel, deobfPanel ); | 258 | JSplitPane splitLeft = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, obfPanel, deobfPanel ); |
| 250 | JPanel rightPanel = new JPanel(); | 259 | splitLeft.setPreferredSize( new Dimension( 200, 0 ) ); |
| 251 | rightPanel.setLayout( new BorderLayout() ); | 260 | JPanel centerPanel = new JPanel(); |
| 252 | rightPanel.add( m_infoPanel, BorderLayout.NORTH ); | 261 | centerPanel.setLayout( new BorderLayout() ); |
| 253 | rightPanel.add( sourceScroller, BorderLayout.CENTER ); | 262 | centerPanel.add( m_infoPanel, BorderLayout.NORTH ); |
| 254 | JSplitPane splitMain = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, true, splitLeft, rightPanel ); | 263 | centerPanel.add( sourceScroller, BorderLayout.CENTER ); |
| 255 | pane.add( splitMain, BorderLayout.CENTER ); | 264 | JTabbedPane tabbedPane = new JTabbedPane(); |
| 265 | tabbedPane.setPreferredSize( new Dimension( 200, 0 ) ); | ||
| 266 | tabbedPane.addTab( "Inheritance", m_inheritancePanel ); | ||
| 267 | JSplitPane splitRight = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, true, centerPanel, tabbedPane ); | ||
| 268 | splitRight.setResizeWeight( 1 ); // let the left side take all the slack | ||
| 269 | splitRight.resetToPreferredSizes(); | ||
| 270 | JSplitPane splitCenter = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, true, splitLeft, splitRight ); | ||
| 271 | splitCenter.setResizeWeight( 0 ); // let the right side take all the slack | ||
| 272 | pane.add( splitCenter, BorderLayout.CENTER ); | ||
| 256 | 273 | ||
| 257 | // init menus | 274 | // init menus |
| 258 | JMenuBar menuBar = new JMenuBar(); | 275 | JMenuBar menuBar = new JMenuBar(); |
| @@ -421,7 +438,7 @@ public class Gui | |||
| 421 | 438 | ||
| 422 | // show the frame | 439 | // show the frame |
| 423 | pane.doLayout(); | 440 | pane.doLayout(); |
| 424 | m_frame.setSize( 800, 600 ); | 441 | m_frame.setSize( 1024, 576 ); |
| 425 | m_frame.setMinimumSize( new Dimension( 640, 480 ) ); | 442 | m_frame.setMinimumSize( new Dimension( 640, 480 ) ); |
| 426 | m_frame.setVisible( true ); | 443 | m_frame.setVisible( true ); |
| 427 | m_frame.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE ); | 444 | m_frame.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE ); |
| @@ -646,6 +663,27 @@ public class Gui | |||
| 646 | panel.add( unboldLabel( new JLabel( value, JLabel.LEFT ) ) ); | 663 | panel.add( unboldLabel( new JLabel( value, JLabel.LEFT ) ) ); |
| 647 | } | 664 | } |
| 648 | 665 | ||
| 666 | private void onCaretMove( int pos ) | ||
| 667 | { | ||
| 668 | m_selectedEntryPair = m_controller.getEntryPair( pos ); | ||
| 669 | if( m_selectedEntryPair != null ) | ||
| 670 | { | ||
| 671 | showEntryPair( m_selectedEntryPair ); | ||
| 672 | |||
| 673 | boolean isClassEntry = m_selectedEntryPair.obf instanceof ClassEntry; | ||
| 674 | boolean isMethodEntry = m_selectedEntryPair.obf instanceof MethodEntry; | ||
| 675 | |||
| 676 | m_renameMenu.setEnabled( true ); | ||
| 677 | m_inheritanceMenu.setEnabled( isClassEntry || isMethodEntry ); | ||
| 678 | } | ||
| 679 | else | ||
| 680 | { | ||
| 681 | clearEntryPair(); | ||
| 682 | m_renameMenu.setEnabled( false ); | ||
| 683 | m_inheritanceMenu.setEnabled( false ); | ||
| 684 | } | ||
| 685 | } | ||
| 686 | |||
| 649 | private void startRename( ) | 687 | private void startRename( ) |
| 650 | { | 688 | { |
| 651 | // init the text box | 689 | // init the text box |
| @@ -708,6 +746,17 @@ public class Gui | |||
| 708 | redraw(); | 746 | redraw(); |
| 709 | } | 747 | } |
| 710 | 748 | ||
| 749 | private void showInheritance( ) | ||
| 750 | { | ||
| 751 | m_inheritancePanel.removeAll(); | ||
| 752 | |||
| 753 | // TEMP | ||
| 754 | m_inheritancePanel.add( new JLabel( m_selectedEntryPair.obf.getName() ) ); | ||
| 755 | m_inheritancePanel.add( new JLabel( m_selectedEntryPair.deobf.getName() ) ); | ||
| 756 | |||
| 757 | redraw(); | ||
| 758 | } | ||
| 759 | |||
| 711 | private void close( ) | 760 | private void close( ) |
| 712 | { | 761 | { |
| 713 | if( !m_controller.isDirty() ) | 762 | if( !m_controller.isDirty() ) |