Mount/Unmount from samples table

This commit is contained in:
2023-04-28 15:34:23 +02:00
parent b2d62c4a28
commit 1dfee8ad34
3 changed files with 144 additions and 23 deletions

View File

@@ -30,8 +30,8 @@ import javax.swing.JPopupMenu;
*/
public class BasePlatePanel extends DevicePanel {
JPopupMenu samplePopupMenu;
JMenuItem menuLoadSample;
JMenuItem menuUnloadSample;
JMenuItem menuMountSample;
JMenuItem menuUnmountSample;
BasePlateGraphics basePlateGraphics;
PuckGraphics puckGraphics;
@@ -43,8 +43,8 @@ public class BasePlatePanel extends DevicePanel {
initComponents();
addMouseListener(mouseAdapter);
samplePopupMenu = new JPopupMenu();
menuLoadSample = new JMenuItem("Load");
menuLoadSample.addActionListener((ActionEvent e) -> {
menuMountSample = new JMenuItem("Mount");
menuMountSample.addActionListener((ActionEvent e) -> {
try {
//getDevice().loadSample();
int sample = clickedSample.getNumber();
@@ -55,8 +55,8 @@ public class BasePlatePanel extends DevicePanel {
SwingUtils.showException(this, ex);
}
});
menuUnloadSample = new JMenuItem("Unload");
menuUnloadSample.addActionListener((ActionEvent e) -> {
menuUnmountSample = new JMenuItem("Unmount");
menuUnmountSample.addActionListener((ActionEvent e) -> {
try {
//getDevice().unloadSample(getDevice().getSelectedSample());
int sample = clickedSample.getNumber();
@@ -67,8 +67,8 @@ public class BasePlatePanel extends DevicePanel {
SwingUtils.showException(this, ex);
}
});
samplePopupMenu.add(menuLoadSample);
samplePopupMenu.add(menuUnloadSample);
samplePopupMenu.add(menuMountSample);
samplePopupMenu.add(menuUnmountSample);
}
@Override
@@ -408,8 +408,8 @@ public class BasePlatePanel extends DevicePanel {
if (getSelectionMode()==SelectionMode.Samples){
//menuLoadSample.setEnabled(sample.isPresent() && getDevice().getLoadedSample()==null);
//menuUnloadSample.setEnabled(!sample.isPresent() && getDevice().getLoadedSample()!=null);
menuLoadSample.setEnabled(!sample.isLoaded() && getDevice().getLoadedSample()==null);
menuUnloadSample.setEnabled(sample.isLoaded() && getDevice().getLoadedSample()!=null);
menuMountSample.setEnabled(!sample.isLoaded() && getDevice().getLoadedSample()==null);
menuUnmountSample.setEnabled(sample.isLoaded() && getDevice().getLoadedSample()!=null);
samplePopupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}

View File

@@ -1179,7 +1179,7 @@
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace min="-2" pref="0" max="-2" attributes="0"/>
<Component id="panelTableSamples" pref="50" max="32767" attributes="0"/>
<Component id="panelTableSamples" pref="126" max="32767" attributes="0"/>
<EmptySpace min="-2" pref="0" max="-2" attributes="0"/>
</Group>
</Group>

View File

@@ -4,7 +4,6 @@
package ch.psi.mxsc;
import ch.psi.mxsc.BasePlatePanel.SelectionMode;
import ch.psi.pshell.core.Context;
import ch.psi.pshell.core.Plugin;
import ch.psi.pshell.device.Device;
import ch.psi.pshell.device.DeviceAdapter;
@@ -12,7 +11,6 @@ import ch.psi.pshell.imaging.Renderer;
import ch.psi.pshell.imaging.RendererMode;
import ch.psi.pshell.imaging.Source;
import ch.psi.pshell.scripting.ViewPreference;
import ch.psi.pshell.swing.ScriptEditor;
import ch.psi.pshell.ui.App;
import ch.psi.pshell.ui.Panel;
import ch.psi.pshell.ui.StatusBar;
@@ -31,14 +29,14 @@ import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.ScriptException;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
@@ -47,6 +45,7 @@ import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
@@ -64,6 +63,10 @@ public class MainPanel extends Panel {
Boolean roomTemperature;
public final String PUCK_LOADING_STATUS = "Puck loading";
StatusBar statusBar;
JPopupMenu samplePopupMenu;
JMenuItem menuMountSample;
JMenuItem menuUnmoountSample;
public enum BasePlateLayout {
normal,
@@ -95,6 +98,9 @@ public class MainPanel extends Panel {
panelLegend.setVisible(false);
panelLN2Level.setVisible(false);
panelDisplayMode.setVisible(false);
panelBottom.setPreferredSize(panelTop.getPreferredSize());
panelBottom.setMinimumSize(panelTop.getMinimumSize());
panelBottom.setSize(panelTop.getSize());
panelDatamatrix.setVisible(false);
}
@@ -134,13 +140,9 @@ public class MainPanel extends Panel {
if (e.getValueIsAdjusting() == false) {
int selection = tableSamples.getSelectedRow();
if (selection >= 0) {
String add = String.valueOf(tableSamples.getModel().getValueAt(selection, COLUMN_PUCK_ADDRESS));
String add = getSamplesTableSelectedPuck();
if (!add.trim().isEmpty()) {
int pos = -1;
try {
pos = Integer.valueOf(String.valueOf(tableSamples.getModel().getValueAt(selection, COLUMN_SAMPLE_POSITION)));
} catch (Exception ex) {
}
int pos = getSamplesTableSelectedPosition();
String curSelection = Controller.getInstance().getCurrentSelection();
String curPuck = (curSelection == null) ? null : curSelection.substring(0, 2);
if (!add.equals(curPuck)) {
@@ -162,6 +164,91 @@ public class MainPanel extends Panel {
}
}
});
tableSamples.addMouseListener(new MouseAdapter() {
/*
@Override
public void mouseClicked(MouseEvent e) {
try {
if ((e.getClickCount() == 2) && (!e.isPopupTrigger())) {
int index = tableSamples.getSelectedRow();
if (index>=0) {
onDoubleClickSample(index);
}
}
} catch (Exception ex) {
showException(ex);
}
}
*/
@Override
public void mouseReleased(MouseEvent e) {
checkPopup(e);
}
@Override
public void mousePressed(MouseEvent e) {
checkPopup(e);
}
private void checkPopup(MouseEvent e) {
try {
if (e.isPopupTrigger()) {
int r = tableSamples.rowAtPoint(e.getPoint());
if (r >= 0 && r < tableSamples.getRowCount()) {
tableSamples.setRowSelectionInterval(r, r);
} else {
tableSamples.clearSelection();
}
int index = tableSamples.getSelectedRow();
if (index>=0) {
Sample clickedSample = getSamplesTableSelectedSample();
if (clickedSample!=null){
//menuLoadSample.setEnabled(!clickedSample.isLoaded() && Controller.getInstance().basePlate.getLoadedSample()==null);
menuMountSample.setEnabled(!clickedSample.isLoaded());
menuUnmoountSample.setEnabled(clickedSample.isLoaded() && Controller.getInstance().basePlate.getLoadedSample()!=null);
samplePopupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
}
} catch (Exception ex) {
showException(ex);
}
}
}
);
samplePopupMenu = new JPopupMenu();
menuMountSample = new JMenuItem("Mount");
menuMountSample.addActionListener((ActionEvent e) -> {
try {
Sample clickedSample = getSamplesTableSelectedSample();
int sample = clickedSample.getNumber();
int puck = clickedSample.getPuck().getNumber();
char segment = clickedSample.getPuck().getSegment();
Controller.instance.execute("mount('" + segment + "'," + puck + "," + sample + ", auto_unmount=True)");
} catch (Exception ex) {
SwingUtils.showException(this, ex);
}
});
menuUnmoountSample = new JMenuItem("Unmount");
menuUnmoountSample.addActionListener((ActionEvent e) -> {
try {
Sample clickedSample = getSamplesTableSelectedSample();
int sample = clickedSample.getNumber();
int puck = clickedSample.getPuck().getNumber();
char segment = clickedSample.getPuck().getSegment();
Controller.instance.execute("unmount('" + segment + "'," + puck + "," + sample + ")");
} catch (Exception ex) {
SwingUtils.showException(this, ex);
}
});
samplePopupMenu.add(menuMountSample);
samplePopupMenu.add(menuUnmoountSample);
}
JMenuItem menuEditSamples;
@@ -192,6 +279,38 @@ public class MainPanel extends Panel {
}
}
public String getSamplesTableSelectedPuck(){
try {
int selection = tableSamples.getSelectedRow();
return String.valueOf(tableSamples.getModel().getValueAt(selection, COLUMN_PUCK_ADDRESS));
} catch (Exception ex) {
return "";
}
}
public int getSamplesTableSelectedPosition(){
try {
int selection = tableSamples.getSelectedRow();
return Integer.valueOf(String.valueOf(tableSamples.getModel().getValueAt(selection, COLUMN_SAMPLE_POSITION)));
} catch (Exception ex) {
return -1;
}
}
public Sample getSamplesTableSelectedSample(){
try{
String puck = getSamplesTableSelectedPuck();
int pos = getSamplesTableSelectedPosition();
return Controller.getInstance().basePlate.getSampleByName(puck+pos);
} catch (Exception ex){
return null;
}
}
@Override
protected void onUnloaded() {
if (getView() != null) {
@@ -735,6 +854,7 @@ public class MainPanel extends Panel {
JsonTableEditor editor = new JsonTableEditor(columns, types);
editor.setShowClearButton(true);
editor.getDocument().addListener(new DocumentListener() {
@Override
public void onDocumentChanged(Document doc) {
@@ -750,8 +870,9 @@ public class MainPanel extends Panel {
}
}
});
getView().openComponent(new File(file).getName(), editor);
editor.load(file);
getView().openEditor(editor);
return editor;
} catch (Exception ex) {
showException(ex);