Save preferred units as user preference
authorBill Kuker <bkuker@billkuker.com>
Sun, 24 Oct 2010 19:08:31 +0000 (19:08 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sun, 24 Oct 2010 19:08:31 +0000 (19:08 +0000)
src/com/billkuker/rocketry/motorsim/RocketScience.java
src/com/billkuker/rocketry/motorsim/visual/Chart.java
src/com/billkuker/rocketry/motorsim/visual/CrappyEditor.java [deleted file]
src/com/billkuker/rocketry/motorsim/visual/workbench/MotorWorkbench.java
src/com/billkuker/rocketry/motorsim/visual/workbench/MultiBurnChart.java
src/com/billkuker/rocketry/motorsim/visual/workbench/SRFuelEditor.java

index a76d0abb8cb805218ec80ca6a1047fe061f60747..ecb2e5bd76f6d78ae82fb7ffe7a5908e488dee1c 100644 (file)
@@ -3,6 +3,7 @@ package com.billkuker.rocketry.motorsim;
 import java.text.DecimalFormat;\r
 import java.util.HashSet;\r
 import java.util.Set;\r
+import java.util.prefs.Preferences;\r
 \r
 import javax.measure.quantity.Pressure;\r
 import javax.measure.quantity.Quantity;\r
@@ -47,7 +48,23 @@ public class RocketScience {
                                NEWTON_SECOND\r
                });\r
                \r
-               public static UnitPreference preference = SI;\r
+               private static UnitPreference preference = SI;\r
+\r
+               static {\r
+                       Preferences prefs = Preferences.userNodeForPackage(RocketScience.class);\r
+                       String p = prefs.get("PreferedUnits", "SI");\r
+                       preference = UnitPreference.valueOf(p);\r
+               }\r
+               \r
+               public static UnitPreference getUnitPreference(){\r
+                       return preference;\r
+               }\r
+               \r
+               public static void setUnitPreference( final UnitPreference up ){\r
+                       preference = up;\r
+                       Preferences prefs = Preferences.userNodeForPackage(RocketScience.class);\r
+                       prefs.put("PreferedUnits", up.toString());\r
+               }\r
                \r
                protected Set<Unit<?>> units = new HashSet<Unit<?>>();\r
                \r
index 6f3b65729cb27fa6bae72dd30e2d97c530a8ebd2..2020bddbf73db0112ab95f16d29664a2a8944e71 100644 (file)
@@ -111,9 +111,9 @@ public class Chart<X extends Quantity, Y extends Quantity> extends JPanel {
                this.source = source;\r
 \r
 \r
-               this.xUnit = RocketScience.UnitPreference.preference\r
+               this.xUnit = RocketScience.UnitPreference.getUnitPreference()\r
                                .getPreferredUnit(xUnit);\r
-               this.yUnit = RocketScience.UnitPreference.preference\r
+               this.yUnit = RocketScience.UnitPreference.getUnitPreference()\r
                                .getPreferredUnit(yUnit);\r
 \r
                chart = ChartFactory.createXYLineChart(method.substring(0, 1)\r
diff --git a/src/com/billkuker/rocketry/motorsim/visual/CrappyEditor.java b/src/com/billkuker/rocketry/motorsim/visual/CrappyEditor.java
deleted file mode 100644 (file)
index c83977c..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-package com.billkuker.rocketry.motorsim.visual;\r
-\r
-import java.awt.BorderLayout;\r
-import java.awt.FlowLayout;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
-import java.beans.PropertyVetoException;\r
-import java.io.IOException;\r
-\r
-import javax.measure.unit.SI;\r
-import javax.swing.ButtonGroup;\r
-import javax.swing.JButton;\r
-import javax.swing.JFrame;\r
-import javax.swing.JPanel;\r
-import javax.swing.JRadioButton;\r
-import javax.swing.JTabbedPane;\r
-import javax.swing.UIManager;\r
-\r
-import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;\r
-import org.fife.ui.rsyntaxtextarea.SyntaxConstants;\r
-import org.jscience.physics.amount.Amount;\r
-\r
-import com.billkuker.rocketry.motorsim.Burn;\r
-import com.billkuker.rocketry.motorsim.ConvergentDivergentNozzle;\r
-import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
-import com.billkuker.rocketry.motorsim.Motor;\r
-import com.billkuker.rocketry.motorsim.RocketScience.UnitPreference;\r
-import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
-import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain;\r
-import com.billkuker.rocketry.motorsim.grain.MultiGrain;\r
-import com.billkuker.rocketry.motorsim.io.MotorIO;\r
-import com.billkuker.rocketry.motorsim.motors.example.CSlot;\r
-import com.billkuker.rocketry.motorsim.motors.example.EndBurner;\r
-\r
-public class CrappyEditor extends JFrame {\r
-       private static final long serialVersionUID = 1L;\r
-       JTabbedPane tabs;\r
-\r
-       public CrappyEditor() {\r
-               setTitle("MotorSim v0.3");\r
-               setSize(1024, 768);\r
-               setDefaultCloseOperation(DISPOSE_ON_CLOSE);\r
-\r
-               try {\r
-                       UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());\r
-               } catch (Exception e1) {\r
-                       e1.printStackTrace();\r
-               }\r
-               tabs = new JTabbedPane();\r
-               setContentPane(tabs);\r
-               tabs.addTab("Edit", new Editor(defaultMotor()));\r
-\r
-       }\r
-\r
-       private class Editor extends JPanel {\r
-               private static final long serialVersionUID = 1L;\r
-               RSyntaxTextArea text = new RSyntaxTextArea();\r
-\r
-               Editor(Motor m) {\r
-                       setLayout(new BorderLayout());\r
-                       add(text, BorderLayout.CENTER);\r
-                       JPanel buttons = new JPanel(new FlowLayout());\r
-\r
-                       buttons.add(new JButton("Burn!") {\r
-                               private static final long serialVersionUID = 1L;\r
-                               {\r
-                                       addActionListener(new ActionListener() {\r
-                                               public void actionPerformed(ActionEvent arg0) {\r
-                                                       burn();\r
-                                               }\r
-                                       });\r
-                               }\r
-                       });\r
-\r
-\r
-                       JRadioButton s, n;\r
-                       buttons.add(s = new JRadioButton("SI"));\r
-                       buttons.add(n = new JRadioButton("NonSI"));\r
-                       ButtonGroup g = new ButtonGroup();\r
-                       g.add(s);\r
-                       g.add(n);\r
-                       s.setSelected(true);\r
-                       s.addActionListener(new ActionListener() {\r
-                               public void actionPerformed(ActionEvent arg0) {\r
-                                       UnitPreference.preference = UnitPreference.SI;\r
-                               }\r
-                       });\r
-                       n.addActionListener(new ActionListener() {\r
-                               public void actionPerformed(ActionEvent arg0) {\r
-                                       UnitPreference.preference = UnitPreference.NONSI;\r
-                               }\r
-                       });\r
-                       \r
-                       buttons.add(new JButton("End Burner Example") {\r
-                               private static final long serialVersionUID = 1L;\r
-                               {\r
-                                       addActionListener(new ActionListener() {\r
-                                               public void actionPerformed(ActionEvent arg0) {\r
-                                                               tabs.addTab(getText(), new BurnPanel(new Burn(new EndBurner())));\r
-                                               }\r
-                                       });\r
-                               }\r
-                       });\r
-                       \r
-                       buttons.add(new JButton("C-Slot Example") {\r
-                               private static final long serialVersionUID = 1L;\r
-                               {\r
-                                       addActionListener(new ActionListener() {\r
-                                               public void actionPerformed(ActionEvent arg0) {\r
-                                                               tabs.addTab(getText(), new BurnPanel(new Burn(new CSlot())));\r
-                                               }\r
-                                       });\r
-                               }\r
-                       });\r
-                       \r
-                       add(buttons, BorderLayout.SOUTH);\r
-                       text.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_XML);\r
-\r
-                       try {\r
-                               text.setText(MotorIO.writeMotor(m));\r
-                       } catch (IOException e) {\r
-                               e.printStackTrace();\r
-                       }\r
-\r
-               }\r
-\r
-               private void burn() {\r
-                       try {\r
-                               Motor m = MotorIO.readMotor(text.getText());\r
-                               Burn b = new Burn(m);\r
-                               tabs.addTab(m.getName() + " Output", new BurnPanel(b));\r
-                       } catch (IOException e) {\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-       }\r
-\r
-       private Motor defaultMotor() {\r
-               Motor m = new Motor();\r
-               m.setName("Example Motor");\r
-               m.setFuel(new KNSU());\r
-\r
-               CylindricalChamber c = new CylindricalChamber();\r
-               c.setLength(Amount.valueOf(200, SI.MILLIMETER));\r
-               c.setID(Amount.valueOf(25, SI.MILLIMETER));\r
-               m.setChamber(c);\r
-\r
-               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
-               try {\r
-                       g.setLength(Amount.valueOf(70, SI.MILLIMETER));\r
-                       g.setOD(Amount.valueOf(23.5, SI.MILLIMETER));\r
-                       g.setID(Amount.valueOf(7.9375, SI.MILLIMETER));\r
-               } catch (PropertyVetoException v) {\r
-                       throw new Error(v);\r
-               }\r
-\r
-               m.setGrain(new MultiGrain(g, 2));\r
-\r
-\r
-               ConvergentDivergentNozzle n = new ConvergentDivergentNozzle();\r
-               n.setThroatDiameter(Amount.valueOf(7.962, SI.MILLIMETER));\r
-               n.setExitDiameter(Amount.valueOf(13.79, SI.MILLIMETER));\r
-               n.setEfficiency(.85);\r
-               m.setNozzle(n);\r
-\r
-               return m;\r
-       }\r
-       \r
-\r
-       public static void main(String args[]) {\r
-               new CrappyEditor().setVisible(true);\r
-       }\r
-}\r
index c4e299241b3067217ab296afed6ba72435101144..b6047eea3d207304d422013dd17d5140145a1064 100644 (file)
@@ -297,15 +297,18 @@ public class MotorWorkbench extends JFrame implements TreeSelectionListener {
                                                                "NonSI");\r
                                                units.add(sci);\r
                                                units.add(nonsci);\r
-                                               sci.setSelected(true);\r
+                                               sci.setSelected(UnitPreference.getUnitPreference() == UnitPreference.SI);\r
+                                               nonsci.setSelected(UnitPreference.getUnitPreference() == UnitPreference.NONSI);\r
                                                sci.addActionListener(new ActionListener() {\r
                                                        public void actionPerformed(ActionEvent arg0) {\r
-                                                               UnitPreference.preference = UnitPreference.SI;\r
+                                                               UnitPreference\r
+                                                                               .setUnitPreference(UnitPreference.SI);\r
                                                        }\r
                                                });\r
                                                nonsci.addActionListener(new ActionListener() {\r
                                                        public void actionPerformed(ActionEvent arg0) {\r
-                                                               UnitPreference.preference = UnitPreference.NONSI;\r
+                                                               UnitPreference\r
+                                                                               .setUnitPreference(UnitPreference.NONSI);\r
                                                        }\r
                                                });\r
                                                add(sci);\r
index e47e3d646c488f526ba28508c5d54b025b689a1a..ee629d8fec4da4b3e2993674cc4aae036dc89601 100644 (file)
@@ -36,9 +36,9 @@ public class MultiBurnChart extends JPanel implements BurnWatcher {
        @SuppressWarnings("unchecked")
        public MultiBurnChart() {
                this.setLayout(new BorderLayout());
-               time = RocketScience.UnitPreference.preference
+               time = RocketScience.UnitPreference.getUnitPreference()
                                .getPreferredUnit(SI.SECOND);
-               force = RocketScience.UnitPreference.preference
+               force = RocketScience.UnitPreference.getUnitPreference()
                                .getPreferredUnit(SI.NEWTON);
                JFreeChart chart = ChartFactory.createXYLineChart(
                                "", // Title
index ec743ded8d36ba02b9af7518bc6a4ba7f2489990..013216f90b536c9aa25f4ff3e68dab8e799ddcbb 100644 (file)
@@ -44,7 +44,7 @@ public class SRFuelEditor extends JSplitPane {
        Chart<Pressure, Velocity> burnRate;
 
        private class Entry implements Comparable<Entry> {
-               Amount<Pressure> p = Amount.valueOf(0, RocketScience.UnitPreference.preference.getPreferredUnit(RocketScience.PSI));
+               Amount<Pressure> p = Amount.valueOf(0, RocketScience.UnitPreference.getUnitPreference().getPreferredUnit(RocketScience.PSI));
                double a;
                double n;