From ac65aee710307259e9c7ba97d0e9a2b07dafe628 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Fri, 6 Jul 2018 15:42:21 +0200 Subject: [PATCH] --- src/main/java/ch/psi/mxsc/BasePlate.java | 8 ++- src/main/java/ch/psi/mxsc/BasePlatePanel.java | 45 +++++++++++++-- src/main/java/ch/psi/mxsc/Controller.java | 39 +++++++++++-- src/main/java/ch/psi/mxsc/MainPanel.form | 33 ++++------- src/main/java/ch/psi/mxsc/MainPanel.java | 55 +++++++++++++------ 5 files changed, 129 insertions(+), 51 deletions(-) diff --git a/src/main/java/ch/psi/mxsc/BasePlate.java b/src/main/java/ch/psi/mxsc/BasePlate.java index 025b120..5aff853 100644 --- a/src/main/java/ch/psi/mxsc/BasePlate.java +++ b/src/main/java/ch/psi/mxsc/BasePlate.java @@ -106,7 +106,7 @@ public class BasePlate extends DeviceBase { } return null; } - + Sample getSelectedSample(){ if (selectable){ Puck puck = getSelectedPuck(); @@ -121,6 +121,12 @@ public class BasePlate extends DeviceBase { return null; } + void resetSelection(){ + Puck puck = getSelectedPuck(); + if (puck != null){ + puck.setSelected(false); + } + } Sample getLoadedSample(){ for (Puck p:getPucks()){ diff --git a/src/main/java/ch/psi/mxsc/BasePlatePanel.java b/src/main/java/ch/psi/mxsc/BasePlatePanel.java index 33c2a2b..5466354 100644 --- a/src/main/java/ch/psi/mxsc/BasePlatePanel.java +++ b/src/main/java/ch/psi/mxsc/BasePlatePanel.java @@ -4,14 +4,12 @@ package ch.psi.mxsc; import ch.psi.mxsc.BasePlate.DrawMode; -import ch.psi.pshell.core.Context; import ch.psi.pshell.imaging.Data; import ch.psi.pshell.imaging.ImageListener; import ch.psi.pshell.imaging.Source; import ch.psi.pshell.swing.DevicePanel; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; -import java.awt.Component; import java.awt.Point; import java.awt.Dimension; import java.awt.Graphics; @@ -33,6 +31,8 @@ public class BasePlatePanel extends DevicePanel { JPopupMenu samplePopupMenu; JMenuItem menuLoadSample; JMenuItem menuUnloadSample; + + boolean TOGGLE_SELECTION = false; /** * Creates new form BasePlatePanel */ @@ -72,6 +72,7 @@ public class BasePlatePanel extends DevicePanel { horizontal, vertical, overlapped, + puck } public Mode getMode() { @@ -159,6 +160,12 @@ public class BasePlatePanel extends DevicePanel { selectedPuck.draw(g2d, puckPlotRect, true, false, true, null); } break; + case puck: + if (selectedPuck!=null){ + puckPlotRect = new Rectangle(plotRect.x + borderPuck, plotRect.y + borderPuck, plotRect.width - 2 * borderPuck, plotRect.height - 2 * borderPuck); + selectedPuck.draw(g2d, puckPlotRect, true, true, true, null); + } + break; } } } @@ -233,7 +240,13 @@ public class BasePlatePanel extends DevicePanel { } else { onPuckReleased(e, puck); } - } + } else { + if (pressed) { + onPlatePressed(e); + } else { + onPlateReleased(e); + } + } } } catch (Exception ex) { Logger.getLogger(BasePlatePanel.class.getName()).log(Level.WARNING, null, ex); @@ -290,7 +303,11 @@ public class BasePlatePanel extends DevicePanel { void onSamplePressed(MouseEvent e, Sample sample){ if (getDevice().isSelectable()){ - sample.toggleSelected(true); + if (TOGGLE_SELECTION){ + sample.toggleSelected(true); + } else { + sample.setSelected(true); + } repaint(); } Controller.getInstance().onSamplePressed(sample); @@ -317,15 +334,31 @@ public class BasePlatePanel extends DevicePanel { void onPuckPressed(MouseEvent e, Puck puck){ if (getDevice().isSelectable()){ - puck.toggleSelected(true); + if (TOGGLE_SELECTION){ + puck.toggleSelected(true); + } else { + puck.setSelected(true); + } repaint(); } Controller.getInstance().onPuckPressed(puck); } void onPuckReleased(MouseEvent e, Puck puck){ - + Controller.getInstance().onPuckReleased(puck); } + + void onPlatePressed(MouseEvent e){ + if (!TOGGLE_SELECTION){ + getDevice().resetSelection(); + } + Controller.getInstance().onPlatePressed(getDevice()); + } + + void onPlateReleased(MouseEvent e){ + Controller.getInstance().onPlateReleased(getDevice()); + } + void onPuckPopupMenu(MouseEvent e, Puck puck){ System.out.println(puck); diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index 5c92a42..ad07421 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -9,10 +9,8 @@ import ch.psi.pshell.core.DevicePoolListener; import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceAdapter; import ch.psi.pshell.device.GenericDevice; -import ch.psi.pshell.device.ProcessVariableBase; import ch.psi.pshell.device.ReadbackDevice; import ch.psi.pshell.ui.Panel; -import ch.psi.utils.swing.SwingUtils; import java.io.IOException; import java.util.HashMap; import java.util.List; @@ -212,18 +210,47 @@ public class Controller { } } } + + BasePlatePanel puckPanel; void onPuckPressed(Puck puck){ - //getMainFrame().textDetSensors.setText(String.valueOf(puck.getDetection())); - //getMainFrame().textDetImage.setText(String.valueOf(puck.getImageDetection())); - - + //JPanel panel = new SinglePuckPanel(puck); + //panel.setOpaque(false); + //getMainFrame().setDetail(panel); + if ((puckPanel==null) || (puckPanel != getMainFrame().getDetail())){ + puckPanel = new BasePlatePanel(); + puckPanel.setMode(BasePlatePanel.Mode.puck); + puckPanel.setDevice((Device) getDevice("BasePlate")); + puckPanel.setEnabled(false); //TODO: Puck cannot be shared between two panels (device store single coordinates foe comparing to click) + getMainFrame().setDetail(puckPanel); + } } + void onPuckReleased(Puck puck){ + if (!puck.isSelected()){ + getMainFrame().setDefaultDetail(); + puckPanel = null; + } + } + void onSamplePressed(Sample sample){ onPuckPressed(sample.getPuck()); } + void onSampleReleased(Sample sample){ + onPuckReleased(sample.getPuck()); + } + + void onPlatePressed(BasePlate plate){ + if (plate.getSelectedPuck() == null){ + getMainFrame().setDefaultDetail(); + puckPanel = null; + } + } + + void onPlateReleased(BasePlate palte){ + } + GenericDevice getDevice(String name){ return getMainFrame().getDevice(name); } diff --git a/src/main/java/ch/psi/mxsc/MainPanel.form b/src/main/java/ch/psi/mxsc/MainPanel.form index 70e0c88..a870bf7 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.form +++ b/src/main/java/ch/psi/mxsc/MainPanel.form @@ -822,7 +822,7 @@ - + @@ -880,11 +880,17 @@ + + + + + + @@ -1102,7 +1108,7 @@ - + @@ -1133,7 +1139,7 @@ - + @@ -1144,32 +1150,15 @@ - - - - - + - - - - - + - - - - - - - - - diff --git a/src/main/java/ch/psi/mxsc/MainPanel.java b/src/main/java/ch/psi/mxsc/MainPanel.java index 9553e51..69caeb4 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.java +++ b/src/main/java/ch/psi/mxsc/MainPanel.java @@ -13,15 +13,19 @@ import ch.psi.pshell.imaging.Source; import ch.psi.pshell.ui.App; import ch.psi.pshell.ui.Panel; import ch.psi.utils.swing.SwingUtils; +import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Component; import java.awt.Dialog; import java.awt.Dimension; +import java.awt.GridBagLayout; import java.awt.Image; import java.util.logging.Level; import javax.swing.GroupLayout; import javax.swing.ImageIcon; import javax.swing.JComponent; -import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; /** * @@ -41,6 +45,7 @@ public class MainPanel extends Panel { buttonReleasePsys.setVisible(false); panelViewType.setVisible(false); panelDetection.setVisible(false); + setDefaultDetail(); } @Override @@ -306,6 +311,32 @@ public class MainPanel extends Panel { recoveryPlugin = getContext().getPluginManager().loadInitializePlugin(getContext().getSetup().expandPath("{plugins}/Recovery.java")); } + void setDefaultDetail() { + JLabel label = new JLabel(); + label.setIcon(new javax.swing.ImageIcon(getClass().getResource("/apple_transparent_white_100x50.png"))); + JPanel panel = new JPanel(); + panel.setLayout(new GridBagLayout()); + panel.add(label); + setDetail(panel); + //setContext(label); + } + + void setDetail(Component c) { + panelContext.removeAll(); + panelContext.setLayout(new BorderLayout()); + //panelContext.setLayout(new GridBagLayout()); + panelContext.add(c); + updateUI(); + } + + Component getDetail() { + return this.getComponent(0); + } + + Dimension getDetailSize(){ + return panelContext.getSize(); + } + /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is @@ -387,7 +418,6 @@ public class MainPanel extends Panel { btViewDewar = new javax.swing.JToggleButton(); btViewRT = new javax.swing.JToggleButton(); panelContext = new javax.swing.JPanel(); - jLabel10 = new javax.swing.JLabel(); basePlatePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Dewar")); @@ -853,15 +883,17 @@ public class MainPanel extends Panel { .addGap(0, 0, 0)) ); - jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder("Scanner")); + jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder("Datamatrix")); jLabel11.setText("Puck:"); jLabel13.setText("Sample:"); textSample.setEditable(false); + textSample.setBackground(new java.awt.Color(214, 217, 223)); textType.setEditable(false); + textType.setBackground(new java.awt.Color(214, 217, 223)); javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); jPanel8.setLayout(jPanel8Layout); @@ -1044,31 +1076,23 @@ public class MainPanel extends Panel { .addGroup(jPanel12Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btViewDewar, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btViewRT, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - panelContext.setBorder(javax.swing.BorderFactory.createTitledBorder("Context")); + panelContext.setBorder(javax.swing.BorderFactory.createTitledBorder("Detail")); panelContext.setPreferredSize(new java.awt.Dimension(300, 95)); - jLabel10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/apple_transparent_white_100x50.png"))); // NOI18N - javax.swing.GroupLayout panelContextLayout = new javax.swing.GroupLayout(panelContext); panelContext.setLayout(panelContextLayout); panelContextLayout.setHorizontalGroup( panelContextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelContextLayout.createSequentialGroup() - .addContainerGap(99, Short.MAX_VALUE) - .addComponent(jLabel10) - .addContainerGap(99, Short.MAX_VALUE)) + .addGap(0, 298, Short.MAX_VALUE) ); panelContextLayout.setVerticalGroup( panelContextLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelContextLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel10) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(0, 191, Short.MAX_VALUE) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); @@ -1242,7 +1266,6 @@ public class MainPanel extends Panel { private javax.swing.Box.Filler filler1; private ch.psi.mxsc.HexiposiPanel hexiposiPanel; private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14;