From 295f767b904f73dca597e72bdee65871eb35467d Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Mon, 22 Nov 2010 18:53:59 +0000 Subject: [PATCH] Use UnitPrefListener in multicharts --- .../motorsim/fuel/MultiFuelChart.java | 24 ++++++++++++++- .../workbench/MultiMotorPressureChart.java | 28 ++++++++++++++++++ .../workbench/MultiMotorThrustChart.java | 29 +++++++++++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-) diff --git a/gui/com/billkuker/rocketry/motorsim/fuel/MultiFuelChart.java b/gui/com/billkuker/rocketry/motorsim/fuel/MultiFuelChart.java index e1389ed..4c03e12 100644 --- a/gui/com/billkuker/rocketry/motorsim/fuel/MultiFuelChart.java +++ b/gui/com/billkuker/rocketry/motorsim/fuel/MultiFuelChart.java @@ -10,6 +10,7 @@ import javax.measure.quantity.Velocity; import javax.measure.unit.SI; import javax.measure.unit.Unit; import javax.swing.JPanel; +import javax.swing.SwingUtilities; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; @@ -21,6 +22,7 @@ import org.jscience.physics.amount.Amount; import com.billkuker.rocketry.motorsim.Fuel; import com.billkuker.rocketry.motorsim.RocketScience; +import com.billkuker.rocketry.motorsim.RocketScience.UnitPreferenceListener; public class MultiFuelChart extends JPanel implements FuelResolver.FuelsChangeListener { private static final long serialVersionUID = 1L; @@ -33,10 +35,29 @@ public class MultiFuelChart extends JPanel implements FuelResolver.FuelsChangeLi public MultiFuelChart() { this.setLayout(new BorderLayout()); + RocketScience.addUnitPreferenceListener(new UnitPreferenceListener() { + @Override + public void preferredUnitsChanged() { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + setup(); + revalidate(); + } + }); + } + }); + setup(); + FuelResolver.addFuelsChangeListener(this); + } + + private void setup(){ pressureUnit = RocketScience.UnitPreference.getUnitPreference() .getPreferredUnit(SI.PASCAL); rateUnit = RocketScience.UnitPreference.getUnitPreference() .getPreferredUnit(SI.METERS_PER_SECOND); + System.err.println(pressureUnit); + removeAll(); JFreeChart chart = ChartFactory.createXYLineChart( "", // Title pressureUnit.toString(), // x-axis Label @@ -47,7 +68,8 @@ public class MultiFuelChart extends JPanel implements FuelResolver.FuelsChangeLi false // Configure chart to generate URLs? ); add(new ChartPanel(chart)); - FuelResolver.addFuelsChangeListener(this); + dataset.removeAllSeries(); + fuelToSeries.clear(); fuelsChanged(); } diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorPressureChart.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorPressureChart.java index 874518f..8eeba32 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorPressureChart.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorPressureChart.java @@ -2,12 +2,15 @@ package com.billkuker.rocketry.motorsim.visual.workbench; import java.awt.BorderLayout; import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; import javax.measure.quantity.Duration; import javax.measure.quantity.Pressure; import javax.measure.unit.SI; import javax.measure.unit.Unit; import javax.swing.JPanel; +import javax.swing.SwingUtilities; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; @@ -18,6 +21,7 @@ import org.jfree.data.xy.XYSeriesCollection; import com.billkuker.rocketry.motorsim.Burn; import com.billkuker.rocketry.motorsim.RocketScience; +import com.billkuker.rocketry.motorsim.RocketScience.UnitPreferenceListener; public class MultiMotorPressureChart extends JPanel implements BurnWatcher { private static final long serialVersionUID = 1L; @@ -30,6 +34,30 @@ public class MultiMotorPressureChart extends JPanel implements BurnWatcher { public MultiMotorPressureChart() { this.setLayout(new BorderLayout()); + RocketScience.addUnitPreferenceListener(new UnitPreferenceListener() { + @Override + public void preferredUnitsChanged() { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + removeAll(); + dataset.removeAllSeries(); + Set burns = new HashSet(); + burns.addAll(burnToSeries.keySet()); + burnToSeries.clear(); + setup(); + for ( Burn b : burns ){ + addBurn(b); + } + revalidate(); + } + }); + } + }); + setup(); + } + + private void setup(){ time = RocketScience.UnitPreference.getUnitPreference() .getPreferredUnit(SI.SECOND); pressureUnit = RocketScience.UnitPreference.getUnitPreference() diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorThrustChart.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorThrustChart.java index 6a9d9fc..5470828 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorThrustChart.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorThrustChart.java @@ -2,12 +2,15 @@ package com.billkuker.rocketry.motorsim.visual.workbench; import java.awt.BorderLayout; import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; import javax.measure.quantity.Duration; import javax.measure.quantity.Force; import javax.measure.unit.SI; import javax.measure.unit.Unit; import javax.swing.JPanel; +import javax.swing.SwingUtilities; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; @@ -18,6 +21,7 @@ import org.jfree.data.xy.XYSeriesCollection; import com.billkuker.rocketry.motorsim.Burn; import com.billkuker.rocketry.motorsim.RocketScience; +import com.billkuker.rocketry.motorsim.RocketScience.UnitPreferenceListener; public class MultiMotorThrustChart extends JPanel implements BurnWatcher { private static final long serialVersionUID = 1L; @@ -30,6 +34,31 @@ public class MultiMotorThrustChart extends JPanel implements BurnWatcher { public MultiMotorThrustChart() { this.setLayout(new BorderLayout()); + RocketScience.addUnitPreferenceListener(new UnitPreferenceListener() { + @Override + public void preferredUnitsChanged() { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + removeAll(); + dataset.removeAllSeries(); + Set burns = new HashSet(); + burns.addAll(burnToSeries.keySet()); + burnToSeries.clear(); + setup(); + for ( Burn b : burns ){ + addBurn(b); + } + revalidate(); + } + }); + } + }); + setup(); + + } + + private void setup(){ time = RocketScience.UnitPreference.getUnitPreference() .getPreferredUnit(SI.SECOND); force = RocketScience.UnitPreference.getUnitPreference() -- 2.47.2