From b42b1cf98800ac9535b2e65b53e3a97e674ed0aa Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Wed, 22 Aug 2018 08:50:52 +0200 Subject: [PATCH] --- src/main/java/ch/psi/mxsc/BasePlate.java | 17 ++++- src/main/java/ch/psi/mxsc/BasePlatePanel.java | 17 +++++ src/main/java/ch/psi/mxsc/Controller.java | 38 +++++++++++ src/main/java/ch/psi/mxsc/MainPanel.form | 21 +++--- src/main/java/ch/psi/mxsc/MainPanel.java | 65 +++++++++++++++---- src/main/java/ch/psi/mxsc/Puck.java | 1 + src/main/java/ch/psi/mxsc/Sample.java | 1 + 7 files changed, 133 insertions(+), 27 deletions(-) diff --git a/src/main/java/ch/psi/mxsc/BasePlate.java b/src/main/java/ch/psi/mxsc/BasePlate.java index e2e46dd..c26d120 100644 --- a/src/main/java/ch/psi/mxsc/BasePlate.java +++ b/src/main/java/ch/psi/mxsc/BasePlate.java @@ -10,7 +10,6 @@ import ch.psi.pshell.imaging.PointDouble; import ch.psi.pshell.imaging.Utils; import ch.psi.utils.swing.MainFrame; import java.awt.Color; -import java.awt.Component; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; @@ -279,4 +278,20 @@ public class BasePlate extends DeviceBase { unloadSample (getLoadedSample()); } + + void onSelectionChanged(){ + Sample sample = getSelectedSample(); + if (sample!=null){ + //setCache(sample.getName()); + setCache(new Object[]{sample.getPuck().segment, sample.getPuck().number, sample.index+1}); + } else { + Puck puck = getSelectedPuck(); + if (puck!=null){ + //setCache(puck.getName()); + setCache(new Object[]{puck.segment, puck.number, null}); + } + } + setCache(null); + } + } diff --git a/src/main/java/ch/psi/mxsc/BasePlatePanel.java b/src/main/java/ch/psi/mxsc/BasePlatePanel.java index 5466354..03021a3 100644 --- a/src/main/java/ch/psi/mxsc/BasePlatePanel.java +++ b/src/main/java/ch/psi/mxsc/BasePlatePanel.java @@ -301,6 +301,15 @@ public class BasePlatePanel extends DevicePanel { } + void selectSample(Sample sample){ + if (getDevice().isSelectable()){ + sample.setSelected(true); + repaint(); + } + Controller.getInstance().onSamplePressed(sample); + + } + void onSamplePressed(MouseEvent e, Sample sample){ if (getDevice().isSelectable()){ if (TOGGLE_SELECTION){ @@ -332,6 +341,14 @@ public class BasePlatePanel extends DevicePanel { } + void selectPuck(Puck puck){ + if (getDevice().isSelectable()){ + puck.setSelected(true); + repaint(); + } + Controller.getInstance().onPuckPressed(puck); + } + void onPuckPressed(MouseEvent e, Puck puck){ if (getDevice().isSelectable()){ if (TOGGLE_SELECTION){ diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index a5bb6db..1523da1 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -91,6 +91,43 @@ public class Controller { this.mainFrame = (MainPanel) mainFrame; instance = this; clearPuckStates(); + + basePlate.addListener(new DeviceAdapter() { + @Override + public void onValueChanged(Device device, Object value, Object former) { + if (value!=null){ + String segment = ((Object[])value)[0].toString(); + Integer puck = (Integer) ((Object[])value)[1]; + Integer sample = (Integer) ((Object[])value)[2]; + Controller.this.mainFrame.onSelectionChanged(segment, puck, sample); + } else { + Controller.this.mainFrame.onSelectionChanged(null,null,null); + } + } + }); + } + + String getCurrentSelection(){ + Object value = basePlate.take(); + if (value!=null){ + String segment = ((Object[])value)[0].toString(); + Integer puck = (Integer) ((Object[])value)[1]; + Integer sample = (Integer) ((Object[])value)[2]; + String ret = segment + String.valueOf(puck); + if (sample!=null){ + ret = ret + String.valueOf(sample); + } + return ret; + } + return null; + } + + public void selectPuck(Puck puck){ + getMainFrame().basePlatePanel.selectPuck(puck); + } + + public void selectSample(Sample sample){ + getMainFrame().basePlatePanel.selectSample(sample); } //public Panel getMainFrame() { @@ -109,6 +146,7 @@ public class Controller { } getMainFrame().addDevice(basePlate); + if (puckSensorAccess == PuckSensorAccess.Esera) { getMainFrame().getContext().getDevicePool().addListener(new DevicePoolListener() { diff --git a/src/main/java/ch/psi/mxsc/MainPanel.form b/src/main/java/ch/psi/mxsc/MainPanel.form index b25fd46..e20369c 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.form +++ b/src/main/java/ch/psi/mxsc/MainPanel.form @@ -79,6 +79,9 @@ + + + @@ -805,18 +808,16 @@ + - - - - - + - + - + + @@ -1144,10 +1145,7 @@ - - - - + @@ -1166,7 +1164,6 @@ - diff --git a/src/main/java/ch/psi/mxsc/MainPanel.java b/src/main/java/ch/psi/mxsc/MainPanel.java index 5d1d101..7dde1db 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.java +++ b/src/main/java/ch/psi/mxsc/MainPanel.java @@ -30,6 +30,8 @@ import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableModel; /** @@ -56,7 +58,26 @@ public class MainPanel extends Panel { for (int puck=1; puck<=5; puck++){ tablePucks.getModel().setValueAt(segment+puck, row++, 0); } - } + } + + tablePucks.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + @Override + public void valueChanged(ListSelectionEvent e) { + try{ + String add = String.valueOf(tablePucks.getModel().getValueAt(tablePucks.getSelectedRow(), 0)); + 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){ + showException(ex); + } + } + }); } @Override @@ -73,8 +94,10 @@ public class MainPanel extends Panel { public void onInitialize(int runCount) { stopTimer(); Controller.getInstance().onInitialize(runCount); - //basePlatePanel.setDevice((Device) getDevice("BasePlate")); - //basePlatePanel.getDevice().setSelectable(true); + if (basePlatePanel.getDevice() != (Device) getDevice("BasePlate")){ + basePlatePanel.setDevice((Device) getDevice("BasePlate")); + basePlatePanel.getDevice().setSelectable(true); + } try { devicesPanel.initialize(); ((Device) getDevice("dewar_level")).addListener(new DeviceAdapter() { @@ -167,6 +190,7 @@ public class MainPanel extends Panel { void refresh(){ repaint(); for (Puck p : Controller.getInstance().basePlate.getPucks()) { + //int index = (p.getSegment() - new Character('A')) * 5 + p.getNumber(); tablePucks.getModel().setValueAt(p.getStatus(), p.getIndex(), 1); tablePucks.getModel().setValueAt(p.getId(), p.getIndex(), 2); } @@ -430,6 +454,23 @@ public class MainPanel extends Panel { HEADER )); } + + + void onSelectionChanged(String segment, Integer puck, Integer sample){ + if (segment != null){ + String add = segment + String.valueOf(puck); + for (int i=0; i