package app; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; /** * The user interface for this program. */ public class ProgramUI extends JFrame { private static final long serialVersionUID = 1L; /** * Constructor. */ public ProgramUI() { setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationByPlatform(true); setTitle("Rabbit Data Converter"); final JTextArea textArea = new JTextArea(); textArea.setEditable(false); textArea.append( "This tool converts Rabbit 1.0 data files to the 1.1 format.\n\n" + "Please uninstall Rabbit 1.0 from Eclipse by removing\n" + " - rabbit.core_1.0.0.xxx.jar and\n" + " - rabbit.ui_1.0.0_xxx.jar\n" + "before running this tool.\n\n"); add(textArea, BorderLayout.CENTER); final JButton button = new JButton(); button.setText("Start"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { button.setEnabled(false); textArea.append("Running...\n"); // OK to run this in UI thread, workload is small Program.run(); textArea.append("Done! All operations have finished.\n"); button.setEnabled(true); button.setText("Exit"); button.removeActionListener(this); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); } }); add(button, BorderLayout.SOUTH); setSize(500, 400); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { System.err.println(e.getMessage()); } catch (InstantiationException e) { System.err.println(e.getMessage()); } catch (IllegalAccessException e) { System.err.println(e.getMessage()); } catch (UnsupportedLookAndFeelException e) { System.err.println(e.getMessage()); } SwingUtilities.invokeLater(new Runnable() { public void run() { ProgramUI ui = new ProgramUI(); ui.setVisible(true); } }); } }