/* * Copyright (c) 2014-2017 Paul Scherrer Institute. All rights reserved. */ import ch.psi.pshell.device.Averager; import ch.psi.pshell.device.DescStatsDouble; import ch.psi.pshell.plot.LinePlotErrorSeries; import ch.psi.pshell.plot.LinePlot; import ch.psi.pshell.plot.LinePlotSeries; import ch.psi.pshell.plot.Plot; import ch.psi.pshell.scan.Scan; import ch.psi.pshell.scan.ScanListener; import ch.psi.pshell.scan.ScanRecord; import ch.psi.pshell.framework.Panel; import ch.psi.pshell.utils.Convert; import ch.psi.pshell.utils.State; import ch.psi.pshell.swing.SwingUtils; import java.awt.Color; import java.awt.Component; import java.util.ArrayList; import java.util.List; import javax.swing.JSpinner; /** * */ public class SchottkyScan extends Panel { Double rfPhase; Double beamPhase; public SchottkyScan() { initComponents(); setPersistedComponents(SwingUtils.getComponentsByType(panelPars, JSpinner.class)); plot.setStyle(LinePlot.Style.ErrorY); } //Overridable callbacks @Override public void onInitialize(int runCount) { } @Override public void onStateChange(State state, State former) { buttonAbort.setEnabled(state.isProcessing()); buttonStart.setEnabled(state == State.Ready); for (Component c : SwingUtils.getComponentsByType(panelPars, JSpinner.class)){ c.setEnabled(buttonStart.isEnabled()); } } @Override public void onExecutedFile(String fileName, Object result) { } //Callback to perform update - in event thread @Override protected void doUpdate() { } @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { buttonStart = new javax.swing.JButton(); buttonAbort = new javax.swing.JButton(); panelPars = new javax.swing.JPanel(); spinnerStep = new javax.swing.JSpinner(); labelLatency = new javax.swing.JLabel(); labelStart = new javax.swing.JLabel(); spinnerStop = new javax.swing.JSpinner(); labelStep = new javax.swing.JLabel(); labelStop = new javax.swing.JLabel(); spinnerLatency = new javax.swing.JSpinner(); spinnerSamples = new javax.swing.JSpinner(); labelSamples = new javax.swing.JLabel(); spinnerStart = new javax.swing.JSpinner(); labelLatency1 = new javax.swing.JLabel(); spinnerBunch = new javax.swing.JSpinner(); plot = new ch.psi.pshell.plot.LinePlotJFree(); buttonStart.setText("Start"); buttonStart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonStartActionPerformed(evt); } }); buttonAbort.setText("Abort"); buttonAbort.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonAbortActionPerformed(evt); } }); panelPars.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters (beam phase)")); spinnerStep.setModel(new javax.swing.SpinnerNumberModel(5.0d, 0.1d, 20.0d, 0.1d)); labelLatency.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); labelLatency.setText("Latency:"); labelStart.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); labelStart.setText("Start:"); spinnerStop.setModel(new javax.swing.SpinnerNumberModel(150.0d, -360.0d, 360.0d, 1.0d)); labelStep.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); labelStep.setText("Step size:"); labelStop.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); labelStop.setText("Stop:"); spinnerLatency.setModel(new javax.swing.SpinnerNumberModel(0.15d, 0.0d, 5.0d, 0.01d)); spinnerSamples.setModel(new javax.swing.SpinnerNumberModel(1, 1, 50, 1)); labelSamples.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); labelSamples.setText("Nb Samples:"); spinnerStart.setModel(new javax.swing.SpinnerNumberModel(-10.0d, -360.0d, 360.0d, 1.0d)); labelLatency1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); labelLatency1.setText("Bunch:"); spinnerBunch.setModel(new javax.swing.SpinnerNumberModel(1, 1, 2, 1)); javax.swing.GroupLayout panelParsLayout = new javax.swing.GroupLayout(panelPars); panelPars.setLayout(panelParsLayout); panelParsLayout.setHorizontalGroup( panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelParsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(panelParsLayout.createSequentialGroup() .addComponent(labelStart) .addGap(0, 0, 0) .addComponent(spinnerStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelParsLayout.createSequentialGroup() .addComponent(labelSamples) .addGap(0, 0, 0) .addComponent(spinnerSamples, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(panelParsLayout.createSequentialGroup() .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(labelStop) .addComponent(labelStep)) .addGap(1, 1, 1) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerStop, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(panelParsLayout.createSequentialGroup() .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(labelLatency) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelParsLayout.createSequentialGroup() .addComponent(labelLatency1) .addGap(0, 0, 0))) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spinnerBunch) .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panelParsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelLatency, labelSamples, labelStart, labelStep, labelStop}); panelParsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerLatency, spinnerSamples, spinnerStart, spinnerStep, spinnerStop}); panelParsLayout.setVerticalGroup( panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelParsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelStart) .addComponent(spinnerStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelStop) .addComponent(spinnerStop, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelStep) .addComponent(spinnerStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelSamples) .addComponent(spinnerSamples, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelLatency) .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelParsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelLatency1) .addComponent(spinnerBunch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); plot.setTitle(""); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addComponent(buttonStart) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonAbort)) .addComponent(panelPars, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 522, Short.MAX_VALUE) .addContainerGap()) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonAbort, buttonStart}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(panelPars, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonStart) .addComponent(buttonAbort))) .addComponent(plot, javax.swing.GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE)) .addGap(17, 17, 17)) ); panelPars.getAccessibleContext().setAccessibleDescription(""); }// //GEN-END:initComponents private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed //((Plugin)this). plot.removeMarker(null); ArrayList parameters = new ArrayList(); parameters.add(spinnerStart.getValue()); parameters.add(spinnerStop.getValue()); parameters.add(spinnerStep.getValue()); parameters.add(spinnerSamples.getValue()); parameters.add(spinnerLatency.getValue()); parameters.add(plot); parameters.add(spinnerBunch.getValue()); try { //How to get a callback on the end of execution runAsync("RFscan/SchottkyScan", parameters).handle((ret, ex) -> { if (ex != null) { getLogger().info("Exception executing scan: " + ex); } else { Double bph_ref = (Double) ((List)ret).get(0); //spinnerPhaseRef.setValue(Convert.roundDouble(bph_ref, 1)); //spinnerPhaseRef.setEnabled(true); } return ret; }); //runAsync("RFscan/SchottkyScan", parameters); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonStartActionPerformed private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed try { abort(); } catch (Exception ex) { showException(ex); } }//GEN-LAST:event_buttonAbortActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAbort; private javax.swing.JButton buttonStart; private javax.swing.JLabel labelLatency; private javax.swing.JLabel labelLatency1; private javax.swing.JLabel labelSamples; private javax.swing.JLabel labelStart; private javax.swing.JLabel labelStep; private javax.swing.JLabel labelStop; private javax.swing.JPanel panelPars; private ch.psi.pshell.plot.LinePlotJFree plot; private javax.swing.JSpinner spinnerBunch; private javax.swing.JSpinner spinnerLatency; private javax.swing.JSpinner spinnerSamples; private javax.swing.JSpinner spinnerStart; private javax.swing.JSpinner spinnerStep; private javax.swing.JSpinner spinnerStop; // End of variables declaration//GEN-END:variables }