Use MultiObjectEditor for motors
[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         public MotorsEditor(JFrame f) {\r
27                 super(f, "Motor");\r
28                 addCreator(new ObjectCreator() {\r
29                         @Override\r
30                         public Motor newObject() {\r
31                                 return MotorEditor.defaultMotor();\r
32                         }\r
33 \r
34                         @Override\r
35                         public String getName() {\r
36                                 return "Motor";\r
37                         }\r
38                 });\r
39         }\r
40 \r
41         @Override\r
42         public MotorEditor createEditor(Motor o) {\r
43                 return new MotorEditor(o);\r
44         }\r
45 \r
46 \r
47         @Override\r
48         protected Motor loadFromFile(File f) throws IOException {\r
49                 return MotorIO.readMotor(new FileInputStream(f));\r
50         }\r
51 \r
52         @Override\r
53         protected void saveToFile(Motor o, File f) throws IOException {\r
54                 MotorIO.writeMotor(o, new FileOutputStream(f));\r
55         }\r
56 \r
57         \r
58         @Override\r
59         public JMenu getMenu(){\r
60                 JMenu ret = super.getMenu();\r
61                 ret.add(new JSeparator());\r
62                 ret.add(new JMenuItem("Export .ENG"){\r
63                         private static final long serialVersionUID = 1L;\r
64                         {\r
65                                 addActionListener(new ActionListener() {\r
66                                         @Override\r
67                                         public void actionPerformed(ActionEvent arg0) {\r
68 \r
69                                                 final FileDialog fd = new FileDialog(frame, "Export .ENG File", FileDialog.SAVE);\r
70                                                 fd.setFile("motorsim.eng");\r
71                                                 fd.setVisible(true);\r
72                                                 if (fd.getFile() != null) {\r
73                                                         File file = new File(fd.getDirectory()\r
74                                                                         + fd.getFile());\r
75                                                         MotorEditor me = getSelectedEditor();\r
76                                                         Vector<Burn> bb = new Vector<Burn>();\r
77                                                         bb.add(me.burn);\r
78                                                         try {\r
79                                                                 ENGExporter.export(bb, file);\r
80                                                         } catch (IOException e) {\r
81                                                                 // TODO Auto-generated catch block\r
82                                                                 e.printStackTrace();\r
83                                                         }\r
84                                                 }\r
85                                         }\r
86                                 });\r
87                         }\r
88                 });\r
89                 return ret;\r
90         }\r
91 }\r