summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jeff2014-08-04 23:57:08 -0400
committerGravatar jeff2014-08-04 23:57:08 -0400
commit17ec7a6fdf2dc76b9d89b6ef3168bacb1cb3fbd1 (patch)
tree71f4b635b21865230bea1575975793a874a06484
parentfixed bug with renaming classes (diff)
downloadenigma-17ec7a6fdf2dc76b9d89b6ef3168bacb1cb3fbd1.tar.gz
enigma-17ec7a6fdf2dc76b9d89b6ef3168bacb1cb3fbd1.tar.xz
enigma-17ec7a6fdf2dc76b9d89b6ef3168bacb1cb3fbd1.zip
started on inheritance viewer
-rw-r--r--src/cuchaz/enigma/gui/Gui.java85
1 files changed, 67 insertions, 18 deletions
diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java
index 1f967c0c..f9afb64b 100644
--- a/src/cuchaz/enigma/gui/Gui.java
+++ b/src/cuchaz/enigma/gui/Gui.java
@@ -47,6 +47,7 @@ import javax.swing.JPanel;
47import javax.swing.JPopupMenu; 47import javax.swing.JPopupMenu;
48import javax.swing.JScrollPane; 48import javax.swing.JScrollPane;
49import javax.swing.JSplitPane; 49import javax.swing.JSplitPane;
50import javax.swing.JTabbedPane;
50import javax.swing.JTextField; 51import javax.swing.JTextField;
51import javax.swing.ListSelectionModel; 52import javax.swing.ListSelectionModel;
52import javax.swing.WindowConstants; 53import 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() )