X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gui%2Fcom%2Fbillkuker%2Frocketry%2Fmotorsim%2Fvisual%2FChart.java;h=ce85bc2c480e9b88ad0878c29cd923cf09611b41;hb=23a9b898dd25831df99cacefda20062bd0293f46;hp=27c71b4c633e3bdd3754e3208054dce6822bbee6;hpb=24d249c4f18c1bcd6557f547619c7d453cf4763f;p=sw%2Fmotorsim 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(); } + }