From 00fab975b3bea3b01f51d5bb119de0dae980f108 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Thu, 12 Apr 2012 02:35:41 +0000 Subject: [PATCH] Moved the ComponentPresetChooserDialog from the BodyTubeConfig temporary button to the PresetModel drop down. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@537 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../openrocket/gui/adaptors/PresetModel.java | 25 +++++++++++---- .../gui/configdialog/BodyTubeConfig.java | 32 +------------------ .../preset/ComponentPresetChooserDialog.java | 25 ++++++--------- .../sf/openrocket/preset/ComponentPreset.java | 27 +++++++++++++--- 4 files changed, 51 insertions(+), 58 deletions(-) diff --git a/core/src/net/sf/openrocket/gui/adaptors/PresetModel.java b/core/src/net/sf/openrocket/gui/adaptors/PresetModel.java index 3a111d92..881c195f 100644 --- a/core/src/net/sf/openrocket/gui/adaptors/PresetModel.java +++ b/core/src/net/sf/openrocket/gui/adaptors/PresetModel.java @@ -1,12 +1,15 @@ package net.sf.openrocket.gui.adaptors; +import java.awt.Component; import java.util.List; import javax.swing.AbstractListModel; import javax.swing.ComboBoxModel; +import javax.swing.SwingUtilities; import net.sf.openrocket.database.Database; import net.sf.openrocket.database.DatabaseListener; +import net.sf.openrocket.gui.dialogs.preset.ComponentPresetChooserDialog; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.preset.ComponentPreset; @@ -20,16 +23,17 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com private static final LogHelper log = Application.getLogger(); private static final Translator trans = Application.getTranslator(); - private static final String SELECT_PRESET = trans.get("lbl.select"); + private static final String NONE_SELECTED = ""; private static final String SELECT_DATABASE = trans.get("lbl.database"); - + private final Component parent; private final RocketComponent component; private ComponentPreset previousPreset; private List presets; - public PresetModel(RocketComponent component) { + public PresetModel(Component parent, RocketComponent component) { + this.parent = parent; presets = Application.getComponentPresetDao().listForType(component.getPresetType(), true); this.component = component; previousPreset = component.getPresetComponent(); @@ -44,7 +48,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com @Override public Object getElementAt(int index) { if (index == 0) { - return SELECT_PRESET; + return NONE_SELECTED; } if (index == getSize() - 1) { return SELECT_DATABASE; @@ -58,10 +62,17 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com if (item == null) { // FIXME: What to do? - } else if (item.equals(SELECT_PRESET)) { + } else if (item.equals(NONE_SELECTED)) { component.clearPreset(); } else if (item.equals(SELECT_DATABASE)) { - // FIXME: Open database dialog + // FIXME - when the dialog first appears, the preset drop down still is open and has focus. + // we need to force focus to the new dialog. + ComponentPresetChooserDialog dialog = + new ComponentPresetChooserDialog( SwingUtilities.getWindowAncestor(PresetModel.this.parent), + PresetModel.this.component); + dialog.setVisible(true); + ComponentPreset preset = dialog.getSelectedComponentPreset(); + setSelectedItem(preset); } else { // FIXME: Add undo point here component.loadPreset((ComponentPreset) item); @@ -72,7 +83,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com public Object getSelectedItem() { ComponentPreset preset = component.getPresetComponent(); if (preset == null) { - return SELECT_PRESET; + return NONE_SELECTED; } else { return preset; } diff --git a/core/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java b/core/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java index d93112b3..53d4049a 100644 --- a/core/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java +++ b/core/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java @@ -1,16 +1,11 @@ package net.sf.openrocket.gui.configdialog; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; -import javax.swing.SwingUtilities; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.database.ComponentPresetDatabase; @@ -21,10 +16,8 @@ import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.PresetModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; -import net.sf.openrocket.gui.dialogs.preset.ComponentPresetChooserDialog; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; -import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.rocketcomponent.BodyTube; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.startup.Application; @@ -48,34 +41,11 @@ public class BodyTubeConfig extends RocketComponentConfig { //// Body tube template // FIXME: Move to proper location panel.add(new JLabel(trans.get("PresetModel.lbl.select"))); - presetModel = new PresetModel(component); + presetModel = new PresetModel( this, component); ((ComponentPresetDatabase)Application.getComponentPresetDao()).addDatabaseListener(presetModel); presetComboBox = new JComboBox(presetModel); presetComboBox.setEditable(false); panel.add(presetComboBox, "wrap para"); - //FIXME: temporarily put the select from table button in the config dialog. - { - JButton opendialog = new JButton("o"); - opendialog.addActionListener( - new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - ComponentPresetChooserDialog dialog = - new ComponentPresetChooserDialog( SwingUtilities.getWindowAncestor(BodyTubeConfig.this), - BodyTubeConfig.this.component, - ComponentPreset.MANUFACTURER, - ComponentPreset.PARTNO, - ComponentPreset.OUTER_DIAMETER, - ComponentPreset.INNER_DIAMETER, - ComponentPreset.LENGTH); - dialog.setVisible(true); - ComponentPreset preset = dialog.getSelectedComponentPreset(); - } - }); - panel.add( opendialog, "wrap" ); - } - //// Body tube length panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Bodytubelength"))); 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 fef3a26a..e8257745 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java @@ -31,18 +31,16 @@ public class ComponentPresetChooserDialog extends JDialog { private static final Translator trans = Application.getTranslator(); - // private final ThrustCurveMotorSelectionPanel selectionPanel; - - private final RocketComponent component; + private final JTable componentSelectionTable; private final List presets; private boolean okClicked = false; - public ComponentPresetChooserDialog(Window owner, RocketComponent component, final TypedKey... columnKeys) { + public ComponentPresetChooserDialog(Window owner, RocketComponent component) { super(owner, trans.get("title"), Dialog.ModalityType.APPLICATION_MODAL); - this.component = component; + final TypedKey[] columnKeys = component.getPresetType().getDisplayedColumns(); presets = Application.getComponentPresetDao().listAll(); @@ -95,9 +93,9 @@ public class ComponentPresetChooserDialog extends JDialog { }; - final JTable table = new JTable( tableModel ); + componentSelectionTable = new JTable( tableModel ); - table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + componentSelectionTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); final TableRowSorter sorter = new TableRowSorter(tableModel); // FIXME we might need some custom sorters. @@ -105,10 +103,10 @@ public class ComponentPresetChooserDialog extends JDialog { TypedKey column = columnKeys[i]; sorter.setComparator(i, column.getComparator()); }*/ - table.setRowSorter(sorter); + componentSelectionTable.setRowSorter(sorter); JScrollPane scrollpane = new JScrollPane(); - scrollpane.setViewportView(table); + scrollpane.setViewportView(componentSelectionTable); panel.add(scrollpane, "grow, width :500:, height :300:, spanx, wrap para"); @@ -156,18 +154,13 @@ public class ComponentPresetChooserDialog extends JDialog { public ComponentPreset getSelectedComponentPreset() { if (!okClicked) return null; - //return selectionPanel.getSelectedMotor(); - return null; + int row = componentSelectionTable.getSelectedRow(); + return presets.get(row); } public void close(boolean ok) { okClicked = ok; this.setVisible(false); - - ComponentPreset preset = getSelectedComponentPreset(); - if (okClicked && preset != null) { - //selectionPanel.selectedMotor(selected); - } } } diff --git a/core/src/net/sf/openrocket/preset/ComponentPreset.java b/core/src/net/sf/openrocket/preset/ComponentPreset.java index 3da15e26..97a02226 100644 --- a/core/src/net/sf/openrocket/preset/ComponentPreset.java +++ b/core/src/net/sf/openrocket/preset/ComponentPreset.java @@ -36,29 +36,48 @@ public class ComponentPreset implements Comparable { private String digest = ""; public enum Type { - BODY_TUBE, - NOSE_CONE; + BODY_TUBE( new TypedKey[] { + ComponentPreset.MANUFACTURER, + ComponentPreset.PARTNO, + ComponentPreset.OUTER_DIAMETER, + ComponentPreset.INNER_DIAMETER, + ComponentPreset.LENGTH} ), + + NOSE_CONE( new TypedKey[] { + ComponentPreset.MANUFACTURER, + ComponentPreset.PARTNO, + ComponentPreset.OUTER_DIAMETER, + ComponentPreset.INNER_DIAMETER, + ComponentPreset.LENGTH} ) ; Type[] compatibleTypes; + TypedKey[] displayedColumns; - Type () { + Type( TypedKey[] displayedColumns) { compatibleTypes = new Type[1]; compatibleTypes[0] = this; + this.displayedColumns = displayedColumns; } - Type( Type ... t ) { + Type( Type[] t, TypedKey[] displayedColumns ) { compatibleTypes = new Type[t.length+1]; compatibleTypes[0] = this; for( int i=0; i[] getDisplayedColumns() { + return displayedColumns; + } + } public final static TypedKey MANUFACTURER = new TypedKey("Manufacturer", Manufacturer.class); -- 2.30.2