diff --git a/plugins/HoloScan.form b/plugins/HoloScan.form index 757e856b..217c4fc5 100644 --- a/plugins/HoloScan.form +++ b/plugins/HoloScan.form @@ -26,7 +26,7 @@ - + @@ -38,7 +38,7 @@ - + @@ -48,7 +48,7 @@ - + diff --git a/plugins/HoloScan.java b/plugins/HoloScan.java index d016eba3..342cb9b2 100644 --- a/plugins/HoloScan.java +++ b/plugins/HoloScan.java @@ -9,8 +9,11 @@ import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; import java.awt.Component; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import javax.swing.JCheckBox; +import javax.swing.JSpinner; +import javax.swing.JToggleButton; import javax.swing.SpinnerNumberModel; /** @@ -19,7 +22,13 @@ import javax.swing.SpinnerNumberModel; public class HoloScan extends Panel { public HoloScan() { - initComponents(); + initComponents(); + ArrayList persistedComponents = new ArrayList<>(); + persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(panelSensors, JCheckBox.class))); + persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(panelPositioners, JSpinner.class))); + persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(panelPositioners, JToggleButton.class))); + persistedComponents.add(checkEndScan); + setPersistedComponents(persistedComponents.toArray(new Component[0])); } //Overridable callbacks @@ -54,7 +63,7 @@ public class HoloScan extends Panel { for (Component c : panelSensors.getComponents()) { c.setEnabled(enableControls); } - for (Component c : panelPhi.getComponents()) { + for (Component c : panelPositioners.getComponents()) { c.setEnabled(enableControls); } buttonStart.setEnabled(enableControls); @@ -108,7 +117,7 @@ public class HoloScan extends Panel { buttonGroup1 = new javax.swing.ButtonGroup(); buttonGroup2 = new javax.swing.ButtonGroup(); - panelPhi = new javax.swing.JPanel(); + panelPositioners = new javax.swing.JPanel(); motorPanelPhi = new ch.psi.pshell.swing.MotorReadoutPanel(); radioStepSize = new javax.swing.JRadioButton(); radioSteps = new javax.swing.JRadioButton(); @@ -152,8 +161,8 @@ public class HoloScan extends Panel { buttonAbort = new javax.swing.JButton(); checkEndScan = new javax.swing.JCheckBox(); - panelPhi.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioners")); - panelPhi.setPreferredSize(new java.awt.Dimension(239, 538)); + panelPositioners.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioners")); + panelPositioners.setPreferredSize(new java.awt.Dimension(239, 538)); buttonGroup1.add(radioStepSize); radioStepSize.setSelected(true); @@ -214,54 +223,54 @@ public class HoloScan extends Panel { checkZigzag.setText("Zigzag"); - javax.swing.GroupLayout panelPhiLayout = new javax.swing.GroupLayout(panelPhi); - panelPhi.setLayout(panelPhiLayout); - panelPhiLayout.setHorizontalGroup( - panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelPhiLayout.createSequentialGroup() + javax.swing.GroupLayout panelPositionersLayout = new javax.swing.GroupLayout(panelPositioners); + panelPositioners.setLayout(panelPositionersLayout); + panelPositionersLayout.setHorizontalGroup( + panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionersLayout.createSequentialGroup() .addContainerGap() - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelPhiLayout.createSequentialGroup() + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionersLayout.createSequentialGroup() .addComponent(jLabel6) .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, panelPhiLayout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() .addGap(0, 23, Short.MAX_VALUE) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel8, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(spinnerFromPhi, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE) .addComponent(spinnerToPhi, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(spinnerFromTheta, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(spinnerToTheta, javax.swing.GroupLayout.Alignment.TRAILING))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() .addComponent(jLabel11) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerStepSizePhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() .addComponent(jLabel12) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerStepSizeTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionersLayout.createSequentialGroup() + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel14) .addComponent(jLabel13)) .addGap(6, 6, 6) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerStepsPhi, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerStepsTheta, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) - .addGroup(panelPhiLayout.createSequentialGroup() + .addGroup(panelPositionersLayout.createSequentialGroup() .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(motorPanelTheta, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(panelPhiLayout.createSequentialGroup() - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionersLayout.createSequentialGroup() + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(radioSteps) .addComponent(radioStepSize) .addComponent(checkZigzag)) @@ -269,57 +278,57 @@ public class HoloScan extends Panel { .addContainerGap()) ); - panelPhiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {radioStepSize, radioSteps}); + panelPositionersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {radioStepSize, radioSteps}); - panelPhiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerStepSizePhi, spinnerStepSizeTheta, spinnerStepsPhi}); + panelPositionersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerStepSizePhi, spinnerStepSizeTheta, spinnerStepsPhi}); - panelPhiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel6, jLabel7}); + panelPositionersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel6, jLabel7}); - panelPhiLayout.setVerticalGroup( - panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelPhiLayout.createSequentialGroup() + panelPositionersLayout.setVerticalGroup( + panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionersLayout.createSequentialGroup() .addContainerGap() - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel6) .addComponent(motorPanelPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel7) .addComponent(motorPanelTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerFromPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel4)) .addGap(3, 3, 3) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerToPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5)) .addGap(3, 3, 3) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerFromTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel9)) .addGap(3, 3, 3) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerToTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel8)) .addGap(18, 18, 18) .addComponent(radioStepSize) .addGap(3, 3, 3) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerStepSizePhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel11)) .addGap(3, 3, 3) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerStepSizeTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel12)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(radioSteps) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerStepsPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel13)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(panelPositionersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spinnerStepsTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel14)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -496,20 +505,20 @@ public class HoloScan extends Panel { .addContainerGap() .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(panelPositioners, 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)) ); - layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPhi}); + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioners}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(panelPhi, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE) + .addComponent(panelPositioners, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE) .addComponent(panelSensors, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE)) .addContainerGap()) @@ -579,7 +588,7 @@ public class HoloScan extends Panel { private javax.swing.JPanel jPanel3; private ch.psi.pshell.swing.MotorReadoutPanel motorPanelPhi; private ch.psi.pshell.swing.MotorReadoutPanel motorPanelTheta; - private javax.swing.JPanel panelPhi; + private javax.swing.JPanel panelPositioners; private javax.swing.JPanel panelSensors; private javax.swing.JRadioButton radioStepSize; private javax.swing.JRadioButton radioSteps;