X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosuilib%2FAltosUITimeSeries.java;h=7c48264e25092953bbfbb9a4caef7cecb351ee2e;hb=93ec97cbae5a16d971b9e757c167bef9a5a80629;hp=fbee312580a151972ec59a212e6a4e97f700923a;hpb=96de483d745ea0ef95326de2847a2534f7057846;p=fw%2Faltos diff --git a/altosuilib/AltosUITimeSeries.java b/altosuilib/AltosUITimeSeries.java index fbee3125..7c48264e 100644 --- a/altosuilib/AltosUITimeSeries.java +++ b/altosuilib/AltosUITimeSeries.java @@ -46,8 +46,13 @@ public class AltosUITimeSeries extends AltosTimeSeries implements AltosUIGrapher Color color; boolean enable; AltosUIAxis axis; + boolean marker; + boolean marker_top; XYItemRenderer renderer; + XYPlot plot; AltosXYSeries xy_series; + ArrayList markers; + /* AltosUIGrapher interface */ public boolean need_reset() { @@ -67,13 +72,39 @@ public class AltosUITimeSeries extends AltosTimeSeries implements AltosUIGrapher } void set_data() { - xy_series.clear(); - - for (AltosTimeValue v : this) { - double y = v.y; - if (units != null) - y = units.graph_value(y); - xy_series.add(v.x, y); + if (marker) { + if (markers != null) { + for (ValueMarker marker : markers) + plot.removeDomainMarker(marker); + } + markers = new ArrayList(); + for (AltosTimeValue v : this) { + String s = units.string_value(v.value); + ValueMarker marker = new ValueMarker(v.time); + marker.setLabel(s); + if (marker_top) { + marker.setLabelAnchor(RectangleAnchor.TOP_RIGHT); + marker.setLabelTextAnchor(TextAnchor.TOP_LEFT); + } else { + marker.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT); + marker.setLabelTextAnchor(TextAnchor.BOTTOM_LEFT); + } + marker.setPaint(color); + if (enable) + plot.addDomainMarker(marker); + markers.add(marker); + } + } else { + xy_series.clear(); + + xy_series.setNotify(false); + for (AltosTimeValue v : this) { + double value = v.value; + if (units != null) + value = units.graph_value(value); + xy_series.add(v.time, value); + } + xy_series.setNotify(true); } } @@ -101,19 +132,25 @@ public class AltosUITimeSeries extends AltosTimeSeries implements AltosUIGrapher public void set_enable(boolean enable) { if (this.enable != enable) { this.enable = enable; - renderer.setSeriesVisible(0, enable); - axis.set_enable(enable); + if (marker) { + for (ValueMarker marker : markers) { + if (enable) + plot.addDomainMarker(marker); + else + plot.removeDomainMarker(marker); + } + } else { + renderer.setSeriesVisible(0, enable); + axis.set_enable(enable); + } } } - public AltosUITimeSeries(String label, AltosUnits units, - Color color, boolean enable, - AltosUIAxis axis) { - super(label, units); - System.out.printf("time series %s units %s\n", label, units); + public void set_axis(Color color, boolean enable, AltosUIAxis axis) { this.color = color; this.enable = enable; this.axis = axis; + this.marker = false; axis.ref(this.enable); @@ -123,4 +160,23 @@ public class AltosUITimeSeries extends AltosTimeSeries implements AltosUIGrapher renderer.setSeriesVisible(0, enable); xy_series = new AltosXYSeries(label); } + + public void set_marker(Color color, boolean enable, XYPlot plot, boolean marker_top) { + this.color = color; + this.enable = enable; + this.marker = true; + this.plot = plot; + this.marker_top = marker_top; + } + + public AltosUITimeSeries(String label, AltosUnits units) { + super(label, units); + } + + public AltosUITimeSeries(String label, AltosUnits units, + Color color, boolean enable, + AltosUIAxis axis) { + this(label, units); + set_axis(color, enable, axis); + } }