Merge formatSampleTooltip and formatEventTooltip into a single formatTooltip to ensure consistency in formatting
This commit is contained in:
		
							parent
							
								
									4b2d4ca837
								
							
						
					
					
						commit
						bc8c0b48be
					
				@ -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<T extends DataType, B extends DataBranch<T>, C extend
 | 
			
		||||
						double dataY = dataset.getYValue(series, item);
 | 
			
		||||
						String unitY = ser.getUnit();
 | 
			
		||||
						
 | 
			
		||||
						return formatSampleTooltip(name,
 | 
			
		||||
						return formatTooltip(name,
 | 
			
		||||
											 nameT, dataT, unitT,
 | 
			
		||||
											 nameX, dataX, unitX,
 | 
			
		||||
												   nameY, dataY, unitY);
 | 
			
		||||
											 nameY, dataY, unitY,
 | 
			
		||||
											 null);
 | 
			
		||||
					}
 | 
			
		||||
				};
 | 
			
		||||
 | 
			
		||||
@ -316,10 +320,11 @@ public abstract class Plot<T extends DataType, B extends DataBranch<T>, C extend
 | 
			
		||||
		return type;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected String formatSampleTooltip(String dataName,
 | 
			
		||||
	protected String formatTooltip(String dataName,
 | 
			
		||||
								   String nameT, double dataT, String unitT,
 | 
			
		||||
								   String nameX, double dataX, String unitX,
 | 
			
		||||
										 String nameY, double dataY, String unitY) {
 | 
			
		||||
								   String nameY, double dataY, String unitY,
 | 
			
		||||
								   Set<FlightEvent> events) {
 | 
			
		||||
 | 
			
		||||
		final String strFormat = "%s: %s %s<br>";
 | 
			
		||||
		
 | 
			
		||||
@ -330,7 +335,29 @@ public abstract class Plot<T extends DataType, B extends DataBranch<T>, C extend
 | 
			
		||||
 | 
			
		||||
		sb.append(String.format("<b><i>%s</i></b><br>", 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("<b><i>Warning:  " + ((Warning) event.getData()).toString() + "</b></i><br>");
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// 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 + "<br>");
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// 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<T extends DataType, B extends DataBranch<T>, 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 {
 | 
			
		||||
 | 
			
		||||
@ -320,10 +320,11 @@ public class SimulationPlot extends Plot<FlightDataType, FlightDataBranch, Simul
 | 
			
		||||
						String unitX = config.getDomainAxisUnit().getUnit();
 | 
			
		||||
						String unitY = series.getUnit();
 | 
			
		||||
						String unitT = FlightDataType.TYPE_TIME.getUnitGroup().getDefaultUnit().toString();
 | 
			
		||||
						String tooltipText = formatEventTooltip(getNameBasedOnIdxAndSeries(series, sampleIdx), events,
 | 
			
		||||
						String tooltipText = formatTooltip(getNameBasedOnIdxAndSeries(series, sampleIdx),
 | 
			
		||||
														   tName, t, unitT,
 | 
			
		||||
														   xName, xcoord, unitX,
 | 
			
		||||
																yName, ycoord, unitY);
 | 
			
		||||
														   yName, ycoord, unitY,
 | 
			
		||||
														   events);
 | 
			
		||||
						double yloc = slope * ycoord + intercept;
 | 
			
		||||
						
 | 
			
		||||
						if (!Double.isNaN(xcoord) && !Double.isNaN(ycoord)) {
 | 
			
		||||
@ -338,57 +339,6 @@ public class SimulationPlot extends Plot<FlightDataType, FlightDataBranch, Simul
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	protected String formatEventTooltip(String dataName, Set<FlightEvent> 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("<html>");
 | 
			
		||||
 | 
			
		||||
		// Branchname(s)
 | 
			
		||||
		sb.append(String.format("<b><i>%s</i></b><br>", 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("<b><i>Warning:  " + ((Warning) event.getData()).toString() + "</b></i><br>");
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// 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 + "<br>");
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!tName.equals(xName)) {
 | 
			
		||||
			sb.append(String.format("%s: %s %s<br>", tName, df_t.format(time), unitT));
 | 
			
		||||
		}
 | 
			
		||||
		sb.append(String.format("%s: %s %s<br>", xName, df_x.format(dataX), unitX));
 | 
			
		||||
		sb.append(String.format("%s: %s %s<br>", yName, df_y.format(dataY), unitY));
 | 
			
		||||
 | 
			
		||||
		// End tooltip
 | 
			
		||||
		sb.append("</html>");
 | 
			
		||||
 | 
			
		||||
		return sb.toString();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private List<EventDisplayInfo> buildEventInfo() {
 | 
			
		||||
		ArrayList<EventDisplayInfo> eventList = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user