Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / gui / util / SwingPreferences.java
index 45f2e0dc2944d074d5f4d5153ed819f5258bf2b6..61e6be857657536c10f4a30291040b7ec7a040fc 100644 (file)
@@ -5,6 +5,7 @@ import java.awt.Dimension;
 import java.awt.Point;
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -17,6 +18,7 @@ import net.sf.openrocket.arch.SystemInfo;
 import net.sf.openrocket.document.Simulation;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.material.Material;
+import net.sf.openrocket.preset.ComponentPreset;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.simulation.FlightDataType;
 import net.sf.openrocket.simulation.RK4SimulationStepper;
@@ -32,17 +34,17 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        
        private static final String SPLIT_CHARACTER = "|";
        
-
+       
        private static final List<Locale> SUPPORTED_LOCALES;
        static {
                List<Locale> list = new ArrayList<Locale>();
-               for (String lang : new String[] { "en", "de", "es", "fr", "it", "ru" }) {
+               for (String lang : new String[] { "en", "de", "es", "fr", "it", "ru", "cs", "pl" }) {
                        list.add(new Locale(lang));
                }
                SUPPORTED_LOCALES = Collections.unmodifiableList(list);
        }
        
-
+       
        /**
         * Whether to use the debug-node instead of the normal node.
         */
@@ -62,9 +64,9 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
         */
        private static final String NODENAME = (DEBUG ? "OpenRocket-debug" : "OpenRocket");
        
-       private  final Preferences PREFNODE;
+       private final Preferences PREFNODE;
+       
        
-
        public SwingPreferences() {
                Preferences root = Preferences.userRoot();
                if (DEBUG && CLEARPREFS) {
@@ -79,13 +81,13 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
                PREFNODE = root.node(NODENAME);
        }
        
-
-
+       
+       
        
        //////////////////////
        
-
-
+       
+       
        /**
         * Store the current OpenRocket version into the preferences to allow for preferences migration.
         */
@@ -106,9 +108,9 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        @Override
-       public String getString( String directory, String key, String defaultValue ) {
+       public String getString(String directory, String key, String defaultValue) {
                Preferences p = PREFNODE.node(directory);
-               return p.get(key,defaultValue);
+               return p.get(key, defaultValue);
        }
        
        /**
@@ -128,12 +130,12 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        @Override
-       public void putString(String directory, String key, String value ) {
+       public void putString(String directory, String key, String value) {
                Preferences p = PREFNODE.node(directory);
-               if ( value == null ) {
+               if (value == null) {
                        p.remove(key);
                } else {
-                       p.put(key,value);
+                       p.put(key, value);
                }
                storeVersion();
        }
@@ -163,29 +165,29 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        @Override
-       public int getInt( String key, int defaultValue ) {
+       public int getInt(String key, int defaultValue) {
                return PREFNODE.getInt(key, defaultValue);
        }
        
        @Override
-       public void putInt( String key , int value ) {
-               PREFNODE.putInt(key, value );
+       public void putInt(String key, int value) {
+               PREFNODE.putInt(key, value);
                storeVersion();
        }
        
        @Override
        public double getDouble(String key, double defaultValue) {
-               return PREFNODE.getDouble(key,  defaultValue );
+               return PREFNODE.getDouble(key, defaultValue);
        }
-
+       
        @Override
        public void putDouble(String key, double value) {
-               PREFNODE.putDouble(key,value);
+               PREFNODE.putDouble(key, value);
                storeVersion();
        }
-
-
-
+       
+       
+       
        /**
         * Return a preferences object for the specified node name.
         * 
@@ -199,7 +201,7 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        
        //////////////////
        
-
+       
        public static List<Locale> getSupportedLocales() {
                return SUPPORTED_LOCALES;
        }
@@ -328,8 +330,8 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        
-
-
+       
+       
        public Dimension getWindowSize(Class<?> c) {
                int x, y;
                String pref = PREFNODE.node("windows").get("size." + c.getCanonicalName(), null);
@@ -370,9 +372,9 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
         * you can pass (java.awt.Color) null to the second argument to
         * disambiguate
         */
-       public Color getColor( String key, Color defaultValue ) {
+       public Color getColor(String key, Color defaultValue) {
                net.sf.openrocket.util.Color c = super.getColor(key, (net.sf.openrocket.util.Color) null);
-               if ( c == null ) {
+               if (c == null) {
                        return defaultValue;
                }
                return ColorConversion.toAwtColor(c);
@@ -381,9 +383,9 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        /**
         * 
         */
-       public void putColor( String key, Color value ) {
+       public void putColor(String key, Color value) {
                net.sf.openrocket.util.Color c = ColorConversion.fromAwtColor(value);
-               super.putColor(key,  c); 
+               super.putColor(key, c);
        }
        
        ////  Printing
@@ -407,7 +409,7 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        
-
+       
        /////////  Export variables
        
        public boolean isExportSelected(FlightDataType type) {
@@ -421,7 +423,7 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        
-
+       
        /////////  Default unit storage
        
        public void loadDefaultUnits() {
@@ -457,10 +459,10 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        
-
+       
        ////  Material storage
        
-
+       
        /**
         * Add a user-defined material to the preferences.  The preferences are
         * first checked for an existing material matching the provided one using
@@ -468,10 +470,11 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
         * 
         * @param m             the material to add.
         */
+       @Override
        public void addUserMaterial(Material m) {
                Preferences prefs = PREFNODE.node("userMaterials");
                
-
+               
                // Check whether material already exists
                if (getUserMaterials().contains(m)) {
                        return;
@@ -495,6 +498,7 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
         * 
         * @param m             the material to remove.
         */
+       @Override
        public void removeUserMaterial(Material m) {
                Preferences prefs = PREFNODE.node("userMaterials");
                
@@ -527,6 +531,7 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
         * 
         * @return      a set of all user-defined materials.
         */
+       @Override
        public Set<Material> getUserMaterials() {
                Preferences prefs = PREFNODE.node("userMaterials");
                
@@ -553,7 +558,27 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
                return materials;
        }
        
+       @Override
+       public void setComponentFavorite(ComponentPreset preset, ComponentPreset.Type type, boolean favorite) {
+               Preferences prefs = PREFNODE.node("favoritePresets").node(type.name());
+               if (favorite) {
+                       prefs.putBoolean(preset.preferenceKey(), true);
+               } else {
+                       prefs.remove(preset.preferenceKey());
+               }
+       }
        
+       @Override
+       public Set<String> getComponentFavorites(ComponentPreset.Type type) {
+               Preferences prefs = PREFNODE.node("favoritePresets").node(type.name());
+               Set<String> collection = new HashSet<String>();
+               try {
+                       collection.addAll(Arrays.asList(prefs.keys()));
+               } catch (BackingStoreException bex) {
+                       
+               }
+               return collection;
+       }
        ////  Helper methods
        
 }