From 2bddccc8c2e80651f15e0b6c22c23f113c17610a Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Tue, 7 Aug 2012 16:31:00 +0000 Subject: [PATCH] Make preset favorites per component type. That is, a single preset can be a favorite for Tube Couplers, but not be a favorite for Body Tubes. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@958 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../openrocket/android/PreferencesAdapter.java | 6 +++--- .../database/ComponentPresetDao.java | 2 +- .../database/ComponentPresetDatabase.java | 10 ++++++---- .../preset/ComponentPresetChooserDialog.java | 5 +++-- .../dialogs/preset/ComponentPresetTable.java | 18 +++++++++++++++--- .../preset/ComponentPresetTableColumn.java | 17 +++++++++-------- .../openrocket/gui/util/SwingPreferences.java | 8 ++++---- .../sf/openrocket/preset/ComponentPreset.java | 9 --------- .../preset/xml/OpenRocketComponentLoader.java | 8 -------- .../net/sf/openrocket/startup/Preferences.java | 4 ++-- 10 files changed, 43 insertions(+), 44 deletions(-) diff --git a/android/src/net/sf/openrocket/android/PreferencesAdapter.java b/android/src/net/sf/openrocket/android/PreferencesAdapter.java index cce8e992..e4d68a7a 100644 --- a/android/src/net/sf/openrocket/android/PreferencesAdapter.java +++ b/android/src/net/sf/openrocket/android/PreferencesAdapter.java @@ -5,6 +5,7 @@ import java.util.Set; import net.sf.openrocket.material.Material; import net.sf.openrocket.preset.ComponentPreset; +import net.sf.openrocket.preset.ComponentPreset.Type; public class PreferencesAdapter extends net.sf.openrocket.startup.Preferences { @@ -93,12 +94,11 @@ public class PreferencesAdapter extends net.sf.openrocket.startup.Preferences { } @Override - public void setComponentFavorite(ComponentPreset preset, boolean favorite) { - + public void setComponentFavorite(ComponentPreset preset, Type type, boolean favorite) { } @Override - public Set getComponentFavorites() { + public Set getComponentFavorites(Type type) { return Collections.emptySet(); } diff --git a/core/src/net/sf/openrocket/database/ComponentPresetDao.java b/core/src/net/sf/openrocket/database/ComponentPresetDao.java index 4984caeb..a27a7f5d 100644 --- a/core/src/net/sf/openrocket/database/ComponentPresetDao.java +++ b/core/src/net/sf/openrocket/database/ComponentPresetDao.java @@ -26,7 +26,7 @@ public interface ComponentPresetDao { public List listForTypes( List types ); - public void setFavorite( ComponentPreset preset, boolean favorite ); + public void setFavorite( ComponentPreset preset, ComponentPreset.Type type, boolean favorite ); public List find( String manufacturer, String partNo ); diff --git a/core/src/net/sf/openrocket/database/ComponentPresetDatabase.java b/core/src/net/sf/openrocket/database/ComponentPresetDatabase.java index 91cfe609..26cec70d 100644 --- a/core/src/net/sf/openrocket/database/ComponentPresetDatabase.java +++ b/core/src/net/sf/openrocket/database/ComponentPresetDatabase.java @@ -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 List result = new ArrayList(list.size()/6); + Set 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 } @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); } diff --git a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java index b74bd827..8f5b1bbb 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java @@ -59,6 +59,7 @@ public class ComponentPresetChooserDialog extends JDialog { int foreDiameterColumnIndex = -1; private List 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> 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); diff --git a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java index 175e0858..cad447f1 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java @@ -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 sorter; private List presets; + private final ComponentPreset.Type presetType; + private Set favorites; private final AbstractTableModel tableModel; private final XTableColumnModel tableColumnModel; private final ComponentPresetTableColumn[] columns; - public ComponentPresetTable(List presets, List> visibleColumnKeys) { + public ComponentPresetTable(final ComponentPreset.Type presetType, List presets, List> 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 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. diff --git a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTableColumn.java b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTableColumn.java index 70878f5a..5d5d12d6 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTableColumn.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTableColumn.java @@ -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 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 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 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 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; } diff --git a/core/src/net/sf/openrocket/gui/util/SwingPreferences.java b/core/src/net/sf/openrocket/gui/util/SwingPreferences.java index 5633a572..13b24962 100644 --- a/core/src/net/sf/openrocket/gui/util/SwingPreferences.java +++ b/core/src/net/sf/openrocket/gui/util/SwingPreferences.java @@ -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 getComponentFavorites( ) { - Preferences prefs = PREFNODE.node("favoritePresets"); + public Set getComponentFavorites( ComponentPreset.Type type) { + Preferences prefs = PREFNODE.node("favoritePresets").node(type.name()); Set collection = new HashSet(); try { collection.addAll( Arrays.asList(prefs.keys())); diff --git a/core/src/net/sf/openrocket/preset/ComponentPreset.java b/core/src/net/sf/openrocket/preset/ComponentPreset.java index 28afb30d..11a59d14 100644 --- a/core/src/net/sf/openrocket/preset/ComponentPreset.java +++ b/core/src/net/sf/openrocket/preset/ComponentPreset.java @@ -33,7 +33,6 @@ public class ComponentPreset implements Comparable { 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 { 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()); diff --git a/core/src/net/sf/openrocket/preset/xml/OpenRocketComponentLoader.java b/core/src/net/sf/openrocket/preset/xml/OpenRocketComponentLoader.java index fc689319..23c2fe02 100644 --- a/core/src/net/sf/openrocket/preset/xml/OpenRocketComponentLoader.java +++ b/core/src/net/sf/openrocket/preset/xml/OpenRocketComponentLoader.java @@ -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 { log.debug("Loading presets from file " + filename); - Set favorites = Application.getPreferences().getComponentFavorites(); - try { List 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) { diff --git a/core/src/net/sf/openrocket/startup/Preferences.java b/core/src/net/sf/openrocket/startup/Preferences.java index b8270a14..ca82aa3f 100644 --- a/core/src/net/sf/openrocket/startup/Preferences.java +++ b/core/src/net/sf/openrocket/startup/Preferences.java @@ -364,8 +364,8 @@ public abstract class Preferences { public abstract Set getUserMaterials(); public abstract void removeUserMaterial(Material m); - public abstract void setComponentFavorite( ComponentPreset preset, boolean favorite ); - public abstract Set getComponentFavorites( ); + public abstract void setComponentFavorite( ComponentPreset preset, ComponentPreset.Type type, boolean favorite ); + public abstract Set getComponentFavorites( ComponentPreset.Type type ); /* * Map of default line styles -- 2.30.2