Moved the ComponentPresetChooserDialog from the BodyTubeConfig temporary button to...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Thu, 12 Apr 2012 02:35:41 +0000 (02:35 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Thu, 12 Apr 2012 02:35:41 +0000 (02:35 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@537 180e2498-e6e9-4542-8430-84ac67f01cd8

core/src/net/sf/openrocket/gui/adaptors/PresetModel.java
core/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java
core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java
core/src/net/sf/openrocket/preset/ComponentPreset.java

index 3a111d92a1c4f5622d4ba09da05ff35dbeaabb5d..881c195ffb00237e0d64528a48394351b1108368 100644 (file)
@@ -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<ComponentPreset> 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;
                }
index d93112b3a811831c72f96657bb1aa991f1a85c0c..53d4049a059bf1be20b86864f90a5e26b30561ce 100644 (file)
@@ -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")));
index fef3a26a3759776aaabc4a31f1f30c174e032be5..e82577453fbfa6ac750afdd40320279f21a26c8d 100644 (file)
@@ -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<ComponentPreset> 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<TableModel> sorter = new TableRowSorter<TableModel>(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);
-               }
        }
        
 }
index 3da15e2642baf76cb0d73ed622bbbfd28b5ea050..97a02226253f51e1977ea424a5889131cb7c505a 100644 (file)
@@ -36,29 +36,48 @@ public class ComponentPreset implements Comparable<ComponentPreset> {
        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<t.length; i++ ) {
                                compatibleTypes[i+1] = t[i];
                        }
+
+                       this.displayedColumns = displayedColumns;
                }
 
                public Type[] getCompatibleTypes() {
                        return compatibleTypes;
                }
 
+               public TypedKey<?>[] getDisplayedColumns() {
+                       return displayedColumns;
+               }
+
        }
 
        public final static TypedKey<Manufacturer> MANUFACTURER = new TypedKey<Manufacturer>("Manufacturer", Manufacturer.class);