Files
MXSC/src/main/java/ch/psi/mxsc/MainPanel.java
2025-08-21 11:27:10 +02:00

2363 lines
114 KiB
Java

/*
* Copyright (c) 2014 Paul Scherrer Institute. All rights reserved.
*/
package ch.psi.mxsc;
import ch.psi.mxsc.BasePlatePanel.SelectionMode;
import ch.psi.pshell.framework.Context;
import ch.psi.pshell.plugin.Plugin;
import ch.psi.pshell.device.Device;
import ch.psi.pshell.device.DeviceListener;
import ch.psi.pshell.device.DeviceBase;
import ch.psi.pshell.device.DeviceListener;
import ch.psi.pshell.device.GenericDevice;
import ch.psi.pshell.imaging.PointDouble;
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.framework.App;
import ch.psi.pshell.framework.Panel;
import ch.psi.pshell.framework.Setup;
import ch.psi.pshell.framework.StatusBar;
import ch.psi.pshell.utils.Chrono;
import ch.psi.pshell.utils.State;
import ch.psi.pshell.swing.Document;
import ch.psi.pshell.swing.DocumentListener;
import ch.psi.pshell.swing.Editor;
import ch.psi.pshell.swing.JsonTableEditor;
import ch.psi.pshell.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.awt.Point;
import java.awt.Rectangle;
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.lang.reflect.Array;
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;
import javax.swing.JDialog;
import javax.swing.JLabel;
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;
import javax.swing.table.DefaultTableModel;
/**
*
*/
public class MainPanel extends Panel {
/**
* Creates new form Panel
*/
Boolean manualMode;
Boolean roomTemperature;
public final String PUCK_LOADING_STATUS = "Puck loading";
public final String PUCK_UNLOADING_STATUS = "Puck unloading";
StatusBar statusBar;
JPopupMenu samplePopupMenu;
JMenuItem menuMountSample;
JMenuItem menuUnmoountSample;
boolean doorsHaveOpened;
public enum BasePlateLayout {
normal,
sf,
x06da,
rt
}
public static final BasePlateLayout BASE_PLATE_LAYOUT =
App.hasAdditionalArgument("sf") ? BasePlateLayout.sf :
( App.hasAdditionalArgument("6d") ? BasePlateLayout.x06da :
( App.hasAdditionalArgument("rt") ? BasePlateLayout.rt : BasePlateLayout.normal)
);
public static boolean isRt(){
return App.hasAdditionalArgument("rt");
}
public MainPanel() {
initComponents();
Context.getPluginManager().addDynamicClass(PuckDetection.class);
Controller.createInstance(this);
basePlatePanel.setMode(BasePlatePanel.Mode.single);
setExpertMode(false);
setDefaultDetail();
panelTablePucks.getVerticalScrollBar().setPreferredSize(new Dimension(20, 0));
panelTableSamples.getVerticalScrollBar().setPreferredSize(new Dimension(20, 0));
if (isRt()){
panelLegend.setVisible(false);
panelLN2Level.setVisible(false);
panelDisplayMode.setVisible(false);
//panelBottom.setMinimumSize(panelTop.getMinimumSize());
panelTop.setMinimumSize(new Dimension(panelTop.getMinimumSize().width, panelTop.getMinimumSize().height-150));
panelBottom.setMinimumSize(new Dimension(panelBottom.getMinimumSize().width, panelBottom.getMinimumSize().height+150));
panelDatamatrix.setVisible(false);
panelDetail.setVisible(false);
((GroupLayout)panelTop.getLayout()).replace(panelRight, panelDevices);
}
((DefaultTableModel)tablePucks.getModel()).setNumRows(BasePlate.numberOfPucks);
int row = 0;
for (String segment : new String[]{"A", "B", "C", "D", "E", "F"}) {
for (int puck = 1; puck <= BasePlate.numberOfPucksPerSegments; puck++) {
tablePucks.getModel().setValueAt(segment + puck, row++, 0);
}
}
tablePucks.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
try {
if (e.getValueIsAdjusting() == false) {
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);
}
}
});
tableSamples.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
try {
if (e.getValueIsAdjusting() == false) {
int selection = tableSamples.getSelectedRow();
if (selection >= 0) {
String add = getSamplesTableSelectedPuck();
if (!add.trim().isEmpty()) {
int pos = getSamplesTableSelectedPosition();
String curSelection = Controller.getInstance().getCurrentSelection();
String curPuck = (curSelection == null) ? null : curSelection.substring(0, 2);
if (!add.equals(curPuck)) {
Puck puck = Controller.getInstance().getPuck(add);
Controller.getInstance().selectPuck(puck);
}
if (pos >= 0) {
add += pos;
if (!add.equals(curSelection)) {
Sample sample = Controller.getInstance().getSample(add);
Controller.getInstance().selectSample(sample);
}
}
}
}
}
} catch (Exception ex) {
showException(ex);
}
}
});
tableSamples.getTableHeader().addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
try {
if ((e.getClickCount() == 2) && (!e.isPopupTrigger())) {
openSamplesInfo();
}
} catch (Exception ex) {
showException(ex);
}
}
});
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;
JsonTableEditor samplesInfoEditor;
@Override
protected void onLoaded() {
if (Setup.isDetached()) {
Image img = new ImageIcon(this.getClass().getResource("/apple_transparent_white_100x50.png")).getImage();
SwingUtils.getWindow(this).setIconImage(img);
}
if (isRt()){
basePlatePanel.setSelectionMode(SelectionMode.Samples);
} else {
basePlatePanel.setSelectionMode(SelectionMode.Pucks);
}
basePlatePanel.setDevice(Controller.getInstance().basePlate);
try{
statusBar = (StatusBar) SwingUtils.getComponentsByType(getTopLevel(), StatusBar.class)[0];
} catch (Exception ex){
}
if (getView() != null) {
JMenuBar menu = getView().getMenu();
JMenu menuFile = (JMenu) SwingUtils.getComponentByName(menu, "menuFile");
menuEditSamples = new JMenuItem("Edit Samples Info");
menuFile.insert(menuEditSamples,0);
menuEditSamples.addActionListener((e) -> {
samplesInfoEditor = openSamplesInfo();
});
}
}
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) {
JMenuBar menu = getView().getMenu();
JMenu menuFile = (JMenu) SwingUtils.getComponentByName(menu, "menuFile");
menuFile.remove(menuEditSamples);
}
}
@Override
public void onInitialize(int runCount) {
stopTimer();
try{
Controller.getInstance().onInitialize(runCount);
panelDisplayMode.setVisible(Controller.getInstance().isRoomTempEnabled());
panelBeamlineStatus.setVisible(Controller.getInstance().isBeamlineStatusEnabled());
if (basePlatePanel.getDevice() != (Device) getDevice("BasePlate")) {
basePlatePanel.setDevice((Device) getDevice("BasePlate"));
}
try {
devicesPanel.initialize();
((Device) getDevice("dewar_level")).addListener(new DeviceListener() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
updateLevel(value);
}
});
updateLevel(((Device) getDevice("dewar_level")).take());
((Device) getDevice("air_pressure_ok")).addListener(new DeviceListener() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
updateAirPressure(value);
}
});
updateAirPressure(((Device) getDevice("air_pressure_ok")).take());
((Device) getDevice("n2_pressure_ok")).addListener(new DeviceListener() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
updateN2Pressure(value);
}
});
updateN2Pressure(((Device) getDevice("n2_pressure_ok")).take());
((Device) getDevice("feedback_local_safety")).addListener(new DeviceListener() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
updateLocalSafety(value);
}
});
updateLocalSafety(((Device) getDevice("feedback_local_safety")).take());
updateN2Pressure(((Device) getDevice("n2_pressure_ok")).take());
((Device) getDevice("gripper_dryer")).addListener(new DeviceListener() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
updateDryer(value);
}
});
updateDryer(((Device) getDevice("gripper_dryer")).take());
Device feedback_psys_safety = ((Device) getDevice("feedback_psys_safety"));
feedback_psys_safety.addListener(new DeviceListener() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
doorsHaveOpened = Boolean.FALSE.equals(value);
updatePsysSafety(value);
}
});
feedback_psys_safety.request();
updatePsysSafety(((Device) getDevice("feedback_psys_safety")).take());
((Device) getDevice("robot")).addListener(new DeviceListener() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
updateMode(value);
}
public void onStateChanged(Device device, State state, State former) {
if (!state.isNormal()) {
updateMode(null);
}
}
});
updateMode(((Device) getDevice("robot")).take());
} catch (Exception ex) {
this.getLogger().log(Level.SEVERE, null, ex);
}
DeviceBase dev = (DeviceBase) this.getDevice("cover_detection");
dev.addListener(cover_detection_listener);
setPuckDatamatrix(null);
setSampleDatamatrix(null);
setBackgroundUpdate(true);
startTimer(3000, 1000);
if (runCount==0){
GenericDevice img = this.getDevice("img");
if (img!=null){
buttonCamera.setSelected(true);
}
}
SwingUtilities.invokeLater(()->{updateCameraView();});
} catch (Exception ex){
getLogger().log(Level.SEVERE, null, ex);
}
}
@Override
public void onStateChange(State state, State former) {
Controller.getInstance().onStateChange(state, former);
updateButtonState();
}
public void setViewCamera(){
buttonCamera.setSelected(true);
SwingUtilities.invokeLater(()->{updateCameraView();});
}
public void setViewDesign(){
buttonDrawing.setSelected(true);
SwingUtilities.invokeLater(()->{updateCameraView();});
}
@Override
protected void onTimer() {
try {
devicesPanel.update();
try {
roomTemperature = Controller.getInstance().isRoomTemp();
ledRoomTemperature.setColor(roomTemperature ? Color.YELLOW : Color.GREEN);
labelRoomTemperature.setText(roomTemperature ? "Room Temperature" : "Cryo Operation");
try {
ledHeaterOk.setColor(roomTemperature ? Color.GREEN : (((Double) panelHeaterTemp.getDevice().take()) < 20.0 ? Color.RED : Color.GREEN));
} catch (Exception ex) {
ledHeaterOk.setColor(Color.BLACK);
}
} catch (Exception ex) {
roomTemperature = null;
ledRoomTemperature.setColor(Color.BLACK);
labelRoomTemperature.setText("Room Temperature");
}
try {
ledServiceMode.setColor(Controller.getInstance().isServiceMode() ? Color.YELLOW : Color.GREEN);
} catch (Exception ex) {
ledServiceMode.setColor(Color.BLACK);
}
try {
if ((expertChrono != null) && (expertChrono.isTimeout(10 * 60000))) { //After 10min
setExpertMode(false);
}
} catch (Exception ex) {
getLogger().log(Level.WARNING, null, ex);
}
Controller.getInstance().onTimer();
if (getState() == State.Ready) {
boolean puckLoading = Controller.getInstance().isPuckLoading();
setStatus((puckLoading==false) ? "Ready" : PUCK_LOADING_STATUS);
} else {
status = null;
}
} catch (Exception ex) {
getLogger().log(Level.WARNING, null, ex);
}
}
String status;
void setStatus(String status) {
String current = current = (statusBar==null) ? this.status : statusBar.getStatusLabel().getText();
if (!status.equals(current)) {
Context.getInterpreter().setPreference(ViewPreference.STATUS, status);
}
this.status = status;
}
volatile boolean refreshing;
void refresh() {
if (!SwingUtilities.isEventDispatchThread()) {
if (!refreshing){
refreshing = true;
SwingUtilities.invokeLater(() -> {
refreshing = false;
refresh();
});
}
return;
}
repaint();
for (Puck p : Controller.getInstance().basePlate.getPucks()) {
int index = p.getUserIndex();
tablePucks.getModel().setValueAt(p.getStatus(), index, 1);
tablePucks.getModel().setValueAt(p.getId(), index, 2);
}
}
void updateLevel(Object value) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateLevel(value);
});
return;
}
if ((value == null) || !(value instanceof Number)) {
progressLN2.setIndeterminate(true);
} else {
progressLN2.setIndeterminate(false);
double val = ((Number) value).doubleValue() * 10.0;
progressLN2.setValue(Math.min(Math.max((int) val, 0), 1000));
}
}
void updateAirPressure(Object value) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateAirPressure(value);
});
return;
}
if ((value == null) || !(value instanceof Boolean)) {
ledAirPressure.setColor(Color.BLACK);
} else if ((Boolean) value) {
ledAirPressure.setColor(Color.GREEN);
} else {
ledAirPressure.setColor(Color.RED);
}
}
void updateN2Pressure(Object value) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateN2Pressure(value);
});
return;
}
if ((value == null) || !(value instanceof Boolean)) {
ledN2Pressure.setColor(Color.BLACK);
} else if ((Boolean) value) {
ledN2Pressure.setColor(Color.GREEN);
} else {
ledN2Pressure.setColor(Color.RED);
}
}
void updateLocalSafety(Object value) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateLocalSafety(value);
});
return;
}
if ((value == null) || !(value instanceof Boolean)) {
ledLocalSafety.setColor(Color.BLACK);
} else if ((Boolean) value) {
ledLocalSafety.setColor(Color.GREEN);
} else {
ledLocalSafety.setColor(Color.RED);
}
}
void updateDryer(Object value) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateDryer(value);
});
return;
}
if ((value == null) || !(value instanceof Boolean)) {
ledDryer.setColor(Color.BLACK);
} else if ((Boolean) value) {
ledDryer.setColor(Color.RED);
} else {
ledDryer.setColor(Color.GREEN);
}
}
public boolean isCoverPosDetected(){
try{
return textCoverDet.getText().contains(", ");
} catch(Exception ex){
return false;
}
}
void updateButtonState(){
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateButtonState();
});
return;
}
boolean doors_open = !Boolean.TRUE.equals(Controller.getInstance().isDoorClosed());
boolean cover_pos_detected = isCoverPosDetected();
buttonSampleLoad.setEnabled(doors_open && !cover_pos_detected && getState().isInitialized());
buttonCamera.setEnabled(getState().isInitialized());
buttonDrawing.setEnabled(getState().isInitialized());
}
void updatePsysSafety(Object value) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updatePsysSafety(value);
});
return;
}
if ((value == null) || !(value instanceof Boolean)) {
ledPsysSafety.setColor(Color.BLACK);
} else if (Boolean.TRUE.equals(manualMode)) {
ledPsysSafety.setColor(Color.YELLOW);
} else if ((Boolean) value) {
ledPsysSafety.setColor(Color.GREEN);
} else {
ledPsysSafety.setColor(Color.RED);
}
if (!Boolean.TRUE.equals(value)){
try {
Controller.getInstance().setPuckLoading(false);
} catch (Exception ex) {
getLogger().log(Level.WARNING, null, ex);
}
}
updateButtonState();
}
void updateMode(Object value) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateMode(value);
});
return;
}
if ((value != null) && (value instanceof Map)) {
manualMode = "manual".equals(String.valueOf(((Map) value).get("mode")));
ledManualMode.setColor(manualMode ? Color.YELLOW : Color.GREEN);
labelManualMode.setText(manualMode ? "Manual Mode" : "Remote Mode");
updatePsysSafety(((Device) getDevice("feedback_psys_safety")).take());
} else {
ledManualMode.setColor(Color.BLACK);
labelManualMode.setText("Unknown Mode");
}
}
void updateCameraView() {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateCameraView();
});
return;
}
try{
//if (buttonCamera.isSelected()){
int center_x = ((Number)this.eval("cover_detection.config.center_x", true)).intValue();
int center_y = ((Number)this.eval("cover_detection.config.center_y", true)).intValue();
int diam_dewar = ((Number)this.eval("cover_detection.config.diameter_dewar", true)).intValue();
double dewar_wall = ((Number)this.eval("cover_detection.config.border_dewar", true)).doubleValue();
int diam =(int) (dewar_wall * diam_dewar);
Rectangle roi = new Rectangle(center_x-diam/2,center_y - diam/2, diam, diam );
basePlatePanel.basePlateGraphics.setImageRoi(roi);
//}
} catch (Exception ex){
if (getState().isInitialized()){
getLogger().log(Level.SEVERE, null, ex);
}
}
Source source = buttonCamera.isSelected() ? (Source) this.getDevice("img") : null;
basePlatePanel.setCameraView(source);
}
void execute(String statement) {
execute(statement, false);
}
void execute(String statement, boolean background) {
execute(statement, background, false);
}
void execute(String statement, boolean background, boolean showReturn) {
execute(statement, background, showReturn, true);
}
void execute(String statement, boolean background, boolean showReturn, boolean showException) {
try {
getLogger().log(Level.INFO, "Execute: " + statement + (background ? "&" : ""));
evalAsync(statement, background).handle((ret, ex) -> {
if (ex != null) {
if (showException) {
showException((Exception) ex);
}
} else if (showReturn) {
showMessage("Return", String.valueOf(ret));
}
return ret;
});
} catch (Exception ex) {
if (showException) {
showException(ex);
}
}
}
void execute(String script, Object args, boolean background, boolean showReturn) {
execute(script, args, background, showReturn, true);
}
void execute(String script, Object args, boolean background, boolean showReturn, boolean showException) {
try {
getLogger().log(Level.INFO, "Execute: " + script + (background ? "&" : ""));
runAsync(script, args, background).handle((ret, ex) -> {
if (ex != null) {
showException((Exception) ex);
} else if (showReturn) {
showMessage("Return", String.valueOf(ret));
}
return ret;
});
} catch (Exception ex) {
if (showException) {
showException(ex);
}
}
}
void updateViewType() {
try {
updateCameraView();
} catch (Exception ex) {
showException(ex);
}
}
boolean viewDewar = true;
RoomTemperaturePanel roomTempPanel;
WaterLevelPanel waterLevelPanel;
void updateViewMode() {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
updateViewMode();
});
return;
}
try {
if (btViewDewar.isSelected() != viewDewar) {
viewDewar = btViewDewar.isSelected();
if (viewDewar) {
((GroupLayout) panelTop.getLayout()).replace(roomTempPanel, basePlatePanel);
((GroupLayout) panelTop.getLayout()).replace(waterLevelPanel, panelLN2Level);
} else {
if (roomTempPanel == null) {
roomTempPanel = new RoomTemperaturePanel();
roomTempPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Room Temperature"));
}
roomTempPanel.setDevice(Controller.getInstance().roomTemperatureBasePlate);
((GroupLayout) panelTop.getLayout()).replace(basePlatePanel, roomTempPanel);
if (waterLevelPanel == null) {
waterLevelPanel = new WaterLevelPanel();
}
waterLevelPanel.setPreferredSize(panelLN2Level.getPreferredSize());
((GroupLayout) panelTop.getLayout()).replace(panelLN2Level, waterLevelPanel);
}
}
} catch (Exception ex) {
showException(ex);
}
}
volatile boolean updating;
void setExpertMode(boolean expert) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
setExpertMode(expert);
});
return;
}
try{
updating = true;
boolean current = buttonExpertCommands.isVisible();
buttonExpertCommands.setVisible(expert);
buttonRecovery.setVisible(expert);
buttonConfig.setVisible(expert);
buttonDetectionCalibrate.setVisible(expert);
buttonDetectionExposure.setVisible(expert);
checkService.setVisible(expert);
devicesPanel.setActive(expert);
//panelViewType.setVisible(expert);
Puck.setDisplayDetectionError(expert);
if (checkExpert.isSelected() != expert) {
checkExpert.setSelected(expert);
}
if (expert == false) {
Controller.getInstance().setServiceMode(false);
// buttonCamera.setSelected(true);
// buttonDrawing.setSelected(false);
// updateViewType();
} else {
checkService.setSelected( Boolean.TRUE.equals(Controller.getInstance().isServiceMode()));
}
if (current != expert) {
onModeChange(expert);
}
} finally {
updating = false;
}
}
Plugin commandsPlugin;
Panel showCommandsPanel() {
if (commandsPlugin != null) {
Context.getPluginManager().unloadPlugin(commandsPlugin);
}
commandsPlugin = Context.getPluginManager().loadPlugin(Setup.expandPath("{plugins}/Commands.java"));
((Panel) commandsPlugin).setDetached(true, getTopLevel());
Context.getPluginManager().initializePlugin(commandsPlugin);
return ((Panel) commandsPlugin);
}
Plugin recoveryPlugin;
Panel showRecoveryPanel() {
if (recoveryPlugin != null) {
Context.getPluginManager().unloadPlugin(recoveryPlugin);
}
recoveryPlugin = Context.getPluginManager().loadPlugin(Setup.expandPath("{plugins}/Recovery.java"));
((Panel) recoveryPlugin).setDetached(true, getTopLevel());
Context.getPluginManager().initializePlugin(recoveryPlugin);
return ((Panel) recoveryPlugin);
}
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) {
panelDetail.removeAll();
panelDetail.setLayout(new BorderLayout());
//panelContext.setLayout(new GridBagLayout());
panelDetail.add(c);
updateUI();
}
Component getDetail() {
return this.getComponent(0);
}
Dimension getDetailSize() {
return panelDetail.getSize();
}
final int COLUMN_PUCK_ADDRESS = 3;
final int COLUMN_SAMPLE_POSITION = 5;
void setSamplesTable(Object[][] sampleData) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
setSamplesTable(sampleData);
});
return;
}
tableSamples.setModel(new DefaultTableModel(
sampleData,
new String[]{
//"User Name", "Dewar Name",
"Puck Name", "User Name", "Puck Id", "Puck Address",
"Sample Name", "Sample Position", "Sample Id", "Sample Status", "Mount Count"
}
) {
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
}
);
if (isRt()){
for (int i=0; i<3; i++){
tableSamples.getColumnModel().getColumn(i).setMinWidth(0);
tableSamples.getColumnModel().getColumn(i).setMaxWidth(0);
tableSamples.getColumnModel().getColumn(i).setWidth(0);
}
}
}
void onSelectionChanged(String segment, Integer puck, Integer sample) {
if (segment != null) {
String add = segment + String.valueOf(puck);
for (int i = 0; i < tablePucks.getModel().getRowCount(); i++) {
if (add.equals(tablePucks.getModel().getValueAt(i, 0))) {
if (tablePucks.getSelectedRow() != i) {
tablePucks.setRowSelectionInterval(i, i);
SwingUtils.scrollToVisible(tablePucks, i, 0);
}
break;
}
}
for (int i = 0; i < tableSamples.getModel().getRowCount(); i++) {
if (add.equals(tableSamples.getModel().getValueAt(i, COLUMN_PUCK_ADDRESS))) {
if (sample != null) {
if (!sample.equals(tableSamples.getModel().getValueAt(i, COLUMN_SAMPLE_POSITION))) {
continue;
}
}
if (tableSamples.getSelectedRow() != i) {
tableSamples.setRowSelectionInterval(i, i);
SwingUtils.scrollToVisible(tableSamples, i, 0);
}
break;
}
}
}
}
public void setPuckDatamatrix(String datamatrix) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
setPuckDatamatrix(datamatrix);
});
return;
}
textPuckDatamatrix.setText((datamatrix == null) ? "" : String.valueOf(datamatrix));
}
public void setSampleDatamatrix(String datamatrix) {
if (!SwingUtilities.isEventDispatchThread()) {
SwingUtilities.invokeLater(()->{
setSampleDatamatrix(datamatrix);
});
return;
}
textSampleDatamatrix.setText((datamatrix == null) ? "" : String.valueOf(datamatrix));
}
public String getPuckDatamatrix() {
String ret = textPuckDatamatrix.getText();
return (ret != null) ? ret.trim() : "";
}
public String getSampleDatamatrix() {
String ret = textSampleDatamatrix.getText();
return (ret != null) ? ret.trim() : "";
}
Chrono expertChrono;
final List<Window> expertWindows = new ArrayList<>();
void onExpertCommand(Window window) {
expertChrono = new Chrono();
if ((window != null) && (!expertWindows.contains(window))) {
expertWindows.add(window);
}
}
void onModeChange(boolean expert) {
if (expert) {
expertChrono = new Chrono();
} else {
expertChrono = null;
for (Window w : expertWindows) {
if ((w != null) && (w.isShowing())) {
w.setVisible(false);
w.dispose();
}
}
expertWindows.clear();
}
}
JDialog samplesDialog;
JsonTableEditor openSamplesInfo(){
try{
String file = Setup.expandPath("{context}/samples_info.json");
if (getView()!=null){
for (Editor ed : getView().getEditors()) {
if (ed instanceof JsonTableEditor) {
if (file.equals(ed.getFileName())){
if (ed.changedOnDisk()){
getView().closeFile(file);
} else {
getView().selectPanel(ed);
return (JsonTableEditor) ed;
}
}
}
}
} else {
if ((samplesDialog!=null) && (samplesDialog.isDisplayable())){
SwingUtils.centerComponent(this, samplesDialog);
samplesDialog.requestFocus();
return (JsonTableEditor) SwingUtils.getComponentsByType(samplesDialog, JsonTableEditor.class)[0];
}
}
String[] columns = new String[]{ "userName", "dewarName",
"puckName", "puckType", "puckBarcode", "puckAddress",
"sampleName", "samplePosition", "sampleBarcode", "sampleStatus", "sampleMountCount"
};
Class[] types = null;
Object[] defaults = new Object[]{ null, null,
null, isRt() ? "RT" : null, null, null,
null, null, null, "Present", 0
};
JsonTableEditor editor = new JsonTableEditor(columns, types);
editor.setShowClearButton(true);
editor.getDocument().addListener(new DocumentListener() {
@Override
public void onDocumentChanged(Document doc) {
updateSamplesInfoTitle();
}
@Override
public void onDocumentSaved(Document doc) {
try {
eval("restore_samples_info()", true);
} catch (Exception ex) {
showException(ex);
}
}
});
editor.setDefaultValues(defaults);
editor.load(file);
if (getView()!=null){
getView().openEditor(editor);
} else {
samplesDialog = showDialog("Samples Info", new Dimension (1000,800), editor);
}
return editor;
} catch (Exception ex) {
showException(ex);
return null;
}
}
void updateSamplesInfoTitle() {
try {
if ((samplesInfoEditor!=null) &&(samplesInfoEditor.isDisplayable())){
String title = new File(samplesInfoEditor.getFileName()).getName()+ (samplesInfoEditor.hasChanged() ? "*" : "");
int index = getView().getDocumentsTab().indexOfComponent(samplesInfoEditor);
if (index>=0){
if (!title.equals(getView().getDocumentsTab().getTitleAt(index))) {
getView().getDocumentsTab().setTitleAt(index, title);
SwingUtils.CloseButtonTabComponent tabComponent = (SwingUtils.CloseButtonTabComponent) getView().getDocumentsTab().getTabComponentAt(index);
tabComponent.updateUI();
}
}
}
} catch (Exception ex) {
getLogger().log(Level.WARNING, null, ex);
}
}
final DeviceListener cover_detection_listener = new DeviceListener() {
@Override
public void onCacheChanged(Device device, Object value, Object former, long timestamp, boolean valueChange) {
Point mm = null;
Point det = null;
try{
mm = new Point(Array.getInt(value, 4), Array.getInt(value, 5));
det = new Point(Array.getInt(value, 0), Array.getInt(value, 1));
} catch (Exception ex){
}
Point fmm = mm;
Point fdet = det;
SwingUtilities.invokeLater(()->{
if ((value!=null) && (value instanceof String) && ((String)value).toLowerCase().startsWith("no cover")){
textCoverDet.setText("No Cover");
} else {
textCoverDet.setText((fmm==null) ? "" :fmm.x + ", " + fmm.y);
if ( getState().isReady() &&
!checkExpert.isSelected() &&
Boolean.FALSE.equals(Controller.getInstance().isDoorClosed())){
try{
if ((fmm!=null)){
Controller.getInstance().setPuckLoading(false);
} else {
if (doorsHaveOpened){
doorsHaveOpened=false;
Controller.getInstance().setPuckLoading(true);
}
}
} catch (Exception e) {
getLogger().log(Level.WARNING, null, e);
}
}
}
updateButtonState();
String text = "";
try{
/*
Number clearStatus = (Number)eval("get_cover_location_mm(raise_ex=False, print_log=False)[3]", true);
switch (clearStatus.intValue()){
case 1: text = "Dewar"; break;
case 2: text = "Doors"; break;
case 3: text = "Manual"; break;
case 4: text = "Task"; break;
default: text = "";
}
*/
} catch (Exception ex) {
text = "";
/*
try{
Object use_target_cache = eval("use_target_cache", true);
if (Boolean.TRUE.equals(use_target_cache)){
text= "Target";
}
} catch (Exception e) {
}
*/
}
textCoverCache.setText(text);
basePlatePanel.basePlateGraphics.setDetection(fdet);
});
}
};
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
panelTop = new javax.swing.JPanel();
basePlatePanel = new ch.psi.mxsc.BasePlatePanel();
panelLegend = new javax.swing.JPanel();
ledLidControlActive2 = new ch.psi.pshell.swing.Led();
ledLidControlActive1 = new ch.psi.pshell.swing.Led();
jLabel20 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();
jLabel19 = new javax.swing.JLabel();
ledLidControlActive4 = new ch.psi.pshell.swing.Led();
ledLidControlActive3 = new ch.psi.pshell.swing.Led();
ledLidControlActive5 = new ch.psi.pshell.swing.Led();
jLabel23 = new javax.swing.JLabel();
panelDetection = new javax.swing.JPanel();
buttonSampleLoad = new javax.swing.JButton();
panelCover = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
textCoverDet = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
textCoverCache = new javax.swing.JTextField();
panelViewType = new javax.swing.JPanel();
buttonCamera = new javax.swing.JToggleButton();
buttonDrawing = new javax.swing.JToggleButton();
panelLN2Level = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
progressLN2 = new javax.swing.JProgressBar();
jLabel4 = new javax.swing.JLabel();
panelStatus = new javax.swing.JPanel();
panelBeamlineStatus = new javax.swing.JPanel();
led5 = new ch.psi.pshell.swing.Led();
led6 = new ch.psi.pshell.swing.Led();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
panelSystemStatus = new javax.swing.JPanel();
ledAirPressure = new ch.psi.pshell.swing.Led();
jLabel24 = new javax.swing.JLabel();
jLabel25 = new javax.swing.JLabel();
ledN2Pressure = new ch.psi.pshell.swing.Led();
jLabel26 = new javax.swing.JLabel();
ledLocalSafety = new ch.psi.pshell.swing.Led();
jLabell21 = new javax.swing.JLabel();
ledPsysSafety = new ch.psi.pshell.swing.Led();
buttonRelease = new javax.swing.JButton();
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 30), new java.awt.Dimension(0, 30), new java.awt.Dimension(32767, 30));
ledRoomTemperature = new ch.psi.pshell.swing.Led();
labelRoomTemperature = new javax.swing.JLabel();
ledManualMode = new ch.psi.pshell.swing.Led();
labelManualMode = new javax.swing.JLabel();
ledHeaterOk = new ch.psi.pshell.swing.Led();
jLabel29 = new javax.swing.JLabel();
panelHeaterTemp = new ch.psi.pshell.swing.DeviceValuePanel();
ledDryer = new ch.psi.pshell.swing.Led();
jLabel27 = new javax.swing.JLabel();
labelManualMode1 = new javax.swing.JLabel();
ledServiceMode = new ch.psi.pshell.swing.Led();
checkService = new javax.swing.JCheckBox();
panelDatamatrix = new javax.swing.JPanel();
jLabel11 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
textSampleDatamatrix = new javax.swing.JTextField();
textPuckDatamatrix = new javax.swing.JTextField();
panelRight = new javax.swing.JPanel();
panelDetail = new javax.swing.JPanel();
panelDisplayMode = new javax.swing.JPanel();
btViewDewar = new javax.swing.JToggleButton();
btViewRT = new javax.swing.JToggleButton();
panelDevices = new javax.swing.JPanel();
devicesPanel = new ch.psi.mxsc.DevicesPanel();
panelExpert = new javax.swing.JPanel();
checkExpert = new javax.swing.JCheckBox();
buttonExpertCommands = new javax.swing.JButton();
buttonRecovery = new javax.swing.JButton();
buttonConfig = new javax.swing.JButton();
buttonDetectionCalibrate = new javax.swing.JButton();
buttonDetectionExposure = new javax.swing.JButton();
panelBottom = new javax.swing.JPanel();
panelSamples = new javax.swing.JPanel();
panelTableSamples = new javax.swing.JScrollPane();
tableSamples = new javax.swing.JTable();
jPanel4 = new javax.swing.JPanel();
panelTablePucks = new javax.swing.JScrollPane();
tablePucks = new javax.swing.JTable();
setPreferredSize(new java.awt.Dimension(1030, 530));
setRequestFocusEnabled(false);
basePlatePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Dewar"));
panelLegend.setBorder(javax.swing.BorderFactory.createTitledBorder("Legend"));
ledLidControlActive2.setForeground(new java.awt.Color(128, 232, 152));
ledLidControlActive2.setLedSize(20);
ledLidControlActive1.setForeground(new java.awt.Color(192, 128, 128));
ledLidControlActive1.setLedSize(20);
jLabel20.setText("Empty");
jLabel15.setText("Error");
jLabel16.setText("Minispine");
jLabel19.setText("Unipuck");
ledLidControlActive4.setForeground(new java.awt.Color(128, 128, 128));
ledLidControlActive4.setLedSize(20);
ledLidControlActive3.setForeground(new java.awt.Color(128, 192, 192));
ledLidControlActive3.setLedSize(20);
ledLidControlActive5.setForeground(new java.awt.Color(192, 152, 45));
ledLidControlActive5.setLedSize(20);
jLabel23.setText("Offline");
javax.swing.GroupLayout panelLegendLayout = new javax.swing.GroupLayout(panelLegend);
panelLegend.setLayout(panelLegendLayout);
panelLegendLayout.setHorizontalGroup(
panelLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLegendLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLegendLayout.createSequentialGroup()
.addComponent(ledLidControlActive1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel15))
.addGroup(panelLegendLayout.createSequentialGroup()
.addComponent(ledLidControlActive2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel16))
.addGroup(panelLegendLayout.createSequentialGroup()
.addComponent(ledLidControlActive3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel19))
.addGroup(panelLegendLayout.createSequentialGroup()
.addComponent(ledLidControlActive4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel20))
.addGroup(panelLegendLayout.createSequentialGroup()
.addComponent(ledLidControlActive5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel23)))
.addContainerGap(30, Short.MAX_VALUE))
);
panelLegendLayout.setVerticalGroup(
panelLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLegendLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addGroup(panelLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledLidControlActive4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel20))
.addGap(0, 0, 0)
.addGroup(panelLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledLidControlActive3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel19))
.addGap(0, 0, 0)
.addGroup(panelLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledLidControlActive2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel16))
.addGap(0, 0, 0)
.addGroup(panelLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledLidControlActive1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel15))
.addGap(0, 0, 0)
.addGroup(panelLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledLidControlActive5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel23)))
);
panelDetection.setBorder(javax.swing.BorderFactory.createTitledBorder("Sample Transfer"));
buttonSampleLoad.setText("Load");
buttonSampleLoad.setEnabled(false);
buttonSampleLoad.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonSampleLoadActionPerformed(evt);
}
});
javax.swing.GroupLayout panelDetectionLayout = new javax.swing.GroupLayout(panelDetection);
panelDetection.setLayout(panelDetectionLayout);
panelDetectionLayout.setHorizontalGroup(
panelDetectionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelDetectionLayout.createSequentialGroup()
.addContainerGap()
.addComponent(buttonSampleLoad, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
.addContainerGap())
);
panelDetectionLayout.setVerticalGroup(
panelDetectionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelDetectionLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonSampleLoad)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelCover.setBorder(javax.swing.BorderFactory.createTitledBorder("Cover Detection"));
panelCover.setPreferredSize(new java.awt.Dimension(112, 153));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("Image:");
textCoverDet.setEditable(false);
textCoverDet.setHorizontalAlignment(javax.swing.JTextField.CENTER);
textCoverDet.setDisabledTextColor(new java.awt.Color(0, 0, 0));
textCoverDet.setEnabled(false);
textCoverDet.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textCoverDetActionPerformed(evt);
}
});
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setText("Cleared:");
textCoverCache.setEditable(false);
textCoverCache.setHorizontalAlignment(javax.swing.JTextField.CENTER);
textCoverCache.setDisabledTextColor(new java.awt.Color(0, 0, 0));
textCoverCache.setEnabled(false);
javax.swing.GroupLayout panelCoverLayout = new javax.swing.GroupLayout(panelCover);
panelCover.setLayout(panelCoverLayout);
panelCoverLayout.setHorizontalGroup(
panelCoverLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelCoverLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelCoverLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(textCoverDet)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(textCoverCache, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE))
.addContainerGap())
);
panelCoverLayout.setVerticalGroup(
panelCoverLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelCoverLayout.createSequentialGroup()
.addContainerGap(12, Short.MAX_VALUE)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textCoverCache, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, 18, Short.MAX_VALUE)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textCoverDet, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(12, Short.MAX_VALUE))
);
panelViewType.setBorder(javax.swing.BorderFactory.createTitledBorder("View"));
buttonGroup1.add(buttonCamera);
buttonCamera.setText("Image");
buttonCamera.setEnabled(false);
buttonCamera.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonCameraActionPerformed(evt);
}
});
buttonGroup1.add(buttonDrawing);
buttonDrawing.setText("Design");
buttonDrawing.setEnabled(false);
buttonDrawing.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonDrawingActionPerformed(evt);
}
});
javax.swing.GroupLayout panelViewTypeLayout = new javax.swing.GroupLayout(panelViewType);
panelViewType.setLayout(panelViewTypeLayout);
panelViewTypeLayout.setHorizontalGroup(
panelViewTypeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelViewTypeLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(panelViewTypeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(buttonCamera, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonDrawing, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelViewTypeLayout.setVerticalGroup(
panelViewTypeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelViewTypeLayout.createSequentialGroup()
.addContainerGap()
.addComponent(buttonCamera)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(buttonDrawing)
.addContainerGap())
);
javax.swing.GroupLayout basePlatePanelLayout = new javax.swing.GroupLayout(basePlatePanel);
basePlatePanel.setLayout(basePlatePanelLayout);
basePlatePanelLayout.setHorizontalGroup(
basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, basePlatePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(panelLegend, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelDetection, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 242, Short.MAX_VALUE)
.addGroup(basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(panelCover, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelViewType, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
basePlatePanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {panelCover, panelDetection, panelLegend, panelViewType});
basePlatePanelLayout.setVerticalGroup(
basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, basePlatePanelLayout.createSequentialGroup()
.addGroup(basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(panelViewType, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelDetection, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panelLegend, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelCover, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
basePlatePanelLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {panelCover, panelLegend});
panelLN2Level.setBorder(javax.swing.BorderFactory.createTitledBorder("LN2 Level"));
progressLN2.setMaximum(1000);
progressLN2.setOrientation(1);
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/pin3.png"))); // NOI18N
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(progressLN2, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(4, 4, 4)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 38, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(progressLN2, javax.swing.GroupLayout.DEFAULT_SIZE, 428, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel4)
.addGap(2, 2, 2))
);
javax.swing.GroupLayout panelLN2LevelLayout = new javax.swing.GroupLayout(panelLN2Level);
panelLN2Level.setLayout(panelLN2LevelLayout);
panelLN2LevelLayout.setHorizontalGroup(
panelLN2LevelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLN2LevelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0))
);
panelLN2LevelLayout.setVerticalGroup(
panelLN2LevelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLN2LevelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
panelBeamlineStatus.setBorder(javax.swing.BorderFactory.createTitledBorder("Beamline Status"));
jLabel8.setText("Valve state");
jLabel9.setText("Transfer permitted");
javax.swing.GroupLayout panelBeamlineStatusLayout = new javax.swing.GroupLayout(panelBeamlineStatus);
panelBeamlineStatus.setLayout(panelBeamlineStatusLayout);
panelBeamlineStatusLayout.setHorizontalGroup(
panelBeamlineStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelBeamlineStatusLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelBeamlineStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelBeamlineStatusLayout.createSequentialGroup()
.addComponent(led5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel8))
.addGroup(panelBeamlineStatusLayout.createSequentialGroup()
.addComponent(led6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel9)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelBeamlineStatusLayout.setVerticalGroup(
panelBeamlineStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelBeamlineStatusLayout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(panelBeamlineStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(led5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelBeamlineStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(led6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelSystemStatus.setBorder(javax.swing.BorderFactory.createTitledBorder("System Status"));
jLabel24.setText("Air Pressure");
jLabel25.setText("N2 Pressure");
jLabel26.setText("Local Safety");
jLabell21.setText("Door Safety");
buttonRelease.setText("Release");
buttonRelease.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonReleaseActionPerformed(evt);
}
});
labelRoomTemperature.setText("Room Temperature");
labelManualMode.setText("Manual Mode");
jLabel29.setText("Heater");
panelHeaterTemp.setBorder(javax.swing.BorderFactory.createEtchedBorder());
panelHeaterTemp.setDeviceName("rim_heater_temp");
jLabel27.setText("Dryer");
labelManualMode1.setText("Service Mode");
checkService.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
checkServiceActionPerformed(evt);
}
});
javax.swing.GroupLayout panelSystemStatusLayout = new javax.swing.GroupLayout(panelSystemStatus);
panelSystemStatus.setLayout(panelSystemStatusLayout);
panelSystemStatusLayout.setHorizontalGroup(
panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelSystemStatusLayout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ledAirPressure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ledHeaterOk, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ledN2Pressure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ledLocalSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ledRoomTemperature, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ledPsysSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ledManualMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ledDryer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ledServiceMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelSystemStatusLayout.createSequentialGroup()
.addComponent(jLabel29)
.addGap(18, 18, Short.MAX_VALUE)
.addComponent(panelHeaterTemp, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jLabel24)
.addComponent(jLabel25)
.addComponent(jLabel26)
.addComponent(jLabell21)
.addComponent(labelRoomTemperature)
.addComponent(labelManualMode)
.addComponent(jLabel27)
.addGroup(panelSystemStatusLayout.createSequentialGroup()
.addComponent(labelManualMode1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(checkService)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(panelSystemStatusLayout.createSequentialGroup()
.addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonRelease)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelSystemStatusLayout.setVerticalGroup(
panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelSystemStatusLayout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledManualMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(labelManualMode))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledServiceMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(labelManualMode1))
.addComponent(checkService))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelSystemStatusLayout.createSequentialGroup()
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledRoomTemperature, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(labelRoomTemperature))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledHeaterOk, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel29)))
.addComponent(panelHeaterTemp, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledAirPressure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel24))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledN2Pressure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel25))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledDryer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel27))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledLocalSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel26))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ledPsysSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabell21))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelSystemStatusLayout.createSequentialGroup()
.addComponent(buttonRelease)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(filler1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(4, 4, 4))
);
panelDatamatrix.setBorder(javax.swing.BorderFactory.createTitledBorder("Datamatrix"));
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel11.setText("Puck:");
jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel13.setText("Sample:");
textSampleDatamatrix.setEditable(false);
textSampleDatamatrix.setBackground(new java.awt.Color(214, 217, 223));
textSampleDatamatrix.setHorizontalAlignment(javax.swing.JTextField.CENTER);
textPuckDatamatrix.setEditable(false);
textPuckDatamatrix.setBackground(new java.awt.Color(214, 217, 223));
textPuckDatamatrix.setHorizontalAlignment(javax.swing.JTextField.CENTER);
javax.swing.GroupLayout panelDatamatrixLayout = new javax.swing.GroupLayout(panelDatamatrix);
panelDatamatrix.setLayout(panelDatamatrixLayout);
panelDatamatrixLayout.setHorizontalGroup(
panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelDatamatrixLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(panelDatamatrixLayout.createSequentialGroup()
.addComponent(jLabel11)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textPuckDatamatrix, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(panelDatamatrixLayout.createSequentialGroup()
.addComponent(jLabel13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(textSampleDatamatrix)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelDatamatrixLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel11, jLabel13});
panelDatamatrixLayout.setVerticalGroup(
panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelDatamatrixLayout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel11)
.addComponent(textPuckDatamatrix, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel13)
.addComponent(textSampleDatamatrix, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))
);
javax.swing.GroupLayout panelStatusLayout = new javax.swing.GroupLayout(panelStatus);
panelStatus.setLayout(panelStatusLayout);
panelStatusLayout.setHorizontalGroup(
panelStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panelBeamlineStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelDatamatrix, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelSystemStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
panelStatusLayout.setVerticalGroup(
panelStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelStatusLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(panelSystemStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(0, 0, 0)
.addComponent(panelBeamlineStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(0, 0, 0)
.addComponent(panelDatamatrix, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelDetail.setBorder(javax.swing.BorderFactory.createTitledBorder("Detail"));
panelDetail.setPreferredSize(new java.awt.Dimension(300, 95));
javax.swing.GroupLayout panelDetailLayout = new javax.swing.GroupLayout(panelDetail);
panelDetail.setLayout(panelDetailLayout);
panelDetailLayout.setHorizontalGroup(
panelDetailLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
panelDetailLayout.setVerticalGroup(
panelDetailLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
panelDisplayMode.setBorder(javax.swing.BorderFactory.createTitledBorder("Mode"));
btViewDewar.setSelected(true);
btViewDewar.setText("Dewar");
btViewDewar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btViewDewarActionPerformed(evt);
}
});
btViewRT.setText("Room Temp.");
btViewRT.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btViewRTActionPerformed(evt);
}
});
javax.swing.GroupLayout panelDisplayModeLayout = new javax.swing.GroupLayout(panelDisplayMode);
panelDisplayMode.setLayout(panelDisplayModeLayout);
panelDisplayModeLayout.setHorizontalGroup(
panelDisplayModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelDisplayModeLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btViewDewar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btViewRT)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panelDisplayModeLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btViewDewar, btViewRT});
panelDisplayModeLayout.setVerticalGroup(
panelDisplayModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelDisplayModeLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelDisplayModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btViewDewar)
.addComponent(btViewRT))
.addContainerGap())
);
panelDevices.setBorder(javax.swing.BorderFactory.createTitledBorder("Devices"));
panelDevices.setPreferredSize(new java.awt.Dimension(300, 282));
devicesPanel.setActive(false);
checkExpert.setText("Expert");
checkExpert.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
checkExpert.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
checkExpertActionPerformed(evt);
}
});
buttonExpertCommands.setText("Commands");
buttonExpertCommands.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonExpertCommandsActionPerformed(evt);
}
});
buttonRecovery.setText("Recovery");
buttonRecovery.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonRecoveryActionPerformed(evt);
}
});
buttonConfig.setText("Settings");
buttonConfig.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonConfigActionPerformed(evt);
}
});
buttonDetectionCalibrate.setText("Calibrate");
buttonDetectionCalibrate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonDetectionCalibrateActionPerformed(evt);
}
});
buttonDetectionExposure.setText("Detection");
buttonDetectionExposure.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonDetectionExposureActionPerformed(evt);
}
});
javax.swing.GroupLayout panelExpertLayout = new javax.swing.GroupLayout(panelExpert);
panelExpert.setLayout(panelExpertLayout);
panelExpertLayout.setHorizontalGroup(
panelExpertLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(checkExpert, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(buttonExpertCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(panelExpertLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(buttonRecovery, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonConfig, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)
.addComponent(buttonDetectionCalibrate, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonDetectionExposure, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))
);
panelExpertLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonConfig, buttonExpertCommands, buttonRecovery});
panelExpertLayout.setVerticalGroup(
panelExpertLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelExpertLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(checkExpert)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonExpertCommands)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(buttonRecovery)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(buttonConfig)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(buttonDetectionCalibrate)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(buttonDetectionExposure)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout panelDevicesLayout = new javax.swing.GroupLayout(panelDevices);
panelDevices.setLayout(panelDevicesLayout);
panelDevicesLayout.setHorizontalGroup(
panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelDevicesLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(devicesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE)
.addComponent(panelExpert, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(26, Short.MAX_VALUE))
);
panelDevicesLayout.setVerticalGroup(
panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelDevicesLayout.createSequentialGroup()
.addContainerGap(10, Short.MAX_VALUE)
.addGroup(panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panelExpert, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(devicesPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 238, Short.MAX_VALUE))
.addContainerGap(9, Short.MAX_VALUE))
);
javax.swing.GroupLayout panelRightLayout = new javax.swing.GroupLayout(panelRight);
panelRight.setLayout(panelRightLayout);
panelRightLayout.setHorizontalGroup(
panelRightLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelRightLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addGroup(panelRightLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(panelDetail, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE)
.addComponent(panelDisplayMode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelDevices, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE))
.addGap(0, 0, 0))
);
panelRightLayout.setVerticalGroup(
panelRightLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelRightLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(panelDetail, javax.swing.GroupLayout.DEFAULT_SIZE, 125, Short.MAX_VALUE)
.addGap(0, 0, 0)
.addComponent(panelDevices, javax.swing.GroupLayout.PREFERRED_SIZE, 280, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(panelDisplayMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0))
);
javax.swing.GroupLayout panelTopLayout = new javax.swing.GroupLayout(panelTop);
panelTop.setLayout(panelTopLayout);
panelTopLayout.setHorizontalGroup(
panelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelTopLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(panelLN2Level, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(basePlatePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelRight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0))
);
panelTopLayout.setVerticalGroup(
panelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelTopLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addGroup(panelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panelRight, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(basePlatePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelLN2Level, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(0, 0, 0))
);
panelBottom.setPreferredSize(new java.awt.Dimension(810, 150));
panelBottom.setRequestFocusEnabled(false);
panelSamples.setBorder(javax.swing.BorderFactory.createTitledBorder("Samples"));
tableSamples.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
}
));
tableSamples.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
panelTableSamples.setViewportView(tableSamples);
javax.swing.GroupLayout panelSamplesLayout = new javax.swing.GroupLayout(panelSamples);
panelSamples.setLayout(panelSamplesLayout);
panelSamplesLayout.setHorizontalGroup(
panelSamplesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelSamplesLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(panelTableSamples, javax.swing.GroupLayout.DEFAULT_SIZE, 676, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
panelSamplesLayout.setVerticalGroup(
panelSamplesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelSamplesLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(panelTableSamples, javax.swing.GroupLayout.DEFAULT_SIZE, 43, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Pucks"));
tablePucks.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"Address", "Status", "Id"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
tablePucks.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
panelTablePucks.setViewportView(tablePucks);
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(panelTablePucks, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(panelTablePucks, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
javax.swing.GroupLayout panelBottomLayout = new javax.swing.GroupLayout(panelBottom);
panelBottom.setLayout(panelBottomLayout);
panelBottomLayout.setHorizontalGroup(
panelBottomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelBottomLayout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelSamples, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
panelBottomLayout.setVerticalGroup(
panelBottomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panelSamples, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panelTop, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelBottom, javax.swing.GroupLayout.DEFAULT_SIZE, 1030, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(panelTop, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(0, 0, 0)
.addComponent(panelBottom, javax.swing.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE)
.addGap(1, 1, 1))
);
}// </editor-fold>//GEN-END:initComponents
private void buttonCameraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCameraActionPerformed
setViewCamera();
}//GEN-LAST:event_buttonCameraActionPerformed
private void buttonExpertCommandsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonExpertCommandsActionPerformed
try {
Panel panel = showCommandsPanel();
onExpertCommand(SwingUtils.getWindow(panel));
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonExpertCommandsActionPerformed
//Dialog dlgDetPlot;
//Dialog dlgDetText;
Dialog dlgDetRenderer;
JComponent dlgDetPlotComp;
JComponent dlgDetTextComp;
JComponent dlgDetRendererComp;
private void buttonDetectionCalibrateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDetectionCalibrateActionPerformed
execute("imgproc/CoverCalibration", null, false, true);
}//GEN-LAST:event_buttonDetectionCalibrateActionPerformed
private void buttonDetectionExposureActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDetectionExposureActionPerformed
try {
this.evalAsync("cover_detection.set_renderer(show_panel(img))", true);
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonDetectionExposureActionPerformed
private void checkExpertActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkExpertActionPerformed
if (checkExpert.isSelected()) {
PasswordDialog dlg = new PasswordDialog(getTopLevel(), true, 1234);
dlg.setResizable(false);
dlg.setLocationRelativeTo(getTopLevel());
dlg.setVisible(true);
if (dlg.getResult() == false) {
checkExpert.setSelected(false);
return;
}
}
setExpertMode(checkExpert.isSelected());
}//GEN-LAST:event_checkExpertActionPerformed
private void buttonDrawingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDrawingActionPerformed
setViewDesign();
}//GEN-LAST:event_buttonDrawingActionPerformed
private void btViewDewarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btViewDewarActionPerformed
btViewRT.setSelected(!btViewDewar.isSelected());
if (btViewRT.isSelected()) {
setDefaultDetail();
}
updateViewMode();
}//GEN-LAST:event_btViewDewarActionPerformed
private void btViewRTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btViewRTActionPerformed
btViewDewar.setSelected(!btViewRT.isSelected());
if (btViewRT.isSelected()) {
setDefaultDetail();
}
updateViewMode();
}//GEN-LAST:event_btViewRTActionPerformed
private void buttonRecoveryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRecoveryActionPerformed
try {
Panel panel = showRecoveryPanel();
onExpertCommand(SwingUtils.getWindow(panel));
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonRecoveryActionPerformed
private void buttonConfigActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonConfigActionPerformed
onExpertCommand(null);
boolean current = false;
try {
current = "true".equalsIgnoreCase(getSetting("valve_control"));
} catch (Exception ex) {
}
showSettingsEditor(true);
//Check if must open valve
if (current) {
SwingUtilities.invokeLater(() -> {
try {
boolean valveControl = "true".equalsIgnoreCase(getSetting("valve_control"));
if (!valveControl) {
execute("open_valve()", true);
}
} catch (Exception ex) {
getLogger().log(Level.WARNING, null, ex);
}
});
}
}//GEN-LAST:event_buttonConfigActionPerformed
private void buttonReleaseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonReleaseActionPerformed
execute("release_safety()", true);
}//GEN-LAST:event_buttonReleaseActionPerformed
private void textCoverDetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textCoverDetActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_textCoverDetActionPerformed
private void checkServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkServiceActionPerformed
try {
if (!updating){
Controller.getInstance().setServiceMode(checkService.isSelected());
}
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_checkServiceActionPerformed
private void buttonSampleLoadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSampleLoadActionPerformed
try {
Controller.getInstance().setPuckLoading(true);
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonSampleLoadActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
ch.psi.mxsc.BasePlatePanel basePlatePanel;
private javax.swing.JToggleButton btViewDewar;
private javax.swing.JToggleButton btViewRT;
private javax.swing.JToggleButton buttonCamera;
private javax.swing.JButton buttonConfig;
private javax.swing.JButton buttonDetectionCalibrate;
private javax.swing.JButton buttonDetectionExposure;
private javax.swing.JToggleButton buttonDrawing;
private javax.swing.JButton buttonExpertCommands;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton buttonRecovery;
private javax.swing.JButton buttonRelease;
private javax.swing.JButton buttonSampleLoad;
private javax.swing.JCheckBox checkExpert;
private javax.swing.JCheckBox checkService;
private ch.psi.mxsc.DevicesPanel devicesPanel;
private javax.swing.Box.Filler filler1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
private javax.swing.JLabel jLabel25;
private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel27;
private javax.swing.JLabel jLabel29;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JLabel jLabell21;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JLabel labelManualMode;
private javax.swing.JLabel labelManualMode1;
private javax.swing.JLabel labelRoomTemperature;
private ch.psi.pshell.swing.Led led5;
private ch.psi.pshell.swing.Led led6;
private ch.psi.pshell.swing.Led ledAirPressure;
private ch.psi.pshell.swing.Led ledDryer;
private ch.psi.pshell.swing.Led ledHeaterOk;
private ch.psi.pshell.swing.Led ledLidControlActive1;
private ch.psi.pshell.swing.Led ledLidControlActive2;
private ch.psi.pshell.swing.Led ledLidControlActive3;
private ch.psi.pshell.swing.Led ledLidControlActive4;
private ch.psi.pshell.swing.Led ledLidControlActive5;
private ch.psi.pshell.swing.Led ledLocalSafety;
private ch.psi.pshell.swing.Led ledManualMode;
private ch.psi.pshell.swing.Led ledN2Pressure;
private ch.psi.pshell.swing.Led ledPsysSafety;
private ch.psi.pshell.swing.Led ledRoomTemperature;
private ch.psi.pshell.swing.Led ledServiceMode;
private javax.swing.JPanel panelBeamlineStatus;
private javax.swing.JPanel panelBottom;
private javax.swing.JPanel panelCover;
private javax.swing.JPanel panelDatamatrix;
private javax.swing.JPanel panelDetail;
private javax.swing.JPanel panelDetection;
private javax.swing.JPanel panelDevices;
private javax.swing.JPanel panelDisplayMode;
private javax.swing.JPanel panelExpert;
private ch.psi.pshell.swing.DeviceValuePanel panelHeaterTemp;
private javax.swing.JPanel panelLN2Level;
private javax.swing.JPanel panelLegend;
private javax.swing.JPanel panelRight;
private javax.swing.JPanel panelSamples;
private javax.swing.JPanel panelStatus;
private javax.swing.JPanel panelSystemStatus;
private javax.swing.JScrollPane panelTablePucks;
private javax.swing.JScrollPane panelTableSamples;
private javax.swing.JPanel panelTop;
private javax.swing.JPanel panelViewType;
private javax.swing.JProgressBar progressLN2;
private javax.swing.JTable tablePucks;
private javax.swing.JTable tableSamples;
private javax.swing.JTextField textCoverCache;
private javax.swing.JTextField textCoverDet;
private javax.swing.JTextField textPuckDatamatrix;
private javax.swing.JTextField textSampleDatamatrix;
// End of variables declaration//GEN-END:variables
}