Make preset favorites per component type. That is, a single preset can be a favorite...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Tue, 7 Aug 2012 16:31:00 +0000 (16:31 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Tue, 7 Aug 2012 16:31:00 +0000 (16:31 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@958 180e2498-e6e9-4542-8430-84ac67f01cd8

android/src/net/sf/openrocket/android/PreferencesAdapter.java
core/src/net/sf/openrocket/database/ComponentPresetDao.java
core/src/net/sf/openrocket/database/ComponentPresetDatabase.java
core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java
core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java
core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTableColumn.java
core/src/net/sf/openrocket/gui/util/SwingPreferences.java
core/src/net/sf/openrocket/preset/ComponentPreset.java
core/src/net/sf/openrocket/preset/xml/OpenRocketComponentLoader.java
core/src/net/sf/openrocket/startup/Preferences.java

index cce8e9921684448afa952ca5dbe560caffb0df34..e4d68a7a54b8aee287d1c1aaa5b1d032a5329bbb 100644 (file)
@@ -5,6 +5,7 @@ import java.util.Set;
 \r
 import net.sf.openrocket.material.Material;\r
 import net.sf.openrocket.preset.ComponentPreset;\r
+import net.sf.openrocket.preset.ComponentPreset.Type;\r
 \r
 public class PreferencesAdapter extends net.sf.openrocket.startup.Preferences {\r
 \r
@@ -93,12 +94,11 @@ public class PreferencesAdapter extends net.sf.openrocket.startup.Preferences {
        }\r
 \r
        @Override\r
-       public void setComponentFavorite(ComponentPreset preset, boolean favorite) {\r
-               \r
+       public void setComponentFavorite(ComponentPreset preset, Type type,     boolean favorite) {\r
        }\r
 \r
        @Override\r
-       public Set<String> getComponentFavorites() {\r
+       public Set<String> getComponentFavorites(Type type) {\r
                return Collections.<String>emptySet();\r
        }\r
 \r
index 4984caebbab2c1b7092aec7c3932c8219ec13aa5..a27a7f5d424304295d84c631ea261be95a019b82 100644 (file)
@@ -26,7 +26,7 @@ public interface ComponentPresetDao {
        
        public List<ComponentPreset> listForTypes( List<ComponentPreset.Type> types );
 
-       public void setFavorite( ComponentPreset preset, boolean favorite );
+       public void setFavorite( ComponentPreset preset, ComponentPreset.Type type, boolean favorite );
        
        public List<ComponentPreset> find( String manufacturer, String partNo );
        
index 91cfe609f93e1e3246452fd6184797f7b3fd0e91..26cec70d20b202e36df44b0d4c818d8b3c33c928 100644 (file)
@@ -3,6 +3,7 @@ package net.sf.openrocket.database;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.preset.ComponentPreset;
@@ -76,8 +77,10 @@ public abstract class ComponentPresetDatabase extends Database<ComponentPreset>
 
                List<ComponentPreset> result = new ArrayList<ComponentPreset>(list.size()/6);
 
+               Set<String> favorites = Application.getPreferences().getComponentFavorites(type);
+
                for( ComponentPreset preset : list ) {
-                       if ( preset.isFavorite() && preset.get(ComponentPreset.TYPE).equals(type) ) {
+                       if ( preset.get(ComponentPreset.TYPE).equals(type) && favorites.contains(preset.preferenceKey())) {
                                result.add(preset);
                        }
                }
@@ -130,10 +133,9 @@ public abstract class ComponentPresetDatabase extends Database<ComponentPreset>
        }
 
        @Override
-       public void setFavorite( ComponentPreset preset, boolean favorite ) {
+       public void setFavorite( ComponentPreset preset, ComponentPreset.Type type, boolean favorite ) {
                blockUntilLoaded();
-               preset.setFavorite(favorite);
-               Application.getPreferences().setComponentFavorite( preset, favorite );
+               Application.getPreferences().setComponentFavorite( preset, type, favorite );
                this.fireAddEvent(preset);
        }
 
index b74bd827182dec2e0613f812b2e08808eec3772f..8f5b1bbbf8268649cafeba913d6232839af7d40e 100644 (file)
@@ -59,6 +59,7 @@ public class ComponentPresetChooserDialog extends JDialog {
        int foreDiameterColumnIndex = -1;
        
        private List<ComponentPreset> presets;
+       private ComponentPreset.Type presetType;
        
        private boolean okClicked = false;
        
@@ -66,6 +67,7 @@ public class ComponentPresetChooserDialog extends JDialog {
        public ComponentPresetChooserDialog(Window owner, RocketComponent component) {
                super(owner, trans.get("title"), Dialog.ModalityType.APPLICATION_MODAL);
                this.component = component;
+               this.presetType = component.getPresetType();
                this.presets = Application.getComponentPresetDao().listForType(component.getPresetType());
                
                List<TypedKey<?>> displayedColumnKeys = Arrays.asList(component.getPresetType().getDisplayedColumns());
@@ -125,8 +127,7 @@ public class ComponentPresetChooserDialog extends JDialog {
                
                panel.add(getFilterCheckboxes(), "wrap para");
                
-               
-               componentSelectionTable = new ComponentPresetTable(presets, displayedColumnKeys);
+               componentSelectionTable = new ComponentPresetTable(presetType, presets, displayedColumnKeys);
                //              GUIUtil.setAutomaticColumnTableWidths(componentSelectionTable, 20);
                int w = componentSelectionTable.getRowHeight() + 4;
                TableColumn tc = componentSelectionTable.getColumnModel().getColumn(0);
index 175e08585095c9d0733493d4c07890a825d8ed21..cad447f1d669aac2d05405e192a89e4c8b5d9143 100644 (file)
@@ -8,6 +8,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JMenu;
@@ -38,13 +39,17 @@ public class ComponentPresetTable extends JTable {
 
        private final TableRowSorter<TableModel> sorter;
        private List<ComponentPreset> presets;
+       private final ComponentPreset.Type presetType;
+       private Set<String> favorites;
        private final AbstractTableModel tableModel;
        private final XTableColumnModel tableColumnModel;
        private final ComponentPresetTableColumn[] columns;
 
-       public ComponentPresetTable(List<ComponentPreset> presets, List<TypedKey<?>> visibleColumnKeys) {
+       public ComponentPresetTable(final ComponentPreset.Type presetType, List<ComponentPreset> presets, List<TypedKey<?>> visibleColumnKeys) {
                super();
                this.presets = presets;
+               this.presetType = presetType;
+               this.favorites = Application.getPreferences().getComponentFavorites(presetType);
                this.columns = new ComponentPresetTableColumn[ComponentPreset.ORDERED_KEY_LIST.size()+1];
 
 
@@ -62,7 +67,7 @@ public class ComponentPresetTable extends JTable {
 
                        @Override
                        public Object getValueAt(int rowIndex, int columnIndex) {
-                               return myColumns[columnIndex].getValueFromPreset(ComponentPresetTable.this.presets.get(rowIndex));
+                               return myColumns[columnIndex].getValueFromPreset(favorites,ComponentPresetTable.this.presets.get(rowIndex));
                        }
 
                        @Override
@@ -72,7 +77,8 @@ public class ComponentPresetTable extends JTable {
                                        return;
                                }
                                ComponentPreset preset = ComponentPresetTable.this.presets.get(rowIndex);
-                               Application.getComponentPresetDao().setFavorite(preset, (Boolean) aValue);
+                               Application.getComponentPresetDao().setFavorite(preset, presetType, (Boolean) aValue);
+                               ComponentPresetTable.this.updateFavorites();
                        }
 
                        @Override
@@ -164,9 +170,15 @@ public class ComponentPresetTable extends JTable {
 
        public void updateData( List<ComponentPreset> presets ) {
                this.presets = presets;
+               this.favorites = Application.getPreferences().getComponentFavorites(presetType);
                this.tableModel.fireTableDataChanged();
        }
        
+       public void updateFavorites() {
+               this.favorites = Application.getPreferences().getComponentFavorites(presetType);
+               this.tableModel.fireTableDataChanged();
+       }
+
        private void doPopup(MouseEvent evt ) {
                
                // Figure out what column header was clicked on.
index 70878f5abbcabbbe6defcbd08825592824383aaf..5d5d12d6a5b67372ec40995d8999c981bc0fda87 100644 (file)
@@ -1,6 +1,7 @@
 package net.sf.openrocket.gui.dialogs.preset;
 
-import javax.swing.table.TableCellEditor;
+import java.util.Set;
+
 import javax.swing.table.TableColumn;
 
 import net.sf.openrocket.l10n.Translator;
@@ -21,7 +22,7 @@ public abstract class ComponentPresetTableColumn extends TableColumn {
        
        }
        
-       public abstract Object getValueFromPreset( ComponentPreset preset );
+       public abstract Object getValueFromPreset( Set<String> favorites, ComponentPreset preset );
        
        public static class Favorite extends ComponentPresetTableColumn {
 
@@ -30,8 +31,8 @@ public abstract class ComponentPresetTableColumn extends TableColumn {
                }
                
                @Override
-               public Object getValueFromPreset( ComponentPreset preset ) {
-                       return Boolean.valueOf(preset.isFavorite());
+               public Object getValueFromPreset( Set<String> favorites, ComponentPreset preset ) {
+                       return Boolean.valueOf(favorites.contains(preset.preferenceKey()));
                }
 
        }
@@ -46,7 +47,7 @@ public abstract class ComponentPresetTableColumn extends TableColumn {
                }
 
                @Override
-               public Object getValueFromPreset(ComponentPreset preset) {
+               public Object getValueFromPreset(Set<String> favorites, ComponentPreset preset) {
                        return preset.has(key) ? preset.get(key) : null;
                }
                
@@ -65,10 +66,10 @@ public abstract class ComponentPresetTableColumn extends TableColumn {
                }
 
                @Override
-               public Object getValueFromPreset(ComponentPreset preset) {
-                       Double value = (Double) super.getValueFromPreset(preset);
+               public Object getValueFromPreset(Set<String> favorites, ComponentPreset preset) {
+                       Double value = (Double) super.getValueFromPreset(favorites, preset);
                        if ( value != null ) {
-                               return new Value((Double)super.getValueFromPreset(preset),selectedUnit);
+                               return new Value((Double)super.getValueFromPreset(favorites, preset),selectedUnit);
                        } else {
                                return null;
                        }
index 5633a57286a96147c4939b1f1da8154c285ef4fb..13b24962b81e309b9ae0e546966e1cc31f28005e 100644 (file)
@@ -560,8 +560,8 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        @Override
-       public void setComponentFavorite( ComponentPreset preset, boolean favorite ) {
-               Preferences prefs = PREFNODE.node("favoritePresets");
+       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 {
@@ -570,8 +570,8 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences {
        }
        
        @Override
-       public Set<String> getComponentFavorites( ) {
-               Preferences prefs = PREFNODE.node("favoritePresets");
+       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()));
index 28afb30db9f83b94924b8bddc6c3d5ecdadf4ae9..11a59d14a7c63ac0b64079671830bcb34f581fcf 100644 (file)
@@ -33,7 +33,6 @@ public class ComponentPreset implements Comparable<ComponentPreset> {
        
        private final TypedPropertyMap properties = new TypedPropertyMap();
        
-       private boolean favorite = false;
        private String digest = "";
        
        public enum Type {
@@ -273,14 +272,6 @@ public class ComponentPreset implements Comparable<ComponentPreset> {
                return value;
        }
        
-       public boolean isFavorite() {
-               return favorite;
-       }
-       
-       public void setFavorite(boolean favorite) {
-               this.favorite = favorite;
-       }
-       
        @Override
        public int compareTo(ComponentPreset p2) {
                int manuCompare = this.getManufacturer().getSimpleName().compareTo(p2.getManufacturer().getSimpleName());
index fc6893195a1cdfd78f0114ba8b9488070f7783b8..23c2fe02908406256e31ab2f1ce04590b68201bf 100644 (file)
@@ -4,7 +4,6 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Collection;
 import java.util.List;
-import java.util.Set;
 
 import javax.xml.bind.JAXBException;
 
@@ -24,16 +23,9 @@ public class OpenRocketComponentLoader  implements Loader<ComponentPreset> {
 
                log.debug("Loading presets from file " + filename);
 
-               Set<String> favorites = Application.getPreferences().getComponentFavorites();
-
                try {
                        List<ComponentPreset> presets;
                        presets = (new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent( new InputStreamReader (stream))).asComponentPresets();
-                       for( ComponentPreset preset : presets ) {
-                               if ( favorites.contains(preset.preferenceKey())) {
-                                       preset.setFavorite(true);
-                               }
-                       }                               
                        log.debug("ComponentPreset file " + filename + " contained " + presets.size() + " presets");
                        return presets;
                } catch (JAXBException e) {
index b8270a14e193cb68ebeba93dac3273b136fd1e72..ca82aa3f1961d89a379abda2274e4fd57351cd6f 100644 (file)
@@ -364,8 +364,8 @@ public abstract class Preferences {
        public abstract Set<Material> getUserMaterials();\r
        public abstract void removeUserMaterial(Material m);\r
 \r
-       public abstract void setComponentFavorite( ComponentPreset preset, boolean favorite );\r
-       public abstract Set<String> getComponentFavorites( );\r
+       public abstract void setComponentFavorite( ComponentPreset preset, ComponentPreset.Type type, boolean favorite );\r
+       public abstract Set<String> getComponentFavorites( ComponentPreset.Type type );\r
 \r
        /*\r
         * Map of default line styles\r