From 6857814130f71d5e68575f526610dcb02d0de2b7 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Mon, 23 Apr 2018 16:33:58 +0200 Subject: [PATCH] MainPanel prototype --- src/main/java/ch/psi/mxsc/Controller.java | 17 +++- src/main/java/ch/psi/mxsc/HexiposiPanel.form | 6 -- src/main/java/ch/psi/mxsc/HexiposiPanel.java | 6 -- src/main/java/ch/psi/mxsc/MainPanel.form | 74 ++++++++++++---- src/main/java/ch/psi/mxsc/MainPanel.java | 90 +++++++++++++++----- src/main/java/ch/psi/mxsc/Puck.java | 15 +++- 6 files changed, 153 insertions(+), 55 deletions(-) diff --git a/src/main/java/ch/psi/mxsc/Controller.java b/src/main/java/ch/psi/mxsc/Controller.java index 9b5eb55..42bed96 100644 --- a/src/main/java/ch/psi/mxsc/Controller.java +++ b/src/main/java/ch/psi/mxsc/Controller.java @@ -9,6 +9,8 @@ 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.ProcessVariableBase; +import ch.psi.pshell.device.ReadbackDevice; import ch.psi.pshell.ui.Panel; import ch.psi.utils.State; @@ -28,7 +30,7 @@ public class Controller { static void createInstance(Panel mainFrame){ instance = new Controller(mainFrame); } - + enum PuckSensorAccess{ RaspberryPi, Esera; @@ -136,7 +138,16 @@ public class Controller { } - public String getHexaposiPosition(){ - return (String) hexaposi.take(); + public String getHexiposiPosition(){ + return (String) ((ReadbackDevice)hexaposi).getReadback().take(); } + + public Boolean isLedRoomTemp(){ + try{ + return ((ProcessVariableBase)getMainFrame().getDevice("led_ctrl_1")).getConfig().maxValue <= 0.50; + } catch (Exception ex){ + return null; + } + } + } diff --git a/src/main/java/ch/psi/mxsc/HexiposiPanel.form b/src/main/java/ch/psi/mxsc/HexiposiPanel.form index 27189fd..65351ee 100644 --- a/src/main/java/ch/psi/mxsc/HexiposiPanel.form +++ b/src/main/java/ch/psi/mxsc/HexiposiPanel.form @@ -67,7 +67,6 @@ - @@ -75,7 +74,6 @@ - @@ -91,7 +89,6 @@ - @@ -128,7 +125,6 @@ - @@ -144,7 +140,6 @@ - @@ -160,7 +155,6 @@ - diff --git a/src/main/java/ch/psi/mxsc/HexiposiPanel.java b/src/main/java/ch/psi/mxsc/HexiposiPanel.java index 37b8207..b08a71e 100644 --- a/src/main/java/ch/psi/mxsc/HexiposiPanel.java +++ b/src/main/java/ch/psi/mxsc/HexiposiPanel.java @@ -68,17 +68,14 @@ public class HexiposiPanel extends DevicePanel { circlePanel2.add(filler8); ledD.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - ledD.setLedSize(18); circlePanel2.add(ledD); circlePanel2.add(filler7); ledC.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - ledC.setLedSize(18); circlePanel2.add(ledC); circlePanel2.add(filler6); ledE.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - ledE.setLedSize(18); circlePanel2.add(ledE); circlePanel2.add(filler10); @@ -89,17 +86,14 @@ public class HexiposiPanel extends DevicePanel { circlePanel2.add(filler4); ledB.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - ledB.setLedSize(18); circlePanel2.add(ledB); circlePanel2.add(filler3); ledF.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - ledF.setLedSize(18); circlePanel2.add(ledF); circlePanel2.add(filler2); ledA.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - ledA.setLedSize(18); circlePanel2.add(ledA); circlePanel2.add(filler1); diff --git a/src/main/java/ch/psi/mxsc/MainPanel.form b/src/main/java/ch/psi/mxsc/MainPanel.form index 64fa669..a205ed4 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.form +++ b/src/main/java/ch/psi/mxsc/MainPanel.form @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -292,15 +292,33 @@ - + + + + + - + + + + + + + + + + + + + + + @@ -314,22 +332,29 @@ - + - + + - + - + + + + + + + + + - - @@ -347,7 +372,10 @@ - + + + + @@ -368,9 +396,19 @@ - + - + + + + + + + + + + + @@ -402,7 +440,7 @@ - + @@ -512,7 +550,7 @@ - + @@ -581,7 +619,7 @@ - + @@ -591,7 +629,7 @@ - + @@ -680,7 +718,7 @@ - + diff --git a/src/main/java/ch/psi/mxsc/MainPanel.java b/src/main/java/ch/psi/mxsc/MainPanel.java index 900b32d..6bac5c6 100644 --- a/src/main/java/ch/psi/mxsc/MainPanel.java +++ b/src/main/java/ch/psi/mxsc/MainPanel.java @@ -4,6 +4,7 @@ package ch.psi.mxsc; +import ch.psi.pshell.core.Context; import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceAdapter; import ch.psi.pshell.device.DeviceListener; @@ -11,10 +12,13 @@ import ch.psi.pshell.imaging.Source; import ch.psi.pshell.ui.Panel; import ch.psi.utils.State; import java.awt.Color; +import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; +import javax.script.ScriptException; import javax.swing.JFrame; import javax.swing.JPanel; +import javax.swing.border.TitledBorder; /** * @@ -67,7 +71,7 @@ public class MainPanel extends Panel { updateHexiposiState(((Device) getDevice("hexiposi")).getState()); } - + void updateLevel(Object value){ if ((value == null) || !(value instanceof Number)){ progressLN2.setIndeterminate(true); @@ -75,6 +79,15 @@ public class MainPanel extends Panel { progressLN2.setIndeterminate(false); double val = ((Number)value).doubleValue() * 10.0; progressLN2.setValue(Math.min(Math.max((int)val, 0), 1000)); + } + + Boolean roomTemp = (Controller.getInstance().isLedRoomTemp()); + if (roomTemp==null){ + ((TitledBorder)panelDewar.getBorder()).setTitle("Dewar Light"); + } else if (roomTemp==true){ + ((TitledBorder)panelDewar.getBorder()).setTitle("Dewar Light (room temperature)"); + } else { + ((TitledBorder)panelDewar.getBorder()).setTitle("Dewar Light (LN2)"); } } @@ -99,8 +112,8 @@ public class MainPanel extends Panel { } void updateHexiposiState(State state){ - ledLidControlActive.setColor(state == State.Offline ? Color.BLACK : Color.GREEN); - ledLidInitialized.setColor(state.isNormal() ? Color.GREEN : Color.BLACK); + ledLidControlActive.setColor(state.isInitialized() ? Color.GREEN : Color.BLACK ); + ledLidInitialized.setColor((state.isNormal()&& state !=State.Disabled) ? Color.GREEN : Color.BLACK); } @@ -130,12 +143,14 @@ public class MainPanel extends Panel { progressWater = new javax.swing.JProgressBar(); roomTempBasePlatePanel1 = new ch.psi.mxsc.RoomTempBasePlatePanel(); jPanel5 = new javax.swing.JPanel(); + buttonExpert = new javax.swing.JButton(); jPanel4 = 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(); - jToggleButton1 = new javax.swing.JToggleButton(); + deviceValuePanel1 = new ch.psi.pshell.swing.DeviceValuePanel(); + jLabel14 = new javax.swing.JLabel(); jPanel6 = new javax.swing.JPanel(); ledLidControlActive = new ch.psi.pshell.swing.Led(); jLabel6 = new javax.swing.JLabel(); @@ -178,7 +193,7 @@ public class MainPanel extends Panel { basePlatePanel.setLayout(basePlatePanelLayout); basePlatePanelLayout.setHorizontalGroup( basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, basePlatePanelLayout.createSequentialGroup() + .addGroup(basePlatePanelLayout.createSequentialGroup() .addContainerGap(487, Short.MAX_VALUE) .addComponent(buttonCamera)) ); @@ -186,7 +201,7 @@ public class MainPanel extends Panel { basePlatePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(basePlatePanelLayout.createSequentialGroup() .addComponent(buttonCamera) - .addGap(0, 636, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("LN2 Level")); @@ -212,7 +227,7 @@ public class MainPanel extends Panel { .addGap(4, 4, 4) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jSeparator2) - .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 35, Short.MAX_VALUE))) + .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 35, Short.MAX_VALUE))) .addGroup(jPanel3Layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)) @@ -291,15 +306,28 @@ public class MainPanel extends Panel { jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Robot Arm")); + buttonExpert.setText("Expert "); + buttonExpert.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonExpertActionPerformed(evt); + } + }); + javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 0, Short.MAX_VALUE) + .addGroup(jPanel5Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonExpert) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 0, Short.MAX_VALUE) + .addGroup(jPanel5Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonExpert) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("LN2 Control")); @@ -308,7 +336,10 @@ public class MainPanel extends Panel { jLabel5.setText("Currently Filling"); - jToggleButton1.setText("Activate"); + deviceValuePanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + deviceValuePanel1.setDeviceName("rim_heater_temp"); + + jLabel14.setText("Temperature:"); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); @@ -320,13 +351,18 @@ public class MainPanel extends Panel { .addGroup(jPanel4Layout.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)) + .addComponent(jLabel4) + .addContainerGap(64, Short.MAX_VALUE)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(ledFillingDewar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel5)) - .addComponent(jToggleButton1)) - .addContainerGap(40, Short.MAX_VALUE)) + .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel4Layout.createSequentialGroup() + .addComponent(jLabel14) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addContainerGap()) + .addComponent(jLabel5))))) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -340,7 +376,9 @@ public class MainPanel extends Panel { .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) - .addComponent(jToggleButton1) + .addGroup(jPanel4Layout.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)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); @@ -390,7 +428,7 @@ public class MainPanel extends Panel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel7)) .addComponent(buttonInitHexiposi)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE) .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); @@ -438,7 +476,7 @@ public class MainPanel extends Panel { .addComponent(led7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel10))) - .addContainerGap(44, Short.MAX_VALUE)) + .addContainerGap(59, Short.MAX_VALUE)) ); jPanel7Layout.setVerticalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -482,7 +520,7 @@ public class MainPanel extends Panel { .addGroup(jPanel8Layout.createSequentialGroup() .addComponent(jLabel13) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textSample, javax.swing.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE)) + .addComponent(textSample, javax.swing.GroupLayout.DEFAULT_SIZE, 187, Short.MAX_VALUE)) .addGroup(jPanel8Layout.createSequentialGroup() .addComponent(jLabel12) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -490,7 +528,7 @@ public class MainPanel extends Panel { .addGroup(jPanel8Layout.createSequentialGroup() .addComponent(jLabel11) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textType, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE))) + .addComponent(textType, javax.swing.GroupLayout.DEFAULT_SIZE, 187, Short.MAX_VALUE))) .addContainerGap()) ); @@ -535,7 +573,7 @@ public class MainPanel extends Panel { .addComponent(led15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel18))) - .addContainerGap(40, Short.MAX_VALUE)) + .addContainerGap(52, Short.MAX_VALUE)) ); jPanel10Layout.setVerticalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -626,17 +664,28 @@ public class MainPanel extends Panel { } }//GEN-LAST:event_buttonInitHexiposiActionPerformed + private void buttonExpertActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonExpertActionPerformed + try{ + getContext().getPluginManager().loadInitializePlugin(getContext().getSetup().expandPath("{plugins}/Expert.java")); + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_buttonExpertActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private ch.psi.mxsc.BasePlatePanel basePlatePanel; private javax.swing.JToggleButton buttonCamera; + private javax.swing.JButton buttonExpert; private javax.swing.JButton buttonInitHexiposi; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel1; private ch.psi.mxsc.HexiposiPanel hexiposiPanel; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; + private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel2; @@ -660,7 +709,6 @@ public class MainPanel extends Panel { private javax.swing.JSeparator jSeparator1; private javax.swing.JSeparator jSeparator2; private javax.swing.JSeparator jSeparator3; - private javax.swing.JToggleButton jToggleButton1; private ch.psi.pshell.swing.Led led14; private ch.psi.pshell.swing.Led led15; private ch.psi.pshell.swing.Led led5; diff --git a/src/main/java/ch/psi/mxsc/Puck.java b/src/main/java/ch/psi/mxsc/Puck.java index 774ad73..324578d 100644 --- a/src/main/java/ch/psi/mxsc/Puck.java +++ b/src/main/java/ch/psi/mxsc/Puck.java @@ -112,7 +112,20 @@ public class Puck extends DeviceBase { } public boolean isSegmentSelected(){ - return ("" + getSegment()).equalsIgnoreCase(Controller.getInstance().getHexaposiPosition()); + /* + switch(Integer.valueOf(Controller.getInstance().getHexaposiPosition())){ + case 1: return getSegment()=='A'; + case 2: return getSegment()=='B'; + case 3: return getSegment()=='C'; + case 4: return getSegment()=='D'; + case 5: return getSegment()=='E'; + case 6: return getSegment()=='F'; + } + } catch(Exception ex){ + } + return false; +*/ + return ("" + getSegment()).equalsIgnoreCase(Controller.getInstance().getHexiposiPosition()); } public boolean isHighlithted(){