From 23a9b898dd25831df99cacefda20062bd0293f46 Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Tue, 23 Nov 2010 15:49:04 +0000 Subject: [PATCH] Make chart and summary update with units --- .../rocketry/motorsim/visual/Chart.java | 31 ++++++++++++++++--- .../motorsim/visual/SummaryPanel.java | 14 +++++++-- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/gui/com/billkuker/rocketry/motorsim/visual/Chart.java b/gui/com/billkuker/rocketry/motorsim/visual/Chart.java index 27c71b4..ce85bc2 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/Chart.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/Chart.java @@ -40,7 +40,7 @@ import org.jscience.physics.amount.Amount; import com.billkuker.rocketry.motorsim.RocketScience; import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain; -public class Chart extends JPanel { +public class Chart extends JPanel implements RocketScience.UnitPreferenceListener { private static final long serialVersionUID = 1L; private static Logger log = Logger.getLogger(Chart.class); @@ -107,6 +107,8 @@ public class Chart extends JPanel { Object source; Method f; + + Iterable> domain; public Chart(Unit xUnit, Unit yUnit, Object source, String method) throws NoSuchMethodException { @@ -114,16 +116,25 @@ public class Chart extends JPanel { f = source.getClass().getMethod(method, Amount.class); this.source = source; + + this.xUnit = xUnit; + this.yUnit = yUnit; - + RocketScience.addUnitPreferenceListener(this); + + setup(); + } + + private void setup(){ + removeAll(); this.xUnit = RocketScience.UnitPreference.getUnitPreference() .getPreferredUnit(xUnit); this.yUnit = RocketScience.UnitPreference.getUnitPreference() .getPreferredUnit(yUnit); - chart = ChartFactory.createXYLineChart(method.substring(0, 1) + chart = ChartFactory.createXYLineChart(f.getName().substring(0, 1) .toUpperCase() - + method.substring(1), // Title + + f.getName().substring(1), // Title this.xUnit.toString(), // x-axis Label this.yUnit.toString(), // y-axis Label dataset, PlotOrientation.VERTICAL, // Plot Orientation @@ -134,6 +145,15 @@ public class Chart extends JPanel { add(new ChartPanel(chart)); } + + @Override + public void preferredUnitsChanged() { + setup(); + setDomain(domain); + } + + + public void addDomainMarker(Amount x, String label, Color c){ double xVal = x.doubleValue(xUnit); Marker marker = new ValueMarker(xVal); @@ -257,6 +277,8 @@ public class Chart extends JPanel { @SuppressWarnings("unchecked") private synchronized void fill(Iterable> d, final int requestedSkip) { + this.domain = d; + log.debug(f.getName() + " " + requestedSkip + " Start"); stop = false; int sz = 0; @@ -348,4 +370,5 @@ public class Chart extends JPanel { v.show(); } + } diff --git a/gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java b/gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java index 189b781..33ae34e 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java @@ -18,13 +18,14 @@ import com.billkuker.rocketry.motorsim.Burn; import com.billkuker.rocketry.motorsim.BurnSummary; import com.billkuker.rocketry.motorsim.RocketScience; -public class SummaryPanel extends JPanel implements Burn.BurnProgressListener { +public class SummaryPanel extends JPanel implements Burn.BurnProgressListener, RocketScience.UnitPreferenceListener { private static final long serialVersionUID = 1L; private static final Color RED = new Color(196, 0, 0); private static final Color GREEN = new Color(0, 196, 0); private static final Color ORANGE = new Color(160, 96, 0); private final Burn burn; private final JProgressBar bar = new JProgressBar(); + private BurnSummary bs; public SummaryPanel(Burn b) { @@ -50,7 +51,15 @@ public class SummaryPanel extends JPanel implements Burn.BurnProgressListener { @Override public void burnComplete() { - setBurnSummary(new BurnSummary(burn)); + setBurnSummary(bs = new BurnSummary(burn)); + RocketScience.addUnitPreferenceListener(this); + } + + + @Override + public void preferredUnitsChanged() { + if ( bs != null ) + setBurnSummary(bs); } private void setBurnSummary(final BurnSummary bi) { @@ -107,4 +116,5 @@ public class SummaryPanel extends JPanel implements Burn.BurnProgressListener { }); } + } -- 2.47.2