diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index c128ee0..a5bb6db 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -9,6 +9,7 @@ import ch.psi.pshell.core.DevicePool; import ch.psi.pshell.core.DevicePoolListener; import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceAdapter; +import ch.psi.pshell.device.DeviceListener; import ch.psi.pshell.device.GenericDevice; import ch.psi.pshell.device.ReadbackDevice; import ch.psi.pshell.ui.Panel; @@ -89,6 +90,7 @@ public class Controller { } this.mainFrame = (MainPanel) mainFrame; instance = this; + clearPuckStates(); } //public Panel getMainFrame() { @@ -97,7 +99,7 @@ public class Controller { } public void updateView() { - getMainFrame().repaint(); + getMainFrame().refresh(); } void onInitialize(int runCount) { @@ -106,7 +108,7 @@ public class Controller { getMainFrame().removeDevice(former); } getMainFrame().addDevice(basePlate); - clearPuckStates(); + if (puckSensorAccess == PuckSensorAccess.Esera) { getMainFrame().getContext().getDevicePool().addListener(new DevicePoolListener() { @@ -133,17 +135,38 @@ public class Controller { detection = new EseraDetection((Device) getMainFrame().getDevice(PUCK_ESERA_DEVICE)); } } + + Controller.getInstance().getDevicePool().addListener(new DevicePoolListener() { + @Override + public void onDeviceAdded(GenericDevice dev) { + updateDevices(); + } + + @Override + public void onDeviceRemoved(GenericDevice dev) { + } + }); + updateDevices(); + + } + + final DeviceListener hexiposiListener = new DeviceAdapter() { + @Override + public void onValueChanged(Device device, Object value, Object former) { + updateView(); + } + }; + + void updateDevices(){ + if (hexiposi!=null){ + hexiposi.removeListener(hexiposiListener); + } hexiposi = (Device) getMainFrame().getDevice("hexiposi"); if (hexiposi != null) { - hexiposi.addListener(new DeviceAdapter() { - @Override - public void onValueChanged(Device device, Object value, Object former) { - updateView(); - } - }); + hexiposi.addListener(hexiposiListener); } else { Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, "No hexiposi detected."); - } + } } final PuckState[] puckState; @@ -186,7 +209,11 @@ public class Controller { } public String getHexiposiPosition() { - return (String) ((ReadbackDevice) hexiposi).getReadback().take(); + try { + return (String) ((ReadbackDevice) hexiposi).getReadback().take(); + } catch (Exception ex) { + return null; + } } public Boolean isLedRoomTemp() { @@ -245,7 +272,6 @@ public class Controller { public void clearImageDetection() throws Context.ContextStateException, ScriptException, IOException, InterruptedException { Map> map = (Map>) getMainFrame().eval("clear_detection(None)"); setImageDetection(map); - updateView(); } void setImageDetection(Map> map) { @@ -257,6 +283,7 @@ public class Controller { } } } + updateView(); } void setSinglePuckType(Puck.PuckType puckType) { diff --git a/src/main/java/ch/psi/mxsc/MainPanel.form b/src/main/java/ch/psi/mxsc/MainPanel.form index f7e4814..6cd2908 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.form +++ b/src/main/java/ch/psi/mxsc/MainPanel.form @@ -1,6 +1,11 @@ -
+ + + + + + @@ -16,1194 +21,1256 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - + - + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - + + + - - + + - + - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + - - + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + - + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ + + +
+
+
+
+
+
+
diff --git a/src/main/java/ch/psi/mxsc/MainPanel.java b/src/main/java/ch/psi/mxsc/MainPanel.java index fb84bc4..205e562 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.java +++ b/src/main/java/ch/psi/mxsc/MainPanel.java @@ -3,6 +3,8 @@ */ package ch.psi.mxsc; +import ch.psi.pshell.core.Context; +import ch.psi.pshell.core.JsonSerializer; import ch.psi.pshell.core.Plugin; import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceAdapter; @@ -11,24 +13,15 @@ import ch.psi.pshell.imaging.RendererMode; import ch.psi.pshell.imaging.Source; import ch.psi.pshell.ui.App; import ch.psi.pshell.ui.Panel; -import ch.psi.utils.Config; import ch.psi.utils.State; -import ch.psi.utils.swing.ConfigDialog; -import ch.psi.utils.swing.PropertiesDialog; -import ch.psi.utils.swing.StandardDialog; import ch.psi.utils.swing.SwingUtils; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dialog; import java.awt.Dimension; -import java.awt.Frame; import java.awt.GridBagLayout; import java.awt.Image; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.GroupLayout; @@ -36,7 +29,8 @@ import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.WindowConstants; +import javax.swing.SwingUtilities; +import javax.swing.table.DefaultTableModel; /** * @@ -56,6 +50,13 @@ public class MainPanel extends Panel { labeManualMode.setVisible(false); setExpertMode(false); setDefaultDetail(); + + int row = 0; + for (String segment : new String[]{"A", "B", "C", "D", "E", "F"}){ + for (int puck=1; puck<=5; puck++){ + tablePucks.getModel().setValueAt(segment+puck, row++, 0); + } + } } @Override @@ -64,14 +65,16 @@ public class MainPanel extends Panel { Image img = new ImageIcon(this.getClass().getResource("/apple_transparent_white_100x50.png")).getImage(); SwingUtils.getWindow(this).setIconImage(img); } + basePlatePanel.setDevice(Controller.getInstance().basePlate); + basePlatePanel.getDevice().setSelectable(true); } @Override public void onInitialize(int runCount) { stopTimer(); Controller.getInstance().onInitialize(runCount); - basePlatePanel.setDevice((Device) getDevice("BasePlate")); - basePlatePanel.getDevice().setSelectable(true); + //basePlatePanel.setDevice((Device) getDevice("BasePlate")); + //basePlatePanel.getDevice().setSelectable(true); try { devicesPanel.initialize(); ((Device) getDevice("dewar_level")).addListener(new DeviceAdapter() { @@ -99,7 +102,7 @@ public class MainPanel extends Panel { updateFillingControl(((Device) getDevice("ln2_main_power")).take()); ((Device) getDevice("air_pressure_ok")).addListener(new DeviceAdapter() { - @Override + @Override public void onValueChanged(Device device, Object value, Object former) { updateAirPressure(value); } @@ -135,12 +138,13 @@ public class MainPanel extends Panel { Controller.getInstance().updatePuckTypes(); startTimer(10000, 1000); updateCameraView(); + refreshSamplesTable(); } @Override public void onStateChange(State state, State former) { - buttonStartLoading.setEnabled(state.isNormal()); + } @@ -158,6 +162,15 @@ public class MainPanel extends Panel { labeManualMode.setVisible(false); } } + + + void refresh(){ + repaint(); + for (Puck p : Controller.getInstance().basePlate.getPucks()) { + tablePucks.getModel().setValueAt(p.getStatus(), p.getIndex(), 1); + tablePucks.getModel().setValueAt(p.getId(), p.getIndex(), 2); + } + } void updateLevel(Object value) { if ((value == null) || !(value instanceof Number)) { @@ -283,19 +296,26 @@ public class MainPanel extends Panel { boolean viewDewar = true; RoomTempBasePlatePanel roomTempPanel; + WaterLevelPanel waterLevelPanel; void updateViewMode() { try { if (btViewDewar.isSelected() != viewDewar) { viewDewar = btViewDewar.isSelected(); if (viewDewar) { - ((GroupLayout) getLayout()).replace(roomTempPanel, basePlatePanel); + ((GroupLayout) panelTop.getLayout()).replace(roomTempPanel, basePlatePanel); + ((GroupLayout) panelTop.getLayout()).replace(waterLevelPanel, panelLN2Level); } else { if (roomTempPanel == null) { roomTempPanel = new RoomTempBasePlatePanel(); roomTempPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("RT Humidifier")); } - ((GroupLayout) getLayout()).replace(basePlatePanel, roomTempPanel); + ((GroupLayout) panelTop.getLayout()).replace(basePlatePanel, roomTempPanel); + if (waterLevelPanel == null) { + waterLevelPanel = new WaterLevelPanel(); + } + waterLevelPanel.setPreferredSize(panelLN2Level.getSize()); + ((GroupLayout) panelTop.getLayout()).replace(panelLN2Level, waterLevelPanel); } } } catch (Exception ex) { @@ -370,6 +390,41 @@ public class MainPanel extends Panel { return panelDetail.getSize(); } + + String[] HEADER = new String[]{"Puck Address", "Mount Count", "User Name", "Puck Name", "Sample Status", + "Sample Name", "Sample Position", "Puck Barcode", "Dewar Name", "Puck Type"}; + + + void refreshSamplesTable() { + try { + String json = (String) Context.getInstance().evalLineBackground("get_samples_info()"); + + //SamplesInfo sampleInfo = (SamplesInfo) JsonSerializer.decode(json, SampleInfo.class); + SampleInfo[] samples = (SampleInfo[]) JsonSerializer.decode(json, SampleInfo[].class); + + Object[][] sampleData = new Object[samples.length][]; + for (int i=0; i< samples.length; i++) { + sampleData[i] = samples[i].getData(); + } + + + tableSamples.setModel(new DefaultTableModel( + sampleData, + HEADER + )); + } catch (Exception ex) { + clearSamplesTable(); + getLogger().log(Level.SEVERE, null, ex); + } + + } + + void clearSamplesTable() { + tableSamples.setModel(new DefaultTableModel( + new Object[][]{}, + HEADER + )); + } /** * 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 @@ -379,6 +434,34 @@ public class MainPanel extends Panel { // //GEN-BEGIN:initComponents private void initComponents() { + panelTop = new javax.swing.JPanel(); + panelLN2Control = new javax.swing.JPanel(); + ledFillingControl = new ch.psi.pshell.swing.Led(); + ledFillingDewar = new ch.psi.pshell.swing.Led(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + deviceValuePanel1 = new ch.psi.pshell.swing.DeviceValuePanel(); + jLabel14 = new javax.swing.JLabel(); + labelRoomTemperature = new javax.swing.JLabel(); + panelDatamatrix = new javax.swing.JPanel(); + jLabel11 = new javax.swing.JLabel(); + jLabel13 = new javax.swing.JLabel(); + textSample = new javax.swing.JTextField(); + textType = new javax.swing.JTextField(); + panelDevices = new javax.swing.JPanel(); + devicesPanel = new ch.psi.mxsc.DevicesPanel(); + checkExpert = new javax.swing.JCheckBox(); + buttonExpertCommands = new javax.swing.JButton(); + buttonRecovery = new javax.swing.JButton(); + buttonCalibrateImage = new javax.swing.JButton(); + buttonCalibrateCover = new javax.swing.JButton(); + buttonConfig = new javax.swing.JButton(); + 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(); + panelDetail = new javax.swing.JPanel(); basePlatePanel = new ch.psi.mxsc.BasePlatePanel(); panelLegend = new javax.swing.JPanel(); ledLidControlActive2 = new ch.psi.pshell.swing.Led(); @@ -400,45 +483,9 @@ public class MainPanel extends Panel { 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(); - jSeparator1 = new javax.swing.JSeparator(); - jLabel1 = new javax.swing.JLabel(); - progressLN2 = new javax.swing.JProgressBar(); - jSeparator3 = new javax.swing.JSeparator(); - jSeparator2 = new javax.swing.JSeparator(); - jLabel3 = new javax.swing.JLabel(); - jLabel2 = new javax.swing.JLabel(); - panelWaterLevel = new javax.swing.JPanel(); - progressWater = new javax.swing.JProgressBar(); - panelDevices = new javax.swing.JPanel(); - devicesPanel = new ch.psi.mxsc.DevicesPanel(); - checkExpert = new javax.swing.JCheckBox(); - buttonExpertCommands = new javax.swing.JButton(); - buttonRecovery = new javax.swing.JButton(); - buttonCalibrateImage = new javax.swing.JButton(); - buttonCalibrateCover = new javax.swing.JButton(); - buttonConfig = new javax.swing.JButton(); - panelLN2Control = new javax.swing.JPanel(); - ledFillingControl = new ch.psi.pshell.swing.Led(); - ledFillingDewar = new ch.psi.pshell.swing.Led(); - jLabel4 = new javax.swing.JLabel(); - jLabel5 = new javax.swing.JLabel(); - deviceValuePanel1 = new ch.psi.pshell.swing.DeviceValuePanel(); - jLabel14 = new javax.swing.JLabel(); - labelRoomTemperature = new javax.swing.JLabel(); - 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(); - panelDatamatrix = new javax.swing.JPanel(); - jLabel11 = new javax.swing.JLabel(); - jLabel13 = new javax.swing.JLabel(); - textSample = new javax.swing.JTextField(); - textType = new javax.swing.JTextField(); - PanelSampleLoad = new javax.swing.JPanel(); - buttonStartLoading = new javax.swing.JButton(); + panelDisplayMode = new javax.swing.JPanel(); + btViewDewar = new javax.swing.JToggleButton(); + btViewRT = new javax.swing.JToggleButton(); panelSystemStatus = new javax.swing.JPanel(); ledAirPressure = new ch.psi.pshell.swing.Led(); jLabel24 = new javax.swing.JLabel(); @@ -449,12 +496,262 @@ public class MainPanel extends Panel { 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, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 32767)); labeManualMode = new javax.swing.JLabel(); - panelDisplayMode = new javax.swing.JPanel(); - btViewDewar = new javax.swing.JToggleButton(); - btViewRT = new javax.swing.JToggleButton(); - panelDetail = new javax.swing.JPanel(); + filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767)); + panelLN2Level = new javax.swing.JPanel(); + jPanel3 = new javax.swing.JPanel(); + jSeparator1 = new javax.swing.JSeparator(); + jLabel1 = new javax.swing.JLabel(); + progressLN2 = new javax.swing.JProgressBar(); + jSeparator3 = new javax.swing.JSeparator(); + jSeparator2 = new javax.swing.JSeparator(); + jLabel3 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + panelBottom = new javax.swing.JPanel(); + jPanel1 = new javax.swing.JPanel(); + jScrollPane1 = new javax.swing.JScrollPane(); + tableSamples = new javax.swing.JTable(); + jPanel4 = new javax.swing.JPanel(); + jScrollPane3 = new javax.swing.JScrollPane(); + tablePucks = new javax.swing.JTable(); + + setPreferredSize(new java.awt.Dimension(1300, 900)); + + panelLN2Control.setBorder(javax.swing.BorderFactory.createTitledBorder("LN2 Control")); + + jLabel4.setText("Control Active"); + + jLabel5.setText("Currently Filling"); + + deviceValuePanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + deviceValuePanel1.setDeviceName("rim_heater_temp"); + + jLabel14.setText("Temperature:"); + + labelRoomTemperature.setForeground(java.awt.Color.orange); + labelRoomTemperature.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labelRoomTemperature.setText("Room Temperature"); + + javax.swing.GroupLayout panelLN2ControlLayout = new javax.swing.GroupLayout(panelLN2Control); + panelLN2Control.setLayout(panelLN2ControlLayout); + panelLN2ControlLayout.setHorizontalGroup( + panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLN2ControlLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelRoomTemperature, javax.swing.GroupLayout.DEFAULT_SIZE, 161, Short.MAX_VALUE) + .addGroup(panelLN2ControlLayout.createSequentialGroup() + .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLN2ControlLayout.createSequentialGroup() + .addComponent(ledFillingDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLN2ControlLayout.createSequentialGroup() + .addComponent(jLabel14) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jLabel5))) + .addGroup(panelLN2ControlLayout.createSequentialGroup() + .addComponent(ledFillingControl, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel4))) + .addContainerGap()))) + ); + panelLN2ControlLayout.setVerticalGroup( + panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLN2ControlLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(ledFillingControl, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(ledFillingDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel14) + .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE) + .addComponent(labelRoomTemperature) + .addContainerGap()) + ); + + panelDatamatrix.setBorder(javax.swing.BorderFactory.createTitledBorder("Datamatrix")); + + jLabel11.setText("Puck:"); + + jLabel13.setText("Sample:"); + + textSample.setEditable(false); + textSample.setBackground(new java.awt.Color(214, 217, 223)); + + textType.setEditable(false); + textType.setBackground(new java.awt.Color(214, 217, 223)); + + javax.swing.GroupLayout panelDatamatrixLayout = new javax.swing.GroupLayout(panelDatamatrix); + panelDatamatrix.setLayout(panelDatamatrixLayout); + panelDatamatrixLayout.setHorizontalGroup( + panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelDatamatrixLayout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel11) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(textType) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jLabel13) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(textSample) + .addContainerGap()) + ); + panelDatamatrixLayout.setVerticalGroup( + panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelDatamatrixLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel11) + .addComponent(textType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel13) + .addComponent(textSample, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + 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); + } + }); + + buttonCalibrateImage.setText("Calibrate"); + buttonCalibrateImage.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonCalibrateImageActionPerformed(evt); + } + }); + + buttonCalibrateCover.setText("Cover Ref"); + buttonCalibrateCover.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonCalibrateCoverActionPerformed(evt); + } + }); + + buttonConfig.setText("Settings"); + buttonConfig.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonConfigActionPerformed(evt); + } + }); + + javax.swing.GroupLayout panelDevicesLayout = new javax.swing.GroupLayout(panelDevices); + panelDevices.setLayout(panelDevicesLayout); + panelDevicesLayout.setHorizontalGroup( + panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelDevicesLayout.createSequentialGroup() + .addContainerGap() + .addComponent(devicesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE) + .addGroup(panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(buttonExpertCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(checkExpert, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonRecovery, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonCalibrateImage, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonCalibrateCover, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonConfig, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + panelDevicesLayout.setVerticalGroup( + panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelDevicesLayout.createSequentialGroup() + .addComponent(devicesPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(9, 9, 9)) + .addGroup(panelDevicesLayout.createSequentialGroup() + .addGap(17, 17, 17) + .addComponent(checkExpert) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE) + .addComponent(buttonExpertCommands) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(buttonRecovery) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(buttonCalibrateImage) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(buttonCalibrateCover) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(buttonConfig) + .addContainerGap(30, Short.MAX_VALUE)) + ); + + 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(30, Short.MAX_VALUE)) + ); + panelBeamlineStatusLayout.setVerticalGroup( + panelBeamlineStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelBeamlineStatusLayout.createSequentialGroup() + .addContainerGap() + .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(34, 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, 288, Short.MAX_VALUE) + ); + panelDetailLayout.setVerticalGroup( + panelDetailLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 0, Short.MAX_VALUE) + ); basePlatePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Dewar")); @@ -657,7 +954,7 @@ public class MainPanel extends Panel { .addGroup(basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(panelDetection, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(panelLegend, 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) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 441, Short.MAX_VALUE) .addGroup(basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(panelHexiposi, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(panelViewType, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) @@ -681,6 +978,126 @@ public class MainPanel extends Panel { basePlatePanelLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {panelHexiposi, panelLegend}); + 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("RT"); + 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(42, Short.MAX_VALUE) + .addGroup(panelDisplayModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btViewDewar) + .addComponent(btViewRT)) + .addContainerGap(42, 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(18, Short.MAX_VALUE) + .addComponent(btViewDewar) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(btViewRT) + .addContainerGap(19, 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("Psys Safety"); + + buttonRelease.setText("Release"); + buttonRelease.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonReleaseActionPerformed(evt); + } + }); + + labeManualMode.setForeground(java.awt.Color.orange); + labeManualMode.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labeManualMode.setText("Manual Mode"); + + javax.swing.GroupLayout panelSystemStatusLayout = new javax.swing.GroupLayout(panelSystemStatus); + panelSystemStatus.setLayout(panelSystemStatusLayout); + panelSystemStatusLayout.setHorizontalGroup( + panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSystemStatusLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labeManualMode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(panelSystemStatusLayout.createSequentialGroup() + .addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, 8, javax.swing.GroupLayout.PREFERRED_SIZE) + .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(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(ledPsysSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSystemStatusLayout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel24) + .addComponent(jLabel25) + .addComponent(jLabel26) + .addComponent(jLabell21))) + .addGroup(panelSystemStatusLayout.createSequentialGroup() + .addGap(27, 27, 27) + .addComponent(buttonRelease))) + .addGap(0, 29, Short.MAX_VALUE))) + .addContainerGap()) + ); + panelSystemStatusLayout.setVerticalGroup( + panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSystemStatusLayout.createSequentialGroup() + .addContainerGap() + .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)) + .addGap(12, 12, 12) + .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(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, 18, Short.MAX_VALUE) + .addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(buttonRelease)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE) + .addComponent(labeManualMode) + .addContainerGap()) + ); + panelLN2Level.setBorder(javax.swing.BorderFactory.createTitledBorder("LN2 Level")); jLabel1.setText("Stop
Filling"); @@ -698,7 +1115,7 @@ public class MainPanel extends Panel { jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(0, 0, 0) - .addComponent(progressLN2, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(progressLN2, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(4, 4, 4) @@ -757,474 +1174,192 @@ public class MainPanel extends Panel { .addContainerGap()) ); - panelWaterLevel.setBorder(javax.swing.BorderFactory.createTitledBorder("Water Level")); - - progressWater.setMaximum(1000); - progressWater.setOrientation(1); - - javax.swing.GroupLayout panelWaterLevelLayout = new javax.swing.GroupLayout(panelWaterLevel); - panelWaterLevel.setLayout(panelWaterLevelLayout); - panelWaterLevelLayout.setHorizontalGroup( - panelWaterLevelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelWaterLevelLayout.createSequentialGroup() - .addContainerGap(31, Short.MAX_VALUE) - .addComponent(progressWater, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(32, Short.MAX_VALUE)) - ); - panelWaterLevelLayout.setVerticalGroup( - panelWaterLevelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelWaterLevelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(progressWater, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .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); - } - }); - - buttonCalibrateImage.setText("Calibrate"); - buttonCalibrateImage.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonCalibrateImageActionPerformed(evt); - } - }); - - buttonCalibrateCover.setText("Cover Ref"); - buttonCalibrateCover.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonCalibrateCoverActionPerformed(evt); - } - }); - - buttonConfig.setText("Settings"); - buttonConfig.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonConfigActionPerformed(evt); - } - }); - - javax.swing.GroupLayout panelDevicesLayout = new javax.swing.GroupLayout(panelDevices); - panelDevices.setLayout(panelDevicesLayout); - panelDevicesLayout.setHorizontalGroup( - panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelDevicesLayout.createSequentialGroup() - .addContainerGap() - .addComponent(devicesPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 50, Short.MAX_VALUE) - .addGroup(panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(buttonExpertCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(checkExpert, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonRecovery, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonCalibrateImage, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonCalibrateCover, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonConfig, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - panelDevicesLayout.setVerticalGroup( - panelDevicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelDevicesLayout.createSequentialGroup() - .addComponent(devicesPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGap(9, 9, 9)) - .addGroup(panelDevicesLayout.createSequentialGroup() - .addGap(17, 17, 17) - .addComponent(checkExpert) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 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(buttonCalibrateImage) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(buttonCalibrateCover) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(buttonConfig) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - panelLN2Control.setBorder(javax.swing.BorderFactory.createTitledBorder("LN2 Control")); - - jLabel4.setText("Control Active"); - - jLabel5.setText("Currently Filling"); - - deviceValuePanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - deviceValuePanel1.setDeviceName("rim_heater_temp"); - - jLabel14.setText("Temperature:"); - - labelRoomTemperature.setForeground(java.awt.Color.orange); - labelRoomTemperature.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - labelRoomTemperature.setText("Room Temperature"); - - javax.swing.GroupLayout panelLN2ControlLayout = new javax.swing.GroupLayout(panelLN2Control); - panelLN2Control.setLayout(panelLN2ControlLayout); - panelLN2ControlLayout.setHorizontalGroup( - panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelLN2ControlLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(labelRoomTemperature, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(panelLN2ControlLayout.createSequentialGroup() - .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelLN2ControlLayout.createSequentialGroup() - .addComponent(ledFillingDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelLN2ControlLayout.createSequentialGroup() - .addComponent(jLabel14) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(jLabel5))) - .addGroup(panelLN2ControlLayout.createSequentialGroup() - .addComponent(ledFillingControl, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel4))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - ); - panelLN2ControlLayout.setVerticalGroup( - panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelLN2ControlLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(ledFillingControl, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel4)) + 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) - .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(ledFillingDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel5)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelLN2ControlLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel14) - .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 25, Short.MAX_VALUE) - .addComponent(labelRoomTemperature) - .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() - .addContainerGap() - .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)) + .addGroup(panelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(panelLN2Control, 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) + .addComponent(panelBeamlineStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelDisplayMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .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)) + .addComponent(basePlatePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(panelDevices, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelDetail, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelDatamatrix, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 0, 0)) ); - panelDatamatrix.setBorder(javax.swing.BorderFactory.createTitledBorder("Datamatrix")); + panelTopLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {panelDetail, panelDevices}); - jLabel11.setText("Puck:"); + panelTopLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {panelBeamlineStatus, panelLN2Control, panelSystemStatus}); - jLabel13.setText("Sample:"); + panelTopLayout.setVerticalGroup( + panelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelTopLayout.createSequentialGroup() + .addGap(0, 0, 0) + .addGroup(panelTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelTopLayout.createSequentialGroup() + .addComponent(panelDetail, javax.swing.GroupLayout.DEFAULT_SIZE, 260, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelDatamatrix, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelDevices, javax.swing.GroupLayout.PREFERRED_SIZE, 316, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(panelLN2Level, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(basePlatePanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(panelTopLayout.createSequentialGroup() + .addComponent(panelDisplayMode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelLN2Control, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelSystemStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelBeamlineStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGap(0, 0, 0)) + ); - textSample.setEditable(false); - textSample.setBackground(new java.awt.Color(214, 217, 223)); + jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Samples")); - textType.setEditable(false); - textType.setBackground(new java.awt.Color(214, 217, 223)); + tableSamples.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { - javax.swing.GroupLayout panelDatamatrixLayout = new javax.swing.GroupLayout(panelDatamatrix); - panelDatamatrix.setLayout(panelDatamatrixLayout); - panelDatamatrixLayout.setHorizontalGroup( - panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelDatamatrixLayout.createSequentialGroup() + }, + new String [] { + + } + )); + tableSamples.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jScrollPane1.setViewportView(tableSamples); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(0, 0, 0) + .addComponent(jScrollPane1) + .addGap(0, 0, 0)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(0, 0, 0) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, 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); + jScrollPane3.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(jScrollPane3, 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(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 139, 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() .addContainerGap() - .addGroup(panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelDatamatrixLayout.createSequentialGroup() - .addComponent(jLabel13) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textSample, javax.swing.GroupLayout.DEFAULT_SIZE, 59, Short.MAX_VALUE)) - .addGroup(panelDatamatrixLayout.createSequentialGroup() - .addComponent(jLabel11) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textType))) - .addContainerGap()) - ); - - panelDatamatrixLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel11, jLabel13}); - - panelDatamatrixLayout.setVerticalGroup( - panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelDatamatrixLayout.createSequentialGroup() - .addContainerGap(29, Short.MAX_VALUE) - .addGroup(panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel11) - .addComponent(textType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addGroup(panelDatamatrixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel13) - .addComponent(textSample, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(30, Short.MAX_VALUE)) - ); - - PanelSampleLoad.setBorder(javax.swing.BorderFactory.createTitledBorder("Sample Load")); - - buttonStartLoading.setText("Start"); - buttonStartLoading.setEnabled(false); - buttonStartLoading.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonStartLoadingActionPerformed(evt); - } - }); - - javax.swing.GroupLayout PanelSampleLoadLayout = new javax.swing.GroupLayout(PanelSampleLoad); - PanelSampleLoad.setLayout(PanelSampleLoadLayout); - PanelSampleLoadLayout.setHorizontalGroup( - PanelSampleLoadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, PanelSampleLoadLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonStartLoading, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - PanelSampleLoadLayout.setVerticalGroup( - PanelSampleLoadLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, PanelSampleLoadLayout.createSequentialGroup() - .addContainerGap(29, Short.MAX_VALUE) - .addComponent(buttonStartLoading, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(30, 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("Psys Safety"); - - buttonRelease.setText("Release"); - buttonRelease.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonReleaseActionPerformed(evt); - } - }); - - labeManualMode.setForeground(java.awt.Color.orange); - labeManualMode.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - labeManualMode.setText("Manual Mode"); - - javax.swing.GroupLayout panelSystemStatusLayout = new javax.swing.GroupLayout(panelSystemStatus); - panelSystemStatus.setLayout(panelSystemStatusLayout); - panelSystemStatusLayout.setHorizontalGroup( - panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSystemStatusLayout.createSequentialGroup() - .addContainerGap() - .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(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(ledPsysSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jPanel4, 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) - .addComponent(jLabel24) - .addComponent(jLabel25) - .addComponent(jLabel26) - .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.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labeManualMode) - .addComponent(buttonRelease)) - .addComponent(filler1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(0, 0, 0)) ); - - panelSystemStatusLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonRelease, labeManualMode}); - - panelSystemStatusLayout.setVerticalGroup( - panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSystemStatusLayout.createSequentialGroup() - .addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSystemStatusLayout.createSequentialGroup() - .addContainerGap() - .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))) - .addGroup(panelSystemStatusLayout.createSequentialGroup() - .addGap(20, 20, 20) - .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, 11, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSystemStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSystemStatusLayout.createSequentialGroup() - .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(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))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelSystemStatusLayout.createSequentialGroup() - .addComponent(labeManualMode) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(buttonRelease)))) - ); - - 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("RT"); - 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(panelDisplayModeLayout.createSequentialGroup() - .addContainerGap(32, Short.MAX_VALUE) - .addGroup(panelDisplayModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(btViewDewar) - .addComponent(btViewRT)) - .addContainerGap(33, 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(23, Short.MAX_VALUE) - .addComponent(btViewDewar, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btViewRT, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(24, 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, 298, Short.MAX_VALUE) - ); - panelDetailLayout.setVerticalGroup( - panelDetailLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 204, Short.MAX_VALUE) + panelBottomLayout.setVerticalGroup( + panelBottomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, 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) - .addGroup(layout.createSequentialGroup() - .addComponent(panelLN2Level, 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) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(panelDevices, 310, 310, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(panelDetail, javax.swing.GroupLayout.PREFERRED_SIZE, 310, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelWaterLevel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(layout.createSequentialGroup() - .addComponent(panelLN2Control, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelSystemStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelBeamlineStatus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelDatamatrix, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelDisplayMode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(PanelSampleLoad, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(panelTop, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelBottom, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); - - layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {panelDetail, panelDevices}); - layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() - .addComponent(panelDetail, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelDevices, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)) - .addComponent(panelWaterLevel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelLN2Level, javax.swing.GroupLayout.Alignment.LEADING, 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(panelTop, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(panelLN2Control, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelBeamlineStatus, 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) - .addComponent(panelDatamatrix, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelDisplayMode, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(PanelSampleLoad, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) + .addComponent(panelBottom, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - - layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {PanelSampleLoad, panelBeamlineStatus, panelDatamatrix, panelDisplayMode, panelLN2Control, panelSystemStatus}); - }//
//GEN-END:initComponents private void buttonCameraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCameraActionPerformed @@ -1287,19 +1422,7 @@ public class MainPanel extends Panel { execute("release_safety()", true); }//GEN-LAST:event_buttonReleaseActionPerformed - PuckLoadDialog puckLoadDialog; - private void buttonStartLoadingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartLoadingActionPerformed - if ((puckLoadDialog==null) || (!puckLoadDialog.isShowing())){ - puckLoadDialog = new PuckLoadDialog(this.getTopLevel(), false); - } - //puckLoadDialog.setBounds(panelContext.getLocationOnScreen().x, panelContext.getLocationOnScreen().y, (int)getBounds().getMaxX() - panelContext.getX(), (int)getBounds().getMaxY() - panelContext.getY()); - puckLoadDialog.setBounds(panelLN2Control.getLocationOnScreen().x, panelLN2Control.getLocationOnScreen().y, - (int)getBounds().getMaxX() - panelLN2Control.getX(), (int)getBounds().getMaxY() - panelLN2Control.getY()); - puckLoadDialog.setVisible(true); - puckLoadDialog.refresh(); - }//GEN-LAST:event_buttonStartLoadingActionPerformed - private void checkExpertActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkExpertActionPerformed setExpertMode(checkExpert.isSelected()); }//GEN-LAST:event_checkExpertActionPerformed @@ -1358,7 +1481,6 @@ public class MainPanel extends Panel { // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JPanel PanelSampleLoad; private ch.psi.mxsc.BasePlatePanel basePlatePanel; private javax.swing.JToggleButton btViewDewar; private javax.swing.JToggleButton btViewRT; @@ -1373,7 +1495,6 @@ public class MainPanel extends Panel { private javax.swing.JButton buttonPuckDet; private javax.swing.JButton buttonRecovery; private javax.swing.JButton buttonRelease; - private javax.swing.JButton buttonStartLoading; private javax.swing.JCheckBox checkExpert; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel1; private ch.psi.mxsc.DevicesPanel devicesPanel; @@ -1398,7 +1519,13 @@ public class MainPanel extends Panel { private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JLabel jLabell21; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; + private javax.swing.JPanel jPanel4; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JScrollPane jScrollPane3; private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; @@ -1418,6 +1545,7 @@ public class MainPanel extends Panel { private ch.psi.pshell.swing.Led ledN2Pressure; private ch.psi.pshell.swing.Led ledPsysSafety; private javax.swing.JPanel panelBeamlineStatus; + private javax.swing.JPanel panelBottom; private javax.swing.JPanel panelDatamatrix; private javax.swing.JPanel panelDetail; private javax.swing.JPanel panelDetection; @@ -1428,10 +1556,12 @@ public class MainPanel extends Panel { private javax.swing.JPanel panelLN2Level; private javax.swing.JPanel panelLegend; private javax.swing.JPanel panelSystemStatus; + private javax.swing.JPanel panelTop; private javax.swing.JPanel panelViewType; - private javax.swing.JPanel panelWaterLevel; private javax.swing.JProgressBar progressLN2; - private javax.swing.JProgressBar progressWater; + private javax.swing.JTable table1; + private javax.swing.JTable tablePucks; + private javax.swing.JTable tableSamples; private javax.swing.JTextField textSample; private javax.swing.JTextField textType; // End of variables declaration//GEN-END:variables diff --git a/src/main/java/ch/psi/mxsc/Puck.java b/src/main/java/ch/psi/mxsc/Puck.java index d8de0bf..ee9bb91 100644 --- a/src/main/java/ch/psi/mxsc/Puck.java +++ b/src/main/java/ch/psi/mxsc/Puck.java @@ -97,7 +97,19 @@ public class Puck extends DeviceBase { Minispine, Unipuck, Error, - Unknown, + Unknown; + + public boolean isDefined(){ + return (this==Minispine) || (this==Unipuck); + } + + } + + public String getStatus(){ + if ((detection==Detection.Present) && puckType.isDefined()) { + return puckType.toString(); + } + return detection.toString(); } public double getAngle() { diff --git a/src/main/java/ch/psi/mxsc/PuckDetection.java b/src/main/java/ch/psi/mxsc/PuckDetection.java index f64e7ab..32014bd 100644 --- a/src/main/java/ch/psi/mxsc/PuckDetection.java +++ b/src/main/java/ch/psi/mxsc/PuckDetection.java @@ -52,9 +52,11 @@ public class PuckDetection extends DeviceBase { try { while (!Thread.currentThread().isInterrupted()) { if (chrono.isTimeout(3000)) { - setState(State.Offline); - if (Controller.getInstance() != null) { - Controller.getInstance().clearPuckStates(); + if (!isSimulated()) { + setState(State.Offline); + if (Controller.getInstance() != null) { + Controller.getInstance().clearPuckStates(); + } } } Thread.sleep(1000); diff --git a/src/main/java/ch/psi/mxsc/PuckLoadDialog.java b/src/main/java/ch/psi/mxsc/PuckLoadDialog.java deleted file mode 100644 index c151236..0000000 --- a/src/main/java/ch/psi/mxsc/PuckLoadDialog.java +++ /dev/null @@ -1,142 +0,0 @@ -package ch.psi.mxsc; - -import ch.psi.pshell.core.Context; -import ch.psi.pshell.core.JsonSerializer; -import ch.psi.utils.swing.StandardDialog; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.table.DefaultTableModel; - -/** - * - */ -public class PuckLoadDialog extends StandardDialog { - - - String[] HEADER = new String[]{"Puck Address", "Mount Count", "User Name", "Puck Name", "Sample Status", - "Sample Name", "Sample Position", "Puck Barcode", "Dewar Name", "Puck Type"}; - - public PuckLoadDialog(java.awt.Frame parent, boolean modal) { - super(parent, modal); - initComponents(); - refresh(); - } - - void refresh() { - try { - String json = (String) Context.getInstance().evalLineBackground("get_samples_info()"); - - //SamplesInfo sampleInfo = (SamplesInfo) JsonSerializer.decode(json, SampleInfo.class); - SampleInfo[] samples = (SampleInfo[]) JsonSerializer.decode(json, SampleInfo[].class); - - Object[][] sampleData = new Object[samples.length][]; - for (int i=0; i< samples.length; i++) { - sampleData[i] = samples[i].getData(); - } - - - table.setModel(new DefaultTableModel( - sampleData, - HEADER - )); - } catch (Exception ex) { - clear(); - Logger.getLogger(PuckLoadDialog.class.getName()).log(Level.SEVERE, null, ex); - } - - } - - void clear() { - table.setModel(new DefaultTableModel( - new Object[][]{}, - HEADER - )); - } - - /** - * 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") - // //GEN-BEGIN:initComponents - private void initComponents() { - - jScrollPane1 = new javax.swing.JScrollPane(); - table = new javax.swing.JTable(); - - setTitle("Puck Loading"); - - table.setModel(new javax.swing.table.DefaultTableModel( - new Object [][] { - - }, - new String [] { - - } - )); - jScrollPane1.setViewportView(table); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 277, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 79, Short.MAX_VALUE)) - ); - - pack(); - }// //GEN-END:initComponents - - /** - * @param args the command line arguments - */ - public static void main(String args[]) { - /* Set the Nimbus look and feel */ - // - /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. - * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html - */ - try { - for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { - if ("Nimbus".equals(info.getName())) { - javax.swing.UIManager.setLookAndFeel(info.getClassName()); - break; - } - } - } catch (ClassNotFoundException ex) { - java.util.logging.Logger.getLogger(PuckLoadDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (InstantiationException ex) { - java.util.logging.Logger.getLogger(PuckLoadDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (IllegalAccessException ex) { - java.util.logging.Logger.getLogger(PuckLoadDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (javax.swing.UnsupportedLookAndFeelException ex) { - java.util.logging.Logger.getLogger(PuckLoadDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } - // - - /* Create and display the dialog */ - java.awt.EventQueue.invokeLater(new Runnable() { - public void run() { - PuckLoadDialog dialog = new PuckLoadDialog(new javax.swing.JFrame(), true); - dialog.addWindowListener(new java.awt.event.WindowAdapter() { - @Override - public void windowClosing(java.awt.event.WindowEvent e) { - System.exit(0); - } - }); - dialog.setVisible(true); - } - }); - } - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JTable table; - // End of variables declaration//GEN-END:variables -} diff --git a/src/main/java/ch/psi/mxsc/PuckState.java b/src/main/java/ch/psi/mxsc/PuckState.java index fcdb5c2..96229c7 100644 --- a/src/main/java/ch/psi/mxsc/PuckState.java +++ b/src/main/java/ch/psi/mxsc/PuckState.java @@ -30,7 +30,7 @@ public class PuckState { indSwitch = false; BasePlate basePlate = getBasePlate(); if (basePlate != null) { - basePlate.getPucks()[id - 1].detection = Puck.Detection.Offline; + basePlate.getPucks()[id - 1].detection = Puck.Detection.Empty; } } diff --git a/src/main/java/ch/psi/mxsc/PuckLoadDialog.form b/src/main/java/ch/psi/mxsc/WaterLevelPanel.form similarity index 53% rename from src/main/java/ch/psi/mxsc/PuckLoadDialog.form rename to src/main/java/ch/psi/mxsc/WaterLevelPanel.form index 6c935d9..a5007ea 100644 --- a/src/main/java/ch/psi/mxsc/PuckLoadDialog.form +++ b/src/main/java/ch/psi/mxsc/WaterLevelPanel.form @@ -1,13 +1,13 @@ -
+ - + + + + + - - - - @@ -23,34 +23,29 @@ - + + + + + - - + + + - - - - - - - - - - - - - - - - + + + + + + diff --git a/src/main/java/ch/psi/mxsc/WaterLevelPanel.java b/src/main/java/ch/psi/mxsc/WaterLevelPanel.java new file mode 100644 index 0000000..cb4db8e --- /dev/null +++ b/src/main/java/ch/psi/mxsc/WaterLevelPanel.java @@ -0,0 +1,59 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package ch.psi.mxsc; + +/** + * + * @author gobbo_a + */ +public class WaterLevelPanel extends javax.swing.JPanel { + + /** + * Creates new form WaterLevelPanel + */ + public WaterLevelPanel() { + initComponents(); + } + + /** + * 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") + // //GEN-BEGIN:initComponents + private void initComponents() { + + progressWater = new javax.swing.JProgressBar(); + + setBorder(javax.swing.BorderFactory.createTitledBorder("Water Level")); + + progressWater.setMaximum(1000); + progressWater.setOrientation(1); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap(29, Short.MAX_VALUE) + .addComponent(progressWater, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(29, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(progressWater, javax.swing.GroupLayout.DEFAULT_SIZE, 670, Short.MAX_VALUE) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JProgressBar progressWater; + // End of variables declaration//GEN-END:variables +}