import ch.psi.pshell.core.Context; import ch.psi.pshell.imaging.Overlay; import ch.psi.pshell.imaging.Overlays.Rect; import ch.psi.pshell.imaging.Pen; import ch.psi.pshell.imaging.Renderer; import ch.psi.pshell.imaging.RendererListener; import ch.psi.pshell.swing.DeviceValuePanel; import ch.psi.pshell.ui.App; import ch.psi.pshell.ui.Panel; import ch.psi.utils.Arr; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.Point; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.JToggleButton; import javax.swing.SwingConstants; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableModel ; /** * */ public class Eiger extends Panel { public enum ID { ID1, ID2, ID1_ID2 } public enum Switching { Normal, Tune_Detune } public enum Polarization { Circ_Plus, Circ_Minus, Lin_Hor, Lin_Ver, Lin } public enum ImgMethod { Two_Pol, Two_Energies, Take_Image } static String DEFAULT_PATH = "{data}/{year}_{month}/{date}_{seq}%03d"; final Component[] parameterControls; final ArrayList rois = new ArrayList<>(); final DefaultTableModel modelRegions; public Eiger() { initComponents(); ((JSpinner.ListEditor) spinnerHar1.getEditor()).getTextField().setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); ((JSpinner.ListEditor) spinnerHar2.getEditor()).getTextField().setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); SwingUtils.setEnumCombo(comboID, ID.class, true); SwingUtils.setEnumCombo(comboSwitch, Switching.class, true); comboSwitch.setSelectedIndex(1); SwingUtils.setEnumCombo(comboPol1, Polarization.class, true); SwingUtils.setEnumCombo(comboPol2, Polarization.class, true); SwingUtils.setEnumCombo(comboImgMethod, ImgMethod.class, true); Component[] parameterControls = new Component[0]; for (JPanel panel : new JPanel[]{panelBeamline, panelImgControls, panelSpectrum}) { for (Class cls : new Class[]{JComboBox.class, JSpinner.class, JToggleButton.class}) { parameterControls = Arr.append(parameterControls, SwingUtils.getComponentsByType(panel, cls)); } } Font devValueFont = deviceValuePanel1.getFont().deriveFont(8.0f); for (Component panel : SwingUtils.getComponentsByType(panelBeamline, DeviceValuePanel.class)){ ((DeviceValuePanel)panel).getLabel().setFont(devValueFont); ((DeviceValuePanel)panel).getLabel().setVerticalAlignment(SwingConstants.TOP); ((DeviceValuePanel)panel).getLabel().setVerticalTextPosition(SwingConstants.TOP); } deviceValuePanel1.getLabel().setVerticalAlignment(SwingConstants.TOP); deviceValuePanel1.getLabel().setFont(deviceValuePanel1.getFont().deriveFont(8.0f)); parameterControls = Arr.append(parameterControls, SwingUtils.getComponentsByType(panelRoi, JButton.class)); this.parameterControls = parameterControls; setPersistedComponents(parameterControls); rendererRoi.addListener(new RendererListener() { public void onMoveFinished(Renderer renderer, Overlay overlay) { if (rois.contains(overlay)) { updateRoiList(); } } @Override public void onDeleted(Renderer renderer, Overlay overlay) { if (rois.contains(overlay)) { rois.remove(overlay); updateRoiList(); } } }); DefaultTableModel model = (DefaultTableModel) tableRoi.getModel(); model.addTableModelListener(new TableModelListener() { boolean processingUpdate; @Override public void tableChanged(TableModelEvent e) { int row = e.getFirstRow(); if ((tableRoi.isEditing()) && (e.getType() == TableModelEvent.UPDATE) && !processingUpdate) { processingUpdate = true; try { rois.get(row).update(new Point((Integer) model.getValueAt(row, 1), (Integer) model.getValueAt(row, 2)), new Dimension((Integer) model.getValueAt(row, 3), (Integer) model.getValueAt(row, 4))); rendererRoi.refresh(); } catch (Exception ex) { showException(ex); } finally { processingUpdate = false; } } } }); modelRegions = (DefaultTableModel) tableRegions.getModel(); } //Overridable callbacks @Override public void onInitialize(int runCount) { try { textNorm.setText(String.valueOf(getSetting("NORM_FILE"))); removeNorm(); String id = getSetting("ID"); Double en = Double.valueOf(getSetting("ENERGY")); String pol1 = getSetting("POL_ID_1"); Double alp1 = Double.valueOf(getSetting("ALPHA_ID_1")); String har1 = getSetting("HARMONIC_ID_1"); Double off1 = Double.valueOf(getSetting("OFFSET_ID_1")); String pol2 = getSetting("POL_ID_2"); Double alp2 = Double.valueOf(getSetting("ALPHA_ID_2")); String har2 = getSetting("HARMONIC_ID_2"); Double off2 = Double.valueOf(getSetting("OFFSET_ID_2")); comboID.setSelectedItem(id); spinnerImgEng.setValue(en); comboPol1.setSelectedItem(pol1); spinnerAlp1.setValue(alp1); spinnerHar1.setValue(har1); spinnerOff1.setValue(off1); comboPol2.setSelectedItem(pol2); spinnerAlp2.setValue(alp2); spinnerHar2.setValue(har2); spinnerOff2.setValue(off2); checkAutoValve.setSelected(String.valueOf(getSetting("AUTO_SWITCH_VALVE")).equalsIgnoreCase("true")); try{ spinnerOutliersThreshold.setValue(Integer.valueOf(getSetting("OUTLIERS_THRESHOLD"))); } catch (IOException ex) { spinnerOutliersThreshold.setValue(0); } textOutliersMask.setText(String.valueOf(getSetting("OUTLIERS_MASK_FILE"))); } catch (IOException ex) { showException(ex); } } @Override public void onStateChange(State state, State former) { textDataPath.setText(getContext().getConfig().dataPath); spinnerSeq.setValue(getContext().getFileSequentialNumber()); updateControls(); } @Override public void onExecutedFile(String fileName, Object result) { } //Callback to perform update - in event thread @Override protected void doUpdate() { } void updateControls() { boolean editable = getState().isInitialized() && !getState().isProcessing(); boolean is_id1 = comboID.getSelectedIndex() != 1; boolean is_id2 = comboID.getSelectedIndex() != 0; textDataPath.setEnabled(editable); spinnerSeq.setEnabled(editable); buttonDefaultPath.setEnabled(editable && !textDataPath.getText().equals(DEFAULT_PATH)); buttonSetPath.setEnabled(editable && !textDataPath.getText().equals(getContext().getConfig().dataPath)); buttonUndoPath.setEnabled(editable && !textDataPath.getText().equals(getContext().getConfig().dataPath)); buttonSetSeq.setEnabled(editable && !spinnerSeq.getValue().equals(getContext().getFileSequentialNumber())); buttonUndoSeq.setEnabled(editable && !spinnerSeq.getValue().equals(getContext().getFileSequentialNumber())); buttonApply.setEnabled(editable); for (Component c : parameterControls) { c.setEnabled(editable); } if (editable) { comboSwitch.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Pol.toString()); spinnerImgEng1.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Energies.toString()); spinnerImgEng2.setEnabled(comboImgMethod.getSelectedItem() == ImgMethod.Two_Energies.toString()); spinnerAlp1.setEnabled(is_id1 && (comboPol1.getSelectedItem() == Polarization.Lin.toString())); spinnerAlp2.setEnabled(is_id2 & (comboPol2.getSelectedItem() == Polarization.Lin.toString())); spinnerHar1.setEnabled(is_id1 ); spinnerHar2.setEnabled(is_id2 ); spinnerOff1.setEnabled(is_id1 ); spinnerOff2.setEnabled(is_id2 ); comboPol1.setEnabled(is_id1 ); comboPol2.setEnabled(is_id2 ); } buttonImgStart.setEnabled(getState() == State.Ready); buttonImgAbort.setEnabled(getState().isProcessing()); buttonSpecStart.setEnabled(getState() == State.Ready); buttonSpecAbort.setEnabled(getState().isProcessing()); } void updateRoiList() { DefaultTableModel model = (DefaultTableModel) tableRoi.getModel(); model.setRowCount(rois.size()); for (int i = 0; i < rois.size(); i++) { model.setValueAt("ROI" + (i + 1), i, 0); model.setValueAt(rois.get(i).getPosition().x, i, 1); model.setValueAt(rois.get(i).getPosition().y, i, 2); model.setValueAt(rois.get(i).getWidth(), i, 3); model.setValueAt(rois.get(i).getHeight(), i, 4); } } void addRoi() { final Rect selection = new Rect(rendererRoi.getPenMovingOverlay()); rendererRoi.addListener(new RendererListener() { @Override public void onSelectionFinished(Renderer renderer, Overlay overlay) { try { if (overlay.getLength() > 0) { Rect roi = (Rect) overlay.copy(); roi.setPen(new Pen(rendererRoi.getPenSelectedOverlay().getColor())); roi.setSelectable(true); roi.setMovable(true); roi.setSolid(true); renderer.addOverlay(roi); rois.add(roi); updateRoiList(); } } catch (Exception ex) { } finally { renderer.removeListener(this); } } @Override public void onSelectionAborted(Renderer renderer, Overlay overlay) { renderer.removeListener(this); } }); //selection.setFixed(true); selection.setPassive(false); rendererRoi.startSelection(selection); } void removeRoi() { for (Rect rect : rois) { if (rendererRoi.getSelectedOverlay() == rect) { rendererRoi.removeOverlay(rect); rois.remove(rect); updateRoiList(); break; } } rendererRoi.abortSelection(); } void setBeamlineArgs(HashMap args) { args.put("ID", comboID.getSelectedItem()); args.put("ENERGY", spinnerImgEng.getValue()); args.put("POL_ID_1", comboPol1.getSelectedItem()); args.put("ALPHA_ID_1", spinnerAlp1.getValue()); args.put("HARMONIC_ID_1", spinnerHar1.getValue()); args.put("OFFSET_ID_1", spinnerOff1.getValue()); args.put("POL_ID_2", comboPol2.getSelectedItem()); args.put("ALPHA_ID_2", spinnerAlp2.getValue()); args.put("HARMONIC_ID_2", spinnerHar2.getValue()); args.put("OFFSET_ID_2", spinnerOff2.getValue()); } void run2Images() throws Context.ContextStateException { HashMap args = new HashMap(); args.put("METHOD", comboImgMethod.getSelectedItem()); args.put("SWITCHING", comboSwitch.getSelectedItem()); args.put("MEASUREMENTS", spinnerImgMeasurements.getValue()); args.put("AUTO_SAVE", checkImgAutosave.isSelected()); args.put("EXPOSURE_1", spinnerImgExp1.getValue()); args.put("AVERAGE_1", spinnerImgAvg1.getValue()); args.put("ENERGY_1", spinnerImgEng1.getValue()); args.put("EXPOSURE_2", spinnerImgExp2.getValue()); args.put("AVERAGE_2", spinnerImgAvg2.getValue()); args.put("ENERGY_2", spinnerImgEng2.getValue()); runAsync("templates/Eiger2Img", args).handle((ret, t) -> { if ((t != null) && (!getContext().isAborted())) { showException((Exception) t); } return t; }); } void runAbsSpectrum() throws Context.ContextStateException { List ranges = new ArrayList(); for (int i=0; i> roi = new HashMap<>(); for (int i=0; i { if ((t != null) && (!getContext().isAborted())) { showException((Exception) t); } return t; }); } void applyBeamline() throws Context.ContextStateException { HashMap args = new HashMap(); setBeamlineArgs(args); runAsync("templates/SetupBeamline", args).handle((ret, t) -> { if ((t != null) && (!getContext().isAborted())) { showException((Exception) t); } return t; }); } void removeNorm(){ try{ JDialog dlg = App.getInstance().getDevicePanelManager().getPanelDialog("norm"); if (dlg!=null){ dlg.dispose(); } removeDevice(this.getDevice("norm"), true); if (buttonShowNorm.isSelected()){ buttonShowNorm.setSelected(false); buttonShowNorm.setText("Show"); } } catch (Exception ex){ ex.printStackTrace(); } } void enableNorm(boolean enabled) throws Context.ContextStateException { if (!enabled){ removeNorm(); } else { runAsync("devices/norm", null).handle((ret, t) -> { if ((t != null) && (!getContext().isAborted())) { showException((Exception) t); } JDialog dlg = App.getInstance().getDevicePanelManager().getPanelDialog("norm"); if (dlg!=null){ dlg.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { dlg.removeWindowListener(this); removeNorm(); } }); } return t; }); } } @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); panelDataFile = new javax.swing.JPanel(); buttonSetSeq = new javax.swing.JButton(); buttonUndoSeq = new javax.swing.JButton(); buttonDefaultPath = new javax.swing.JButton(); buttonSetPath = new javax.swing.JButton(); buttonUndoPath = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); spinnerSeq = new javax.swing.JSpinner(); textDataPath = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); panelBeamline = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); comboID = new javax.swing.JComboBox<>(); jPanel7 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); comboPol1 = new javax.swing.JComboBox<>(); jLabel6 = new javax.swing.JLabel(); spinnerAlp1 = new javax.swing.JSpinner(); jLabel7 = new javax.swing.JLabel(); spinnerHar1 = new javax.swing.JSpinner(); jLabel8 = new javax.swing.JLabel(); spinnerOff1 = new javax.swing.JSpinner(); deviceValuePanel2 = new ch.psi.pshell.swing.DeviceValuePanel(); deviceValuePanel3 = new ch.psi.pshell.swing.DeviceValuePanel(); deviceValuePanel4 = new ch.psi.pshell.swing.DeviceValuePanel(); deviceValuePanel5 = new ch.psi.pshell.swing.DeviceValuePanel(); jPanel9 = new javax.swing.JPanel(); jLabel13 = new javax.swing.JLabel(); comboPol2 = new javax.swing.JComboBox<>(); jLabel14 = new javax.swing.JLabel(); spinnerAlp2 = new javax.swing.JSpinner(); jLabel15 = new javax.swing.JLabel(); spinnerHar2 = new javax.swing.JSpinner(); jLabel16 = new javax.swing.JLabel(); spinnerOff2 = new javax.swing.JSpinner(); deviceValuePanel6 = new ch.psi.pshell.swing.DeviceValuePanel(); deviceValuePanel7 = new ch.psi.pshell.swing.DeviceValuePanel(); deviceValuePanel8 = new ch.psi.pshell.swing.DeviceValuePanel(); deviceValuePanel9 = new ch.psi.pshell.swing.DeviceValuePanel(); buttonApply = new javax.swing.JButton(); jLabel27 = new javax.swing.JLabel(); spinnerImgEng = new javax.swing.JSpinner(); checkAutoValve = new javax.swing.JCheckBox(); deviceValuePanel1 = new ch.psi.pshell.swing.DeviceValuePanel(); deviceValuePanel10 = new ch.psi.pshell.swing.DeviceValuePanel(); panelNorm = new javax.swing.JPanel(); buttonSetNorm = new javax.swing.JButton(); textNorm = new javax.swing.JTextField(); jLabel29 = new javax.swing.JLabel(); buttonShowNorm = new javax.swing.JToggleButton(); panelNorm1 = new javax.swing.JPanel(); textSelectOutliersMask = new javax.swing.JButton(); textOutliersMask = new javax.swing.JTextField(); jLabel30 = new javax.swing.JLabel(); jLabel31 = new javax.swing.JLabel(); textClearOutliersMask = new javax.swing.JButton(); spinnerOutliersThreshold = new javax.swing.JSpinner(); panelRoi = new javax.swing.JPanel(); rendererRoi = new ch.psi.pshell.imaging.Renderer(); jLabel26 = new javax.swing.JLabel(); buttonRoiAdd = new javax.swing.JButton(); buttonRoiRemove = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); tableRoi = new javax.swing.JTable(); buttonTriggerDetector = new javax.swing.JButton(); buttonShowDetectorPanel = new javax.swing.JButton(); buttonMeasurements = new javax.swing.JToggleButton(); jPanel2 = new javax.swing.JPanel(); buttonImgStart = new javax.swing.JButton(); buttonImgAbort = new javax.swing.JButton(); panelImgControls = new javax.swing.JPanel(); jPanel8 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); spinnerImgExp1 = new javax.swing.JSpinner(); jLabel9 = new javax.swing.JLabel(); spinnerImgAvg1 = new javax.swing.JSpinner(); jLabel11 = new javax.swing.JLabel(); spinnerImgEng1 = new javax.swing.JSpinner(); jPanel10 = new javax.swing.JPanel(); jLabel12 = new javax.swing.JLabel(); spinnerImgExp2 = new javax.swing.JSpinner(); jLabel17 = new javax.swing.JLabel(); spinnerImgAvg2 = new javax.swing.JSpinner(); jLabel19 = new javax.swing.JLabel(); spinnerImgEng2 = new javax.swing.JSpinner(); jLabel21 = new javax.swing.JLabel(); spinnerImgMeasurements = new javax.swing.JSpinner(); comboImgMethod = new javax.swing.JComboBox<>(); jLabel20 = new javax.swing.JLabel(); checkImgAutosave = new javax.swing.JCheckBox(); labelSwitching = new javax.swing.JLabel(); comboSwitch = new javax.swing.JComboBox<>(); deviceValuePanel11 = new ch.psi.pshell.swing.DeviceValuePanel(); jLabel22 = new javax.swing.JLabel(); jLabel28 = new javax.swing.JLabel(); deviceValuePanel12 = new ch.psi.pshell.swing.DeviceValuePanel(); jPanel3 = new javax.swing.JPanel(); panelSpectrum = new javax.swing.JPanel(); jLabel23 = new javax.swing.JLabel(); jLabel24 = new javax.swing.JLabel(); checkSpecSaveImages = new javax.swing.JCheckBox(); spinnerSpecAvg = new javax.swing.JSpinner(); checkSpecSwitchPol = new javax.swing.JCheckBox(); spinnerSpecScans = new javax.swing.JSpinner(); jLabel25 = new javax.swing.JLabel(); spinnerSpecExp = new javax.swing.JSpinner(); checkSpecWithI0 = new javax.swing.JCheckBox(); checkSpecSaveSpectrum = new javax.swing.JCheckBox(); jPanel4 = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); tableRegions = new javax.swing.JTable(); buttonAdd = new javax.swing.JButton(); buttonRemove = new javax.swing.JButton(); buttonSpecStart = new javax.swing.JButton(); buttonSpecAbort = new javax.swing.JButton(); panelDataFile.setBorder(javax.swing.BorderFactory.createTitledBorder("Data File")); buttonSetSeq.setText("Save"); buttonSetSeq.setEnabled(false); buttonSetSeq.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonSetSeqActionPerformed(evt); } }); buttonUndoSeq.setText("Undo"); buttonUndoSeq.setEnabled(false); buttonUndoSeq.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonUndoSeqActionPerformed(evt); } }); buttonDefaultPath.setText("Default"); buttonDefaultPath.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonDefaultPathActionPerformed(evt); } }); buttonSetPath.setText("Save"); buttonSetPath.setEnabled(false); buttonSetPath.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonSetPathActionPerformed(evt); } }); buttonUndoPath.setText("Undo"); buttonUndoPath.setEnabled(false); buttonUndoPath.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonUndoPathActionPerformed(evt); } }); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel2.setText("Sequential:"); spinnerSeq.setModel(new javax.swing.SpinnerNumberModel(0, 0, 99999, 1)); spinnerSeq.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { spinnerSeqStateChanged(evt); } }); textDataPath.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { textDataPathKeyReleased(evt); } public void keyTyped(java.awt.event.KeyEvent evt) { textDataPathKeyTyped(evt); } }); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("Name Pattern:"); javax.swing.GroupLayout panelDataFileLayout = new javax.swing.GroupLayout(panelDataFile); panelDataFile.setLayout(panelDataFileLayout); panelDataFileLayout.setHorizontalGroup( panelDataFileLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelDataFileLayout.createSequentialGroup() .addContainerGap() .addGroup(panelDataFileLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelDataFileLayout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerSeq, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonSetSeq) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonUndoSeq)) .addGroup(panelDataFileLayout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textDataPath, javax.swing.GroupLayout.PREFERRED_SIZE, 362, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelDataFileLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(panelDataFileLayout.createSequentialGroup() .addComponent(buttonSetPath) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonUndoPath)) .addComponent(buttonDefaultPath)) .addContainerGap()) ); panelDataFileLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonDefaultPath, buttonSetPath, buttonUndoPath}); panelDataFileLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2}); panelDataFileLayout.setVerticalGroup( panelDataFileLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelDataFileLayout.createSequentialGroup() .addContainerGap() .addGroup(panelDataFileLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(textDataPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonSetPath) .addComponent(buttonUndoPath)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelDataFileLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(spinnerSeq, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonSetSeq) .addComponent(buttonUndoSeq) .addComponent(buttonDefaultPath)) .addContainerGap()) ); panelBeamline.setBorder(javax.swing.BorderFactory.createTitledBorder("Beamline")); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel3.setText("ID:"); comboID.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboID.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboIDActionPerformed(evt); } }); jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("ID1")); jLabel5.setText("Mode:"); comboPol1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboPol1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboPol1ActionPerformed(evt); } }); jLabel6.setText("Alpha:"); spinnerAlp1.setModel(new javax.swing.SpinnerNumberModel(0.0d, -360.0d, 360.0d, 1.0d)); jLabel7.setText("Harmonic:"); spinnerHar1.setModel(new javax.swing.SpinnerListModel(new String[] {"1", "3"})); jLabel8.setText("Offset:"); spinnerOff1.setModel(new javax.swing.SpinnerNumberModel(0.0d, -10.0d, 10.0d, 1.0d)); deviceValuePanel2.setDeviceName("id1_alpha"); deviceValuePanel3.setDeviceName("id1_pol"); deviceValuePanel4.setDeviceName("id1_harmonic"); deviceValuePanel5.setDeviceName("id1_offset"); javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7); jPanel7.setLayout(jPanel7Layout); jPanel7Layout.setHorizontalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel8, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(spinnerAlp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(deviceValuePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(spinnerHar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(deviceValuePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(comboPol1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(deviceValuePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(spinnerOff1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(deviceValuePanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel7Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboPol1, spinnerAlp1, spinnerHar1, spinnerOff1}); jPanel7Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deviceValuePanel2, deviceValuePanel3, deviceValuePanel4, deviceValuePanel5}); jPanel7Layout.setVerticalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(deviceValuePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboPol1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel6) .addComponent(spinnerAlp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(deviceValuePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel7) .addComponent(spinnerHar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(deviceValuePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel8) .addComponent(spinnerOff1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(deviceValuePanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboPol1, deviceValuePanel3}); jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel2, spinnerAlp1}); jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel4, spinnerHar1}); jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel5, spinnerOff1}); jPanel9.setBorder(javax.swing.BorderFactory.createTitledBorder("ID2")); jLabel13.setText("Mode:"); comboPol2.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboPol2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboPol2ActionPerformed(evt); } }); jLabel14.setText("Alpha:"); spinnerAlp2.setModel(new javax.swing.SpinnerNumberModel(0.0d, -360.0d, 360.0d, 1.0d)); jLabel15.setText("Harmonic:"); spinnerHar2.setModel(new javax.swing.SpinnerListModel(new String[] {"1", "3"})); jLabel16.setText("Offset:"); spinnerOff2.setModel(new javax.swing.SpinnerNumberModel(0.0d, -10.0d, 10.0d, 1.0d)); deviceValuePanel6.setDeviceName("id2_pol"); deviceValuePanel7.setDeviceName("id2_alpha"); deviceValuePanel8.setDeviceName("id2_harmonic"); deviceValuePanel9.setDeviceName("id2_offset"); javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9); jPanel9.setLayout(jPanel9Layout); jPanel9Layout.setHorizontalGroup( jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel9Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel14, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel15, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel16, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerOff2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerHar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerAlp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboPol2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(deviceValuePanel6, javax.swing.GroupLayout.DEFAULT_SIZE, 60, Short.MAX_VALUE) .addComponent(deviceValuePanel7, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(deviceValuePanel8, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(deviceValuePanel9, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel9Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboPol2, spinnerAlp2, spinnerHar2, spinnerOff2}); jPanel9Layout.setVerticalGroup( jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel9Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(deviceValuePanel6, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboPol2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel13)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(deviceValuePanel7, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerAlp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel14)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel15) .addComponent(spinnerHar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(deviceValuePanel8, javax.swing.GroupLayout.PREFERRED_SIZE, 7, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel16) .addComponent(spinnerOff2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(deviceValuePanel9, javax.swing.GroupLayout.PREFERRED_SIZE, 6, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboPol2, deviceValuePanel6}); jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel7, spinnerAlp2}); jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel8, spinnerHar2}); jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel9, spinnerOff2}); buttonApply.setText("Apply"); buttonApply.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonApplyActionPerformed(evt); } }); jLabel27.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel27.setText("Energy:"); spinnerImgEng.setModel(new javax.swing.SpinnerNumberModel(1000.0d, 90.0d, 2520.0d, 1.0d)); checkAutoValve.setText("Auto Switch Valve"); checkAutoValve.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkAutoValveActionPerformed(evt); } }); deviceValuePanel1.setDeviceName("energy"); deviceValuePanel10.setDeviceName("energy_opt_desc"); javax.swing.GroupLayout panelBeamlineLayout = new javax.swing.GroupLayout(panelBeamline); panelBeamline.setLayout(panelBeamlineLayout); panelBeamlineLayout.setHorizontalGroup( panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelBeamlineLayout.createSequentialGroup() .addContainerGap() .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(checkAutoValve) .addGroup(panelBeamlineLayout.createSequentialGroup() .addComponent(jLabel27) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(spinnerImgEng))) .addGroup(panelBeamlineLayout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(comboID, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(deviceValuePanel10, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(panelBeamlineLayout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonApply, javax.swing.GroupLayout.PREFERRED_SIZE, 166, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) ); panelBeamlineLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel27, jLabel3}); panelBeamlineLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboID, spinnerImgEng}); panelBeamlineLayout.setVerticalGroup( panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelBeamlineLayout.createSequentialGroup() .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelBeamlineLayout.createSequentialGroup() .addContainerGap() .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(panelBeamlineLayout.createSequentialGroup() .addGap(30, 30, 30) .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(comboID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel3)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(deviceValuePanel10, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel27) .addComponent(spinnerImgEng, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(checkAutoValve))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonApply) .addContainerGap()) ); panelBeamlineLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel1, spinnerImgEng}); panelBeamlineLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboID, deviceValuePanel10}); panelNorm.setBorder(javax.swing.BorderFactory.createTitledBorder("Normalization")); buttonSetNorm.setText("Select"); buttonSetNorm.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonSetNormActionPerformed(evt); } }); textNorm.setEditable(false); textNorm.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { textNormKeyTyped(evt); } public void keyReleased(java.awt.event.KeyEvent evt) { textNormKeyReleased(evt); } }); jLabel29.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel29.setText("File: "); buttonShowNorm.setText("Show"); buttonShowNorm.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonShowNormActionPerformed(evt); } }); javax.swing.GroupLayout panelNormLayout = new javax.swing.GroupLayout(panelNorm); panelNorm.setLayout(panelNormLayout); panelNormLayout.setHorizontalGroup( panelNormLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelNormLayout.createSequentialGroup() .addContainerGap() .addComponent(buttonShowNorm) .addGap(18, 18, 18) .addComponent(jLabel29) .addGap(0, 0, 0) .addComponent(textNorm) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonSetNorm) .addContainerGap()) ); panelNormLayout.setVerticalGroup( panelNormLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelNormLayout.createSequentialGroup() .addContainerGap() .addGroup(panelNormLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel29) .addComponent(textNorm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonSetNorm) .addComponent(buttonShowNorm)) .addContainerGap()) ); panelNorm1.setBorder(javax.swing.BorderFactory.createTitledBorder("Outliers")); textSelectOutliersMask.setText("Select"); textSelectOutliersMask.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { textSelectOutliersMaskActionPerformed(evt); } }); textOutliersMask.setEditable(false); textOutliersMask.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { textOutliersMaskKeyTyped(evt); } public void keyReleased(java.awt.event.KeyEvent evt) { textOutliersMaskKeyReleased(evt); } }); jLabel30.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel30.setText("Mask File:"); jLabel31.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel31.setText("Threshold:"); textClearOutliersMask.setText("Clear"); textClearOutliersMask.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { textClearOutliersMaskActionPerformed(evt); } }); spinnerOutliersThreshold.setModel(new javax.swing.SpinnerNumberModel(Long.valueOf(0L), Long.valueOf(0L), Long.valueOf(1000000000000L), Long.valueOf(1L))); spinnerOutliersThreshold.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { spinnerOutliersThresholdStateChanged(evt); } }); javax.swing.GroupLayout panelNorm1Layout = new javax.swing.GroupLayout(panelNorm1); panelNorm1.setLayout(panelNorm1Layout); panelNorm1Layout.setHorizontalGroup( panelNorm1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelNorm1Layout.createSequentialGroup() .addContainerGap() .addGroup(panelNorm1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelNorm1Layout.createSequentialGroup() .addComponent(jLabel30) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textOutliersMask) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textClearOutliersMask) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textSelectOutliersMask)) .addGroup(panelNorm1Layout.createSequentialGroup() .addComponent(jLabel31) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerOutliersThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); panelNorm1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel30, jLabel31}); panelNorm1Layout.setVerticalGroup( panelNorm1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelNorm1Layout.createSequentialGroup() .addContainerGap() .addGroup(panelNorm1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel30) .addComponent(textOutliersMask, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(textSelectOutliersMask) .addComponent(textClearOutliersMask)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelNorm1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel31) .addComponent(spinnerOutliersThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(panelDataFile, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelBeamline, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelNorm, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelNorm1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(panelDataFile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(panelNorm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(panelNorm1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(panelBeamline, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Config", jPanel1); rendererRoi.setDeviceName("image"); rendererRoi.setMode(ch.psi.pshell.imaging.RendererMode.Stretch); rendererRoi.setShowStatus(false); jLabel26.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel26.setText("ROIs:"); buttonRoiAdd.setText("Add"); buttonRoiAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonRoiAddActionPerformed(evt); } }); buttonRoiRemove.setText("Remove"); buttonRoiRemove.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonRoiRemoveActionPerformed(evt); } }); tableRoi.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Name", "X", "Y", "W", "H" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class, java.lang.Integer.class }; boolean[] canEdit = new boolean [] { false, true, true, true, true }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); tableRoi.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane1.setViewportView(tableRoi); buttonTriggerDetector.setText("Trigger Detector"); buttonTriggerDetector.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonTriggerDetectorActionPerformed(evt); } }); buttonShowDetectorPanel.setText("Show Detector Panel"); buttonShowDetectorPanel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonShowDetectorPanelActionPerformed(evt); } }); buttonMeasurements.setText("Image Measurements"); buttonMeasurements.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonMeasurementsActionPerformed(evt); } }); javax.swing.GroupLayout panelRoiLayout = new javax.swing.GroupLayout(panelRoi); panelRoi.setLayout(panelRoiLayout); panelRoiLayout.setHorizontalGroup( panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelRoiLayout.createSequentialGroup() .addGap(17, 17, 17) .addComponent(rendererRoi, javax.swing.GroupLayout.DEFAULT_SIZE, 443, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(buttonTriggerDetector, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE) .addComponent(buttonMeasurements, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonRoiRemove, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonRoiAdd, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel26)) .addGap(13, 13, 13)) ); panelRoiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonMeasurements, buttonRoiAdd, buttonRoiRemove, buttonShowDetectorPanel, buttonTriggerDetector, jScrollPane1}); panelRoiLayout.setVerticalGroup( panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelRoiLayout.createSequentialGroup() .addContainerGap() .addGroup(panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(rendererRoi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(panelRoiLayout.createSequentialGroup() .addComponent(buttonRoiAdd, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonRoiRemove, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jLabel26) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 297, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(buttonMeasurements) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonTriggerDetector))) .addContainerGap()) ); jTabbedPane1.addTab("ROIs", panelRoi); buttonImgStart.setText("Start"); buttonImgStart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonImgStartActionPerformed(evt); } }); buttonImgAbort.setText("Abort"); buttonImgAbort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonImgAbortActionPerformed(evt); } }); jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder("First Image")); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel4.setText("Exposure(s):"); spinnerImgExp1.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 3600.0d, 1.0d)); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel9.setText("Average:"); spinnerImgAvg1.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1)); jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel11.setText("Energy:"); spinnerImgEng1.setModel(new javax.swing.SpinnerNumberModel(1000.0d, 90.0d, 2000.0d, 1.0d)); javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); jPanel8.setLayout(jPanel8Layout); jPanel8Layout.setHorizontalGroup( jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel8Layout.createSequentialGroup() .addGap(14, 14, 14) .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerImgExp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerImgAvg1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerImgEng1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel8Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerImgAvg1, spinnerImgEng1, spinnerImgExp1}); jPanel8Layout.setVerticalGroup( jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel8Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(spinnerImgExp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel9) .addComponent(spinnerImgAvg1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel11) .addComponent(spinnerImgEng1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel10.setBorder(javax.swing.BorderFactory.createTitledBorder("Second Image")); jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel12.setText("Exposure(s):"); spinnerImgExp2.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 3600.0d, 1.0d)); jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel17.setText("Average:"); spinnerImgAvg2.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1)); jLabel19.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel19.setText("Energy:"); spinnerImgEng2.setModel(new javax.swing.SpinnerNumberModel(1000.0d, 90.0d, 2000.0d, 1.0d)); javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10); jPanel10.setLayout(jPanel10Layout); jPanel10Layout.setHorizontalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addGap(14, 14, 14) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel19, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel17, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerImgExp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerImgAvg2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerImgEng2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel10Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerImgAvg2, spinnerImgEng2, spinnerImgExp2}); jPanel10Layout.setVerticalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel12) .addComponent(spinnerImgExp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel17) .addComponent(spinnerImgAvg2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel19) .addComponent(spinnerImgEng2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jLabel21.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel21.setText("Method:"); spinnerImgMeasurements.setModel(new javax.swing.SpinnerNumberModel(1, 1, 10000, 1)); comboImgMethod.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboImgMethod.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboImgMethodActionPerformed(evt); } }); jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel20.setText("Measurements:"); checkImgAutosave.setSelected(true); checkImgAutosave.setText("Autosave"); labelSwitching.setText("Switching:"); comboSwitch.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); deviceValuePanel11.setDeviceName("id1_pol"); jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel22.setText("Mode ID1:"); jLabel28.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel28.setText("Mode ID2:"); deviceValuePanel12.setDeviceName("id2_pol"); javax.swing.GroupLayout panelImgControlsLayout = new javax.swing.GroupLayout(panelImgControls); panelImgControls.setLayout(panelImgControlsLayout); panelImgControlsLayout.setHorizontalGroup( panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelImgControlsLayout.createSequentialGroup() .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel28, javax.swing.GroupLayout.DEFAULT_SIZE, 99, Short.MAX_VALUE) .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addGroup(panelImgControlsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(labelSwitching) .addComponent(jLabel21) .addComponent(jLabel20))) .addGroup(panelImgControlsLayout.createSequentialGroup() .addGap(22, 22, 22) .addComponent(jLabel22, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(spinnerImgMeasurements) .addComponent(comboImgMethod, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(checkImgAutosave, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(comboSwitch, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(deviceValuePanel11, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(deviceValuePanel12, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addGap(18, 20, Short.MAX_VALUE) .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(18, 21, Short.MAX_VALUE) .addComponent(jPanel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); panelImgControlsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {checkImgAutosave, comboImgMethod, comboSwitch, spinnerImgMeasurements}); panelImgControlsLayout.setVerticalGroup( panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelImgControlsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(panelImgControlsLayout.createSequentialGroup() .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(comboImgMethod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel21)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel20) .addComponent(spinnerImgMeasurements, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(6, 6, 6) .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelSwitching) .addComponent(comboSwitch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(checkImgAutosave)) .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(24, 24, 24) .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel22) .addComponent(deviceValuePanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel28) .addComponent(deviceValuePanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(34, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(buttonImgStart) .addGap(76, 76, 76) .addComponent(buttonImgAbort) .addGap(0, 0, Short.MAX_VALUE)) .addComponent(panelImgControls, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonImgAbort, buttonImgStart}); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(panelImgControls, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 250, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonImgStart) .addComponent(buttonImgAbort)) .addContainerGap()) ); jTabbedPane1.addTab("2-Images", jPanel2); jLabel23.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel23.setText("Exposure(s):"); jLabel24.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel24.setText("Average:"); checkSpecSaveImages.setSelected(true); checkSpecSaveImages.setText("Save images"); spinnerSpecAvg.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1)); checkSpecSwitchPol.setText("Switch pol after scan"); spinnerSpecScans.setModel(new javax.swing.SpinnerNumberModel(1, 1, 10000, 1)); jLabel25.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel25.setText("Scans:"); spinnerSpecExp.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 3600.0d, 1.0d)); checkSpecWithI0.setSelected(true); checkSpecWithI0.setText("With I0"); checkSpecSaveSpectrum.setSelected(true); checkSpecSaveSpectrum.setText("Save spectrum"); jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Ranges")); tableRegions.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Start", "End", "Step" } ) { Class[] types = new Class [] { java.lang.Double.class, java.lang.Double.class, java.lang.Double.class }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } }); jScrollPane2.setViewportView(tableRegions); buttonAdd.setText("Add"); buttonAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonAddActionPerformed(evt); } }); buttonRemove.setText("Remove"); buttonRemove.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonRemoveActionPerformed(evt); } }); 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) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(buttonAdd) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 88, Short.MAX_VALUE) .addComponent(buttonRemove))) .addContainerGap()) ); jPanel4Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonAdd, buttonRemove}); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonAdd) .addComponent(buttonRemove)) .addContainerGap()) ); javax.swing.GroupLayout panelSpectrumLayout = new javax.swing.GroupLayout(panelSpectrum); panelSpectrum.setLayout(panelSpectrumLayout); panelSpectrumLayout.setHorizontalGroup( panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelSpectrumLayout.createSequentialGroup() .addContainerGap() .addGroup(panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel24) .addComponent(jLabel23) .addComponent(jLabel25)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(checkSpecSwitchPol) .addComponent(checkSpecWithI0) .addComponent(checkSpecSaveImages) .addComponent(checkSpecSaveSpectrum) .addComponent(spinnerSpecScans, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerSpecExp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerSpecAvg, 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(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); panelSpectrumLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerSpecAvg, spinnerSpecExp, spinnerSpecScans}); panelSpectrumLayout.setVerticalGroup( panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelSpectrumLayout.createSequentialGroup() .addContainerGap() .addGroup(panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelSpectrumLayout.createSequentialGroup() .addComponent(checkSpecSaveSpectrum) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkSpecSaveImages) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(checkSpecWithI0) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel23) .addComponent(spinnerSpecExp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel24) .addComponent(spinnerSpecAvg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(panelSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel25) .addComponent(spinnerSpecScans, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, 127, Short.MAX_VALUE) .addComponent(checkSpecSwitchPol) .addGap(0, 122, Short.MAX_VALUE)) .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); buttonSpecStart.setText("Start"); buttonSpecStart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonSpecStartActionPerformed(evt); } }); buttonSpecAbort.setText("Abort"); buttonSpecAbort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonSpecAbortActionPerformed(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) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addGap(0, 226, Short.MAX_VALUE) .addComponent(buttonSpecStart) .addGap(76, 76, 76) .addComponent(buttonSpecAbort) .addGap(0, 226, Short.MAX_VALUE)) .addComponent(panelSpectrum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonSpecAbort, buttonSpecStart}); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(panelSpectrum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(33, 33, 33) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonSpecStart) .addComponent(buttonSpecAbort)) .addContainerGap()) ); jTabbedPane1.addTab("Absorption Spectrum", jPanel3); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 691, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 560, Short.MAX_VALUE) .addGap(0, 0, 0)) ); }// //GEN-END:initComponents private void buttonSetPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSetPathActionPerformed try { getContext().getConfig().dataPath = textDataPath.getText(); getContext().getConfig().save(); updateControls(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonSetPathActionPerformed private void textDataPathKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textDataPathKeyTyped }//GEN-LAST:event_textDataPathKeyTyped private void textDataPathKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textDataPathKeyReleased updateControls(); }//GEN-LAST:event_textDataPathKeyReleased private void buttonImgStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonImgStartActionPerformed try { run2Images(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonImgStartActionPerformed private void comboImgMethodActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboImgMethodActionPerformed updateControls(); }//GEN-LAST:event_comboImgMethodActionPerformed private void buttonSpecStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSpecStartActionPerformed try { runAbsSpectrum(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonSpecStartActionPerformed private void buttonImgAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonImgAbortActionPerformed try { getContext().abort(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonImgAbortActionPerformed private void buttonRoiRemoveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRoiRemoveActionPerformed try { removeRoi(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonRoiRemoveActionPerformed private void buttonRoiAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRoiAddActionPerformed try { addRoi(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonRoiAddActionPerformed private void buttonSpecAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSpecAbortActionPerformed try { getContext().abort(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonSpecAbortActionPerformed private void buttonTriggerDetectorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonTriggerDetectorActionPerformed try { this.evalAsync("trigger_eiger()"); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonTriggerDetectorActionPerformed private void buttonAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAddActionPerformed modelRegions.addRow(new Object[]{Double.NaN, Double.NaN, Double.NaN}); }//GEN-LAST:event_buttonAddActionPerformed private void buttonRemoveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRemoveActionPerformed int row = tableRegions.getSelectedRow(); if (row>=0){ modelRegions.removeRow(row); } }//GEN-LAST:event_buttonRemoveActionPerformed private void buttonApplyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonApplyActionPerformed try { applyBeamline(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonApplyActionPerformed private void spinnerSeqStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerSeqStateChanged updateControls(); }//GEN-LAST:event_spinnerSeqStateChanged private void buttonUndoSeqActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonUndoSeqActionPerformed try { spinnerSeq.setValue(getContext().getFileSequentialNumber()); updateControls(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonUndoSeqActionPerformed private void buttonSetSeqActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSetSeqActionPerformed try { getContext().setFileSequentialNumber(((Number) spinnerSeq.getValue()).intValue()); updateControls(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonSetSeqActionPerformed private void buttonUndoPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonUndoPathActionPerformed try { textDataPath.setText(getContext().getConfig().dataPath); updateControls(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonUndoPathActionPerformed private void buttonDefaultPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDefaultPathActionPerformed textDataPath.setText(DEFAULT_PATH); updateControls(); }//GEN-LAST:event_buttonDefaultPathActionPerformed private void buttonSetNormActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSetNormActionPerformed try{ JFileChooser chooser = new JFileChooser(getContext().getSetup().expandPath(getContext().getConfig().dataPath)); FileNameExtensionFilter filter = new FileNameExtensionFilter("Image File", "tif", "tiff"); chooser.setFileFilter(filter); chooser.setFileHidingEnabled(true); int rVal = chooser.showOpenDialog(this); if (rVal == JFileChooser.APPROVE_OPTION) { textNorm.setText(chooser.getSelectedFile().getAbsoluteFile().toString()); this.setSetting("NORM_FILE", textNorm.getText()); } } catch (Exception ex){ showException (ex); } }//GEN-LAST:event_buttonSetNormActionPerformed private void textNormKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textNormKeyReleased // TODO add your handling code here: }//GEN-LAST:event_textNormKeyReleased private void textNormKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textNormKeyTyped // TODO add your handling code here: }//GEN-LAST:event_textNormKeyTyped private void buttonShowDetectorPanelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonShowDetectorPanelActionPerformed try{ this.showDevicePanel("eiger"); } catch (Exception ex){ showException (ex); } }//GEN-LAST:event_buttonShowDetectorPanelActionPerformed private void buttonShowNormActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonShowNormActionPerformed try{ this.enableNorm( buttonShowNorm.isSelected()); buttonShowNorm.setText(buttonShowNorm.isSelected() ? "Hide" : "Show"); } catch (Exception ex){ showException (ex); } }//GEN-LAST:event_buttonShowNormActionPerformed private void checkAutoValveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkAutoValveActionPerformed try{ setSetting("AUTO_SWITCH_VALVE", checkAutoValve.isSelected()); } catch (Exception ex){ showException (ex); } }//GEN-LAST:event_checkAutoValveActionPerformed private void textSelectOutliersMaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textSelectOutliersMaskActionPerformed try{ JFileChooser chooser = new JFileChooser(getContext().getSetup().expandPath(getContext().getConfig().dataPath)); FileNameExtensionFilter filter = new FileNameExtensionFilter("Image File", "tif", "tiff"); chooser.setFileFilter(filter); chooser.setFileHidingEnabled(true); int rVal = chooser.showOpenDialog(this); if (rVal == JFileChooser.APPROVE_OPTION) { textOutliersMask.setText(chooser.getSelectedFile().getAbsoluteFile().toString()); this.setSetting("OUTLIERS_MASK_FILE", textOutliersMask.getText()); } } catch (Exception ex){ showException (ex); } }//GEN-LAST:event_textSelectOutliersMaskActionPerformed private void textOutliersMaskKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textOutliersMaskKeyTyped // TODO add your handling code here: }//GEN-LAST:event_textOutliersMaskKeyTyped private void textOutliersMaskKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textOutliersMaskKeyReleased // TODO add your handling code here: }//GEN-LAST:event_textOutliersMaskKeyReleased private void textClearOutliersMaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textClearOutliersMaskActionPerformed try{ setSetting("OUTLIERS_MASK_FILE", null); textOutliersMask.setText(""); } catch (Exception ex){ showException (ex); } }//GEN-LAST:event_textClearOutliersMaskActionPerformed private void spinnerOutliersThresholdStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerOutliersThresholdStateChanged try{ setSetting("OUTLIERS_THRESHOLD", spinnerOutliersThreshold.getValue()); } catch (Exception ex){ showException (ex); } }//GEN-LAST:event_spinnerOutliersThresholdStateChanged private void comboPol1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboPol1ActionPerformed updateControls(); }//GEN-LAST:event_comboPol1ActionPerformed private void comboPol2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboPol2ActionPerformed updateControls(); }//GEN-LAST:event_comboPol2ActionPerformed private void comboIDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboIDActionPerformed updateControls(); }//GEN-LAST:event_comboIDActionPerformed private void buttonMeasurementsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonMeasurementsActionPerformed try{ evalAsync(buttonMeasurements.isSelected() ? "start_measurements()" : "stop_measurements()"); } catch (Exception ex){ showException (ex); } }//GEN-LAST:event_buttonMeasurementsActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAdd; private javax.swing.JButton buttonApply; private javax.swing.JButton buttonDefaultPath; private javax.swing.JButton buttonImgAbort; private javax.swing.JButton buttonImgStart; private javax.swing.JToggleButton buttonMeasurements; private javax.swing.JButton buttonRemove; private javax.swing.JButton buttonRoiAdd; private javax.swing.JButton buttonRoiRemove; private javax.swing.JButton buttonSetNorm; private javax.swing.JButton buttonSetPath; private javax.swing.JButton buttonSetSeq; private javax.swing.JButton buttonShowDetectorPanel; private javax.swing.JToggleButton buttonShowNorm; private javax.swing.JButton buttonSpecAbort; private javax.swing.JButton buttonSpecStart; private javax.swing.JButton buttonTriggerDetector; private javax.swing.JButton buttonUndoPath; private javax.swing.JButton buttonUndoSeq; private javax.swing.JCheckBox checkAutoValve; private javax.swing.JCheckBox checkImgAutosave; private javax.swing.JCheckBox checkSpecSaveImages; private javax.swing.JCheckBox checkSpecSaveSpectrum; private javax.swing.JCheckBox checkSpecSwitchPol; private javax.swing.JCheckBox checkSpecWithI0; private javax.swing.JComboBox comboID; private javax.swing.JComboBox comboImgMethod; private javax.swing.JComboBox comboPol1; private javax.swing.JComboBox comboPol2; private javax.swing.JComboBox comboSwitch; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel1; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel10; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel11; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel12; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel2; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel3; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel4; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel5; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel6; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel7; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel8; private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel9; private javax.swing.JLabel jLabel1; 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 jLabel17; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel25; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel27; private javax.swing.JLabel jLabel28; private javax.swing.JLabel jLabel29; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel30; private javax.swing.JLabel jLabel31; 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 jPanel1; private javax.swing.JPanel jPanel10; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel7; private javax.swing.JPanel jPanel8; private javax.swing.JPanel jPanel9; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JLabel labelSwitching; private javax.swing.JPanel panelBeamline; private javax.swing.JPanel panelDataFile; private javax.swing.JPanel panelImgControls; private javax.swing.JPanel panelNorm; private javax.swing.JPanel panelNorm1; private javax.swing.JPanel panelRoi; private javax.swing.JPanel panelSpectrum; private ch.psi.pshell.imaging.Renderer rendererRoi; private javax.swing.JSpinner spinnerAlp1; private javax.swing.JSpinner spinnerAlp2; private javax.swing.JSpinner spinnerHar1; private javax.swing.JSpinner spinnerHar2; private javax.swing.JSpinner spinnerImgAvg1; private javax.swing.JSpinner spinnerImgAvg2; private javax.swing.JSpinner spinnerImgEng; private javax.swing.JSpinner spinnerImgEng1; private javax.swing.JSpinner spinnerImgEng2; private javax.swing.JSpinner spinnerImgExp1; private javax.swing.JSpinner spinnerImgExp2; private javax.swing.JSpinner spinnerImgMeasurements; private javax.swing.JSpinner spinnerOff1; private javax.swing.JSpinner spinnerOff2; private javax.swing.JSpinner spinnerOutliersThreshold; private javax.swing.JSpinner spinnerSeq; private javax.swing.JSpinner spinnerSpecAvg; private javax.swing.JSpinner spinnerSpecExp; private javax.swing.JSpinner spinnerSpecScans; private javax.swing.JTable tableRegions; private javax.swing.JTable tableRoi; private javax.swing.JButton textClearOutliersMask; private javax.swing.JTextField textDataPath; private javax.swing.JTextField textNorm; private javax.swing.JTextField textOutliersMask; private javax.swing.JButton textSelectOutliersMask; // End of variables declaration//GEN-END:variables }