diff --git a/swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java b/swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java
index 6db472325..76bb6a75c 100644
--- a/swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java
+++ b/swing/src/net/sf/openrocket/gui/plot/SimulationPlot.java
@@ -14,11 +14,9 @@ import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import net.sf.openrocket.document.Simulation;
import net.sf.openrocket.gui.simulation.SimulationPlotPanel;
@@ -49,6 +47,7 @@ import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.Range;
+import org.jfree.data.xy.XYDataItem;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
@@ -148,17 +147,6 @@ public class SimulationPlot {
throw new IllegalArgumentException("Domain axis type not specified.");
}
- // Custom tooltip generator
- StandardXYToolTipGenerator tooltipGenerator = new StandardXYToolTipGenerator() {
- final DecimalFormat f = new DecimalFormat("##.00");
- @Override
- public String generateToolTip(XYDataset dataset, int series, int item) {
- return String.format("Item: %d
Y: %s
X: %s",
- item, f.format(dataset.getYValue(series, item)),
- f.format(dataset.getXValue(series, item)));
- }
- };
-
// Get plot length (ignore trailing NaN's)
int typeCount = filled.getTypeCount();
@@ -248,6 +236,13 @@ public class SimulationPlot {
plot.setDomainGridlinePaint(Color.lightGray);
int axisno = 0;
+ Color[] colors = {new Color(0,114,189), // Colors for data lines
+ new Color(217,83,25),
+ new Color(237,177,32),
+ new Color(126,49,142),
+ new Color(119,172,48),
+ new Color(77,190,238),
+ new Color(162,20,47)};
for (int i = 0; i < 2; i++) {
// Check whether axis has any data
if (data[i].getSeriesCount() > 0) {
@@ -265,14 +260,40 @@ public class SimulationPlot {
plot.setDomainAxis(new PresetNumberAxis(domainMin, domainMax));
+ // Custom tooltip generator
+ int finalAxisno = axisno;
+ StandardXYToolTipGenerator tooltipGenerator = new StandardXYToolTipGenerator() {
+ final DecimalFormat f = new DecimalFormat("0.00");
+ @Override
+ public String generateToolTip(XYDataset dataset, int series, int item) {
+ XYSeries ser = data[finalAxisno].getSeries(series);
+ String name = ser.getDescription();
+ // Extract the unit from the last part of the series description, between parenthesis
+ Matcher m = Pattern.compile(".*\\((.*?)\\)").matcher(name);
+ String unit_y = "";
+ if (m.find()) {
+ unit_y = m.group(1);
+ }
+ String unit_x = domainUnit.getUnit();
+ String ord_end = "th"; // Ordinal number ending (1'st', 2'nd'...)
+ if (item % 10 == 1)
+ ord_end = "st";
+ else if (item % 10 == 2)
+ ord_end = "nd";
+ else if (item % 10 == 3)
+ ord_end = "rd";
+ return String.format("" +
+ "%s
" +
+ "Y: %s %s
" +
+ "X: %s %s
" +
+ "%d%s sample" +
+ "",
+ name, f.format(dataset.getYValue(series, item)), unit_y,
+ f.format(dataset.getXValue(series, item)), unit_x, item, ord_end);
+ }
+ };
+
// Add data and map to the axis
- Color[] colors = {new Color(0,114,189), // Colors for data lines
- new Color(217,83,25),
- new Color(237,177,32),
- new Color(126,49,142),
- new Color(119,172,48),
- new Color(77,190,238),
- new Color(162,20,47)};
plot.setDataset(axisno, data[i]);
ModifiedXYItemRenderer r = new ModifiedXYItemRenderer(branchCount);
renderers.add(r);