From 45cb47eb7162bb35a59ff159c57b64f6a284becb Mon Sep 17 00:00:00 2001 From: gobbo_a Date: Wed, 20 Aug 2025 15:34:13 +0200 Subject: [PATCH] Pointer display --- src/main/java/ch/psi/mxsc/BasePlatePanel.java | 12 +++++++++++ src/main/java/ch/psi/mxsc/Controller.java | 1 + src/main/java/ch/psi/mxsc/Puck.java | 20 +++++++++++++++++++ src/main/java/ch/psi/mxsc/PuckGraphics.java | 7 +++++++ 4 files changed, 40 insertions(+) diff --git a/src/main/java/ch/psi/mxsc/BasePlatePanel.java b/src/main/java/ch/psi/mxsc/BasePlatePanel.java index 78a66af..bed87a4 100644 --- a/src/main/java/ch/psi/mxsc/BasePlatePanel.java +++ b/src/main/java/ch/psi/mxsc/BasePlatePanel.java @@ -436,6 +436,18 @@ public class BasePlatePanel extends DevicePanel { } } + + void pointPuck(Puck puck){ + if (puck != null){ + puck.setPointed(true); + } else { + for (Puck p : getDevice().getPucks()) { + p.setPointed(false); + } + } + repaint(); + } + void onPuckPressed(MouseEvent e, Puck puck){ if (getSelectionMode()!=SelectionMode.None){ if (TOGGLE_SELECTION){ diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index c09a019..f02c958 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -759,6 +759,7 @@ public class Controller { public void setLaserPos(String pos){ try { getMainFrame().evalAsync("set_laser_pos(" + ((pos==null) ? "" : ("'" + pos + "'") ) + ")" ,true); + getMainFrame().basePlatePanel.pointPuck((pos==null) ? null : basePlate.getPuckByName(pos)); } catch (Interpreter.InterpreterStateException ex) { Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex); } diff --git a/src/main/java/ch/psi/mxsc/Puck.java b/src/main/java/ch/psi/mxsc/Puck.java index 46f6a00..46ff7bd 100644 --- a/src/main/java/ch/psi/mxsc/Puck.java +++ b/src/main/java/ch/psi/mxsc/Puck.java @@ -454,6 +454,26 @@ public class Puck extends DeviceBase { } } + private boolean pointed; + + public boolean isPointed() { + return pointed; + } + + public void setPointed(boolean value) { + if (value != pointed) { + if (value == true) { + for (Device d : getParent().getChildren()) { + if (d instanceof Puck puck) { + puck.pointed = false; + } + } + } + pointed = value; + } + } + + public int getNumberOfSamples() { return numberOfSamples; } diff --git a/src/main/java/ch/psi/mxsc/PuckGraphics.java b/src/main/java/ch/psi/mxsc/PuckGraphics.java index 139d032..153f17d 100644 --- a/src/main/java/ch/psi/mxsc/PuckGraphics.java +++ b/src/main/java/ch/psi/mxsc/PuckGraphics.java @@ -315,6 +315,13 @@ public class PuckGraphics { g.drawOval(pu.x - unipuckSize / 2, pu.y - unipuckSize / 2, unipuckSize, unipuckSize); g.drawOval(pm.x - minispineSize / 2, pm.y - minispineSize / 2, minispineSize, minispineSize); } + //Draw pointed + + if (puck.isPointed()){ + int pointerSize = 8; + g.setColor(Color.red); + g.drawOval(position.x - pointerSize / 2, position.y - pointerSize / 2, pointerSize, pointerSize); + } //Draw text String id = puck.getId();