From c8f71fcc946213911909bfb89c37e0282388dffd Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Tue, 1 Oct 2013 12:12:30 -0500 Subject: [PATCH] Refactored the table models into a common base class FlightConfigurableTableModel. --- ...java => FlightConfigurableTableModel.java} | 40 +++---- .../MotorConfigurationPanel.java | 4 +- .../MotorConfigurationTableModel.java | 102 ----------------- .../RecoveryConfigurationPanel.java | 4 +- .../SeparationConfigurationPanel.java | 4 +- .../SeparationTableModel.java | 104 ------------------ 6 files changed, 24 insertions(+), 234 deletions(-) rename swing/src/net/sf/openrocket/gui/main/flightconfigpanel/{RecoveryTableModel.java => FlightConfigurableTableModel.java} (66%) delete mode 100644 swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationTableModel.java delete mode 100644 swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationTableModel.java diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryTableModel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurableTableModel.java similarity index 66% rename from swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryTableModel.java rename to swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurableTableModel.java index cecac53e7..853e959c8 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryTableModel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurableTableModel.java @@ -9,48 +9,44 @@ import javax.swing.table.AbstractTableModel; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; -import net.sf.openrocket.rocketcomponent.RecoveryDevice; +import net.sf.openrocket.rocketcomponent.FlightConfigurableComponent; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Pair; -class RecoveryTableModel extends AbstractTableModel implements ComponentChangeListener { +public class FlightConfigurableTableModel extends AbstractTableModel implements ComponentChangeListener{ private static final Translator trans = Application.getTranslator(); - - private final Rocket rocket; - - private final List recoveryDevices = new ArrayList(); - private static final String CONFIGURATION = trans.get("edtmotorconfdlg.col.configuration"); + protected final Rocket rocket; + protected final Class clazz; + private final List components = new ArrayList(); - /** - * @param recoveryConfigurationPanel - */ - RecoveryTableModel(Rocket rocket) { + public FlightConfigurableTableModel(Class clazz, Rocket rocket) { + super(); this.rocket = rocket; + this.clazz = clazz; this.rocket.addComponentChangeListener(this); initialize(); } @Override public void componentChanged(ComponentChangeEvent e) { - if ( e.isTreeChange() ) { + if ( e.isMotorChange() || e.isTreeChange() ) { initialize(); fireTableStructureChanged(); } } - - private void initialize() { - recoveryDevices.clear(); + protected void initialize() { + components.clear(); Iterator it = rocket.iterator(); while (it.hasNext()) { RocketComponent c = it.next(); - if (c instanceof RecoveryDevice) { - recoveryDevices.add( (RecoveryDevice) c); + if (clazz.isAssignableFrom(c.getClass())) { + components.add( (T) c); } } } @@ -62,7 +58,7 @@ class RecoveryTableModel extends AbstractTableModel implements ComponentChangeLi @Override public int getColumnCount() { - return recoveryDevices.size() + 1; + return components.size() + 1; } @Override @@ -74,8 +70,8 @@ class RecoveryTableModel extends AbstractTableModel implements ComponentChangeLi } default: { int index = column - 1; - RecoveryDevice d = recoveryDevices.get(index); - return new Pair(id, d); + T d = components.get(index); + return new Pair(id, d); } } } @@ -88,9 +84,9 @@ class RecoveryTableModel extends AbstractTableModel implements ComponentChangeLi } default: { int index = column - 1; - RecoveryDevice d = recoveryDevices.get(index); + T d = components.get(index); return d.toString(); - + } } } diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java index de94fc5f5..ae86657a1 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java @@ -34,7 +34,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel private final JButton selectMotorButton, removeMotorButton, selectIgnitionButton, resetIgnitionButton; protected JTable configurationTable; - protected MotorConfigurationTableModel configurationTableModel; + protected FlightConfigurableTableModel configurationTableModel; MotorConfigurationPanel(final FlightConfigurationPanel flightConfigurationPanel, Rocket rocket) { super(flightConfigurationPanel,rocket); @@ -89,7 +89,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel @Override protected JTable initializeTable() { //// Motor selection table. - configurationTableModel = new MotorConfigurationTableModel(rocket); + configurationTableModel = new FlightConfigurableTableModel(MotorMount.class,rocket); configurationTable = new JTable(configurationTableModel); configurationTable.setCellSelectionEnabled(true); configurationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationTableModel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationTableModel.java deleted file mode 100644 index 08a079f1c..000000000 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationTableModel.java +++ /dev/null @@ -1,102 +0,0 @@ -package net.sf.openrocket.gui.main.flightconfigpanel; - -import java.util.ArrayList; -import java.util.List; - -import javax.swing.table.AbstractTableModel; - -import net.sf.openrocket.l10n.Translator; -import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; -import net.sf.openrocket.rocketcomponent.ComponentChangeListener; -import net.sf.openrocket.rocketcomponent.MotorMount; -import net.sf.openrocket.rocketcomponent.Rocket; -import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.startup.Application; -import net.sf.openrocket.util.Pair; - -/** - * The table model for selecting and editing the motor configurations. - */ -class MotorConfigurationTableModel extends AbstractTableModel implements ComponentChangeListener { - - private static final Translator trans = Application.getTranslator(); - - private static final String CONFIGURATION = trans.get("edtmotorconfdlg.col.configuration"); - - private final Rocket rocket; - - private List motorMounts = new ArrayList(); - - - public MotorConfigurationTableModel(Rocket rocket) { - this.rocket = rocket; - this.rocket.addComponentChangeListener(this); - initializeMotorMounts(); - - } - - @Override - public void componentChanged(ComponentChangeEvent e) { - if ( e.isMotorChange() || e.isTreeChange() ) { - initializeMotorMounts(); - fireTableStructureChanged(); - } - } - - private void initializeMotorMounts() { - motorMounts.clear(); - for (RocketComponent c : rocket) { - if (c instanceof MotorMount) { - if (((MotorMount) c).isMotorMount()) { - motorMounts.add((MotorMount) c); - } - } - } - - } - - @Override - public int getColumnCount() { - return motorMounts.size() + 1; - } - - @Override - public int getRowCount() { - return rocket.getFlightConfigurationIDs().length - 1; - } - - @Override - public Object getValueAt(int row, int column) { - String id = getConfiguration(row); - switch (column) { - case 0: { - return id; - } - default: { - int mountIndex = column - 1; - MotorMount mount = motorMounts.get(mountIndex); - return new Pair(id, mount); - } - } - } - - @Override - public String getColumnName(int column) { - switch (column) { - case 0: { - return CONFIGURATION; - } - default: { - int mountIndex = column - 1; - MotorMount mount = motorMounts.get(mountIndex); - return mount.toString(); - } - } - } - - private String getConfiguration(int row) { - String id = rocket.getFlightConfigurationIDs()[row + 1]; - return id; - } - -} \ No newline at end of file diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java index 448d5c092..03055a7fa 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java @@ -34,7 +34,7 @@ public class RecoveryConfigurationPanel extends FlightConfigurablePanel recoveryTableModel; private JTable recoveryTable; private final JButton selectDeploymentButton; private final JButton resetDeploymentButton; @@ -72,7 +72,7 @@ public class RecoveryConfigurationPanel extends FlightConfigurablePanel(RecoveryDevice.class, rocket); recoveryTable = new JTable(recoveryTableModel); recoveryTable.setCellSelectionEnabled(true); recoveryTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java index 80d858c44..f4f0b748f 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java @@ -34,7 +34,7 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class); private JTable separationTable; - private SeparationTableModel separationTableModel; + private FlightConfigurableTableModel separationTableModel; private final JButton selectSeparationButton; private final JButton resetDeploymentButton; @@ -72,7 +72,7 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel @Override protected JTable initializeTable() { //// Separation selection - separationTableModel = new SeparationTableModel(rocket); + separationTableModel = new FlightConfigurableTableModel(Stage.class, rocket); separationTable = new JTable(separationTableModel); separationTable.setCellSelectionEnabled(true); separationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationTableModel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationTableModel.java deleted file mode 100644 index 10115a18f..000000000 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationTableModel.java +++ /dev/null @@ -1,104 +0,0 @@ -package net.sf.openrocket.gui.main.flightconfigpanel; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import javax.swing.table.AbstractTableModel; - -import net.sf.openrocket.l10n.Translator; -import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; -import net.sf.openrocket.rocketcomponent.ComponentChangeListener; -import net.sf.openrocket.rocketcomponent.Rocket; -import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.Stage; -import net.sf.openrocket.startup.Application; -import net.sf.openrocket.util.Pair; - -class SeparationTableModel extends AbstractTableModel implements ComponentChangeListener { - - private static final Translator trans = Application.getTranslator(); - - private final Rocket rocket; - - private final List stages = new ArrayList(); - - private static final String CONFIGURATION = trans.get("edtmotorconfdlg.col.configuration"); - - SeparationTableModel(Rocket rocket ) { - this.rocket = rocket; - this.rocket.addComponentChangeListener(this); - initialize(); - } - - @Override - public void componentChanged(ComponentChangeEvent e) { - if ( e.isTreeChange() ) { - initialize(); - fireTableStructureChanged(); - } - } - - private void initialize() { - stages.clear(); - Iterator it = rocket.iterator(); - { - int stageIndex = -1; - while (it.hasNext()) { - RocketComponent c = it.next(); - if (c instanceof Stage) { - if (stageIndex >= 0) { - stages.add( (Stage) c); - } - stageIndex++; - } - } - } - } - - - @Override - public int getRowCount() { - return rocket.getFlightConfigurationIDs().length - 1; - } - - @Override - public int getColumnCount() { - return stages.size() + 1; - } - @Override - public Object getValueAt(int row, int column) { - String id = getConfiguration(row); - switch (column) { - case 0: { - return id; - } - default: { - int index = column - 1; - Stage d = stages.get(index); - return new Pair(id, d); - } - } - } - - @Override - public String getColumnName(int column) { - switch (column) { - case 0: { - return CONFIGURATION; - } - default: { - int index = column - 1; - Stage d = stages.get(index); - return d.toString(); - - } - } - } - - private String getConfiguration(int row) { - String id = rocket.getFlightConfigurationIDs()[row + 1]; - return id; - } - -} \ No newline at end of file