From e36a90adfc25137f92d2ec54bad24bd8ee87cd05 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Tue, 1 Oct 2013 10:20:44 -0500 Subject: [PATCH] Improved common base of configuration panels. --- .../FlightConfigurablePanel.java | 100 +++++++++++++----- .../FlightConfigurationPanel.java | 5 - .../MotorConfigurationPanel.java | 74 +++++-------- .../RecoveryConfigurationPanel.java | 51 +++++---- .../SeparationConfigurationPanel.java | 49 +++++---- 5 files changed, 146 insertions(+), 133 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java index dae63b254..bc0540962 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java @@ -4,6 +4,9 @@ import java.util.EventObject; import javax.swing.JPanel; import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.formatting.RocketDescriptor; @@ -26,45 +29,84 @@ public abstract class FlightConfigurablePanel private final JButton selectMotorButton, removeMotorButton, selectIgnitionButton, resetIgnitionButton; - protected final JTable configurationTable; - protected final MotorConfigurationTableModel configurationTableModel; + protected JTable configurationTable; + protected MotorConfigurationTableModel configurationTableModel; MotorConfigurationPanel(final FlightConfigurationPanel flightConfigurationPanel, Rocket rocket) { super(flightConfigurationPanel,rocket); - //// Motor selection table. - configurationTableModel = new MotorConfigurationTableModel(rocket); - configurationTable = new JTable(configurationTableModel); - configurationTable.setCellSelectionEnabled(true); - configurationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - configurationTable.setDefaultRenderer(Object.class, new MotorTableCellRenderer()); - - configurationTable.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - updateButtonState(); - int selectedColumn = configurationTable.getSelectedColumn(); - if (e.getClickCount() == 2) { - if (selectedColumn > 0) { - selectMotor(); - } - } - } - }); - - configurationTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - - @Override - public void valueChanged(ListSelectionEvent e) { - if ( e.getValueIsAdjusting() ) { - return; - } - int firstrow = e.getFirstIndex(); - int lastrow = e.getLastIndex(); - ListSelectionModel model = (ListSelectionModel) e.getSource(); - for( int row = firstrow; row <= lastrow; row ++) { - if ( model.isSelectedIndex(row) ) { - String id = (String) configurationTableModel.getValueAt(row, 0); - flightConfigurationPanel.setCurrentConfiguration(id); - return; - } - } - } - - }); - JScrollPane scroll = new JScrollPane(configurationTable); this.add(scroll, "grow, wrap"); @@ -132,6 +86,30 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel } + @Override + protected JTable initializeTable() { + //// Motor selection table. + configurationTableModel = new MotorConfigurationTableModel(rocket); + configurationTable = new JTable(configurationTableModel); + configurationTable.setCellSelectionEnabled(true); + configurationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + configurationTable.setDefaultRenderer(Object.class, new MotorTableCellRenderer()); + + configurationTable.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + updateButtonState(); + int selectedColumn = configurationTable.getSelectedColumn(); + if (e.getClickCount() == 2) { + if (selectedColumn > 0) { + selectMotor(); + } + } + } + }); + return configurationTable; + } + @Override protected JTable getTable() { return configurationTable; 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 ff3660b3d..448d5c092 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java @@ -17,7 +17,6 @@ import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableCellRenderer; -import net.miginfocom.swing.MigLayout; import net.sf.openrocket.formatting.RocketDescriptor; import net.sf.openrocket.gui.dialogs.flightconfiguration.DeploymentSelectionDialog; import net.sf.openrocket.gui.util.GUIUtil; @@ -35,37 +34,14 @@ public class RecoveryConfigurationPanel extends FlightConfigurablePanel static final Translator trans = Application.getTranslator(); private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class); - private final FlightConfigurationPanel flightConfigurationPanel; - final Rocket rocket; - - private final JTable separationTable; - private final SeparationTableModel separationTableModel; + private JTable separationTable; + private SeparationTableModel separationTableModel; private final JButton selectSeparationButton; private final JButton resetDeploymentButton; SeparationConfigurationPanel(FlightConfigurationPanel flightConfigurationPanel, Rocket rocket) { super(flightConfigurationPanel,rocket); - this.flightConfigurationPanel = flightConfigurationPanel; - this.rocket = rocket; - - - //// Recovery selection - separationTableModel = new SeparationTableModel(rocket); - separationTable = new JTable(separationTableModel); - separationTable.setCellSelectionEnabled(true); - separationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - separationTable.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - updateButtonState(); - if (e.getClickCount() == 2) { - // Double-click edits - selectDeployment(); - } - } - }); - separationTable.setDefaultRenderer(Object.class, new SeparationTableCellRenderer()); JScrollPane scroll = new JScrollPane(separationTable); this.add(scroll, "span, grow, wrap"); @@ -92,6 +69,28 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel } + @Override + protected JTable initializeTable() { + //// Separation selection + separationTableModel = new SeparationTableModel(rocket); + separationTable = new JTable(separationTableModel); + separationTable.setCellSelectionEnabled(true); + separationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + separationTable.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + updateButtonState(); + if (e.getClickCount() == 2) { + // Double-click edits + selectDeployment(); + } + } + }); + separationTable.setDefaultRenderer(Object.class, new SeparationTableCellRenderer()); + + return separationTable; + } + @Override protected JTable getTable() { return separationTable;