diff --git a/screenpanel-sls/src/main/java/ScreenPanelSLS.form b/screenpanel-sls/src/main/java/ScreenPanelSLS.form
index 576f6fd..2db4f92 100755
--- a/screenpanel-sls/src/main/java/ScreenPanelSLS.form
+++ b/screenpanel-sls/src/main/java/ScreenPanelSLS.form
@@ -45,16 +45,18 @@
+
-
-
+
+
+
-
+
-
+
@@ -114,7 +116,7 @@
-
+
@@ -127,12 +129,10 @@
-
-
@@ -150,43 +150,29 @@
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -229,6 +215,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/screenpanel-sls/src/main/java/ScreenPanelSLS.java b/screenpanel-sls/src/main/java/ScreenPanelSLS.java
index 528b005..0bdaa83 100755
--- a/screenpanel-sls/src/main/java/ScreenPanelSLS.java
+++ b/screenpanel-sls/src/main/java/ScreenPanelSLS.java
@@ -67,6 +67,7 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
public ScreenPanelSLS() {
logger = Logger.getLogger(getClass().getName());
initComponents();
+ panelParameters.setVisible(false);
panelScreen.setVisible(false);
panelControls.setVisible(false);
camServerViewer.setListener(this);
@@ -76,7 +77,7 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
camServerViewer.setSidePanelVisible(true);
camServerViewer.setShowFit(true);
camServerViewer.setShowProfile(true);
- camServerViewer.setShowReticle(true);
+ camServerViewer.setShowReticle(true);
}
@Override
@@ -183,10 +184,12 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
buttonFLUp.setEnabled(false);
selLedPower.setEnabled(false);
panelExposure.setEnabled(false);
+ buttonApplyExposure.setEnabled(false);
selMirror.setEnabled(false);
if ((name==null)|| name.isBlank()){
+ panelParameters.setVisible(false);
panelScreen.setVisible(false);
- panelControls.setVisible(false);
+ panelControls.setVisible(false);
}
updateDialogTitle();
}
@@ -203,94 +206,100 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
boolean ltb = (types!=null) && types.contains(LTB_TYPE);
boolean linac = (types!=null) && types.contains(LINAC_TYPE);
boolean rf = (types!=null) && types.contains(RF_TYPE);
- boolean ring = (types!=null) && types.contains(RING_TYPE);
+ boolean ring = (types!=null) && types.contains(RING_TYPE);
+
boolean cameraControls = linac || ltb || booster || btr || ring;
boolean flipMirror = linac || ltb || booster;
+ boolean cameraParameters = cameraControls || frontend || rf;
+ panelParameters.setVisible(cameraParameters);
panelScreen.setVisible(cameraControls);
panelControls.setVisible(cameraControls);
- if (cameraName!=null){
- if (cameraControls) {
+
+ if (cameraName!=null){
+ if (cameraParameters || cameraControls) {
//Parallelizing initialization
devicesInitTask = new Thread(() -> {
-
- try {
- exposure = new ChannelDouble("Exposure Time", cameraName + ":EXPOSURE");
- exposure.setMonitored(true);
- exposure.initialize();
-
- } catch (Exception ex) {
- System.err.println(ex.getMessage());
- exposure = null;
- }
- panelExposure.setEnabled(exposure != null);
- panelExposure.setDevice(exposure);
-
- if (flipMirror){
+ if (cameraParameters){
try {
- mirror = new BinaryPositioner("Flip Mirror", cameraName + ":FLIP-MIRROR");
- mirror.setMonitored(true);
- mirror.initialize();
+ exposure = new ChannelDouble("Exposure Time", cameraName + ":EXPOSURE");
+ exposure.setMonitored(true);
+ exposure.initialize();
} catch (Exception ex) {
System.err.println(ex.getMessage());
+ exposure = null;
+ }
+ panelExposure.setEnabled(exposure != null);
+ panelExposure.setDevice(exposure);
+ buttonApplyExposure.setEnabled(panelExposure.isEnabled());
+ }
+
+ if (cameraControls) {
+ if (flipMirror){
+ try {
+ mirror = new BinaryPositioner("Flip Mirror", cameraName + ":FLIP-MIRROR");
+ mirror.setMonitored(true);
+ mirror.initialize();
+
+ } catch (Exception ex) {
+ System.err.println(ex.getMessage());
+ mirror = null;
+ }
+ } else {
mirror = null;
}
- } else {
- mirror = null;
- }
- selMirror.setEnabled(mirror != null);
- selMirror.setDevice(mirror);
-
-
- try {
- ledPower = new BinaryPositioner("Led Power", cameraName + ":LED-POWER");
- ledPower.setMonitored(true);
- ledPower.initialize();
+ selMirror.setEnabled(mirror != null);
+ selMirror.setDevice(mirror);
- } catch (Exception ex) {
- System.err.println(ex.getMessage());
- ledPower = null;
- }
- selLedPower.setEnabled(ledPower != null);
- selLedPower.setDevice(ledPower);
-
- try {
- flStep = new ChannelDouble("Lens FL Step", cameraName + "-LENS:FL_STEP");
- flStep.setMonitored(true);
- flStep.initialize();
- } catch (Exception ex) {
- System.err.println(ex.getMessage());
- flStep = null;
- }
- panelFlStep.setEnabled(flStep != null);
- buttonFLDown.setEnabled(flStep != null);
- buttonFLUp.setEnabled(flStep != null);
- panelFlStep.setDevice(flStep);
-
- try{
- screen = new DiscretePositioner("CurrentScreen", cameraName + ":SET_SCREEN1_POS", cameraName + ":GET_SCREEN1_POS");
- screen.setMonitored(true);
- screen.initialize();
- DefaultComboBoxModel model = new DefaultComboBoxModel();
- for (String pos : screen.getPositions()) {
- model.addElement(pos);
+ try {
+ ledPower = new BinaryPositioner("Led Power", cameraName + ":LED-POWER");
+ ledPower.setMonitored(true);
+ ledPower.initialize();
+
+ } catch (Exception ex) {
+ System.err.println(ex.getMessage());
+ ledPower = null;
}
- comboScreen.setModel(model);
- comboScreen.setSelectedItem(screen.read());
+ selLedPower.setEnabled(ledPower != null);
+ selLedPower.setDevice(ledPower);
- } catch (Exception ex) {
- comboScreen.setModel(new DefaultComboBoxModel());
- System.err.println(ex.getMessage());
- screen = null;
+ try {
+ flStep = new ChannelDouble("Lens FL Step", cameraName + "-LENS:FL_STEP");
+ flStep.setMonitored(true);
+ flStep.initialize();
+
+ } catch (Exception ex) {
+ System.err.println(ex.getMessage());
+ flStep = null;
+ }
+ panelFlStep.setEnabled(flStep != null);
+ buttonFLDown.setEnabled(flStep != null);
+ buttonFLUp.setEnabled(flStep != null);
+ panelFlStep.setDevice(flStep);
+
+ try{
+ screen = new DiscretePositioner("CurrentScreen", cameraName + ":SET_SCREEN1_POS", cameraName + ":GET_SCREEN1_POS");
+ screen.setMonitored(true);
+ screen.initialize();
+ DefaultComboBoxModel model = new DefaultComboBoxModel();
+ for (String pos : screen.getPositions()) {
+ model.addElement(pos);
+ }
+ comboScreen.setModel(model);
+ comboScreen.setSelectedItem(screen.read());
+
+ } catch (Exception ex) {
+ comboScreen.setModel(new DefaultComboBoxModel());
+ System.err.println(ex.getMessage());
+ screen = null;
+ }
+ comboScreen.setEnabled(screen != null);
+ valueScreen.setEnabled(screen != null);
+ valueScreen.setDevice(screen);
}
- comboScreen.setEnabled(screen != null);
- valueScreen.setEnabled(screen != null);
- valueScreen.setDevice(screen);
-
-
});
devicesInitTask.start();
}
@@ -376,8 +385,6 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
valueScreen = new ch.psi.pshell.swing.DeviceValuePanel();
comboScreen = new javax.swing.JComboBox();
panelControls = new javax.swing.JPanel();
- panelExposure = new ch.psi.pshell.swing.RegisterPanel();
- jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
selMirror = new ch.psi.pshell.swing.DiscretePositionerSelector();
jLabel3 = new javax.swing.JLabel();
@@ -386,6 +393,10 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
panelFlStep = new ch.psi.pshell.swing.RegisterPanel();
buttonFLDown = new javax.swing.JButton();
buttonFLUp = new javax.swing.JButton();
+ panelParameters = new javax.swing.JPanel();
+ jLabel1 = new javax.swing.JLabel();
+ panelExposure = new ch.psi.pshell.swing.RegisterPanel();
+ buttonApplyExposure = new javax.swing.JButton();
camServerViewer = new ch.psi.pshell.screenpanel.CamServerViewer();
setPreferredSize(new java.awt.Dimension(873, 600));
@@ -421,10 +432,7 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
.addContainerGap())
);
- panelControls.setBorder(javax.swing.BorderFactory.createTitledBorder("Camera Control"));
-
- jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
- jLabel1.setText("Exposure:");
+ panelControls.setBorder(javax.swing.BorderFactory.createTitledBorder("Device Control"));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel2.setText("Flip Mirror:");
@@ -458,11 +466,9 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
.addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(panelExposure, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addComponent(selMirror, javax.swing.GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
.addComponent(selLedPower, javax.swing.GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
.addGroup(panelControlsLayout.createSequentialGroup()
@@ -473,31 +479,61 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
.addComponent(buttonFLUp)))
.addContainerGap())
);
-
- panelControlsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2});
-
panelControlsLayout.setVerticalGroup(
panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelControlsLayout.createSequentialGroup()
+ .addGap(4, 4, 4)
.addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
- .addComponent(panelExposure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel1))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(selMirror, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel3)
.addComponent(selLedPower, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel4)
- .addComponent(buttonFLDown))
+ .addGroup(panelControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
+ .addComponent(jLabel4)
+ .addComponent(buttonFLDown)
.addComponent(panelFlStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(buttonFLUp))
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+
+ panelParameters.setBorder(javax.swing.BorderFactory.createTitledBorder("Camera Parameters"));
+
+ jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
+ jLabel1.setText("Exposure:");
+
+ buttonApplyExposure.setText("✓");
+ buttonApplyExposure.setToolTipText("Set camera status to 'Idle' and then to 'Running'");
+ buttonApplyExposure.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonApplyExposureActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout panelParametersLayout = new javax.swing.GroupLayout(panelParameters);
+ panelParameters.setLayout(panelParametersLayout);
+ panelParametersLayout.setHorizontalGroup(
+ panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelParametersLayout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel1)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(panelExposure, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonApplyExposure)
+ .addContainerGap())
+ );
+ panelParametersLayout.setVerticalGroup(
+ panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelParametersLayout.createSequentialGroup()
+ .addGap(4, 4, 4)
+ .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
+ .addComponent(panelExposure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel1)
+ .addComponent(buttonApplyExposure))
+ .addContainerGap())
);
javax.swing.GroupLayout customPanelLayout = new javax.swing.GroupLayout(customPanel);
@@ -506,15 +542,17 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
customPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panelScreen, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelControls, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(panelParameters, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
customPanelLayout.setVerticalGroup(
customPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(customPanelLayout.createSequentialGroup()
- .addGap(0, 0, 0)
+ .addComponent(panelParameters, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelScreen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelControls, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(342, Short.MAX_VALUE))
+ .addContainerGap(334, Short.MAX_VALUE))
);
add(customPanel, java.awt.BorderLayout.WEST);
@@ -572,7 +610,35 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
}
}//GEN-LAST:event_buttonFLUpActionPerformed
+ private void buttonApplyExposureActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonApplyExposureActionPerformed
+ try {
+ String cameraName = camServerViewer.getCameraName();
+ if (cameraName!=null){
+ String chStatus = cameraName+":CAMERASTATUS";
+ buttonApplyExposure.setEnabled(false);
+ SwingUtilities.invokeLater(()->{
+ try {
+ //int status = Epics.get(chStatus, Integer.class);
+ //if (status==2){
+ Epics.put(chStatus, 1);
+ Epics.put(chStatus, 2);
+ //}
+ } catch (Exception ex) {
+ showException(ex);
+ } finally{
+ if (cameraName.equals(camServerViewer.getCameraName())){
+ buttonApplyExposure.setEnabled(true);
+ }
+ }
+ });
+ }
+ } catch (Exception ex) {
+ showException(ex);
+ }
+ }//GEN-LAST:event_buttonApplyExposureActionPerformed
+
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton buttonApplyExposure;
private javax.swing.JButton buttonFLDown;
private javax.swing.JButton buttonFLUp;
private javax.swing.ButtonGroup buttonGroup1;
@@ -590,6 +656,7 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
private javax.swing.JPanel panelControls;
private ch.psi.pshell.swing.RegisterPanel panelExposure;
private ch.psi.pshell.swing.RegisterPanel panelFlStep;
+ private javax.swing.JPanel panelParameters;
private javax.swing.JPanel panelScreen;
private ch.psi.pshell.swing.DiscretePositionerSelector selLedPower;
private ch.psi.pshell.swing.DiscretePositionerSelector selMirror;