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:
parent
a66876049c
commit
2b802c2f7d
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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()));
|
||||
|
@ -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());
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user