From 18a690d8299154268404d4e8ded6313f629f06e6 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Thu, 26 May 2022 17:18:17 +0200 Subject: [PATCH] [#1168] Implement Show/hide CG/CP markings --- .../gui/figure3d/RocketFigure3d.java | 14 +++++++++++-- .../gui/scalefigure/RocketFigure.java | 17 ++++++++++++++-- .../gui/scalefigure/RocketPanel.java | 20 ++++++++++++++++++- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java b/swing/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java index c2557f914..76c29cc4a 100644 --- a/swing/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java +++ b/swing/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java @@ -83,6 +83,7 @@ public class RocketFigure3d extends JPanel implements GLEventListener { private Overlay extrasOverlay, caretOverlay; private BufferedImage cgCaretRaster, cpCaretRaster; private volatile boolean redrawExtras = true; + private boolean drawCarets = true; private final ArrayList relativeExtra = new ArrayList(); private final ArrayList absoluteExtra = new ArrayList(); @@ -324,7 +325,9 @@ public class RocketFigure3d extends JPanel implements GLEventListener { rr.render(drawable, configuration, selection); drawExtras(gl, glu); - drawCarets(gl, glu); + if (drawCarets) { + drawCarets(gl, glu); + } // GLJPanel with GLSL Flipper relies on this: gl.glFrontFace(GL.GL_CCW); @@ -709,5 +712,12 @@ public class RocketFigure3d extends JPanel implements GLEventListener { }); } } - + + public boolean isDrawCarets() { + return drawCarets; + } + + public void setDrawCarets(boolean drawCarets) { + this.drawCarets = drawCarets; + } } diff --git a/swing/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java b/swing/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java index 5275d8ad0..b5a530268 100644 --- a/swing/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java +++ b/swing/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java @@ -72,6 +72,8 @@ public class RocketFigure extends AbstractScaleFigure { private double rotation; private Transformation axialRotation; + + private boolean drawCarets = true; /** * The shapes to be drawn are stored in this Priority Queue, where the first shape to be drawn is the one with @@ -320,9 +322,12 @@ public class RocketFigure extends AbstractScaleFigure { // Draw relative extras - for (FigureElement e : relativeExtra) { - e.paint(g2, scale); + if (drawCarets) { + for (FigureElement e : relativeExtra) { + e.paint(g2, scale); + } } + // Draw absolute extras g2.setTransform(baseTransform); @@ -487,4 +492,12 @@ public class RocketFigure extends AbstractScaleFigure { } } + public boolean isDrawCarets() { + return drawCarets; + } + + public void setDrawCarets(boolean drawCarets) { + this.drawCarets = drawCarets; + } + } diff --git a/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java b/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java index 4e0dbf508..e8e8a7dda 100644 --- a/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java +++ b/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java @@ -5,6 +5,8 @@ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import java.util.ArrayList; @@ -120,6 +122,7 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change private final ScaleScrollPane scrollPane; private final JPanel figureHolder; + private JLabel zoomLabel; private JLabel infoMessage; @@ -259,6 +262,7 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change figureHolder.add(figure3d, BorderLayout.CENTER); rotationSlider.setEnabled(false); scaleSelector.setEnabled(false); + zoomLabel.repaint(); // Makes sure the zoom label is above the scaleSelector revalidate(); figureHolder.revalidate(); @@ -328,7 +332,8 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change // Zoom level selector scaleSelector = new ScaleSelector(scrollPane); - ribbon.add(new JLabel(trans.get("RocketPanel.lbl.Zoom")), "cell 1 0, center"); + zoomLabel = new JLabel(trans.get("RocketPanel.lbl.Zoom")); + ribbon.add(zoomLabel, "cell 1 0, center"); ribbon.add(scaleSelector, "cell 1 1"); // Show CG/CP @@ -337,6 +342,19 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change showCGCP.setSelected(true); ribbon.add(showCGCP, "cell 2 1, gapleft para"); + showCGCP.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (figure != null) { + figure.setDrawCarets(showCGCP.isSelected()); + } + if (figure3d != null) { + figure3d.setDrawCarets(showCGCP.isSelected()); + } + updateFigures(); + } + }); + // Vertical separator JSeparator sep = new JSeparator(SwingConstants.VERTICAL); Dimension d_sep = sep.getPreferredSize();