Add preferredUnitListener
authorBill Kuker <bkuker@billkuker.com>
Mon, 22 Nov 2010 18:48:10 +0000 (18:48 +0000)
committerBill Kuker <bkuker@billkuker.com>
Mon, 22 Nov 2010 18:48:10 +0000 (18:48 +0000)
src/com/billkuker/rocketry/motorsim/RocketScience.java

index fb13ebb08da1fca7309c35dc598dd3244e96beb0..81cbbcea7878290c2678d5ea7ad49f4b5a7df9c3 100644 (file)
@@ -35,6 +35,14 @@ public class RocketScience {
        public interface Impulse extends Quantity {\r
                public static Unit<Impulse> UNIT = NEWTON_SECOND;\r
        }\r
+       \r
+       private static HashSet<UnitPreferenceListener> prefListeners = new HashSet<RocketScience.UnitPreferenceListener>();\r
+       public static interface UnitPreferenceListener{\r
+               public void preferredUnitsChanged();\r
+       }\r
+       public static void addUnitPreferenceListener(UnitPreferenceListener l){\r
+               prefListeners.add(l);\r
+       }\r
 \r
        public static enum UnitPreference{\r
                SI(new Unit[]{\r
@@ -69,9 +77,14 @@ public class RocketScience {
                }\r
                \r
                public static void setUnitPreference( final UnitPreference up ){\r
+                       if ( preference == up )\r
+                               return;\r
                        preference = up;\r
                        Preferences prefs = Preferences.userNodeForPackage(RocketScience.class);\r
                        prefs.put("PreferedUnits", up.toString());\r
+                       for ( UnitPreferenceListener l : prefListeners ){\r
+                               l.preferredUnitsChanged();\r
+                       }\r
                }\r
                \r
                protected Set<Unit<?>> units = new HashSet<Unit<?>>();\r