From: Keith Packard Date: Wed, 4 Oct 2017 20:43:45 +0000 (-0700) Subject: altosuilib: Add 'show marker' button to graphs X-Git-Tag: 1.8.3~1^2~77 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=2f779d318753b73463f7166977453ab5533e5921 altosuilib: Add 'show marker' button to graphs Provides a marker at each actual data point which can be useful for sparse data sets like telemetry with poor reception. Signed-off-by: Keith Packard --- diff --git a/altosuilib/AltosShapeListener.java b/altosuilib/AltosShapeListener.java new file mode 100644 index 00000000..082b6135 --- /dev/null +++ b/altosuilib/AltosShapeListener.java @@ -0,0 +1,19 @@ +/* + * Copyright © 2017 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ + +package org.altusmetrum.altosuilib_12; + +public interface AltosShapeListener { + void set_shapes_visible(boolean visible); +} diff --git a/altosuilib/AltosUIEnable.java b/altosuilib/AltosUIEnable.java index 4bd07c52..ed1e6c53 100644 --- a/altosuilib/AltosUIEnable.java +++ b/altosuilib/AltosUIEnable.java @@ -43,11 +43,13 @@ public class AltosUIEnable extends Container implements ChangeListener { int y; int x; JCheckBox imperial_units; + JCheckBox show_shapes; JLabel speed_filter_label; JSlider speed_filter; JLabel accel_filter_label; JSlider accel_filter; AltosFilterListener filter_listener; + AltosShapeListener shape_listener; static final int max_rows = 14; @@ -111,6 +113,16 @@ public class AltosUIEnable extends Container implements ChangeListener { } } + public void set_shapes_visible(boolean visible) { + System.out.printf("set shapes %b\n", visible); + if (shape_listener != null) + shape_listener.set_shapes_visible(visible); + } + + public void register_shape_listener(AltosShapeListener shape_listener) { + this.shape_listener = shape_listener; + } + public void add_units() { /* Imperial units setting */ @@ -131,12 +143,29 @@ public class AltosUIEnable extends Container implements ChangeListener { c.insets = il; add(imperial_units, c); - speed_filter_label = new JLabel("Speed Filter(ms)"); + show_shapes = new JCheckBox("Show Markers", false); + show_shapes.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + JCheckBox item = (JCheckBox) e.getSource(); + boolean enabled = item.isSelected(); + set_shapes_visible(enabled); + } + }); + show_shapes.setToolTipText("Show marker Use Imperial units instead of metric"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 1001; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.LINE_START; c.insets = il; + add(show_shapes, c); + + + speed_filter_label = new JLabel("Speed Filter(ms)"); + c = new GridBagConstraints(); + c.gridx = 0; c.gridy = 1002; + c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.LINE_START; + c.insets = il; add(speed_filter_label, c); speed_filter = new JSlider(JSlider.HORIZONTAL, 0, 10000, (int) (filter_listener.speed_filter() * 1000.0)); @@ -154,7 +183,7 @@ public class AltosUIEnable extends Container implements ChangeListener { speed_filter.addChangeListener(this); c = new GridBagConstraints(); - c.gridx = 1; c.gridy = 1001; + c.gridx = 1; c.gridy = 1002; c.gridwidth = 1000; c.gridheight = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.LINE_START; @@ -163,7 +192,7 @@ public class AltosUIEnable extends Container implements ChangeListener { accel_filter_label = new JLabel("Acceleration Filter(ms)"); c = new GridBagConstraints(); - c.gridx = 0; c.gridy = 1002; + c.gridx = 0; c.gridy = 1003; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.LINE_START; c.insets = il; @@ -180,7 +209,7 @@ public class AltosUIEnable extends Container implements ChangeListener { accel_filter.addChangeListener(this); c = new GridBagConstraints(); - c.gridx = 1; c.gridy = 1002; + c.gridx = 1; c.gridy = 1003; c.gridwidth = 1000; c.gridheight = 1; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.LINE_START; diff --git a/altosuilib/AltosUIGraph.java b/altosuilib/AltosUIGraph.java index efc3d493..6328d40a 100644 --- a/altosuilib/AltosUIGraph.java +++ b/altosuilib/AltosUIGraph.java @@ -36,7 +36,7 @@ import org.jfree.chart.labels.*; import org.jfree.data.xy.*; import org.jfree.data.*; -public class AltosUIGraph implements AltosUnitsListener { +public class AltosUIGraph implements AltosUnitsListener, AltosShapeListener { XYPlot plot; JFreeChart chart; @@ -99,6 +99,11 @@ public class AltosUIGraph implements AltosUnitsListener { units_changed(false); } + public void set_shapes_visible(boolean visible) { + for (AltosUITimeSeries s : series) + s.set_shapes_visible(visible); + } + public void setName (String name) { chart.setTitle(name); } @@ -127,6 +132,8 @@ public class AltosUIGraph implements AltosUnitsListener { this.series = null; this.axis_index = 0; + enable.register_shape_listener(this); + axes_added = new Hashtable(); xAxis = new NumberAxis("Time (s)"); diff --git a/altosuilib/AltosUITimeSeries.java b/altosuilib/AltosUITimeSeries.java index 71166064..b98c8376 100644 --- a/altosuilib/AltosUITimeSeries.java +++ b/altosuilib/AltosUITimeSeries.java @@ -66,7 +66,7 @@ public class AltosUITimeSeries extends AltosTimeSeries implements AltosUIGrapher AltosUIAxis axis; boolean marker; boolean marker_top; - XYItemRenderer renderer; + XYLineAndShapeRenderer renderer; XYPlot plot; AltosXYSeries xy_series; ArrayList markers; @@ -188,6 +188,10 @@ public class AltosUITimeSeries extends AltosTimeSeries implements AltosUIGrapher this.marker_top = marker_top; } + public void set_shapes_visible(boolean shapes_visible) { + renderer.setSeriesShapesVisible(0, shapes_visible); + } + public AltosUITimeSeries(String label, AltosUnits units) { super(label, units); } diff --git a/altosuilib/Makefile.am b/altosuilib/Makefile.am index ce86d21e..0f606225 100644 --- a/altosuilib/Makefile.am +++ b/altosuilib/Makefile.am @@ -31,6 +31,7 @@ altosuilib_JAVA = \ AltosUIFlightSeries.java \ AltosUIGraph.java \ AltosGraph.java \ + AltosShapeListener.java \ AltosUSBDevice.java \ AltosVoice.java \ AltosDisplayThread.java \