This commit is contained in:
gac-x03da
2022-08-05 10:22:50 +02:00
parent 134b0e7674
commit 2721cf1b9a
4 changed files with 117 additions and 85 deletions

View File

@@ -17,6 +17,7 @@ import ch.psi.utils.State;
import ch.psi.utils.swing.SwingUtils;
import ch.psi.pshell.swing.ValueSelection;
import ch.psi.pshell.swing.ValueSelection.ValueSelectionListener;
import ch.psi.pshell.ui.ScriptProcessor;
import java.awt.Component;
import java.io.File;
import java.nio.file.Files;
@@ -24,7 +25,9 @@ import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JToggleButton;
@@ -37,7 +40,7 @@ import javax.swing.table.DefaultTableModel;
/**
*
*/
public class XPSSpectrum extends Panel {
public class XPSSpectrum extends ScriptProcessor {
boolean detailedScan;
boolean running;
@@ -244,10 +247,13 @@ public class XPSSpectrum extends Panel {
}
void updateButtons() {
buttonInitialScan.setEnabled(isEnabled());
buttonDetailedScan.setEnabled(isEnabled() && rangeSelectionPanel.getPlot().getSelectedRanges().length > 0);
buttonStart.setEnabled(isEnabled());
radioDetailed.setEnabled(isEnabled() && rangeSelectionPanel.getPlot().getSelectedRanges().length > 0);
if (!radioDetailed.isEnabled()){
radioInitial.setSelected(true);
}
btLoad.setEnabled(isEnabled());
btSave.setEnabled(buttonDetailedScan.isEnabled());
btSave.setEnabled(radioDetailed.isEnabled());
}
DeviceListener progressListener = new DeviceAdapter() {
@@ -300,7 +306,7 @@ public class XPSSpectrum extends Panel {
try{
int steps = 0;
RangeSelection[] r = rangeSelectionPanel.getRanges();
if ((buttonDetailedScan.isEnabled()) && (r.length > 0)) {
if ((radioDetailed.isEnabled()) && (r.length > 0)) {
for (int i = 0; i < r.length; i++) {
int iterations = (Integer) r[i].getVars()[2];
steps += iterations;
@@ -319,23 +325,46 @@ public class XPSSpectrum extends Panel {
getLogger().log(Level.FINE, null, ex);
}
}
@Override
public String getScript() {
return "XPSSpectrum";
}
void start() throws Context.ContextStateException {
@Override
public Map<String, Object> getArgs() {
if (radioInitial.isSelected()){
RangeSelection initialRange = new RangeSelection(valueLow.getValue(), valueHigh.getValue());
int iterations = (int) valueIterations.getValue();
initialRange.setVars(new Object[]{valueTime.getValue(), valueSize.getValue(), iterations, Double.NaN});
scanRanges = new RangeSelection[]{initialRange};
rangeSelectionPanel.clear(); //TODO: should be done in execute?
} else {
scanRanges = rangeSelectionPanel.getRanges();
}
detailedScan = !radioInitial.isSelected();
HashMap<String, Object> args = new HashMap<>();
args.put("DETAILED", !detailedScan);
args.put("ranges", scanRanges);
args.put("pass_energy", Integer.valueOf(comboPass.getSelectedItem().toString()));
args.put("save_scienta_image", checkSaveImage.isSelected());
args.put("ENDSCAN", checkEndScan.isSelected());
currentScanIndex = -1;
runAsync("XPSSpectrum", args);
//startTimer(500,10);
args.put("ENDSCAN", checkEndScan.isSelected());
return args;
}
@Override
public void execute() throws Exception {
currentScanIndex = -1;
super.execute();
running = true;
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
panelArguments = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
valueIterations = new ch.psi.pshell.swing.ValueSelection();
@@ -359,8 +388,7 @@ public class XPSSpectrum extends Panel {
jPanel2 = new javax.swing.JPanel();
btLoad = new javax.swing.JButton();
btSave = new javax.swing.JButton();
buttonInitialScan = new javax.swing.JButton();
buttonDetailedScan = new javax.swing.JButton();
buttonStart = new javax.swing.JButton();
rangeSelectionPanel = new ch.psi.pshell.swing.RangeSelectionPanel() {
protected void onSeriesChanged() {
updateButtons();
@@ -373,6 +401,8 @@ public class XPSSpectrum extends Panel {
buttonAbort = new javax.swing.JButton();
buttonSkip = new javax.swing.JButton();
checkCIS = new javax.swing.JCheckBox();
radioInitial = new javax.swing.JRadioButton();
radioDetailed = new javax.swing.JRadioButton();
panelArguments.setBorder(javax.swing.BorderFactory.createTitledBorder("Arguments"));
@@ -569,17 +599,10 @@ public class XPSSpectrum extends Panel {
}
});
buttonInitialScan.setText("Initial Scan");
buttonInitialScan.addActionListener(new java.awt.event.ActionListener() {
buttonStart.setText("Start");
buttonStart.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonInitialScanActionPerformed(evt);
}
});
buttonDetailedScan.setText("Detailed Scan");
buttonDetailedScan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonDetailedScanActionPerformed(evt);
buttonStartActionPerformed(evt);
}
});
@@ -601,6 +624,13 @@ public class XPSSpectrum extends Panel {
checkCIS.setText("Constant Initial State");
buttonGroup1.add(radioInitial);
radioInitial.setSelected(true);
radioInitial.setText("Initial Scan");
buttonGroup1.add(radioDetailed);
radioDetailed.setText("Detailed");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
@@ -614,13 +644,14 @@ public class XPSSpectrum extends Panel {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btSave))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(buttonInitialScan)
.addComponent(buttonStart)
.addGap(18, 18, 18)
.addComponent(radioInitial)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(radioDetailed)
.addGap(18, 18, 18)
.addComponent(buttonDetailedScan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(checkCIS)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 139, Short.MAX_VALUE)
.addComponent(buttonSkip)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonAbort))
@@ -628,20 +659,21 @@ public class XPSSpectrum extends Panel {
.addContainerGap())
);
jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btLoad, btSave, buttonAbort, buttonDetailedScan, buttonInitialScan, buttonSkip});
jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btLoad, btSave, buttonAbort, buttonSkip, buttonStart});
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(buttonInitialScan)
.addComponent(buttonDetailedScan)
.addComponent(buttonStart)
.addComponent(buttonAbort)
.addComponent(buttonSkip)
.addComponent(checkCIS))
.addComponent(checkCIS)
.addComponent(radioInitial)
.addComponent(radioDetailed))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(rangeSelectionPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addComponent(rangeSelectionPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 294, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btLoad, javax.swing.GroupLayout.Alignment.TRAILING)
@@ -680,33 +712,14 @@ public class XPSSpectrum extends Panel {
}
}//GEN-LAST:event_buttonAbortActionPerformed
private void buttonInitialScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonInitialScanActionPerformed
private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed
try {
rangeSelectionPanel.clear();
detailedScan = false;
RangeSelection initialRange = new RangeSelection(valueLow.getValue(), valueHigh.getValue());
int iterations = (int) valueIterations.getValue();
initialRange.setVars(new Object[]{valueTime.getValue(), valueSize.getValue(), iterations, Double.NaN});
scanRanges = new RangeSelection[]{initialRange};
start();
execute();
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonInitialScanActionPerformed
private void buttonDetailedScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDetailedScanActionPerformed
try {
detailedScan = true;
scanRanges = rangeSelectionPanel.getRanges();
start();
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonDetailedScanActionPerformed
}//GEN-LAST:event_buttonStartActionPerformed
private void btSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSaveActionPerformed
try {
@@ -814,10 +827,10 @@ public class XPSSpectrum extends Panel {
private javax.swing.JButton btLoad;
private javax.swing.JButton btSave;
private javax.swing.JButton buttonAbort;
private javax.swing.JButton buttonDetailedScan;
private javax.swing.JButton buttonInitialScan;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton buttonScientaSetup;
private javax.swing.JButton buttonSkip;
private javax.swing.JButton buttonStart;
private javax.swing.JCheckBox checkCIS;
private javax.swing.JCheckBox checkEndScan;
private javax.swing.JCheckBox checkSaveImage;
@@ -833,6 +846,8 @@ public class XPSSpectrum extends Panel {
private javax.swing.JLabel labelAcqTime;
private javax.swing.JLabel labelTotalTime;
private javax.swing.JPanel panelArguments;
private javax.swing.JRadioButton radioDetailed;
private javax.swing.JRadioButton radioInitial;
private ch.psi.pshell.swing.RangeSelectionPanel rangeSelectionPanel;
private javax.swing.JLabel textTotalTime;
private ch.psi.pshell.swing.ValueSelection valueHigh;