diff --git a/swing/src/main/java/info/openrocket/swing/gui/plot/Plot.java b/swing/src/main/java/info/openrocket/swing/gui/plot/Plot.java index e3cbe5374..ef62eb379 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/plot/Plot.java +++ b/swing/src/main/java/info/openrocket/swing/gui/plot/Plot.java @@ -1,9 +1,11 @@ package info.openrocket.swing.gui.plot; import info.openrocket.core.l10n.Translator; +import info.openrocket.core.logging.Warning; import info.openrocket.core.simulation.DataBranch; import info.openrocket.core.simulation.DataType; import info.openrocket.core.simulation.FlightDataType; +import info.openrocket.core.simulation.FlightEvent; import info.openrocket.core.startup.Application; import info.openrocket.core.unit.Unit; import info.openrocket.core.unit.UnitGroup; @@ -53,6 +55,7 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Set; /* * TODO: It should be possible to simplify this code quite a bit by using a single Renderer instance for @@ -227,10 +230,11 @@ public abstract class Plot, C extend double dataY = dataset.getYValue(series, item); String unitY = ser.getUnit(); - return formatSampleTooltip(name, - nameT, dataT, unitT, - nameX, dataX, unitX, - nameY, dataY, unitY); + return formatTooltip(name, + nameT, dataT, unitT, + nameX, dataX, unitX, + nameY, dataY, unitY, + null); } }; @@ -316,10 +320,11 @@ public abstract class Plot, C extend return type; } - protected String formatSampleTooltip(String dataName, - String nameT, double dataT, String unitT, - String nameX, double dataX, String unitX, - String nameY, double dataY, String unitY) { + protected String formatTooltip(String dataName, + String nameT, double dataT, String unitT, + String nameX, double dataX, String unitX, + String nameY, double dataY, String unitY, + Set events) { final String strFormat = "%s: %s %s
"; @@ -330,7 +335,29 @@ public abstract class Plot, C extend sb.append(String.format("%s
", dataName)); - // If I was given valid Y data, put it in tooltip + // Any events? + if ((null != events) && (events.size() != 0)) { + // Pass through and collect any warnings + for (FlightEvent event : events) { + if (event.getType() == FlightEvent.Type.SIM_WARN) { + sb.append("Warning: " + ((Warning) event.getData()).toString() + "
"); + } + } + + // Now pass through and collect the other events + String eventStr = ""; + for (FlightEvent event : events) { + if (event.getType() != FlightEvent.Type.SIM_WARN) { + if (eventStr != "") { + eventStr = eventStr + ", "; + } + eventStr = eventStr + event.getType(); + } + } + sb.append(eventStr + "
"); + } + + // Valid Y data? if (!Double.isNaN(dataY)) { DecimalFormat df_y = DecimalFormatter.df(dataY, 2, false); sb.append(String.format(strFormat, nameY, df_y.format(dataY), unitY)); @@ -350,8 +377,8 @@ public abstract class Plot, C extend return sb.toString(); } - protected String formatSampleTooltip(String dataName, String nameX, double dataX, String unitX) { - return formatSampleTooltip(dataName, "", Double.NaN, "", nameX, dataX, unitX, "", Double.NaN, ""); + protected String formatTooltip(String dataName, String nameX, double dataX, String unitX) { + return formatTooltip(dataName, "", Double.NaN, "", nameX, dataX, unitX, "", Double.NaN, "", null); } protected static class LegendItems implements LegendItemSource { diff --git a/swing/src/main/java/info/openrocket/swing/gui/plot/SimulationPlot.java b/swing/src/main/java/info/openrocket/swing/gui/plot/SimulationPlot.java index 1519f3d9a..93f5fe269 100644 --- a/swing/src/main/java/info/openrocket/swing/gui/plot/SimulationPlot.java +++ b/swing/src/main/java/info/openrocket/swing/gui/plot/SimulationPlot.java @@ -320,10 +320,11 @@ public class SimulationPlot extends Plot events, - String tName, double time, String unitT, - String xName, double dataX, String unitX, - String yName, double dataY, String unitY) { - - DecimalFormat df_t = DecimalFormatter.df(time, 2, false); - DecimalFormat df_y = DecimalFormatter.df(dataY, 2, false); - DecimalFormat df_x = DecimalFormatter.df(dataX, 2, false); - - StringBuilder sb = new StringBuilder(); - - // start tooltip - sb.append(""); - - // Branchname(s) - sb.append(String.format("%s
", dataName)); - - // Any events? - if ((null != events) && (events.size() != 0)) { - // Pass through and collect any warnings - for (FlightEvent event : events) { - if (event.getType() == FlightEvent.Type.SIM_WARN) { - sb.append("Warning: " + ((Warning) event.getData()).toString() + "
"); - } - } - - // Now pass through and collect the other events - String eventStr = ""; - for (FlightEvent event : events) { - if (event.getType() != FlightEvent.Type.SIM_WARN) { - if (eventStr != "") { - eventStr = eventStr + ", "; - } - eventStr = eventStr + event.getType(); - } - } - sb.append(eventStr + "
"); - } - - if (!tName.equals(xName)) { - sb.append(String.format("%s: %s %s
", tName, df_t.format(time), unitT)); - } - sb.append(String.format("%s: %s %s
", xName, df_x.format(dataX), unitX)); - sb.append(String.format("%s: %s %s
", yName, df_y.format(dataY), unitY)); - - // End tooltip - sb.append(""); - - return sb.toString(); - } - private List buildEventInfo() { ArrayList eventList = new ArrayList<>();