/* * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. */ import java.awt.Component; import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; import java.util.logging.Level; import javax.swing.JLabel; import ch.psi.utils.State; import ch.psi.utils.swing.Editor.EditorDialog; import ch.psi.pshell.plot.LinePlotBase; import ch.psi.pshell.plot.LinePlotSeries; import ch.psi.pshell.plot.Plot; import ch.psi.pshell.ui.Panel; import ch.psi.utils.swing.DsvEditor; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.nio.file.Files; import javax.swing.DefaultComboBoxModel; /** * */ public class EnergyScan_TBT extends Panel { public EnergyScan_TBT() { initComponents(); } double energyCache = 0; boolean restart; @Override public void onInitialize(int runCount) { super.onInitialize(runCount); loadConfig(); } @Override public void onStateChange(State state, State former) { setEnabled(state == State.Ready); } @Override public void onExecutedFile(String fileName, Object result) { } boolean otf; void stopScan() { try { getLogger().info("Stopping scan"); evalAsync("caput('START', 'STOP')"); } catch (Exception ex) { getLogger().log(Level.WARNING, null, ex); } } Path getConfigFile() { return Paths.get(getController().getSetup().getConfigPath(), "energy_scan.properties"); } LinePlotBase scanPlot; LinePlotSeries scanSeries; @Override public void setEnabled(boolean value) { super.setEnabled(value); buttonExecute.setEnabled(value); //buttonPlot.setEnabled(value); checkParameterControls(); } void checkParameterControls() { boolean enabled; enabled = isEnabled(); for (Component c : panelParameters.getComponents()) { if (!(c instanceof JLabel)) { c.setEnabled(enabled); } } for (Component c : panelSetup.getComponents()) { if (!(c instanceof JLabel)) { c.setEnabled(enabled); } } //spinnerAlpha.setEnabled(enabled && comboMode.getSelectedItem().equals("LINEAR")); } double last = 0; void run() throws Exception { HashMap args = new HashMap(); Double e1 = (Double) spinnerE1.getValue(); Double e2 = (Double) spinnerE2.getValue(); args.put("E1", (Double) spinnerE1.getValue()); args.put("E2", (Double) spinnerE2.getValue()); args.put("TIME", (Double) spinnerTime.getValue()); args.put("DELAY", (Double) spinnerDelay.getValue()); args.put("OFFSET1", (Double) spinnerOffset1.getValue()); args.put("OFFSET2", (Double) spinnerOffset2.getValue()); args.put("MAG", (Double) spinnerMag.getValue()); args.put("RUNTYPE", comboRunType.getSelectedItem().toString()); args.put("ROUNDS", (Integer) spinnerRounds.getValue()); args.put("PLOT_TYPE", radioK1.isSelected() ? 1 : 2); args.put("SET_OFFSETS", jCheckBox1.isSelected() ? 1 : 2); args.put("ID1", jRadioButton1.isSelected() ? 1 : 2); args.put("ID2", jRadioButton2.isSelected() ? 1 : 2); args.put("MCP_1", jCheckBox2.isSelected() ? 1 : 2); args.put("MCP_2", jCheckBox3.isSelected() ? 1 : 2); args.put("Cam_start", jSpinner1.getValue()); args.put("Cam_end", jSpinner2.getValue()); args.put("Save_array_data", jCheckBox4.isSelected() ? 1 : 2); buttonAbort.setEnabled(true); runAsync("EnergyScan_TBT", args).handle((ok, ex) -> { try { buttonAbort.setEnabled(false); if (ex != null) { throw ex; } else { } } catch (Throwable t) { getLogger().log(Level.WARNING, null, ex); //showException((Exception)ex); } return ok; }); if (scanPlot != null) { scanPlot.getAxis(Plot.AxisId.X).setRange(Math.min(e1, e2), Math.max(e1, e2)); } } void loadConfig() { DefaultComboBoxModel model = (DefaultComboBoxModel) comboSetup.getModel(); model.removeAllElements(); try { for (String line : Files.readAllLines(getConfigFile())) { if ((line != null) && (!line.trim().isEmpty())) { String[] tokens = line.split("="); if (tokens.length > 0) { model.addElement(tokens[0].trim()); } } } } catch (Exception ex) { } } void setElement() throws Exception { String selection = comboSetup.getSelectedItem().toString(); for (String line : Files.readAllLines(getConfigFile())) { if ((line != null) && (!line.trim().isEmpty())) { String[] tokens = line.split("="); if (tokens.length < 2) { throw new Exception("Invalid file format"); } if (tokens[0].equals(selection)) { tokens = tokens[1].trim().split(";"); if (tokens.length < 6) { throw new Exception("Invalid file format"); } spinnerE1.setValue(Double.valueOf(tokens[0].trim())); spinnerE2.setValue(Double.valueOf(tokens[1].trim())); spinnerTime.setValue(Double.valueOf(tokens[2].trim())); spinnerDelay.setValue(Double.valueOf(tokens[3].trim())); spinnerOffset1.setValue(Double.valueOf(tokens[4].trim())); spinnerOffset2.setValue(Double.valueOf(tokens[5].trim())); break; } } } } @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { buttonGroupPlot = new javax.swing.ButtonGroup(); buttonGroup1 = new javax.swing.ButtonGroup(); panelParameters = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); spinnerE1 = new javax.swing.JSpinner(); jLabel2 = new javax.swing.JLabel(); spinnerE2 = new javax.swing.JSpinner(); jLabel3 = new javax.swing.JLabel(); spinnerTime = new javax.swing.JSpinner(); jLabel4 = new javax.swing.JLabel(); spinnerDelay = new javax.swing.JSpinner(); jLabel8 = new javax.swing.JLabel(); spinnerOffset1 = new javax.swing.JSpinner(); jLabel13 = new javax.swing.JLabel(); spinnerOffset2 = new javax.swing.JSpinner(); jLabel11 = new javax.swing.JLabel(); comboRunType = new javax.swing.JComboBox(); jLabel5 = new javax.swing.JLabel(); spinnerRounds = new javax.swing.JSpinner(); jLabel12 = new javax.swing.JLabel(); radioK1 = new javax.swing.JRadioButton(); radioK3 = new javax.swing.JRadioButton(); spinnerMag = new javax.swing.JSpinner(); jLabel16 = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); buttonExecute = new javax.swing.JButton(); buttonAbort = new javax.swing.JButton(); jCheckBox1 = new javax.swing.JCheckBox(); jRadioButton2 = new javax.swing.JRadioButton(); jRadioButton1 = new javax.swing.JRadioButton(); jRadioButton3 = new javax.swing.JRadioButton(); jCheckBox2 = new javax.swing.JCheckBox(); jCheckBox3 = new javax.swing.JCheckBox(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jSpinner1 = new javax.swing.JSpinner(); jSpinner2 = new javax.swing.JSpinner(); jLabel9 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); jCheckBox4 = new javax.swing.JCheckBox(); panelSetup = new javax.swing.JPanel(); comboSetup = new javax.swing.JComboBox(); buttonConfigure = new javax.swing.JButton(); jLabel10 = new javax.swing.JLabel(); panelParameters.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters")); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("E start:"); jLabel1.setToolTipText(""); spinnerE1.setModel(new javax.swing.SpinnerNumberModel(680.0d, 0.0d, 9999.0d, 1.0d)); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel2.setText("E end:"); jLabel2.setToolTipText(""); spinnerE2.setModel(new javax.swing.SpinnerNumberModel(750.0d, 0.0d, 9999.0d, 1.0d)); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel3.setText("Time(min):"); spinnerTime.setModel(new javax.swing.SpinnerNumberModel(2.0d, 0.0d, 60.0d, 1.0d)); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel4.setText("Delay(s):"); spinnerDelay.setModel(new javax.swing.SpinnerNumberModel(10.0d, 0.0d, 600.0d, 1.0d)); jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel8.setText("Offset1:"); spinnerOffset1.setModel(new javax.swing.SpinnerNumberModel(0.0d, -20.0d, 20.0d, 1.0d)); jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel13.setText("Offset2:"); spinnerOffset2.setModel(new javax.swing.SpinnerNumberModel(0.0d, -20.0d, 20.0d, 1.0d)); jLabel11.setText("Run Type:"); comboRunType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "+/-", "+", "-", "LH/LV", "LH", "LV", "+--+/+--+" })); jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel5.setText("Nb of repetitions"); jLabel5.setToolTipText(""); spinnerRounds.setModel(new javax.swing.SpinnerNumberModel(1, 1, 10, 1)); jLabel12.setText("Plot Type:"); buttonGroupPlot.add(radioK1); radioK1.setText("K2 / K1"); radioK1.setMinimumSize(new java.awt.Dimension(100, 22)); radioK1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { radioK1ActionPerformed(evt); } }); buttonGroupPlot.add(radioK3); radioK3.setText("K2 / K3"); spinnerMag.setModel(new javax.swing.SpinnerNumberModel(1.0d, -2.0d, 2.0d, 0.1d)); jLabel16.setText("B(T)"); 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(jLabel12) .addGap(18, 18, 18) .addComponent(radioK1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(radioK3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(panelParametersLayout.createSequentialGroup() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelParametersLayout.createSequentialGroup() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(panelParametersLayout.createSequentialGroup() .addComponent(jLabel8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerOffset1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelParametersLayout.createSequentialGroup() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerE1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerTime, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(panelParametersLayout.createSequentialGroup() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerE2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerDelay, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(spinnerOffset2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(panelParametersLayout.createSequentialGroup() .addComponent(jLabel11) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(comboRunType, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerRounds, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel16) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerMag, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(39, 39, 39)))) ); panelParametersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerE1, spinnerTime}); panelParametersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel2, jLabel4, jLabel8}); panelParametersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerDelay, spinnerE2, spinnerOffset1, spinnerOffset2, spinnerRounds}); panelParametersLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {radioK1, radioK3}); panelParametersLayout.setVerticalGroup( panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelParametersLayout.createSequentialGroup() .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(spinnerE1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2) .addComponent(spinnerE2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerMag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel16)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(spinnerTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel4) .addComponent(spinnerDelay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(spinnerOffset1) .addComponent(jLabel13) .addComponent(spinnerOffset2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(35, 35, 35) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(comboRunType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel11) .addComponent(jLabel5) .addComponent(spinnerRounds, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(20, 20, 20) .addGroup(panelParametersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel12) .addComponent(radioK1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(radioK3)) .addContainerGap()) ); jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control")); buttonExecute.setText("Start"); buttonExecute.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonExecuteActionPerformed(evt); } }); buttonAbort.setText("Abort"); buttonAbort.setEnabled(false); buttonAbort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonAbortActionPerformed(evt); } }); jCheckBox1.setText("set offsets"); jCheckBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox1ActionPerformed(evt); } }); buttonGroup1.add(jRadioButton2); jRadioButton2.setText("ID2"); buttonGroup1.add(jRadioButton1); jRadioButton1.setText("ID1"); buttonGroup1.add(jRadioButton3); jRadioButton3.setSelected(true); jRadioButton3.setText("ID1+ID2"); jCheckBox2.setText("Signal channel 0 p/n"); jCheckBox2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox2ActionPerformed(evt); } }); jCheckBox3.setText("I_0 channel 2 p/n"); jCheckBox3.setToolTipText(""); jLabel6.setText("ID mode"); jLabel7.setText("Data channels"); jSpinner1.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); jSpinner2.setModel(new javax.swing.SpinnerNumberModel(0, 0, 1000, 1)); jLabel9.setText("Signal pos"); jLabel14.setText("I_0 pos"); jLabel15.setText("Camshaft position"); jCheckBox4.setText("Save array data"); 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) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jRadioButton1) .addComponent(jRadioButton2) .addComponent(jLabel6)) .addGap(74, 74, 74) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel7) .addComponent(jCheckBox3) .addComponent(jCheckBox2))) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jRadioButton3) .addGap(48, 48, 48) .addComponent(jCheckBox4))) .addGap(31, 31, 31) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel9) .addComponent(jLabel14)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jSpinner1) .addComponent(jSpinner2)) .addGap(18, 18, 18) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(buttonExecute, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonAbort, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(jCheckBox1)) .addComponent(jLabel15)) .addContainerGap()) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel6) .addComponent(jLabel7) .addComponent(jLabel15)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonExecute) .addComponent(jCheckBox1) .addComponent(jRadioButton1) .addComponent(jCheckBox2)) .addGap(16, 16, 16) .addComponent(buttonAbort)) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel9)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jSpinner2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel14))))) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(60, 60, 60) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jRadioButton2) .addComponent(jCheckBox3)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jRadioButton3) .addComponent(jCheckBox4)))) .addContainerGap(13, Short.MAX_VALUE)) ); panelSetup.setBorder(javax.swing.BorderFactory.createTitledBorder("Setup")); comboSetup.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboSetupActionPerformed(evt); } }); buttonConfigure.setText("Configure"); buttonConfigure.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonConfigureActionPerformed(evt); } }); jLabel10.setText("Element:"); javax.swing.GroupLayout panelSetupLayout = new javax.swing.GroupLayout(panelSetup); panelSetup.setLayout(panelSetupLayout); panelSetupLayout.setHorizontalGroup( panelSetupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelSetupLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabel10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(comboSetup, javax.swing.GroupLayout.PREFERRED_SIZE, 152, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonConfigure) .addContainerGap()) ); panelSetupLayout.setVerticalGroup( panelSetupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelSetupLayout.createSequentialGroup() .addGap(4, 4, 4) .addGroup(panelSetupLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(comboSetup, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel10) .addComponent(buttonConfigure)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING, 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) .addComponent(panelSetup, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(16, 16, 16) .addComponent(panelParameters, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(panelSetup, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); }// //GEN-END:initComponents private void radioK1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioK1ActionPerformed // TODO add your handling code here: }//GEN-LAST:event_radioK1ActionPerformed private void comboSetupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboSetupActionPerformed try { if (comboSetup.getSelectedItem() != null) { setElement(); } } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_comboSetupActionPerformed private void buttonConfigureActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonConfigureActionPerformed try { //Desktop.getDesktop().open(getConfigFile().toFile()); if ((dlgConfig == null) || (!dlgConfig.isShowing())) { String[] columns = new String[]{"Element", "E1", "E2", "Time", "Delay", "Offset1", "Offset2"}; Class[] types = new Class[]{String.class, Double.class, Double.class, Double.class, Double.class, Double.class, Double.class}; DsvEditor editor = new DsvEditor(columns, types, ";"); dlgConfig = editor.getDialog(getView(), false); editor.load(getConfigFile().toString()); editor.setTitle("Energy Scan Configuration"); dlgConfig.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { if (System.currentTimeMillis() - new File(dlgConfig.getEditor().getFileName()).lastModified() < 5000) { loadConfig(); } } }); } dlgConfig.setSize(680, 320); showWindow(dlgConfig); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonConfigureActionPerformed private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox2ActionPerformed // TODO add your handling code here: }//GEN-LAST:event_jCheckBox2ActionPerformed private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox1ActionPerformed // TODO add your handling code here: }//GEN-LAST:event_jCheckBox1ActionPerformed private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed abort(); }//GEN-LAST:event_buttonAbortActionPerformed private void buttonExecuteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonExecuteActionPerformed try { run(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonExecuteActionPerformed EditorDialog dlgConfig; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAbort; private javax.swing.JButton buttonConfigure; private javax.swing.JButton buttonExecute; private javax.swing.ButtonGroup buttonGroup1; private javax.swing.ButtonGroup buttonGroupPlot; private javax.swing.JComboBox comboRunType; private javax.swing.JComboBox comboSetup; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JCheckBox jCheckBox2; private javax.swing.JCheckBox jCheckBox3; private javax.swing.JCheckBox jCheckBox4; 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 jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; 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.JRadioButton jRadioButton1; private javax.swing.JRadioButton jRadioButton2; private javax.swing.JRadioButton jRadioButton3; private javax.swing.JSpinner jSpinner1; private javax.swing.JSpinner jSpinner2; private javax.swing.JPanel panelParameters; private javax.swing.JPanel panelSetup; private javax.swing.JRadioButton radioK1; private javax.swing.JRadioButton radioK3; private javax.swing.JSpinner spinnerDelay; private javax.swing.JSpinner spinnerE1; private javax.swing.JSpinner spinnerE2; private javax.swing.JSpinner spinnerMag; private javax.swing.JSpinner spinnerOffset1; private javax.swing.JSpinner spinnerOffset2; private javax.swing.JSpinner spinnerRounds; private javax.swing.JSpinner spinnerTime; // End of variables declaration//GEN-END:variables }