[#1168] Implement Show/hide CG/CP markings

This commit is contained in:
SiboVG 2022-05-26 17:18:17 +02:00
parent 5df388bafd
commit 18a690d829
3 changed files with 46 additions and 5 deletions

View File

@ -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<FigureElement> relativeExtra = new ArrayList<FigureElement>();
private final ArrayList<FigureElement> absoluteExtra = new ArrayList<FigureElement>();
@ -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);
@ -710,4 +713,11 @@ public class RocketFigure3d extends JPanel implements GLEventListener {
}
}
public boolean isDrawCarets() {
return drawCarets;
}
public void setDrawCarets(boolean drawCarets) {
this.drawCarets = drawCarets;
}
}

View File

@ -73,6 +73,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
* the highest priority, namely being the one where the corresponding RocketComponent has the highest displayOrder
@ -320,10 +322,13 @@ 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);
Rectangle rect = this.getVisibleRect();
@ -487,4 +492,12 @@ public class RocketFigure extends AbstractScaleFigure {
}
}
public boolean isDrawCarets() {
return drawCarets;
}
public void setDrawCarets(boolean drawCarets) {
this.drawCarets = drawCarets;
}
}

View File

@ -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();