import ch.psi.pshell.device.Device; import ch.psi.pshell.device.DeviceAdapter; import ch.psi.pshell.device.DeviceBase.DeviceInvalidParameterException; import ch.psi.pshell.device.DeviceListener; import ch.psi.pshell.plot.LinePlotSeries; import ch.psi.pshell.plot.Plot; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; import java.awt.Component; import java.io.IOException; import java.util.logging.Level; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.SwingUtilities; import ch.psi.pshell.swing.*; /** * */ public final class ScientaPanel extends DevicePanel { LinePlotSeries spectrumSeries; public ScientaPanel() { initComponents(); spectrumSeries = new LinePlotSeries("intensity"); plot.getAxis(Plot.AxisId.X).setLabel("Channels"); plot.getAxis(Plot.AxisId.Y).setLabel("Intensity"); plot.addSeries(spectrumSeries); plot.setUpdatesEnabled(false); //plot.getAxis(Plot.AxisId.X).setRange(-0.1, 50000.1); //plot.getAxis(Plot.AxisId.Y).setRange(-0.6, 0.6); plot.setQuality(Plot.Quality.Low); ValueSelection.ValueSelectionListener valueListener = (ValueSelection origin, double value, boolean editing) -> { if (editing) { try { if (origin == valueLow) { getDevice().getLowEnergy().writeAsync(value); } else if (origin == valueCenter) { getDevice().getCenterEnergy().writeAsync(value); } else if (origin == valueHigh) { getDevice().getHighEnergy().writeAsync(value); } else if (origin == valueTime) { int val_ms = (int) (((Double) value) * 1000); if ((val_ms % 40) != 0){ throw new IOException("Value must be multiple of 40ms"); } getDevice().getStepTime().writeAsync(value); } else if (origin == valueSize) { getDevice().getStepSize().writeAsync(value); } else if (origin == valueSlices) { getDevice().getSlices().writeAsync((int) value); } else if (origin == valueIterations) { getDevice().setIterations((int) value); }/*else if (origin == valueFrames) { getDevice().getFrames().writeAsync((int) value); }*/ } catch (Exception ex) { showException(ex); } } }; for (Component vs : SwingUtils.getComponentsByType(this, ValueSelection.class)) { if (((ValueSelection) vs).isEnabled()) { ((ValueSelection) vs).addListener(valueListener); } } SwingUtils.setEnumCombo(comboLens, Scienta.LensMode.class); SwingUtils.setEnumCombo(comboElement, Scienta.ElementSet.class); SwingUtils.setEnumCombo(comboAcquisition, Scienta.AcquisitionMode.class); SwingUtils.setEnumCombo(comboEnergy, Scienta.EnergyMode.class); SwingUtils.setEnumCombo(comboDetector, Scienta.DetectorMode.class); DefaultComboBoxModel model = new DefaultComboBoxModel(); for (Integer energy : Scienta.PASS_ENERGY_VALUES) { model.addElement(energy); } comboPass.setModel(model); } public boolean getShowCameraPanel() { return cameraPanel.isVisible(); } public void setShowCameraPanel(boolean value) { cameraPanel.setVisible(value); } public boolean getShowSpectrum() { return plotSpectrum.isVisible(); } public void setShowSpectrum(boolean value) { plotSpectrum.setVisible(value); } @Override public Scienta getDevice() { return (Scienta) super.getDevice(); } @Override public void setDevice(Device device) { if (getDevice() != null) { getDevice().getCurrentChannel().removeListener(progressListener); } super.setDevice(device); cameraPanel.setDevice(device); if (device == null) { stopTimer(); } else { getDevice().getCurrentChannel().addListener(progressListener); getDevice().getSpectrum().addListener(spectrumListener); //cameraPanel.startTimer(3000, 0); startTimer(3000, 0); } } DeviceListener progressListener = new DeviceAdapter() { @Override public void onValueChanged(final Device device, final Object value, final Object former) { SwingUtilities.invokeLater(() -> { valueCurrent.setValue((Double) value); progress.setValue((int) (getDevice().getProgress() * 1000)); }); } }; DeviceListener spectrumListener = new DeviceAdapter() { @Override public void onValueChanged(final Device device, final Object value, final Object former) { SwingUtilities.invokeLater(() -> { updateSpectrum(); }); } }; @Override protected void onHide() { super.onHide(); } @Override protected void onTimer() { startBackgroundUpdate(); } //Callbacks @Override protected void onDeviceStateChanged(State state, State former) { } @Override protected void onDeviceValueChanged(Object state, Object former) { } public class DeviceData { double[] spectrum; Scienta.LensMode lensMode; Scienta.ElementSet elementSet; Scienta.AcquisitionMode acquisitionMode; Scienta.EnergyMode energyMode; Scienta.DetectorMode detectorMode; Integer pass; double low; double center; double high; double width; //int frames; double time; double size; int slices; int iterations; int current; int total; } @Override protected DeviceData doBackgroundUpdate() throws IOException, InterruptedException { DeviceData dd = new DeviceData(); //read-once dd.spectrum = getDevice().getSpectrum().getValue(); try{ dd.lensMode = getDevice().getLensMode(); } catch (DeviceInvalidParameterException ex){ dd.lensMode = null; } try{ dd.elementSet = getDevice().getElementSet(); } catch (DeviceInvalidParameterException ex){ dd.elementSet = null; } try{ dd.acquisitionMode = getDevice().getAcquisitionMode(); } catch (DeviceInvalidParameterException ex){ dd.acquisitionMode = null; } try{ dd.energyMode = getDevice().getEnergyMode(); } catch (DeviceInvalidParameterException ex){ dd.energyMode = null; } try{ dd.detectorMode = getDevice().getDetectorMode(); } catch (DeviceInvalidParameterException ex){ dd.detectorMode = null; } try{ dd.pass = getDevice().getPassEnergy(); } catch (DeviceInvalidParameterException ex){ dd.pass = null; } dd.low = getDevice().getLowEnergy().getValue(); dd.center = getDevice().getCenterEnergy().getValue(); dd.high = getDevice().getHighEnergy().getValue(); dd.width = getDevice().getEnergyWidth().getValue(); //dd.frames = getDevice().getFrames().getValue(); dd.time = getDevice().getStepTime().getValue(); dd.size = getDevice().getStepSize().getValue(); dd.slices = getDevice().getSlices().getValue(); dd.current = getDevice().getCurrentChannel().getValue().intValue(); dd.total = getDevice().getTotalChannels().getValue().intValue(); dd.iterations = getDevice().getIterations(); return dd; } void updateValueField(ValueSelection field, double value) { try { field.setValue(value); } catch (Exception ex) { getLogger().log(Level.FINE, null, ex); } } void updateComboField(JComboBox field, Object value) { try { if (field.getSelectedItem() != value) { field.setSelectedItem(value); } } catch (Exception ex) { getLogger().log(Level.FINE, null, ex); } } @Override protected void onBackgroundUpdateFinished(Object data) { DeviceData dd = (DeviceData) data; updateSpectrum(); updateValueField(valueLow, dd.low); updateValueField(valueCenter, dd.center); updateValueField(valueHigh, dd.high); updateValueField(valueWidth, dd.width); //updateValue(valueFrames, dd.frames); updateValueField(valueTime, dd.time); updateValueField(valueSize, dd.size); updateValueField(valueSlices, dd.slices); updateValueField(valueIterations, dd.iterations); updateValueField(valueTotal, dd.total); updateValueField(valueCurrent, dd.current); updateComboField(comboLens, dd.lensMode); updateComboField(comboAcquisition, dd.acquisitionMode); updateComboField(comboDetector, dd.detectorMode); updateComboField(comboEnergy, dd.energyMode); updateComboField(comboElement, dd.elementSet); updateComboField(comboPass, dd.pass); try { progress.setValue((int) (getDevice().getProgress() * 1000)); } catch (Exception ex) { getLogger().log(Level.FINE, null, ex); } } void updateSpectrum() { try { double[] xSpectrum = getDevice().getSpectrumX(); if (xSpectrum != null) { spectrumSeries.setData(xSpectrum, getDevice().getSpectrum().take()); plot.updateSeries(spectrumSeries); return; } } catch (Exception ex) { getLogger().log(Level.FINE, null, ex); } spectrumSeries.clear(); } /** * This method is called from within the constructor to initialize the form. WARNING: Do NOT * modify this code. The content of this method is always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { cameraPanel = new ch.psi.pshell.swing.CameraPanel(); scientaPanel = new javax.swing.JPanel(); jPanel5 = new javax.swing.JPanel(); progress = new javax.swing.JProgressBar(); jLabel6 = new javax.swing.JLabel(); valueCurrent = new ch.psi.pshell.swing.ValueSelection(); jLabel16 = new javax.swing.JLabel(); valueTotal = new ch.psi.pshell.swing.ValueSelection(); plotSpectrum = new javax.swing.JPanel(); plot = new ch.psi.pshell.plot.LinePlotJFree(); jPanel6 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); comboLens = new javax.swing.JComboBox(); jLabel2 = new javax.swing.JLabel(); comboAcquisition = new javax.swing.JComboBox(); jLabel3 = new javax.swing.JLabel(); comboEnergy = new javax.swing.JComboBox(); jLabel4 = new javax.swing.JLabel(); comboDetector = new javax.swing.JComboBox(); jLabel5 = new javax.swing.JLabel(); comboElement = new javax.swing.JComboBox(); jPanel4 = new javax.swing.JPanel(); jLabel11 = new javax.swing.JLabel(); comboPass = new javax.swing.JComboBox(); jLabel12 = new javax.swing.JLabel(); valueLow = new ch.psi.pshell.swing.ValueSelection(); jLabel13 = new javax.swing.JLabel(); valueCenter = new ch.psi.pshell.swing.ValueSelection(); jLabel14 = new javax.swing.JLabel(); valueHigh = new ch.psi.pshell.swing.ValueSelection(); jLabel15 = new javax.swing.JLabel(); valueWidth = new ch.psi.pshell.swing.ValueSelection(); jPanel2 = new javax.swing.JPanel(); jLabel8 = new javax.swing.JLabel(); valueTime = new ch.psi.pshell.swing.ValueSelection(); jLabel9 = new javax.swing.JLabel(); valueSize = new ch.psi.pshell.swing.ValueSelection(); jLabel10 = new javax.swing.JLabel(); valueSlices = new ch.psi.pshell.swing.ValueSelection(); jLabel17 = new javax.swing.JLabel(); valueIterations = new ch.psi.pshell.swing.ValueSelection(); buttonZeroSupplies = new javax.swing.JButton(); cameraPanel.setBorder(null); jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Progress")); progress.setMaximum(1000); jLabel6.setText("Current point:"); valueCurrent.setDecimals(0); valueCurrent.setEnabled(false); valueCurrent.setMaxValue(100000.0); valueCurrent.setMinValue(0.0); valueCurrent.setShowButtons(false); jLabel16.setText("Total:"); valueTotal.setDecimals(0); valueTotal.setEnabled(false); valueTotal.setMaxValue(100000.0); valueTotal.setMinValue(0.0); valueTotal.setShowButtons(false); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(valueCurrent, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jLabel16) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(valueTotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(progress, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addContainerGap()) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup() .addGap(4, 4, 4) .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel6) .addComponent(valueCurrent, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(valueTotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(progress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel16)) .addGap(4, 4, 4)) ); plotSpectrum.setBorder(javax.swing.BorderFactory.createTitledBorder("Spectrum")); plot.setTitle(""); javax.swing.GroupLayout plotSpectrumLayout = new javax.swing.GroupLayout(plotSpectrum); plotSpectrum.setLayout(plotSpectrumLayout); plotSpectrumLayout.setHorizontalGroup( plotSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(plotSpectrumLayout.createSequentialGroup() .addGap(0, 0, 0) .addComponent(plot, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) ); plotSpectrumLayout.setVerticalGroup( plotSpectrumLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(plotSpectrumLayout.createSequentialGroup() .addGap(0, 0, 0) .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(0, 0, 0)) ); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Modes")); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel1.setText("Lens:"); comboLens.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboLens.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboLensActionPerformed(evt); } }); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel2.setText("Acquisition:"); comboAcquisition.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboAcquisition.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboAcquisitionActionPerformed(evt); } }); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel3.setText("Energy:"); comboEnergy.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboEnergy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboEnergyActionPerformed(evt); } }); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel4.setText("Detector:"); comboDetector.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboDetector.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboDetectorActionPerformed(evt); } }); jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel5.setText("Element:"); comboElement.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboElement.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboElementActionPerformed(evt); } }); 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(jLabel5) .addComponent(jLabel4) .addComponent(jLabel3) .addComponent(jLabel2) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(comboLens, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboAcquisition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboElement, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboDetector, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2, jLabel3, jLabel4, jLabel5}); jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboAcquisition, comboDetector, comboElement, comboEnergy, comboLens}); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(comboLens, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(comboAcquisition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(comboEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(comboDetector, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5) .addComponent(comboElement, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(17, Short.MAX_VALUE)) ); jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Energy")); jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel11.setText("Pass:"); comboPass.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "2", "5", "10", "20", "50", "100", "200" })); comboPass.setToolTipText(""); comboPass.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { comboPassActionPerformed(evt); } }); jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel12.setText("Low:"); valueLow.setDecimals(2); valueLow.setMaxValue(2000.0); valueLow.setMinValue(0.0); valueLow.setShowButtons(false); jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel13.setText("Center:"); valueCenter.setDecimals(2); valueCenter.setMaxValue(2000.0); valueCenter.setMinValue(0.0); valueCenter.setShowButtons(false); jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel14.setText("High:"); valueHigh.setDecimals(2); valueHigh.setMaxValue(2000.0); valueHigh.setMinValue(0.0); valueHigh.setShowButtons(false); jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel15.setText("Width:"); valueWidth.setDecimals(2); valueWidth.setEnabled(false); valueWidth.setMaxValue(2000.0); valueWidth.setMinValue(0.0); valueWidth.setShowButtons(false); 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(jLabel15) .addComponent(jLabel14) .addComponent(jLabel13) .addComponent(jLabel12) .addComponent(jLabel11)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(valueWidth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(valueHigh, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(valueCenter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboPass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(valueLow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel4Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboPass, valueCenter, valueHigh, valueLow, valueWidth}); jPanel4Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel11, jLabel12, jLabel13, jLabel14, jLabel15}); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel11) .addComponent(comboPass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel12) .addComponent(valueLow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel13) .addComponent(valueCenter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel14) .addComponent(valueHigh, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel15) .addComponent(valueWidth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(17, Short.MAX_VALUE)) ); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Step")); jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel8.setText("Time:"); valueTime.setDecimals(2); valueTime.setMaxValue(1000.0); valueTime.setMinValue(0.0); valueTime.setShowButtons(false); jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel9.setText("Size:"); valueSize.setDecimals(2); valueSize.setMaxValue(1000.0); valueSize.setMinValue(0.0); valueSize.setShowButtons(false); jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel10.setText("Slices:"); valueSlices.setDecimals(0); valueSlices.setMaxValue(1000.0); valueSlices.setMinValue(0.0); valueSlices.setShowButtons(false); jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel17.setText("Iter:"); valueIterations.setDecimals(0); valueIterations.setMaxValue(1000.0); valueIterations.setMinValue(0.0); valueIterations.setShowButtons(false); 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() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel9) .addComponent(jLabel8)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(valueSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(valueTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addComponent(jLabel10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(valueSlices, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addComponent(jLabel17) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(valueIterations, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) .addContainerGap()) ); jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel10, jLabel17, jLabel8, jLabel9}); jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {valueIterations, valueSize, valueSlices, valueTime}); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel10) .addComponent(valueSlices, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel8) .addComponent(valueTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel9) .addComponent(valueSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel17) .addComponent(valueIterations, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); buttonZeroSupplies.setText("Zero Supplies"); buttonZeroSupplies.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonZeroSuppliesActionPerformed(evt); } }); javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addGap(0, 0, 0) .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(buttonZeroSupplies, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()))) ); jPanel6Layout.setVerticalGroup( jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addGap(0, 0, 0) .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonZeroSupplies))) .addGap(0, 0, 0)) ); jPanel6Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jPanel1, jPanel4}); javax.swing.GroupLayout scientaPanelLayout = new javax.swing.GroupLayout(scientaPanel); scientaPanel.setLayout(scientaPanelLayout); scientaPanelLayout.setHorizontalGroup( scientaPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(scientaPanelLayout.createSequentialGroup() .addGroup(scientaPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(plotSpectrum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 0, 0)) ); scientaPanelLayout.setVerticalGroup( scientaPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(scientaPanelLayout.createSequentialGroup() .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0) .addComponent(plotSpectrum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(0, 0, 0)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(cameraPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(scientaPanel, 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() .addComponent(cameraPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) .addComponent(scientaPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); }// //GEN-END:initComponents private void comboLensActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboLensActionPerformed try { if (!isBackgroundUpdate()) { Scienta.LensMode mode = (Scienta.LensMode) comboLens.getSelectedItem(); if (mode != null) { getDevice().setLensMode(mode); } } } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_comboLensActionPerformed private void comboAcquisitionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboAcquisitionActionPerformed try { if (!isBackgroundUpdate()) { Scienta.AcquisitionMode mode = (Scienta.AcquisitionMode) comboAcquisition.getSelectedItem(); if (mode != null) { getDevice().setAcquisitionMode(mode); } } } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_comboAcquisitionActionPerformed private void comboEnergyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboEnergyActionPerformed try { if (!isBackgroundUpdate()) { Scienta.EnergyMode mode = (Scienta.EnergyMode) comboEnergy.getSelectedItem(); if (mode != null) { getDevice().setEnergyMode(mode); } } } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_comboEnergyActionPerformed private void comboDetectorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboDetectorActionPerformed try { if (!isBackgroundUpdate()) { Scienta.DetectorMode mode = (Scienta.DetectorMode) comboDetector.getSelectedItem(); if (mode != null) { getDevice().setDetectorMode(mode); } } } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_comboDetectorActionPerformed private void comboElementActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboElementActionPerformed try { if (!isBackgroundUpdate()) { Scienta.ElementSet mode = (Scienta.ElementSet) comboElement.getSelectedItem(); if (mode != null) { getDevice().setElementSet(mode); } } } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_comboElementActionPerformed private void comboPassActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboPassActionPerformed try { if (!isBackgroundUpdate()) { int val = (int) comboPass.getSelectedItem(); getDevice().setPassEnergy(val); } } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_comboPassActionPerformed private void buttonZeroSuppliesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZeroSuppliesActionPerformed try { getDevice().zeroSupplies(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonZeroSuppliesActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonZeroSupplies; private ch.psi.pshell.swing.CameraPanel cameraPanel; private javax.swing.JComboBox comboAcquisition; private javax.swing.JComboBox comboDetector; private javax.swing.JComboBox comboElement; private javax.swing.JComboBox comboEnergy; private javax.swing.JComboBox comboLens; private javax.swing.JComboBox comboPass; 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 jLabel17; 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 jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private ch.psi.pshell.plot.LinePlotJFree plot; private javax.swing.JPanel plotSpectrum; private javax.swing.JProgressBar progress; private javax.swing.JPanel scientaPanel; private ch.psi.pshell.swing.ValueSelection valueCenter; private ch.psi.pshell.swing.ValueSelection valueCurrent; private ch.psi.pshell.swing.ValueSelection valueHigh; private ch.psi.pshell.swing.ValueSelection valueIterations; private ch.psi.pshell.swing.ValueSelection valueLow; private ch.psi.pshell.swing.ValueSelection valueSize; private ch.psi.pshell.swing.ValueSelection valueSlices; private ch.psi.pshell.swing.ValueSelection valueTime; private ch.psi.pshell.swing.ValueSelection valueTotal; private ch.psi.pshell.swing.ValueSelection valueWidth; // End of variables declaration//GEN-END:variables }