X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gui%2Fcom%2Fbillkuker%2Frocketry%2Fmotorsim%2Fvisual%2Fworkbench%2FMotorWorkbench.java;h=140036dd216ed4a1c24cd6f4302b738aea92146d;hb=6ddbeeaa48648c1c3d86f3434eec909934422427;hp=4b0abd3f60b024a73a13958cce06616123b1b6a4;hpb=5a62ab6aff1fedfd3587dcfd9fdd704c42e091a8;p=sw%2Fmotorsim diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java index 4b0abd3..140036d 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java @@ -2,34 +2,40 @@ package com.billkuker.rocketry.motorsim.visual.workbench; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; +import javax.swing.JOptionPane; import javax.swing.JRadioButtonMenuItem; -import javax.swing.WindowConstants; +import javax.swing.JSeparator; import com.billkuker.rocketry.motorsim.RocketScience.UnitPreference; import com.billkuker.rocketry.motorsim.fuel.FuelsEditor; +import com.billkuker.rocketry.motorsim.visual.RememberJFrame; -public class MotorWorkbench extends JFrame { +public class MotorWorkbench extends RememberJFrame { + public static final String version = "2.0 BETA2"; + public static final String name = "MotorSim " + version; private static final long serialVersionUID = 1L; - private MultiBurnChart mb; + private MultiMotorThrustChart mb; private JFrame allBurns; - private JFrame fuelEditorFrame = new JFrame(){ + private JFrame fuelEditorFrame = new RememberJFrame(800,600){ private static final long serialVersionUID = 1L; { - setSize(1024, 768); + setSize(800, 600); add(fuelEditor = new FuelsEditor(this)); JMenuBar b; setJMenuBar(b = new JMenuBar()); b.add(fuelEditor.getMenu()); - setTitle("MotorSim - Fuel Editor"); + setTitle(name + " - Fuel Editor"); } }; private FuelsEditor fuelEditor; @@ -38,26 +44,75 @@ public class MotorWorkbench extends JFrame { public MotorWorkbench() { - setTitle("MotorSim 1.0 RC1"); - setSize(1024, 768); + super(1024, 768); + setTitle(name); motorsEditor = new MotorsEditor(this); setContentPane(motorsEditor); addMenu(); - mb = new MultiBurnChart(); + mb = new MultiMotorThrustChart(); allBurns = new JFrame(); allBurns.setTitle("All Burns"); allBurns.setSize(800, 600); - setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); allBurns.add(mb); - - setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - setVisible(true); + setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); + + addWindowListener(new WindowListener() { + + @Override + public void windowOpened(WindowEvent e) {} + + @Override + public void windowIconified(WindowEvent e) {} + + @Override + public void windowDeiconified(WindowEvent e) {} + + @Override + public void windowDeactivated(WindowEvent e) {} + + @Override + public void windowClosing(WindowEvent e) { + maybeQuit(); + } + + @Override + public void windowClosed(WindowEvent e) {} + + @Override + public void windowActivated(WindowEvent e) {} + }); } + + private void maybeQuit(){ + if (motorsEditor.hasDirty()) { + int response = JOptionPane + .showConfirmDialog( + MotorWorkbench.this, + "There are unsaved Motors.\nExit Anyway?", + "Confirm", + JOptionPane.YES_NO_OPTION); + if (response == JOptionPane.NO_OPTION) { + return; + } + } + if (fuelEditor.hasDirty()) { + int response = JOptionPane + .showConfirmDialog( + MotorWorkbench.this, + "There are unsaved Fuels.\nExit Anyway?", + "Confirm", + JOptionPane.YES_NO_OPTION); + if (response == JOptionPane.NO_OPTION) { + return; + } + } + MotorWorkbench.this.dispose(); + } private void addMenu() { @@ -65,7 +120,20 @@ public class MotorWorkbench extends JFrame { private static final long serialVersionUID = 1L; { - add(motorsEditor.getMenu()); + JMenu file = motorsEditor.getMenu(); + file.add(new JSeparator()); + file.add(new JMenuItem("Quit") { + private static final long serialVersionUID = 1L; + { + addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + maybeQuit(); + } + }); + } + }); + add(file); add(new JMenu("Settings") { private static final long serialVersionUID = 1L; @@ -98,19 +166,18 @@ public class MotorWorkbench extends JFrame { add(new JMenu("View") { private static final long serialVersionUID = 1L; { - add(new JMenuItem("All Motors Graph") { + add(new JMenuItem("Detach \"All Motors\" tabs") { private static final long serialVersionUID = 1L; { addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { - allBurns.setVisible(true); - allBurns.toFront(); + motorsEditor.detach(); } }); } }); - add(new JMenuItem("Fuel Editor") { + add(new JMenuItem("Show Fuel Editor") { private static final long serialVersionUID = 1L; { addActionListener(new ActionListener() {