Merge pull request #2201 from MayNc10/unstable

[Enhancement] Add better warning that data will be plotted in time order
This commit is contained in:
Sibo Van Gool 2023-04-26 22:13:11 +02:00 committed by GitHub
commit a0b9093957
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 4 deletions

View File

@ -1504,6 +1504,7 @@ TCMotorSelPan.btn.close = Close
! PlotDialog
PlotDialog.CheckBox.Showdatapoints = Show data points
PlotDialog.lbl.Chart = left click drag to zoom area. mouse wheel to zoom. ctrl-mouse wheel to zoom x axis only. ctrl-left click drag to pan. right click drag to zoom dynamically.
PlotDialog.lbl.timeSeriesWarning = The data is plotted in time order even though the X axis type is not time.
PlotDialog.btn.exportImage = Export Image
ComponentTree.ttip.massoverride = mass overriden

View File

@ -18,6 +18,9 @@ import java.io.FileOutputStream;
import javax.swing.JTextPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import javax.swing.JEditorPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
@ -188,6 +191,7 @@ public class DescriptionArea extends JScrollPane {
}
});
setForeground(editorPane.getForeground());
editorPane.scrollRectToVisible(new Rectangle(0, 0, 1, 1));
}
@ -202,5 +206,23 @@ public class DescriptionArea extends JScrollPane {
editorPane.setFont(font);
}
}
public void setBackground(Color color) {
if (editorPane == null) return;
editorPane.setBackground(color);
StyledDocument styledDocument = (StyledDocument) editorPane.getDocument();
SimpleAttributeSet attributeSet = new SimpleAttributeSet();
StyleConstants.setForeground(attributeSet, color);
styledDocument.setCharacterAttributes(0, styledDocument.getLength(), attributeSet, false);
}
public void setForeground(Color color) {
if (editorPane == null) return;
editorPane.setForeground(color);
StyledDocument styledDocument = (StyledDocument) editorPane.getDocument();
SimpleAttributeSet attributeSet = new SimpleAttributeSet();
StyleConstants.setForeground(attributeSet, color);
styledDocument.setCharacterAttributes(0, styledDocument.getLength(), attributeSet, false);
}
}

View File

@ -28,8 +28,10 @@ import net.sf.openrocket.gui.util.Icons;
import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.gui.widgets.SaveFileChooser;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.simulation.FlightDataType;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.startup.Preferences;
import net.sf.openrocket.util.Color;
import net.sf.openrocket.gui.widgets.SelectColorButton;
import org.jfree.chart.ChartPanel;
@ -71,6 +73,13 @@ public class SimulationPlotDialog extends JDialog {
//// Description text
JLabel label = new StyledLabel(trans.get("PlotDialog.lbl.Chart"), -2);
panel.add(label, "wrap");
// Add warning if X axis type is not time
if (config.getDomainAxisType() != FlightDataType.TYPE_TIME) {
JLabel msg = new StyledLabel(trans.get("PlotDialog.lbl.timeSeriesWarning"), -2);
msg.setForeground(Color.DARK_RED.toAWTColor());
panel.add(msg, "wrap");
}
//// Show data points
final JCheckBox check = new JCheckBox(trans.get("PlotDialog.CheckBox.Showdatapoints"));

View File

@ -40,6 +40,7 @@ import net.sf.openrocket.simulation.FlightEvent;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.startup.Preferences;
import net.sf.openrocket.unit.Unit;
import net.sf.openrocket.util.Color;
import net.sf.openrocket.util.Utils;
import net.sf.openrocket.gui.widgets.SelectColorButton;
@ -105,7 +106,8 @@ public class SimulationPlotPanel extends JPanel {
private int modifying = 0;
private DescriptionArea simPlotPanelDesc;
public SimulationPlotPanel(final Simulation simulation) {
super(new MigLayout("fill"));
@ -170,6 +172,14 @@ public class SimulationPlotPanel extends JPanel {
if (modifying > 0)
return;
FlightDataType type = (FlightDataType) domainTypeSelector.getSelectedItem();
if (type == FlightDataType.TYPE_TIME) {
simPlotPanelDesc.setVisible(false);
simPlotPanelDesc.setText("");
}
else {
simPlotPanelDesc.setVisible(true);
simPlotPanelDesc.setText(trans.get("simplotpanel.Desc"));
}
configuration.setDomainAxisType(type);
domainUnitSelector.setUnitGroup(type.getUnitGroup());
domainUnitSelector.setSelectedUnit(configuration.getDomainAxisUnit());
@ -193,9 +203,12 @@ public class SimulationPlotPanel extends JPanel {
this.add(domainUnitSelector, "width 40lp, gapright para");
//// The data will be plotted in time order even if the X axis type is not time.
DescriptionArea desc = new DescriptionArea(trans.get("simplotpanel.Desc"), 2, -2f);
desc.setViewportBorder(BorderFactory.createEmptyBorder());
this.add(desc, "width 1px, growx 1, wrap unrel");
simPlotPanelDesc = new DescriptionArea("", 2, -2f, false);
simPlotPanelDesc.setVisible(false);
simPlotPanelDesc.setForeground(Color.DARK_RED.toAWTColor());
simPlotPanelDesc.setViewportBorder(BorderFactory.createEmptyBorder());
this.add(simPlotPanelDesc, "width 1px, growx 1, wrap unrel");