From 31d3ceee2b16185a95000c8443084a779286b103 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Thu, 5 Dec 2024 15:20:03 +0100 Subject: [PATCH] Laser indicating loaded pucks --- src/main/java/ch/psi/mxsc/Controller.java | 11 ++++++++++- src/main/java/ch/psi/mxsc/MainPanel.form | 1 + src/main/java/ch/psi/mxsc/MainPanel.java | 14 +++++++++----- src/main/java/ch/psi/mxsc/PuckLoadingDialog.java | 11 ++++++++--- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index d8b836e..f2e1513 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -834,7 +834,7 @@ public class Controller { playSound("unmounted"); logPuckDetectionChange(puck, false); onPuckUnmounted(puck); - } + } void linkPuckDatamatrix(Puck puck, String datamatrix, boolean showMessage) { // if ( ((puck.getId()==null) && (datamatrix!=null)) || @@ -884,6 +884,15 @@ public class Controller { return null; } } + + String getPuckFromDatamatrix(String dm){ + try { + return (String) Context.getInstance().evalLineBackground("get_puck_from_datamatrix('" + dm + "')"); + } catch (Exception ex) { + return null; + } + + } void askPuckDatamatrix(Puck puck) { if ((dialogAskPuckDatamatrix != null) && (dialogAskPuckDatamatrix.isShowing())) { diff --git a/src/main/java/ch/psi/mxsc/MainPanel.form b/src/main/java/ch/psi/mxsc/MainPanel.form index 29820e9..72fe795 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.form +++ b/src/main/java/ch/psi/mxsc/MainPanel.form @@ -302,6 +302,7 @@ + diff --git a/src/main/java/ch/psi/mxsc/MainPanel.java b/src/main/java/ch/psi/mxsc/MainPanel.java index 607eaf8..ef5614a 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.java +++ b/src/main/java/ch/psi/mxsc/MainPanel.java @@ -277,7 +277,7 @@ public class MainPanel extends Panel { } }); samplePopupMenu.add(menuMountSample); - samplePopupMenu.add(menuUnmoountSample); + samplePopupMenu.add(menuUnmoountSample); } JMenuItem menuEditSamples; @@ -454,6 +454,7 @@ public class MainPanel extends Panel { @Override public void onStateChange(State state, State former) { Controller.getInstance().onStateChange(state, former); + updateButtonState(); } public void setViewCamera(){ @@ -602,10 +603,12 @@ public class MainPanel extends Panel { } } - void updateButtonSampleLoadState(){ + void updateButtonState(){ boolean doors_open = !Controller.getInstance().isDoorClosed(); boolean cover_pos_detected = isCoverPosDetected(); - buttonSampleLoad.setEnabled(doors_open && !cover_pos_detected); + buttonSampleLoad.setEnabled(doors_open && !cover_pos_detected && getState().isInitialized()); + buttonCamera.setEnabled(getState().isInitialized()); + buttonDrawing.setEnabled(getState().isInitialized()); } void updatePsysSafety(Object value) { if ((value == null) || !(value instanceof Boolean)) { @@ -624,7 +627,7 @@ public class MainPanel extends Panel { getLogger().log(Level.WARNING, null, ex); } } - updateButtonSampleLoadState(); + updateButtonState(); } void updateMode(Object value) { @@ -1057,7 +1060,7 @@ public class MainPanel extends Panel { } } } - updateButtonSampleLoadState(); + updateButtonState(); String text; try { List cache = (List)eval("get_cover_location_cache()", true); @@ -1263,6 +1266,7 @@ public class MainPanel extends Panel { panelDetection.setBorder(javax.swing.BorderFactory.createTitledBorder("Sample Transfer")); buttonSampleLoad.setText("Load"); + buttonSampleLoad.setEnabled(false); buttonSampleLoad.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonSampleLoadActionPerformed(evt); diff --git a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java index a3e4ae9..61ae80c 100644 --- a/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java +++ b/src/main/java/ch/psi/mxsc/PuckLoadingDialog.java @@ -92,9 +92,14 @@ public class PuckLoadingDialog extends JDialog { textScannedDatamatrix.setText((datamatrix == null) ? "" : datamatrix.trim()); if ((datamatrix != null) && (!datamatrix.isEmpty())){ setStatusLabel("Scanned puck " + datamatrix, 5000); - makeVisible(datamatrix); - Puck puck = Controller.getInstance().getFreePuck(); - Controller.getInstance().setLaserPos(puck.getName()); + makeVisible(datamatrix); + String loadedPuck = Controller.getInstance().getPuckFromDatamatrix(datamatrix); + if ((loadedPuck!=null) && !loadedPuck.isBlank()){ + Controller.getInstance().setLaserPos(loadedPuck); + } else { + Puck puck = Controller.getInstance().getFreePuck(); + Controller.getInstance().setLaserPos(puck.getName()); + } } else { setStatusLabel(null, -1); Controller.getInstance().setLaserPos((Puck)null);