From: Bill Kuker Date: Mon, 22 Nov 2010 01:59:13 +0000 (+0000) Subject: Use MultiObjectEditor for motors X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=5a62ab6aff1fedfd3587dcfd9fdd704c42e091a8;p=sw%2Fmotorsim Use MultiObjectEditor for motors TODO MULTI BURN PANE --- diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java index 433507b..4b0abd3 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java @@ -1,40 +1,23 @@ package com.billkuker.rocketry.motorsim.visual.workbench; -import java.awt.BorderLayout; -import java.awt.FileDialog; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.util.HashMap; -import java.util.Vector; 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.JPanel; import javax.swing.JRadioButtonMenuItem; -import javax.swing.JSeparator; -import javax.swing.JTabbedPane; import javax.swing.WindowConstants; -import com.billkuker.rocketry.motorsim.Burn; -import com.billkuker.rocketry.motorsim.Motor; import com.billkuker.rocketry.motorsim.RocketScience.UnitPreference; import com.billkuker.rocketry.motorsim.fuel.FuelsEditor; -import com.billkuker.rocketry.motorsim.io.ENGExporter; -import com.billkuker.rocketry.motorsim.io.MotorIO; public class MotorWorkbench extends JFrame { private static final long serialVersionUID = 1L; - private JPanel top; - private JTabbedPane motors; private MultiBurnChart mb; private JFrame allBurns; @@ -50,18 +33,18 @@ public class MotorWorkbench extends JFrame { } }; private FuelsEditor fuelEditor; + + private MotorsEditor motorsEditor; - private HashMap e2f = new HashMap(); - private HashMap f2e = new HashMap(); - - private HashMap m2e = new HashMap(); public MotorWorkbench() { setTitle("MotorSim 1.0 RC1"); - addMenu(); setSize(1024, 768); - top = new JPanel(new BorderLayout()); - setContentPane(top); + + motorsEditor = new MotorsEditor(this); + setContentPane(motorsEditor); + + addMenu(); mb = new MultiBurnChart(); allBurns = new JFrame(); @@ -70,9 +53,6 @@ public class MotorWorkbench extends JFrame { setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); allBurns.add(mb); - motors = new JTabbedPane(); - - top.add(motors, BorderLayout.CENTER); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setVisible(true); @@ -85,153 +65,8 @@ public class MotorWorkbench extends JFrame { private static final long serialVersionUID = 1L; { - add(new JMenu("File") { - private static final long serialVersionUID = 1L; - - { - add(new JMenuItem("New Motor") { - private static final long serialVersionUID = 1L; - { - addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent arg0) { - addMotor(MotorEditor.defaultMotor(), null); - } - }); - - } - }); - add(new JMenuItem("Open...") { - private static final long serialVersionUID = 1L; - { - addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent arg0) { - - final FileDialog fd = new FileDialog(MotorWorkbench.this, "Open Motor", FileDialog.LOAD); - fd.setVisible(true); - if ( fd.getFile() != null ) { - File file = new File(fd.getDirectory() + fd.getFile()); - if (f2e.get(file) != null) { - motors.setSelectedComponent(f2e - .get(file)); - return; - } - try { - Motor m = MotorIO - .readMotor(new FileInputStream(file)); - addMotor(m, file); - - } catch (Exception e) { - JOptionPane.showMessageDialog( - MotorWorkbench.this, e - .getMessage()); - } - } - } - }); - } - }); - - add(new JSeparator()); - - add(new JMenuItem("Close Motor") { - private static final long serialVersionUID = 1L; - { - addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent ev) { - MotorEditor e = (MotorEditor) motors - .getSelectedComponent(); - motors.remove(e); - f2e.remove(e2f.get(e)); - e2f.remove(e); - m2e.remove(e.getMotor()); - mb.removeBurn(e.burn); - } - }); - } - }); - - add(new JMenuItem("Save Motor") { - private static final long serialVersionUID = 1L; - { - addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - MotorEditor m = (MotorEditor) motors - .getSelectedComponent(); - File f = e2f.get(m); - if (f != null) - save(m.getMotor(), f); - - } - }); - } - }); - add(new JMenuItem("Save Motor As...") { - private static final long serialVersionUID = 1L; - { - addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent arg0) { - - final FileDialog fd = new FileDialog(MotorWorkbench.this, "Save Motor As", FileDialog.SAVE); - fd.setVisible(true); - if (fd.getFile() != null ) { - File file = new File(fd.getDirectory() + fd.getFile()); - MotorEditor m = (MotorEditor) motors - .getSelectedComponent(); - try { - save(m.getMotor(), file); - e2f.put(m, file); - f2e.put(file, m); - motors.setTitleAt(motors - .getSelectedIndex(), - file.getName()); - // TODO Set tab title - } catch (Exception e) { - JOptionPane.showMessageDialog( - MotorWorkbench.this, e - .getMessage()); - } - } - } - }); - } - }); - - - add(new JSeparator()); - add(new JMenuItem("Export .ENG"){ - private static final long serialVersionUID = 1L; - - { - addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent arg0) { - - final FileDialog fd = new FileDialog(MotorWorkbench.this, "Export .ENG File", FileDialog.SAVE); - fd.setFile("motorsim.eng"); - fd.setVisible(true); - if (fd.getFile() != null ) { - File file = new File(fd.getDirectory() + fd.getFile()); - Vector bb = new Vector(); - for( MotorEditor me : m2e.values() ) - bb.add(me.burn); - try{ - ENGExporter.export(bb, file); - } catch ( Exception e ){ - e.printStackTrace(); - } - } - } - }); - } - }); - } - }); + add(motorsEditor.getMenu()); + add(new JMenu("Settings") { private static final long serialVersionUID = 1L; { @@ -295,30 +130,6 @@ public class MotorWorkbench extends JFrame { - private void save(Motor m, File f) { - try { - FileOutputStream fo; - MotorIO.writeMotor(m, fo = new FileOutputStream(f)); - fo.close(); - } catch (Throwable t) { - JOptionPane.showMessageDialog(MotorWorkbench.this, t.getMessage()); - } - } - - public void addMotor(Motor m, File f) { - MotorEditor e = new MotorEditor(m); - e.addBurnWatcher(mb); - String title; - if (f == null) { - title = "New Motor"; - } else { - title = f.getName(); - e2f.put(e, f); - f2e.put(f, e); - } - m2e.put(m, e); - motors.addTab(title, e); - } } diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorsEditor.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorsEditor.java new file mode 100644 index 0000000..48a469a --- /dev/null +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorsEditor.java @@ -0,0 +1,91 @@ +package com.billkuker.rocketry.motorsim.visual.workbench; + +import java.awt.FileDialog; +import java.awt.event.ActionEvent; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Vector; + +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JSeparator; +import java.awt.event.ActionListener; + +import com.billkuker.rocketry.motorsim.Burn; +import com.billkuker.rocketry.motorsim.Motor; +import com.billkuker.rocketry.motorsim.io.ENGExporter; +import com.billkuker.rocketry.motorsim.io.MotorIO; +import com.billkuker.rocketry.motorsim.visual.MultiObjectEditor; + +public class MotorsEditor extends MultiObjectEditor { + private static final long serialVersionUID = 1L; + + public MotorsEditor(JFrame f) { + super(f, "Motor"); + addCreator(new ObjectCreator() { + @Override + public Motor newObject() { + return MotorEditor.defaultMotor(); + } + + @Override + public String getName() { + return "Motor"; + } + }); + } + + @Override + public MotorEditor createEditor(Motor o) { + return new MotorEditor(o); + } + + + @Override + protected Motor loadFromFile(File f) throws IOException { + return MotorIO.readMotor(new FileInputStream(f)); + } + + @Override + protected void saveToFile(Motor o, File f) throws IOException { + MotorIO.writeMotor(o, new FileOutputStream(f)); + } + + + @Override + public JMenu getMenu(){ + JMenu ret = super.getMenu(); + ret.add(new JSeparator()); + ret.add(new JMenuItem("Export .ENG"){ + private static final long serialVersionUID = 1L; + { + addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent arg0) { + + final FileDialog fd = new FileDialog(frame, "Export .ENG File", FileDialog.SAVE); + fd.setFile("motorsim.eng"); + fd.setVisible(true); + if (fd.getFile() != null) { + File file = new File(fd.getDirectory() + + fd.getFile()); + MotorEditor me = getSelectedEditor(); + Vector bb = new Vector(); + bb.add(me.burn); + try { + ENGExporter.export(bb, file); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + }); + } + }); + return ret; + } +}