diff --git a/plugins/HoloScan.form b/plugins/HoloScan.form index a900aa33..6b555c44 100644 --- a/plugins/HoloScan.form +++ b/plugins/HoloScan.form @@ -24,7 +24,7 @@ - + @@ -38,9 +38,9 @@ - - - + + + @@ -56,7 +56,7 @@ - + @@ -72,7 +72,7 @@ - + @@ -347,7 +347,7 @@ - + @@ -357,7 +357,7 @@ - + @@ -405,7 +405,7 @@ - + @@ -519,7 +519,7 @@ - + @@ -541,7 +541,7 @@ - + @@ -559,7 +559,7 @@ - + @@ -569,7 +569,7 @@ - + diff --git a/plugins/HoloScan.java b/plugins/HoloScan.java index d72ecb77..7527a59a 100644 --- a/plugins/HoloScan.java +++ b/plugins/HoloScan.java @@ -67,12 +67,10 @@ public class HoloScan extends Panel { (int)(Math.abs((Double)spinnerToPhi.getValue() - (Double)spinnerFromPhi.getValue()) / (Double)spinnerStepSizePhi.getValue() + 1) * (int)(Math.abs((Double)spinnerToTheta.getValue() - (Double)spinnerFromTheta.getValue()) / (Double)spinnerStepSizeTheta.getValue() +1)); int seconds = (int) (Double.valueOf(dvpAcqTime.getLabel().getText()) * steps); - LocalTime time = LocalTime.ofSecondOfDay(seconds); - textTotalTime.setText(time.toString()); + textTotalTime.setText(LocalTime.ofSecondOfDay(seconds).toString()); } catch (Exception ex){ textTotalTime.setText(""); } - } @Override @@ -201,7 +199,7 @@ public class HoloScan extends Panel { textTotalTime = new javax.swing.JLabel(); panelPositioners.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioners")); - panelPositioners.setPreferredSize(new java.awt.Dimension(239, 538)); + panelPositioners.setPreferredSize(new java.awt.Dimension(248, 543)); buttonGroup1.add(radioStepSize); radioStepSize.setSelected(true); @@ -274,7 +272,7 @@ public class HoloScan extends Panel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(motorPanelPhi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() - .addGap(0, 23, Short.MAX_VALUE) + .addGap(0, 32, Short.MAX_VALUE) .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -376,7 +374,7 @@ public class HoloScan extends Panel { ); panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors")); - panelSensors.setPreferredSize(new java.awt.Dimension(239, 422)); + panelSensors.setPreferredSize(new java.awt.Dimension(248, 543)); checkImage.setSelected(true); checkImage.setText("Scienta Image"); @@ -441,7 +439,7 @@ public class HoloScan extends Panel { .addGroup(panelSensorsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, 212, Short.MAX_VALUE) .addComponent(checkImage) .addComponent(checkImageIntegration) .addComponent(checkSpectrum) @@ -486,13 +484,13 @@ public class HoloScan extends Panel { .addComponent(checkCur2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkCur3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 163, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 97, Short.MAX_VALUE) .addComponent(buttonScientaSetup) .addGap(26, 26, 26)) ); panelScan.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control")); - panelScan.setPreferredSize(new java.awt.Dimension(239, 119)); + panelScan.setPreferredSize(new java.awt.Dimension(248, 543)); buttonStart.setText("Start"); buttonStart.addActionListener(new java.awt.event.ActionListener() { @@ -536,7 +534,7 @@ public class HoloScan extends Panel { .addGroup(panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(textTotalTime, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(dvpAcqTime, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE)) + .addGap(0, 1, Short.MAX_VALUE)) .addGroup(panelScanLayout.createSequentialGroup() .addComponent(checkEndScan) .addGap(53, 53, 53))) @@ -554,7 +552,7 @@ public class HoloScan extends Panel { .addComponent(buttonStart) .addGap(18, 18, 18) .addComponent(buttonAbort) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 170, Short.MAX_VALUE) .addGroup(panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(labelAcqTime) .addComponent(dvpAcqTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) @@ -562,7 +560,7 @@ public class HoloScan extends Panel { .addGroup(panelScanLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(textTotalTime) .addComponent(labelTotalTime)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 168, Short.MAX_VALUE) .addComponent(checkEndScan) .addGap(26, 26, 26)) ); @@ -575,7 +573,7 @@ public class HoloScan extends Panel { layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() - .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(panelPositioners, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -583,16 +581,16 @@ public class HoloScan extends Panel { .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {panelPositioners, panelScan}); + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {panelPositioners, panelScan, panelSensors}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(panelPositioners, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE) - .addComponent(panelSensors, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE) - .addComponent(panelScan, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE)) + .addComponent(panelPositioners, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelSensors, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelScan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); }// //GEN-END:initComponents diff --git a/plugins/ManipulatorScan.form b/plugins/ManipulatorScan.form index fe5bb76c..cca66d2c 100644 --- a/plugins/ManipulatorScan.form +++ b/plugins/ManipulatorScan.form @@ -7,6 +7,11 @@ + + + + + @@ -22,14 +27,14 @@ - + - + - + @@ -172,7 +177,7 @@ - + @@ -345,7 +350,7 @@ - + @@ -393,7 +398,7 @@ - + @@ -510,18 +515,32 @@ - + - - - - - + + + + + + + + + + + + + + + + + + + @@ -532,6 +551,16 @@ + + + + + + + + + + @@ -560,6 +589,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/ManipulatorScan.java b/plugins/ManipulatorScan.java index 6a70f6a3..f180c78e 100644 --- a/plugins/ManipulatorScan.java +++ b/plugins/ManipulatorScan.java @@ -8,6 +8,7 @@ import ch.psi.pshell.ui.Panel; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; import java.awt.Component; +import java.time.LocalTime; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -31,14 +32,29 @@ public class ManipulatorScan extends Panel { persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JSpinner.class))); persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JComboBox.class))); setPersistedComponents(persistedComponents.toArray(new Component[0])); - + startTimer(1000); } //Overridable callbacks @Override public void onInitialize(int runCount) { comboMotorActionPerformed(null); + Scienta scienta = (Scienta) getDevice("Scienta"); + dvpAcqTime.setDevice(scienta.getAcquisitionTime()); } + + protected void onTimer(){ + try{ + int steps = radioSteps.isSelected() ? + (Integer)spinnerSteps.getValue(): + (int)(Math.abs((Double)spinnerTo.getValue() - (Double)spinnerFrom.getValue()) / (Double)spinnerStepSize.getValue() + 1); + int seconds = (int) (Double.valueOf(dvpAcqTime.getLabel().getText()) * steps); + textTotalTime.setText(LocalTime.ofSecondOfDay(seconds).toString()); + } catch (Exception ex){ + textTotalTime.setText(""); + } + } + @Override public void onStateChange(State state, State former) { @@ -183,6 +199,12 @@ public class ManipulatorScan extends Panel { buttonStart = new javax.swing.JButton(); buttonAbort = new javax.swing.JButton(); checkEndScan = new javax.swing.JCheckBox(); + textTotalTime = new javax.swing.JLabel(); + labelTotalTime = new javax.swing.JLabel(); + labelAcqTime = new javax.swing.JLabel(); + dvpAcqTime = new ch.psi.pshell.swing.DeviceValuePanel(); + + setPreferredSize(new java.awt.Dimension(792, 567)); panelPositioner.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioner")); @@ -352,7 +374,7 @@ public class ManipulatorScan extends Panel { .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(55, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors")); @@ -419,7 +441,7 @@ public class ManipulatorScan extends Panel { .addGroup(panelSensorsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, 212, Short.MAX_VALUE) .addComponent(checkImage) .addComponent(checkImageIntegration) .addComponent(checkSpectrum) @@ -464,7 +486,7 @@ public class ManipulatorScan extends Panel { .addComponent(checkCur2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkCur3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 97, Short.MAX_VALUE) .addComponent(buttonScientaSetup) .addGap(26, 26, 26)) ); @@ -487,6 +509,15 @@ public class ManipulatorScan extends Panel { checkEndScan.setText("Turn off beam at end"); + textTotalTime.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + textTotalTime.setBorder(javax.swing.BorderFactory.createTitledBorder("")); + + labelTotalTime.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelTotalTime.setText("Total time:"); + + labelAcqTime.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelAcqTime.setText("Acquisition time(s):"); + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( @@ -494,13 +525,29 @@ public class ManipulatorScan extends Panel { .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(checkEndScan) - .addGap(0, 0, Short.MAX_VALUE)) .addComponent(buttonStart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, 212, Short.MAX_VALUE)) + .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelAcqTime) + .addComponent(labelTotalTime)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(textTotalTime, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(dvpAcqTime, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(1, 1, 1))) .addContainerGap()) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addComponent(checkEndScan) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); + + jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); + + jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelAcqTime, labelTotalTime}); + jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() @@ -509,25 +556,35 @@ public class ManipulatorScan extends Panel { .addGap(18, 18, 18) .addComponent(buttonAbort) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelAcqTime) + .addComponent(dvpAcqTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelTotalTime) + .addComponent(textTotalTime)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(checkEndScan) .addGap(26, 26, 26)) ); + jPanel3Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(panelPositioner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) ); - layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioner}); + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioner, panelSensors}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -616,6 +673,7 @@ public class ManipulatorScan extends Panel { private javax.swing.JCheckBox checkSpectrum; private javax.swing.JCheckBox checkTotalCount; private javax.swing.JComboBox comboMotor; + private ch.psi.pshell.swing.DeviceValuePanel dvpAcqTime; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; @@ -624,6 +682,8 @@ public class ManipulatorScan extends Panel { private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JPanel jPanel3; + private javax.swing.JLabel labelAcqTime; + private javax.swing.JLabel labelTotalTime; private ch.psi.pshell.swing.MotorReadoutPanel motorPanel; private javax.swing.JPanel panelPositioner; private javax.swing.JPanel panelSensors; @@ -637,6 +697,7 @@ public class ManipulatorScan extends Panel { private javax.swing.JSpinner spinnerStepSize; private javax.swing.JSpinner spinnerSteps; private javax.swing.JSpinner spinnerTo; + private javax.swing.JLabel textTotalTime; private javax.swing.JLabel txtSize; // End of variables declaration//GEN-END:variables } diff --git a/plugins/PhotonEnergy.form b/plugins/PhotonEnergy.form index 33e23f33..e3c4a543 100644 --- a/plugins/PhotonEnergy.form +++ b/plugins/PhotonEnergy.form @@ -24,12 +24,12 @@ - + - + - - + + @@ -105,7 +105,7 @@ - + @@ -354,7 +354,7 @@ - + @@ -520,15 +520,27 @@ - + - + - + + + + + + + + + + + + + @@ -542,6 +554,16 @@ + + + + + + + + + + @@ -570,6 +592,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/PhotonEnergy.java b/plugins/PhotonEnergy.java index d3aacbff..6313ca6d 100644 --- a/plugins/PhotonEnergy.java +++ b/plugins/PhotonEnergy.java @@ -2,6 +2,7 @@ * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. */ +import ch.psi.pshell.epics.Scienta; import ch.psi.pshell.scan.Scan; import ch.psi.pshell.scan.ScanListener; import ch.psi.pshell.scan.ScanRecord; @@ -10,6 +11,7 @@ import ch.psi.utils.Convert; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; import java.awt.Component; +import java.time.LocalTime; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -30,7 +32,7 @@ public class PhotonEnergy extends Panel { persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JToggleButton.class))); persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JSpinner.class))); setPersistedComponents(persistedComponents.toArray(new Component[0])); - + startTimer(1000); } boolean running; @@ -49,8 +51,19 @@ public class PhotonEnergy extends Panel { @Override public void onInitialize(int runCount) { + Scienta scienta = (Scienta) getDevice("Scienta"); + dvpAcqTime.setDevice(scienta.getAcquisitionTime()); updateTable(); } + + protected void onTimer(){ + try{ + int seconds = (int) (Double.valueOf(dvpAcqTime.getLabel().getText()) * table.getRowCount()); + textTotalTime.setText(LocalTime.ofSecondOfDay(seconds).toString()); + } catch (Exception ex){ + textTotalTime.setText(""); + } + } ScanListener scanListener = new ScanListener() { @Override @@ -229,6 +242,10 @@ public class PhotonEnergy extends Panel { buttonStart = new javax.swing.JButton(); buttonAbort = new javax.swing.JButton(); checkEndScan = new javax.swing.JCheckBox(); + labelAcqTime = new javax.swing.JLabel(); + dvpAcqTime = new ch.psi.pshell.swing.DeviceValuePanel(); + textTotalTime = new javax.swing.JLabel(); + labelTotalTime = new javax.swing.JLabel(); panelPositioner.setBorder(javax.swing.BorderFactory.createTitledBorder("Acquisition")); @@ -374,7 +391,7 @@ public class PhotonEnergy extends Panel { .addComponent(jLabel4) .addComponent(jLabel5) .addComponent(jLabel6)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 62, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 32, Short.MAX_VALUE) .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(spinnerStep, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE) .addComponent(spinnerEnd) @@ -489,7 +506,7 @@ public class PhotonEnergy extends Panel { .addGroup(panelSensorsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, 212, Short.MAX_VALUE) .addComponent(checkImage) .addComponent(checkImageIntegration) .addComponent(checkSpectrum) @@ -557,6 +574,15 @@ public class PhotonEnergy extends Panel { checkEndScan.setText("Turn off beam at end"); + labelAcqTime.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelAcqTime.setText("Acquisition time(s):"); + + textTotalTime.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + textTotalTime.setBorder(javax.swing.BorderFactory.createTitledBorder("")); + + labelTotalTime.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelTotalTime.setText("Total time:"); + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( @@ -566,11 +592,25 @@ public class PhotonEnergy extends Panel { .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(checkEndScan) - .addGap(0, 84, Short.MAX_VALUE)) + .addGap(0, 0, Short.MAX_VALUE)) .addComponent(buttonStart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, 242, Short.MAX_VALUE)) + .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addGap(0, 1, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelAcqTime) + .addComponent(labelTotalTime)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(textTotalTime, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(dvpAcqTime, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap()) ); + + jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); + + jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelAcqTime, labelTotalTime}); + jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() @@ -579,10 +619,20 @@ public class PhotonEnergy extends Panel { .addGap(18, 18, 18) .addComponent(buttonAbort) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(dvpAcqTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(labelAcqTime)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelTotalTime) + .addComponent(textTotalTime)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(checkEndScan) .addGap(26, 26, 26)) ); + jPanel3Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -594,10 +644,10 @@ public class PhotonEnergy extends Panel { .addComponent(panelPositioner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(60, Short.MAX_VALUE)) ); - layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioner}); + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioner, panelSensors}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -669,6 +719,7 @@ public class PhotonEnergy extends Panel { private javax.swing.JCheckBox checkImageIntegration; private javax.swing.JCheckBox checkSpectrum; private javax.swing.JCheckBox checkTotalCount; + private ch.psi.pshell.swing.DeviceValuePanel dvpAcqTime; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; @@ -678,6 +729,8 @@ public class PhotonEnergy extends Panel { private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel3; private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JLabel labelAcqTime; + private javax.swing.JLabel labelTotalTime; private javax.swing.JPanel panelPositioner; private javax.swing.JPanel panelSensors; private javax.swing.JRadioButton radioCfs; @@ -692,5 +745,6 @@ public class PhotonEnergy extends Panel { private javax.swing.JSpinner spinnerStart; private javax.swing.JSpinner spinnerStep; private javax.swing.JTable table; + private javax.swing.JLabel textTotalTime; // End of variables declaration//GEN-END:variables }