integrate multiburnchart in motors editor
[sw/motorsim] / gui / com / billkuker / rocketry / motorsim / visual / workbench / MotorsEditor.java
1 package com.billkuker.rocketry.motorsim.visual.workbench;\r
2 \r
3 import java.awt.FileDialog;\r
4 import java.awt.event.ActionEvent;\r
5 import java.io.File;\r
6 import java.io.FileInputStream;\r
7 import java.io.FileOutputStream;\r
8 import java.io.IOException;\r
9 import java.util.Vector;\r
10 \r
11 import javax.swing.JFrame;\r
12 import javax.swing.JMenu;\r
13 import javax.swing.JMenuItem;\r
14 import javax.swing.JSeparator;\r
15 import java.awt.event.ActionListener;\r
16 \r
17 import com.billkuker.rocketry.motorsim.Burn;\r
18 import com.billkuker.rocketry.motorsim.Motor;\r
19 import com.billkuker.rocketry.motorsim.io.ENGExporter;\r
20 import com.billkuker.rocketry.motorsim.io.MotorIO;\r
21 import com.billkuker.rocketry.motorsim.visual.MultiObjectEditor;\r
22 \r
23 public class MotorsEditor extends MultiObjectEditor<Motor, MotorEditor> {\r
24         private static final long serialVersionUID = 1L;\r
25         \r
26         MultiBurnChart mbc = new MultiBurnChart();\r
27 \r
28         public MotorsEditor(JFrame f) {\r
29                 super(f, "Motor");\r
30                 \r
31                 addTab("Thrust Graphs", mbc);\r
32                 \r
33                 addCreator(new ObjectCreator() {\r
34                         @Override\r
35                         public Motor newObject() {\r
36                                 return MotorEditor.defaultMotor();\r
37                         }\r
38 \r
39                         @Override\r
40                         public String getName() {\r
41                                 return "Motor";\r
42                         }\r
43                 });\r
44         }\r
45         \r
46         @Override\r
47         protected void objectAdded(Motor m, MotorEditor e){\r
48                 e.addBurnWatcher(mbc);\r
49         }\r
50         \r
51         @Override\r
52         protected void objectRemoved(Motor m, MotorEditor e){\r
53                 mbc.removeBurn(e.burn);\r
54         }\r
55 \r
56         @Override\r
57         public MotorEditor createEditor(Motor o) {\r
58                 return new MotorEditor(o);\r
59         }\r
60 \r
61 \r
62         @Override\r
63         protected Motor loadFromFile(File f) throws IOException {\r
64                 return MotorIO.readMotor(new FileInputStream(f));\r
65         }\r
66 \r
67         @Override\r
68         protected void saveToFile(Motor o, File f) throws IOException {\r
69                 MotorIO.writeMotor(o, new FileOutputStream(f));\r
70         }\r
71 \r
72         \r
73         @Override\r
74         public JMenu getMenu(){\r
75                 JMenu ret = super.getMenu();\r
76                 ret.add(new JSeparator());\r
77                 ret.add(new JMenuItem("Export .ENG"){\r
78                         private static final long serialVersionUID = 1L;\r
79                         {\r
80                                 addActionListener(new ActionListener() {\r
81                                         @Override\r
82                                         public void actionPerformed(ActionEvent arg0) {\r
83 \r
84                                                 final FileDialog fd = new FileDialog(frame, "Export .ENG File", FileDialog.SAVE);\r
85                                                 fd.setFile("motorsim.eng");\r
86                                                 fd.setVisible(true);\r
87                                                 if (fd.getFile() != null) {\r
88                                                         File file = new File(fd.getDirectory()\r
89                                                                         + fd.getFile());\r
90                                                         MotorEditor me = getSelectedEditor();\r
91                                                         Vector<Burn> bb = new Vector<Burn>();\r
92                                                         bb.add(me.burn);\r
93                                                         try {\r
94                                                                 ENGExporter.export(bb, file);\r
95                                                         } catch (IOException e) {\r
96                                                                 // TODO Auto-generated catch block\r
97                                                                 e.printStackTrace();\r
98                                                         }\r
99                                                 }\r
100                                         }\r
101                                 });\r
102                         }\r
103                 });\r
104                 return ret;\r
105         }\r
106 }\r