diff options
Diffstat (limited to 'src/cuchaz/enigma/gui/Gui.java')
| -rw-r--r-- | src/cuchaz/enigma/gui/Gui.java | 63 |
1 files changed, 54 insertions, 9 deletions
diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java index 1f04aa3..8bf6ce9 100644 --- a/src/cuchaz/enigma/gui/Gui.java +++ b/src/cuchaz/enigma/gui/Gui.java | |||
| @@ -122,6 +122,7 @@ public class Gui | |||
| 122 | private JMenuItem m_openPreviousMenu; | 122 | private JMenuItem m_openPreviousMenu; |
| 123 | private JMenuItem m_showCallsMenu; | 123 | private JMenuItem m_showCallsMenu; |
| 124 | private JMenuItem m_showImplementationsMenu; | 124 | private JMenuItem m_showImplementationsMenu; |
| 125 | private JMenuItem m_toggleMappingMenu; | ||
| 125 | 126 | ||
| 126 | // state | 127 | // state |
| 127 | private EntryReference<Entry,Entry> m_reference; | 128 | private EntryReference<Entry,Entry> m_reference; |
| @@ -136,17 +137,20 @@ public class Gui | |||
| 136 | final Container pane = m_frame.getContentPane(); | 137 | final Container pane = m_frame.getContentPane(); |
| 137 | pane.setLayout( new BorderLayout() ); | 138 | pane.setLayout( new BorderLayout() ); |
| 138 | 139 | ||
| 139 | // install a global exception handler to the event thread | 140 | if( Boolean.parseBoolean( System.getProperty( "enigma.catchExceptions", "true" ) ) ) |
| 140 | CrashDialog.init( m_frame ); | ||
| 141 | Thread.setDefaultUncaughtExceptionHandler( new UncaughtExceptionHandler( ) | ||
| 142 | { | 141 | { |
| 143 | @Override | 142 | // install a global exception handler to the event thread |
| 144 | public void uncaughtException( Thread thread, Throwable ex ) | 143 | CrashDialog.init( m_frame ); |
| 144 | Thread.setDefaultUncaughtExceptionHandler( new UncaughtExceptionHandler( ) | ||
| 145 | { | 145 | { |
| 146 | ex.printStackTrace( System.err ); | 146 | @Override |
| 147 | CrashDialog.show( ex ); | 147 | public void uncaughtException( Thread thread, Throwable ex ) |
| 148 | } | 148 | { |
| 149 | } ); | 149 | ex.printStackTrace( System.err ); |
| 150 | CrashDialog.show( ex ); | ||
| 151 | } | ||
| 152 | } ); | ||
| 153 | } | ||
| 150 | 154 | ||
| 151 | m_controller = new GuiController( this ); | 155 | m_controller = new GuiController( this ); |
| 152 | 156 | ||
| @@ -251,6 +255,10 @@ public class Gui | |||
| 251 | case KeyEvent.VK_C: | 255 | case KeyEvent.VK_C: |
| 252 | m_showCallsMenu.doClick(); | 256 | m_showCallsMenu.doClick(); |
| 253 | break; | 257 | break; |
| 258 | |||
| 259 | case KeyEvent.VK_T: | ||
| 260 | m_toggleMappingMenu.doClick(); | ||
| 261 | break; | ||
| 254 | } | 262 | } |
| 255 | } | 263 | } |
| 256 | } ); | 264 | } ); |
| @@ -352,6 +360,21 @@ public class Gui | |||
| 352 | popupMenu.add( menu ); | 360 | popupMenu.add( menu ); |
| 353 | m_openPreviousMenu = menu; | 361 | m_openPreviousMenu = menu; |
| 354 | } | 362 | } |
| 363 | { | ||
| 364 | JMenuItem menu = new JMenuItem( "Mark as deobfuscated" ); | ||
| 365 | menu.addActionListener( new ActionListener( ) | ||
| 366 | { | ||
| 367 | @Override | ||
| 368 | public void actionPerformed( ActionEvent event ) | ||
| 369 | { | ||
| 370 | toggleMapping(); | ||
| 371 | } | ||
| 372 | } ); | ||
| 373 | menu.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_T, 0 ) ); | ||
| 374 | menu.setEnabled( false ); | ||
| 375 | popupMenu.add( menu ); | ||
| 376 | m_toggleMappingMenu = menu; | ||
| 377 | } | ||
| 355 | 378 | ||
| 356 | // init inheritance panel | 379 | // init inheritance panel |
| 357 | m_inheritanceTree = new JTree(); | 380 | m_inheritanceTree = new JTree(); |
| @@ -1031,6 +1054,16 @@ public class Gui | |||
| 1031 | m_showCallsMenu.setEnabled( isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry ); | 1054 | m_showCallsMenu.setEnabled( isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry ); |
| 1032 | m_openEntryMenu.setEnabled( isInJar && ( isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry ) ); | 1055 | m_openEntryMenu.setEnabled( isInJar && ( isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry ) ); |
| 1033 | m_openPreviousMenu.setEnabled( m_controller.hasPreviousLocation() ); | 1056 | m_openPreviousMenu.setEnabled( m_controller.hasPreviousLocation() ); |
| 1057 | m_toggleMappingMenu.setEnabled( isInJar && isToken ); | ||
| 1058 | |||
| 1059 | if( isToken && m_controller.entryHasMapping( m_reference.entry ) ) | ||
| 1060 | { | ||
| 1061 | m_toggleMappingMenu.setText( "Reset to obfuscated" ); | ||
| 1062 | } | ||
| 1063 | else | ||
| 1064 | { | ||
| 1065 | m_toggleMappingMenu.setText( "Mark as deobfuscated" ); | ||
| 1066 | } | ||
| 1034 | } | 1067 | } |
| 1035 | 1068 | ||
| 1036 | private void navigateTo( Entry entry ) | 1069 | private void navigateTo( Entry entry ) |
| @@ -1233,6 +1266,18 @@ public class Gui | |||
| 1233 | redraw(); | 1266 | redraw(); |
| 1234 | } | 1267 | } |
| 1235 | 1268 | ||
| 1269 | private void toggleMapping() | ||
| 1270 | { | ||
| 1271 | if( m_controller.entryHasMapping( m_reference.entry ) ) | ||
| 1272 | { | ||
| 1273 | m_controller.removeMapping( m_reference ); | ||
| 1274 | } | ||
| 1275 | else | ||
| 1276 | { | ||
| 1277 | m_controller.markAsDeobfuscated( m_reference ); | ||
| 1278 | } | ||
| 1279 | } | ||
| 1280 | |||
| 1236 | private TreePath getPathToRoot( TreeNode node ) | 1281 | private TreePath getPathToRoot( TreeNode node ) |
| 1237 | { | 1282 | { |
| 1238 | List<TreeNode> nodes = Lists.newArrayList(); | 1283 | List<TreeNode> nodes = Lists.newArrayList(); |