package com.billkuker.rocketry.motorsim;\r
\r
+import java.lang.ref.WeakReference;\r
import java.lang.reflect.Field;\r
import java.lang.reflect.Modifier;\r
import java.text.DecimalFormat;\r
public static Unit<Impulse> UNIT = NEWTON_SECOND;\r
}\r
\r
- private static HashSet<UnitPreferenceListener> prefListeners = new HashSet<RocketScience.UnitPreferenceListener>();\r
+ private static HashSet<WeakReference<UnitPreferenceListener>> prefListeners = new HashSet<WeakReference<UnitPreferenceListener>>();\r
public static interface UnitPreferenceListener{\r
public void preferredUnitsChanged();\r
}\r
public static void addUnitPreferenceListener(UnitPreferenceListener l){\r
- prefListeners.add(l);\r
+ prefListeners.add(new WeakReference<RocketScience.UnitPreferenceListener>(l));\r
}\r
\r
public static enum UnitPreference{\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
+ for ( WeakReference<UnitPreferenceListener> weak : prefListeners ){\r
+ UnitPreferenceListener l = weak.get();\r
+ if ( l != null )\r
+ l.preferredUnitsChanged();\r
}\r
}\r
\r