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