/******************************************************************************* * Copyright (c) 2014 Jeff Martin. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Jeff Martin - initial API and implementation ******************************************************************************/ package cuchaz.enigma.gui; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.WindowConstants; import cuchaz.enigma.Constants; import cuchaz.enigma.Deobfuscator.ProgressListener; public class ProgressDialog implements ProgressListener { private JFrame m_frame; private JLabel m_text; private JProgressBar m_progress; public ProgressDialog( JFrame parent ) { // init frame m_frame = new JFrame( Constants.Name + " - Export" ); final Container pane = m_frame.getContentPane(); FlowLayout layout = new FlowLayout(); layout.setAlignment( FlowLayout.LEFT ); pane.setLayout( layout ); pane.add( new JLabel( "Decompiling classes..." ) ); // set up the progress bar JPanel panel = new JPanel(); pane.add( panel ); panel.setLayout( new BorderLayout() ); m_text = GuiTricks.unboldLabel( new JLabel() ); m_progress = new JProgressBar(); m_text.setBorder( BorderFactory.createEmptyBorder( 0, 0, 10, 0 ) ); panel.add( m_text, BorderLayout.NORTH ); panel.add( m_progress, BorderLayout.CENTER ); panel.setPreferredSize( new Dimension( 360, 50 ) ); // show the frame pane.doLayout(); m_frame.setSize( 400, 120 ); m_frame.setResizable( false ); m_frame.setLocationRelativeTo( parent ); m_frame.setVisible( true ); m_frame.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE ); } public void close( ) { m_frame.dispose(); } @Override public void init( int totalWork ) { m_text.setText( "Decompiling " + totalWork + " classes..." ); m_progress.setMinimum( 0 ); m_progress.setMaximum( totalWork ); m_progress.setValue( 0 ); } @Override public void onProgress( int numDone, String message ) { m_text.setText( message ); m_progress.setValue( numDone ); // update the frame m_frame.validate(); m_frame.repaint(); } }