/* * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. */ import ch.psi.pshell.device.Motor; import ch.psi.pshell.epics.AreaDetector; import ch.psi.pshell.ui.ScriptProcessor; import ch.psi.pshell.ui.QueueProcessor; import ch.psi.utils.Arr; import ch.psi.utils.Convert; import ch.psi.utils.State; import ch.psi.utils.Str; import ch.psi.utils.swing.SwingUtils; import java.awt.Component; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import javax.swing.SpinnerNumberModel; /** * */ public class Regine extends ScriptProcessor { final String SAMPLE_X = "motor"; final String SAMPLE_Y = "motor2"; final String DETECTOR = "det"; final String SCRIPT = "Regine"; public Regine() { initComponents(); motorPanelX.setDeviceName(SAMPLE_X); motorPanelY.setDeviceName(SAMPLE_Y); setPersistedComponents(new Component[] { spinnerCenterX, spinnerCenterY, spinnerNoise, spinnerSettlingTime, spinnerStepSizeX, spinnerStepSizeY, spinnerStepsX, spinnerStepsY, textExposures, checkCompression, checkZigZag }); } Motor getSampleX(){ return (Motor) getDevice(SAMPLE_X); } Motor getSampleY(){ return (Motor) getDevice(SAMPLE_Y); } AreaDetector getDetecor(){ return (AreaDetector) getDevice(DETECTOR); } //Overridable callbacks @Override public void onInitialize(int runCount) { ((SpinnerNumberModel)spinnerCenterX.getModel()).setMinimum(getSampleX().getMinValue()); ((SpinnerNumberModel)spinnerCenterX.getModel()).setMaximum(getSampleX().getMaxValue()); ((SpinnerNumberModel)spinnerCenterY.getModel()).setMinimum(getSampleY().getMinValue()); ((SpinnerNumberModel)spinnerCenterY.getModel()).setMaximum(getSampleY().getMaxValue()); setGlobalVar("POSITION_PLOT", plot); } @Override public void onStateChange(State state, State former) { setEnabled(isEnabled()); } @Override public void onExecutedFile(String fileName, Object result) { } @Override public void setEnabled(boolean value) { super.setEnabled(value); boolean enableControls = (value && (getState() == State.Ready)); buttonAbort.setEnabled(value && getState().isInitialized()); buttonStart.setEnabled(enableControls); for (Component c : panelParameters.getComponents()) { c.setEnabled(enableControls); } motorPanelX.setReadOnly(!enableControls); motorPanelY.setReadOnly(!enableControls); } @Override public String getScript() { return SCRIPT; } @Override public Map getArgs(){ HashMap args = new HashMap<>(); args.put("DRY_RUN", false); args.put("CENTER_X", (Double) spinnerCenterX.getValue()); args.put("CENTER_Y", (Double) spinnerCenterY.getValue()); args.put("STEPS_X", (Integer) spinnerStepsX.getValue()); args.put("STEPS_Y", (Integer) spinnerStepsY.getValue()); args.put("STEP_SIZE_X", (Double) spinnerStepSizeX.getValue()); args.put("STEP_SIZE_Y", (Double) spinnerStepSizeY.getValue()); args.put("NOISE", (Double) spinnerNoise.getValue()); args.put("SETTLING_TIME", (Double) spinnerSettlingTime.getValue()); args.put("ZIGZAG", checkZigZag.isSelected()); args.put("COMPRESSION", checkCompression.isSelected()); if (textExposures.getText().isBlank()){ args.put("EXPOSURES", null); } else { String[] tokens = Str.split(textExposures.getText().trim(), new String[]{"|", ";", ",", " "}); tokens = Arr.removeEquals(tokens, ""); args.put("EXPOSURES", Arrays.stream(tokens) .mapToDouble(Double::parseDouble) .toArray()); } return args; } @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { buttonGroup1 = new javax.swing.ButtonGroup(); buttonGroup2 = new javax.swing.ButtonGroup(); panelParameters = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); spinnerCenterX = new javax.swing.JSpinner(); spinnerCenterY = new javax.swing.JSpinner(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); spinnerStepsX = new javax.swing.JSpinner(); spinnerStepsY = new javax.swing.JSpinner(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); spinnerStepSizeX = new javax.swing.JSpinner(); spinnerStepSizeY = new javax.swing.JSpinner(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); spinnerNoise = new javax.swing.JSpinner(); spinnerSettlingTime = new javax.swing.JSpinner(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); textExposures = new javax.swing.JTextField(); checkZigZag = new javax.swing.JCheckBox(); jLabel12 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); checkCompression = new javax.swing.JCheckBox(); jPanel3 = new javax.swing.JPanel(); buttonStart = new javax.swing.JButton(); buttonAbort = new javax.swing.JButton(); buttonAddToQueue = new javax.swing.JButton(); jPanel4 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); motorPanelX = new ch.psi.pshell.swing.MotorReadoutPanel(); motorPanelY = new ch.psi.pshell.swing.MotorReadoutPanel(); plot = new ch.psi.pshell.plot.LinePlotJFree(); panelParameters.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters")); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("Center X (um):"); spinnerCenterX.setModel(new javax.swing.SpinnerNumberModel(0.0d, 0.0d, 100.0d, 1.0d)); spinnerCenterY.setModel(new javax.swing.SpinnerNumberModel(0.0d, 0.0d, 100.0d, 1.0d)); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel4.setText("Center Y (um):"); jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel5.setText("Steps X:"); spinnerStepsX.setModel(new javax.swing.SpinnerNumberModel(10, 0, 100000, 1)); spinnerStepsY.setModel(new javax.swing.SpinnerNumberModel(10, 0, 100000, 1)); jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel6.setText("Steps Y:"); jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel7.setText("StepSize X (um):"); spinnerStepSizeX.setModel(new javax.swing.SpinnerNumberModel(10.0d, 0.0d, 100000.0d, 1.0d)); spinnerStepSizeY.setModel(new javax.swing.SpinnerNumberModel(10.0d, 0.0d, 100000.0d, 1.0d)); jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel8.setText("Step Size Y (um):"); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel9.setText("Noise (% of step):"); spinnerNoise.setModel(new javax.swing.SpinnerNumberModel(0.05d, 0.0d, 1.0d, 1.0d)); spinnerSettlingTime.setModel(new javax.swing.SpinnerNumberModel(0.1d, 0.0d, 10.0d, 1.0d)); jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel10.setText("Settling Time (s):"); jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel11.setText("Exposures(s):"); checkZigZag.setSelected(true); jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel12.setText("ZigZag:"); jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel13.setText("Compression:"); 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() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelParametersLayout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerCenterX)) .addGroup(panelParametersLayout.createSequentialGroup() .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerCenterY)) .addGroup(panelParametersLayout.createSequentialGroup() .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerStepsX)) .addGroup(panelParametersLayout.createSequentialGroup() .addComponent(jLabel6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerStepsY)) .addGroup(panelParametersLayout.createSequentialGroup() .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerStepSizeX)) .addGroup(panelParametersLayout.createSequentialGroup() .addComponent(jLabel8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerStepSizeY)) .addGroup(panelParametersLayout.createSequentialGroup() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel9) .addComponent(jLabel10) .addComponent(jLabel11) .addComponent(jLabel12) .addComponent(jLabel13)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerSettlingTime) .addComponent(spinnerNoise) .addComponent(textExposures) .addGroup(panelParametersLayout.createSequentialGroup() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(checkZigZag) .addComponent(checkCompression)) .addGap(0, 0, Short.MAX_VALUE))))) .addContainerGap()) ); panelParametersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel10, jLabel11, jLabel12, jLabel13, jLabel4, jLabel5, jLabel6, jLabel7, jLabel8, jLabel9}); panelParametersLayout.setVerticalGroup( panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelParametersLayout.createSequentialGroup() .addContainerGap() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(spinnerCenterX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(spinnerCenterY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5) .addComponent(spinnerStepsX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel6) .addComponent(spinnerStepsY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7) .addComponent(spinnerStepSizeX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(spinnerStepSizeY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel9) .addComponent(spinnerNoise, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel10) .addComponent(spinnerSettlingTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel11) .addComponent(textExposures, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(checkZigZag) .addComponent(jLabel12)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(checkCompression) .addComponent(jLabel13)) .addContainerGap(98, Short.MAX_VALUE)) ); jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control")); buttonStart.setText("Start"); buttonStart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonStartActionPerformed(evt); } }); buttonAbort.setText("Abort"); buttonAbort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonAbortActionPerformed(evt); } }); buttonAddToQueue.setText("Add To Queue"); buttonAddToQueue.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonAddToQueueActionPerformed(evt); } }); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .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) .addComponent(buttonAddToQueue, javax.swing.GroupLayout.DEFAULT_SIZE, 206, Short.MAX_VALUE)) .addContainerGap()) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(buttonStart) .addGap(18, 18, 18) .addComponent(buttonAbort) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonAddToQueue) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Motor Positions")); jLabel2.setText("Sample X:"); jLabel3.setText("Sample Y:"); motorPanelX.setDeviceName("sample_x"); motorPanelY.setDeviceName("sample_y"); plot.setTitle(""); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(motorPanelY, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(motorPanelX, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(1, 1, 1)) .addComponent(plot, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap()) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel2) .addComponent(motorPanelX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel3) .addComponent(motorPanelY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(panelParameters, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(12, 12, 12) .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(panelParameters, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); }// //GEN-END:initComponents private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed try { execute(); } catch (Exception ex) { SwingUtils.showException(this, ex); } }//GEN-LAST:event_buttonStartActionPerformed private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed try { abort(); } catch (InterruptedException ex) { SwingUtils.showException(this, ex); } }//GEN-LAST:event_buttonAbortActionPerformed private void buttonAddToQueueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAddToQueueActionPerformed try { List queues = getView().getQueues(); QueueProcessor tq = (queues.size() == 0) ? getView().openProcessor(QueueProcessor.class, null) : queues.get(0); getView().getDocumentsTab().setSelectedComponent(tq); tq.addNewFile(getScript(), getArgs()); } catch (Exception ex) { showException( ex); } }//GEN-LAST:event_buttonAddToQueueActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAbort; private javax.swing.JButton buttonAddToQueue; private javax.swing.ButtonGroup buttonGroup1; private javax.swing.ButtonGroup buttonGroup2; private javax.swing.JButton buttonStart; private javax.swing.JCheckBox checkCompression; private javax.swing.JCheckBox checkZigZag; 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 jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private ch.psi.pshell.swing.MotorReadoutPanel motorPanelX; private ch.psi.pshell.swing.MotorReadoutPanel motorPanelY; private javax.swing.JPanel panelParameters; private ch.psi.pshell.plot.LinePlotJFree plot; private javax.swing.JSpinner spinnerCenterX; private javax.swing.JSpinner spinnerCenterY; private javax.swing.JSpinner spinnerNoise; private javax.swing.JSpinner spinnerSettlingTime; private javax.swing.JSpinner spinnerStepSizeX; private javax.swing.JSpinner spinnerStepSizeY; private javax.swing.JSpinner spinnerStepsX; private javax.swing.JSpinner spinnerStepsY; private javax.swing.JTextField textExposures; // End of variables declaration//GEN-END:variables }