From 52a8daf5c04b1871047f08c8066a3e311faa9297 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Wed, 22 Aug 2018 11:43:29 +0200 Subject: [PATCH] --- src/main/java/ch/psi/mxsc/BasePlate.java | 19 +++++++----- src/main/java/ch/psi/mxsc/BasePlatePanel.java | 26 +++++++++------- src/main/java/ch/psi/mxsc/MainPanel.java | 5 +-- src/main/java/ch/psi/mxsc/Puck.java | 3 +- src/main/java/ch/psi/mxsc/Sample.java | 3 +- .../java/ch/psi/mxsc/SinglePuckPanel.java | 31 +++++++++++++++++++ 6 files changed, 64 insertions(+), 23 deletions(-) create mode 100644 src/main/java/ch/psi/mxsc/SinglePuckPanel.java diff --git a/src/main/java/ch/psi/mxsc/BasePlate.java b/src/main/java/ch/psi/mxsc/BasePlate.java index c26d120..67ec3fb 100644 --- a/src/main/java/ch/psi/mxsc/BasePlate.java +++ b/src/main/java/ch/psi/mxsc/BasePlate.java @@ -78,13 +78,18 @@ public class BasePlate extends DeviceBase { return (BasePlateConfig) super.getConfig(); } - boolean selectable; - public boolean isSelectable() { - return selectable; + enum SelectionMode{ + Samples, + Pucks, + None + } + SelectionMode selectionMode = SelectionMode.None; + public SelectionMode getSelectionMode() { + return selectionMode; } - public void setSelectable(boolean selectable) { - this.selectable = selectable; + public void setSelectionMode(SelectionMode selectionMode) { + this.selectionMode = selectionMode; } public Puck[] getPucks() { @@ -97,7 +102,7 @@ public class BasePlate extends DeviceBase { Puck getSelectedPuck(){ - if (selectable){ + if (selectionMode!=SelectionMode.None){ for (Puck p:getPucks()){ if (p.isSelected()){ return p; @@ -108,7 +113,7 @@ public class BasePlate extends DeviceBase { } Sample getSelectedSample(){ - if (selectable){ + if (selectionMode==SelectionMode.Samples){ Puck puck = getSelectedPuck(); if (puck != null){ for (Sample s: puck.getSamples()){ diff --git a/src/main/java/ch/psi/mxsc/BasePlatePanel.java b/src/main/java/ch/psi/mxsc/BasePlatePanel.java index 03021a3..53f9cb9 100644 --- a/src/main/java/ch/psi/mxsc/BasePlatePanel.java +++ b/src/main/java/ch/psi/mxsc/BasePlatePanel.java @@ -4,6 +4,7 @@ package ch.psi.mxsc; import ch.psi.mxsc.BasePlate.DrawMode; +import ch.psi.mxsc.BasePlate.SelectionMode; import ch.psi.pshell.imaging.Data; import ch.psi.pshell.imaging.ImageListener; import ch.psi.pshell.imaging.Source; @@ -302,24 +303,25 @@ public class BasePlatePanel extends DevicePanel { } void selectSample(Sample sample){ - if (getDevice().isSelectable()){ + if (getDevice().getSelectionMode()==SelectionMode.Samples){ sample.setSelected(true); repaint(); + Controller.getInstance().onSamplePressed(sample); } - Controller.getInstance().onSamplePressed(sample); - } void onSamplePressed(MouseEvent e, Sample sample){ - if (getDevice().isSelectable()){ + if (getDevice().getSelectionMode()==SelectionMode.Samples){ if (TOGGLE_SELECTION){ sample.toggleSelected(true); } else { sample.setSelected(true); } repaint(); + Controller.getInstance().onSamplePressed(sample); + } else if (getDevice().getSelectionMode()==SelectionMode.Pucks){ + onPuckPressed(e, sample.getPuck()); } - Controller.getInstance().onSamplePressed(sample); } void onSampleReleased(MouseEvent e, Sample sample){ @@ -342,23 +344,23 @@ public class BasePlatePanel extends DevicePanel { } void selectPuck(Puck puck){ - if (getDevice().isSelectable()){ + if (getDevice().getSelectionMode()!=SelectionMode.None){ puck.setSelected(true); - repaint(); - } - Controller.getInstance().onPuckPressed(puck); + repaint(); + Controller.getInstance().onPuckPressed(puck); + } } void onPuckPressed(MouseEvent e, Puck puck){ - if (getDevice().isSelectable()){ + if (getDevice().getSelectionMode()!=SelectionMode.None){ if (TOGGLE_SELECTION){ puck.toggleSelected(true); } else { puck.setSelected(true); } - repaint(); + repaint(); + Controller.getInstance().onPuckPressed(puck); } - Controller.getInstance().onPuckPressed(puck); } void onPuckReleased(MouseEvent e, Puck puck){ diff --git a/src/main/java/ch/psi/mxsc/MainPanel.java b/src/main/java/ch/psi/mxsc/MainPanel.java index c13b823..3fc0f9d 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.java +++ b/src/main/java/ch/psi/mxsc/MainPanel.java @@ -15,6 +15,7 @@ import ch.psi.pshell.ui.App; import ch.psi.pshell.ui.Panel; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; +import ch.psi.mxsc.BasePlate.SelectionMode; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; @@ -88,7 +89,7 @@ public class MainPanel extends Panel { SwingUtils.getWindow(this).setIconImage(img); } basePlatePanel.setDevice(Controller.getInstance().basePlate); - basePlatePanel.getDevice().setSelectable(true); + basePlatePanel.getDevice().setSelectionMode(SelectionMode.Pucks); } @Override @@ -97,7 +98,7 @@ public class MainPanel extends Panel { Controller.getInstance().onInitialize(runCount); if (basePlatePanel.getDevice() != (Device) getDevice("BasePlate")){ basePlatePanel.setDevice((Device) getDevice("BasePlate")); - basePlatePanel.getDevice().setSelectable(true); + basePlatePanel.getDevice().setSelectionMode(SelectionMode.Pucks); } try { devicesPanel.initialize(); diff --git a/src/main/java/ch/psi/mxsc/Puck.java b/src/main/java/ch/psi/mxsc/Puck.java index b779032..76c1401 100644 --- a/src/main/java/ch/psi/mxsc/Puck.java +++ b/src/main/java/ch/psi/mxsc/Puck.java @@ -3,6 +3,7 @@ */ package ch.psi.mxsc; +import ch.psi.mxsc.BasePlate.SelectionMode; import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceBase; import ch.psi.pshell.imaging.DimensionDouble; @@ -284,7 +285,7 @@ public class Puck extends DeviceBase { private boolean selected; public boolean isSelected() { - return selected && getBasePlate().isSelectable(); + return selected && (getBasePlate().getSelectionMode()!=SelectionMode.None); } public void toggleSelected(boolean value) { diff --git a/src/main/java/ch/psi/mxsc/Sample.java b/src/main/java/ch/psi/mxsc/Sample.java index 2a6ea15..7f6b3aa 100644 --- a/src/main/java/ch/psi/mxsc/Sample.java +++ b/src/main/java/ch/psi/mxsc/Sample.java @@ -3,6 +3,7 @@ */ package ch.psi.mxsc; +import ch.psi.mxsc.BasePlate.SelectionMode; import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceBase; import ch.psi.pshell.imaging.DimensionDouble; @@ -55,7 +56,7 @@ public class Sample extends DeviceBase { boolean selected; public boolean isSelected() { - return selected && getPuck().getBasePlate().isSelectable(); + return selected && (getPuck().getBasePlate().getSelectionMode() == SelectionMode.Samples); } public void toggleSelected(boolean value) { diff --git a/src/main/java/ch/psi/mxsc/SinglePuckPanel.java b/src/main/java/ch/psi/mxsc/SinglePuckPanel.java new file mode 100644 index 0000000..35ffec3 --- /dev/null +++ b/src/main/java/ch/psi/mxsc/SinglePuckPanel.java @@ -0,0 +1,31 @@ + +package ch.psi.mxsc; + +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Rectangle; +import javax.swing.JPanel; + +/** + * + */ +public class SinglePuckPanel extends JPanel { + + int puckBorder = 20; + Puck puck; + + public SinglePuckPanel(Puck puck) { + this.puck = puck; + } + + @Override + public void paint(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + super.paint(g); + Dimension size = getSize(); + Rectangle puckPlotRect = new Rectangle(puckBorder, puckBorder, size.width - 2 * puckBorder, size.height - 2 * puckBorder); + puck.draw(g2d, puckPlotRect, true, true, true, null); + } + +}