From a113218a086a3600c5e4fe3a177209a9cc46ed9b Mon Sep 17 00:00:00 2001 From: x03daop Date: Tue, 26 Jul 2016 16:46:05 +0200 Subject: [PATCH] Startup --- plugins/HoloScan.form | 49 ++++++++++++++++++++++++-------- plugins/HoloScan.java | 66 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 93 insertions(+), 22 deletions(-) diff --git a/plugins/HoloScan.form b/plugins/HoloScan.form index 0cc66bd3..88f449c2 100644 --- a/plugins/HoloScan.form +++ b/plugins/HoloScan.form @@ -532,15 +532,21 @@ - + + + + + + + + + + + + + - - - - - - @@ -554,11 +560,16 @@ - - - + + + - + + + + + + @@ -589,11 +600,27 @@ + + + + + + + + + + + + + + + + diff --git a/plugins/HoloScan.java b/plugins/HoloScan.java index 96580c8d..73bf0063 100644 --- a/plugins/HoloScan.java +++ b/plugins/HoloScan.java @@ -2,12 +2,15 @@ * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. */ +import ch.psi.pshell.device.Device; +import ch.psi.pshell.device.DeviceAdapter; import ch.psi.pshell.device.Motor; import ch.psi.pshell.epics.Scienta; 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; @@ -40,6 +43,22 @@ public class HoloScan extends Panel { motorPanelPhi.setDevice(phi); motorPanelTheta.setDevice(theta); dvpAcqTime.setDevice(scienta.getAcquisitionTime()); + scienta.getAcquisitionTime().addListener(new DeviceAdapter() { + @Override + public void onValueChanged(Device device, Object value, Object former) { + try{ + int steps = (int) (radioSteps.isSelected() ? + (Integer)spinnerStepsPhi.getValue() * (Integer)spinnerStepsTheta.getValue() : + (Math.abs((Double)spinnerToPhi.getValue() - (Double)spinnerFromPhi.getValue()) / (Integer)spinnerStepSizePhi.getValue() + 1) * + (Math.abs((Double)spinnerToTheta.getValue() - (Double)spinnerFromTheta.getValue()) / (Integer)spinnerStepSizeTheta.getValue() +1)); + int seconds = (int) ((Double)value * steps); + LocalTime time = LocalTime.ofSecondOfDay(seconds); + textTotalTime.setText(time.toString()); + } catch (Exception ex){ + textTotalTime.setText(""); + } + } + }); try{ spinnerFromPhi.setModel(new SpinnerNumberModel(Math.max(phi.getMinValue(),(Double)spinnerFromPhi.getValue()), phi.getMinValue(), phi.getMaxValue(), 1.0)); spinnerToPhi.setModel(new SpinnerNumberModel(Math.min(phi.getMaxValue(),(Double)spinnerToPhi.getValue()), phi.getMinValue(), phi.getMaxValue(), 1.0)); @@ -174,6 +193,8 @@ public class HoloScan extends Panel { checkEndScan = new javax.swing.JCheckBox(); jLabel1 = new javax.swing.JLabel(); dvpAcqTime = new ch.psi.pshell.swing.DeviceValuePanel(); + jLabel2 = new javax.swing.JLabel(); + textTotalTime = new javax.swing.JLabel(); panelPositioners.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioners")); panelPositioners.setPreferredSize(new java.awt.Dimension(239, 538)); @@ -485,8 +506,14 @@ public class HoloScan extends Panel { checkEndScan.setText("Turn off beam at end"); + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("Acquisition time(s):"); + jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel2.setText("Total time(min):"); + + textTotalTime.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( @@ -497,15 +524,24 @@ public class HoloScan extends Panel { .addComponent(buttonStart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(checkEndScan) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(jLabel1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(dvpAcqTime, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(checkEndScan) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(dvpAcqTime, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(textTotalTime))) + .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); + + jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2}); + + jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpAcqTime, textTotalTime}); + jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() @@ -514,14 +550,20 @@ public class HoloScan 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.LEADING) - .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(dvpAcqTime, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(159, 159, 159) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel1) + .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(textTotalTime) + .addComponent(jLabel2)) + .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( @@ -606,6 +648,7 @@ public class HoloScan extends Panel { private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; + private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; @@ -627,6 +670,7 @@ public class HoloScan extends Panel { private javax.swing.JSpinner spinnerStepsTheta; private javax.swing.JSpinner spinnerToPhi; private javax.swing.JSpinner spinnerToTheta; + private javax.swing.JLabel textTotalTime; // End of variables declaration//GEN-END:variables }