From aaf017aef09554938e90ee25068793e53ff41506 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Thu, 19 Apr 2012 16:18:23 +0000 Subject: [PATCH] Added show all compatible types to Chooser. Revised logic for showing match fore diameter check box. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@573 180e2498-e6e9-4542-8430-84ac67f01cd8 --- core/resources/l10n/messages.properties | 1 + .../preset/ComponentPresetChooserDialog.java | 46 ++++++++++++------- .../dialogs/preset/ComponentPresetTable.java | 8 +++- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index bb61f70e..b15792f8 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -1596,6 +1596,7 @@ ComponentPresetChooserDialog.checkbox.filterForeDiameter = Match fore diameter ComponentPresetChooserDialog.menu.sortAsc = Sort Ascending ComponentPresetChooserDialog.menu.sortDesc = Sort Descending ComponentPresetChooserDialog.menu.units = Units +ComponentPresetChooserDialog.checkbox.showAllCompatible = Show all compatible table.column.Favorite = Favorite table.column.Manufacturer = Manufacturer table.column.PartNo = Part Number 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 4c967a92..fe573e2e 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java @@ -17,27 +17,22 @@ import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.JTable; import javax.swing.JTextField; -import javax.swing.ListSelectionModel; import javax.swing.RowFilter; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.TableModel; -import javax.swing.table.TableRowSorter; import net.miginfocom.swing.MigLayout; -import net.sf.openrocket.gui.adaptors.Column; -import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.util.GUIUtil; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.preset.TypedKey; +import net.sf.openrocket.rocketcomponent.ExternalComponent; import net.sf.openrocket.rocketcomponent.InternalComponent; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.SymmetricComponent; import net.sf.openrocket.startup.Application; -import net.sf.openrocket.unit.Value; public class ComponentPresetChooserDialog extends JDialog { @@ -46,7 +41,6 @@ public class ComponentPresetChooserDialog extends JDialog { private final RocketComponent component; private ComponentPresetTable componentSelectionTable; -// private final JTable componentSelectionTable; private final JTextField filterText; private final JCheckBox foreDiameterFilterCheckBox; private final JCheckBox aftDiameterFilterCheckBox; @@ -58,7 +52,7 @@ public class ComponentPresetChooserDialog extends JDialog { int aftDiameterColumnIndex = -1; int foreDiameterColumnIndex = -1; - private final List presets; + private List presets; private boolean okClicked = false; @@ -117,6 +111,30 @@ public class ComponentPresetChooserDialog extends JDialog { updateFilters(); } }); + + /* + * Add show all compatible check box. + */ + final List compatibleTypes = component.getPresetType().getCompatibleTypes(); + final ComponentPreset.Type nativeType = component.getPresetType(); + if ( compatibleTypes != null && compatibleTypes.size() > 0 ) { + JCheckBox showAll = new JCheckBox(); + showAll.setText(trans.get("ComponentPresetChooserDialog.checkbox.showAllCompatible")); + panel.add(showAll, "skip, span 2"); + showAll.addItemListener( new ItemListener () { + @Override + public void itemStateChanged(ItemEvent e) { + if ( ((JCheckBox)e.getItem()).isSelected() ) { + presets = Application.getComponentPresetDao().listForTypes(compatibleTypes); + } else { + presets = Application.getComponentPresetDao().listForType(nativeType); + } + componentSelectionTable.updateData( presets ); + } + }); + + + } /* * Add filter by fore diameter @@ -131,8 +149,10 @@ public class ComponentPresetChooserDialog extends JDialog { } }); + RocketComponent previousComponent = component.getPreviousComponent(); /* hide the fore diameter filter if it is not applicable */ - if ( foreDiameterColumnIndex < 0 || component.getPreviousComponent() == null ) { + if ( foreDiameterColumnIndex < 0 || previousComponent == null ) { + if ( !(previousComponent instanceof ExternalComponent) && !(previousComponent instanceof InternalComponent) ) foreDiameterFilterCheckBox.setVisible(false); } @@ -156,7 +176,6 @@ public class ComponentPresetChooserDialog extends JDialog { componentSelectionTable = new ComponentPresetTable( presets, Arrays.>asList(columnKeys) ); - JScrollPane scrollpane = new JScrollPane(); scrollpane.setViewportView(componentSelectionTable); panel.add(scrollpane, "grow, width :500:, height :300:, spanx, wrap para"); @@ -189,13 +208,6 @@ public class ComponentPresetChooserDialog extends JDialog { this.setLocationByPlatform(true); GUIUtil.setDisposableDialogOptions(this, okButton); - //JComponent focus = selectionPanel.getDefaultFocus(); - //if (focus != null) { - // focus.grabFocus(); - //} - - // Set the closeable dialog after all initialization - //selectionPanel.setCloseableDialog(this); } /** diff --git a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java index 9f319fdc..984147ff 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java @@ -36,7 +36,7 @@ public class ComponentPresetTable extends JTable { private static final Translator trans = Application.getTranslator(); private final TableRowSorter sorter; - private final List presets; + private List presets; private final AbstractTableModel tableModel; private final XTableColumnModel tableColumnModel; private final ComponentPresetTableColumn[] columns; @@ -148,6 +148,11 @@ public class ComponentPresetTable extends JTable { sorter.setRowFilter( filter ); } + public void updateData( List presets ) { + this.presets = presets; + this.tableModel.fireTableDataChanged(); + } + private void doPopup(MouseEvent evt ) { // Figure out what column header was clicked on. @@ -248,6 +253,5 @@ public class ComponentPresetTable extends JTable { } } - } } -- 2.47.2