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.

This commit is contained in:
Kevin Ruland 2012-08-07 16:31:00 +00:00
parent a66876049c
commit 2b802c2f7d
10 changed files with 43 additions and 44 deletions

View File

@ -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<String> getComponentFavorites() {
public Set<String> getComponentFavorites(Type type) {
return Collections.<String>emptySet();
}

View 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 );

View 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);
}

View 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);

View 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.

View 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;
}

View 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()));

View 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());

View 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) {

View File

@ -364,8 +364,8 @@ public abstract class Preferences {
public abstract Set<Material> getUserMaterials();
public abstract void removeUserMaterial(Material m);
public abstract void setComponentFavorite( ComponentPreset preset, boolean favorite );
public abstract Set<String> getComponentFavorites( );
public abstract void setComponentFavorite( ComponentPreset preset, ComponentPreset.Type type, boolean favorite );
public abstract Set<String> getComponentFavorites( ComponentPreset.Type type );
/*
* Map of default line styles