altosui: Clean up graph a bit, remove shapes, improve tooltips
authorKeith Packard <keithp@keithp.com>
Wed, 19 Dec 2012 06:59:36 +0000 (22:59 -0800)
committerKeith Packard <keithp@keithp.com>
Wed, 19 Dec 2012 07:01:51 +0000 (23:01 -0800)
Sometimes graphs would get shapes at each datapoint which was
annoyingly cluttered. And, the tooltips used a format that was
difficult to interpret.

Signed-off-by: Keith Packard <keithp@keithp.com>
altosui/AltosGraphTime.java
altosui/AltosGraphUI.java

index 75e536c583776e363693b5d3ff993aaf9b16893f..62d516b24f7782e1a1343409ed9b8c1d602e5012 100644 (file)
@@ -68,11 +68,13 @@ class AltosGraphTime extends AltosGraph {
     abstract static class TimeSeries implements Element {
         protected XYSeries series;
         private String axisName;
+       private String axisUnits;
         private Color color;
 
-        public TimeSeries(String axisName, String label, Color color) {
+        public TimeSeries(String axisName, String axisUnits, String label, Color color) {
             this.series = new XYSeries(label);
-            this.axisName = axisName;
+            this.axisName = String.format("%s (%s)", axisName, axisUnits);
+           this.axisUnits = axisUnits;
             this.color = color;
         }
 
@@ -85,8 +87,14 @@ class AltosGraphTime extends AltosGraph {
             XYSeriesCollection dataset = new XYSeriesCollection();
             dataset.addSeries(this.series);
 
-            XYItemRenderer renderer = new StandardXYItemRenderer();
+            XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
             renderer.setSeriesPaint(0, color);
+           StandardXYToolTipGenerator  tool_tip;
+
+           tool_tip = new StandardXYToolTipGenerator(String.format("{1}s: {2}%s ({0})", axisUnits),
+                                                     new java.text.DecimalFormat("0.00"),
+                                                     new java.text.DecimalFormat("0.00"));
+           renderer.setBaseToolTipGenerator(tool_tip);
 
             int dataNum = g.getDataNum(this);
             int axisNum = g.getAxisNum(this);
@@ -192,10 +200,8 @@ class AltosGraphTime extends AltosGraph {
     public JFreeChart createChart() {
         NumberAxis xAxis = new NumberAxis("Time (s)");
         xAxis.setAutoRangeIncludesZero(false);
-        XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
         XYPlot plot = new XYPlot();
         plot.setDomainAxis(xAxis);
-        plot.setRenderer(renderer);
         plot.setOrientation(PlotOrientation.VERTICAL);
 
         if (serial != null && flight != null) {
@@ -205,7 +211,6 @@ class AltosGraphTime extends AltosGraph {
             title = callsign + " - " + title;
         }
 
-        renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
         JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT,
                                 plot, true);
         ChartUtilities.applyCurrentTheme(chart);
index f59f70bab47781daf0783e747875e2ec45542152..b7c2e92e74c07ea3cad46cba633e71f88fe5bc71 100644 (file)
@@ -29,7 +29,7 @@ public class AltosGraphUI extends AltosFrame
 
     static private class OverallGraphs {
         AltosGraphTime.Element height = 
-               new AltosGraphTime.TimeSeries(String.format("Height (%s)", AltosConvert.height.show_units()), "Height (AGL)", red) {
+               new AltosGraphTime.TimeSeries("Height", AltosConvert.height.show_units(), "Height (AGL)", red) {
                 public void gotTimeData(double time, AltosDataPoint d) {
                        double  height = d.height();
                        if (height != AltosRecord.MISSING)
@@ -38,7 +38,7 @@ public class AltosGraphUI extends AltosFrame
             };
     
         AltosGraphTime.Element speed =
-               new AltosGraphTime.TimeSeries(String.format("Speed (%s)", AltosConvert.speed.show_units()), "Vertical Speed", green) { 
+               new AltosGraphTime.TimeSeries("Speed", AltosConvert.speed.show_units(), "Vertical Speed", green) { 
                 public void gotTimeData(double time, AltosDataPoint d) {
                    double      speed = d.speed();
                    if (speed != AltosRecord.MISSING)
@@ -47,8 +47,8 @@ public class AltosGraphUI extends AltosFrame
             };
     
         AltosGraphTime.Element acceleration =
-               new AltosGraphTime.TimeSeries(String.format("Acceleration (%s)",
-                                                           AltosConvert.accel.show_units()),
+               new AltosGraphTime.TimeSeries("Acceleration",
+                                             AltosConvert.accel.show_units(),
                                              "Axial Acceleration", blue)
             {
                 public void gotTimeData(double time, AltosDataPoint d) {
@@ -59,8 +59,8 @@ public class AltosGraphUI extends AltosFrame
             };
     
         AltosGraphTime.Element temperature =
-            new AltosGraphTime.TimeSeries("Temperature (\u00B0C)", 
-                    "Board temperature", red) 
+           new AltosGraphTime.TimeSeries("Temperature", "\u00B0C", 
+                                         "Board temperature", red) 
             {
                 public void gotTimeData(double time, AltosDataPoint d) {
                    double temp = d.temperature();
@@ -70,7 +70,7 @@ public class AltosGraphUI extends AltosFrame
             };
     
         AltosGraphTime.Element drogue_voltage =
-            new AltosGraphTime.TimeSeries("Voltage (V)", "Drogue Continuity", yellow) 
+            new AltosGraphTime.TimeSeries("Voltage", "(V)", "Drogue Continuity", yellow) 
             {
                 public void gotTimeData(double time, AltosDataPoint d) {
                    double v = d.drogue_voltage();
@@ -80,7 +80,7 @@ public class AltosGraphUI extends AltosFrame
             };
     
         AltosGraphTime.Element main_voltage =
-            new AltosGraphTime.TimeSeries("Voltage (V)", "Main Continuity", magenta) 
+            new AltosGraphTime.TimeSeries("Voltage", "(V)", "Main Continuity", magenta) 
             {
                 public void gotTimeData(double time, AltosDataPoint d) {
                    double v = d.main_voltage();