From 0778f9117a1022d8f9db668da256a15a7d9b99c2 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Thu, 31 Oct 2013 13:54:02 -0500 Subject: [PATCH] Have the MotorMountTableModel listen to changes in the Rocket configuration to automatically update when the rocket is modified. --- .../MotorMountTableModel.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorMountTableModel.java b/swing/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorMountTableModel.java index f4a1b9db2..a449f804e 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorMountTableModel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorMountTableModel.java @@ -4,6 +4,8 @@ import java.util.List; import javax.swing.table.AbstractTableModel; +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; @@ -12,25 +14,42 @@ import net.sf.openrocket.util.ArrayList; /** * The table model for selecting whether components are motor mounts or not. */ -class MotorMountTableModel extends AbstractTableModel { +class MotorMountTableModel extends AbstractTableModel implements ComponentChangeListener { private final MotorMountConfigurationPanel motorConfigurationPanel; private final List potentialMounts = new ArrayList(); + private final Rocket rocket; + /** * @param motorConfigurationPanel */ MotorMountTableModel(MotorMountConfigurationPanel motorConfigurationPanel, Rocket rocket) { this.motorConfigurationPanel = motorConfigurationPanel; + this.rocket = rocket; + initialize(); + rocket.addComponentChangeListener(this); + } + + private void initialize() { + potentialMounts.clear(); for (RocketComponent c : rocket) { if (c instanceof MotorMount) { potentialMounts.add((MotorMount) c); } } } - + + @Override + public void componentChanged(ComponentChangeEvent e) { + if ( e.isMotorChange() || e.isTreeChange() ) { + initialize(); + fireTableStructureChanged(); + } + } + @Override public int getColumnCount() { return 2;