From 5e7540620bfa98d69ec92e06a7e71c62a31f0151 Mon Sep 17 00:00:00 2001 From: Alexandre Gobbo Date: Tue, 11 Sep 2018 16:53:50 +0200 Subject: [PATCH] Link samples table to GUI events --- src/main/java/ch/psi/mxsc/BasePlate.java | 10 +++++++ src/main/java/ch/psi/mxsc/Controller.java | 36 ++++++++++++++++++----- src/main/java/ch/psi/mxsc/MainPanel.java | 21 +++++++------ 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/src/main/java/ch/psi/mxsc/BasePlate.java b/src/main/java/ch/psi/mxsc/BasePlate.java index 2487cd8..c9b10dc 100644 --- a/src/main/java/ch/psi/mxsc/BasePlate.java +++ b/src/main/java/ch/psi/mxsc/BasePlate.java @@ -158,6 +158,16 @@ public class BasePlate extends DeviceBase { return null; } + public void clearId(String id) { + for (Device d : getChildren()) { + if (d instanceof Puck){ + if ((id==null) || id.equals(((Puck) d).getId())){ + ((Puck) d).setId(null); + } + } + } + } + public void loadSample(Sample sample) throws Exception{ Sample loaded = getLoadedSample(); diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index 4296b1c..7414394 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -287,6 +287,10 @@ public class Controller { public Puck getPuck(String name) { return basePlate.getPuckByName(name); } + + public BasePlate getBasePlate() { + return basePlate; + } EseraDetection detection; @@ -588,7 +592,9 @@ public class Controller { if (!datamatrix.isEmpty()){ getMainFrame().setPuckDatamatrix(null); linkPuckDatamatrix(puck, datamatrix); - } + } else { + //TODO + } } else if (detectedPuckRemoved){ linkPuckDatamatrix(puck, null); } @@ -602,14 +608,30 @@ public class Controller { public void linkPuckDatamatrix(Puck puck, String datamatrix){ // if ( ((puck.getId()==null) && (datamatrix!=null)) || // (puck.getId()!=null) && (!puck.getId().equals(datamatrix))){ - System.out.println("Setting to: " + puck.getName() + " datamatrix: " + datamatrix); + String puckName = (puck == null) ? "" : puck.getName(); + if (datamatrix == null){ + datamatrix = ""; + } + datamatrix = datamatrix.trim(); + + boolean showMessage = (puck != null) && !datamatrix.isEmpty(); + + + System.out.println("Setting datamatrix '" + datamatrix + "' to puck: " + puckName); try { - Context.getInstance().evalLineBackground("set_puck_datamatrix('" + puck.getName() + "','" + datamatrix + "')"); - puck.setId(datamatrix); - SwingUtils.showMessage(getMainFrame(), "Puck loading", - "Puck " + datamatrix + "set to position " + puck.getName(), - 5000); + Context.getInstance().evalLineBackground("set_puck_datamatrix('" + puckName + "','" + datamatrix + "')"); + if (puck != null){ + puck.setId(datamatrix); + } else { + basePlate.clearId(datamatrix); + } + + if (showMessage){ + SwingUtils.showMessage(getMainFrame(), "Puck loading", + "Puck '" + datamatrix + "' set to position " + puckName, + 5000); + } } catch (Exception ex) { Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex); } diff --git a/src/main/java/ch/psi/mxsc/MainPanel.java b/src/main/java/ch/psi/mxsc/MainPanel.java index 16b8f49..b3a444b 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.java +++ b/src/main/java/ch/psi/mxsc/MainPanel.java @@ -87,15 +87,18 @@ public class MainPanel extends Panel { @Override public void valueChanged(ListSelectionEvent e) { try { - String add = String.valueOf(tableSamples.getModel().getValueAt(tableSamples.getSelectedRow(), 3)); - if (!add.trim().isEmpty()) { - String cur = Controller.getInstance().getCurrentSelection(); - if (cur != null) { - cur = cur.substring(0, 2); - } - if (!add.equals(cur)) { - Puck puck = Controller.getInstance().getPuck(add); - Controller.getInstance().selectPuck(puck); + int selection = tableSamples.getSelectedRow(); + if (selection>=0){ + String add = String.valueOf(tableSamples.getModel().getValueAt(selection, 3)); + if (!add.trim().isEmpty()) { + String cur = Controller.getInstance().getCurrentSelection(); + if (cur != null) { + cur = cur.substring(0, 2); + } + if (!add.equals(cur)) { + Puck puck = Controller.getInstance().getPuck(add); + Controller.getInstance().selectPuck(puck); + } } } } catch (Exception ex) {