diff options
Diffstat (limited to 'src/cuchaz/enigma/gui/ProgressDialog.java')
| -rw-r--r-- | src/cuchaz/enigma/gui/ProgressDialog.java | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/src/cuchaz/enigma/gui/ProgressDialog.java b/src/cuchaz/enigma/gui/ProgressDialog.java index 40ac6a6..7f95431 100644 --- a/src/cuchaz/enigma/gui/ProgressDialog.java +++ b/src/cuchaz/enigma/gui/ProgressDialog.java | |||
| @@ -25,22 +25,24 @@ import javax.swing.WindowConstants; | |||
| 25 | import cuchaz.enigma.Constants; | 25 | import cuchaz.enigma.Constants; |
| 26 | import cuchaz.enigma.Deobfuscator.ProgressListener; | 26 | import cuchaz.enigma.Deobfuscator.ProgressListener; |
| 27 | 27 | ||
| 28 | public class ProgressDialog implements ProgressListener | 28 | public class ProgressDialog implements ProgressListener, AutoCloseable |
| 29 | { | 29 | { |
| 30 | private JFrame m_frame; | 30 | private JFrame m_frame; |
| 31 | private JLabel m_title; | ||
| 31 | private JLabel m_text; | 32 | private JLabel m_text; |
| 32 | private JProgressBar m_progress; | 33 | private JProgressBar m_progress; |
| 33 | 34 | ||
| 34 | public ProgressDialog( JFrame parent ) | 35 | public ProgressDialog( JFrame parent ) |
| 35 | { | 36 | { |
| 36 | // init frame | 37 | // init frame |
| 37 | m_frame = new JFrame( Constants.Name + " - Export" ); | 38 | m_frame = new JFrame( Constants.Name + " - Operation in progress" ); |
| 38 | final Container pane = m_frame.getContentPane(); | 39 | final Container pane = m_frame.getContentPane(); |
| 39 | FlowLayout layout = new FlowLayout(); | 40 | FlowLayout layout = new FlowLayout(); |
| 40 | layout.setAlignment( FlowLayout.LEFT ); | 41 | layout.setAlignment( FlowLayout.LEFT ); |
| 41 | pane.setLayout( layout ); | 42 | pane.setLayout( layout ); |
| 42 | 43 | ||
| 43 | pane.add( new JLabel( "Decompiling classes..." ) ); | 44 | m_title = new JLabel(); |
| 45 | pane.add( m_title ); | ||
| 44 | 46 | ||
| 45 | // set up the progress bar | 47 | // set up the progress bar |
| 46 | JPanel panel = new JPanel(); | 48 | JPanel panel = new JPanel(); |
| @@ -68,9 +70,9 @@ public class ProgressDialog implements ProgressListener | |||
| 68 | } | 70 | } |
| 69 | 71 | ||
| 70 | @Override | 72 | @Override |
| 71 | public void init( int totalWork ) | 73 | public void init( int totalWork, String title ) |
| 72 | { | 74 | { |
| 73 | m_text.setText( "Decompiling " + totalWork + " classes..." ); | 75 | m_title.setText( title ); |
| 74 | m_progress.setMinimum( 0 ); | 76 | m_progress.setMinimum( 0 ); |
| 75 | m_progress.setMaximum( totalWork ); | 77 | m_progress.setMaximum( totalWork ); |
| 76 | m_progress.setValue( 0 ); | 78 | m_progress.setValue( 0 ); |
| @@ -86,4 +88,28 @@ public class ProgressDialog implements ProgressListener | |||
| 86 | m_frame.validate(); | 88 | m_frame.validate(); |
| 87 | m_frame.repaint(); | 89 | m_frame.repaint(); |
| 88 | } | 90 | } |
| 91 | |||
| 92 | public static interface ProgressRunnable | ||
| 93 | { | ||
| 94 | void run( ProgressListener listener ) throws Exception; | ||
| 95 | } | ||
| 96 | |||
| 97 | public static void runInThread( final JFrame parent, final ProgressRunnable runnable ) | ||
| 98 | { | ||
| 99 | new Thread( ) | ||
| 100 | { | ||
| 101 | @Override | ||
| 102 | public void run( ) | ||
| 103 | { | ||
| 104 | try( ProgressDialog progress = new ProgressDialog( parent ) ) | ||
| 105 | { | ||
| 106 | runnable.run( progress ); | ||
| 107 | } | ||
| 108 | catch( Exception ex ) | ||
| 109 | { | ||
| 110 | throw new Error( ex ); | ||
| 111 | } | ||
| 112 | } | ||
| 113 | }.start(); | ||
| 114 | } | ||
| 89 | } | 115 | } |