This commit is contained in:
x03daop
2017-08-21 11:04:28 +02:00
parent 00f9515b46
commit 85b3abb43f
16 changed files with 114 additions and 96 deletions

View File

@@ -36,11 +36,11 @@ import javax.swing.table.DefaultTableModel;
*
*/
public class XPSSpectrum extends Panel {
boolean detailedScan;
boolean running;
Scienta scienta;
public XPSSpectrum() {
initComponents();
buttonSkip.setVisible(false);
@@ -62,7 +62,7 @@ public class XPSSpectrum extends Panel {
} else {
model.setValueAt(valueTime.getValue(), row, 3);
model.setValueAt(valueSize.getValue(), row, 4);
model.setValueAt((int)valueIterations.getValue(), row, 5);
model.setValueAt((int) valueIterations.getValue(), row, 5);
}
}
});
@@ -73,9 +73,9 @@ public class XPSSpectrum extends Panel {
//Component persistence
ArrayList<Component> persistedComponents = new ArrayList<>();
persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JToggleButton.class)));
persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, ValueSelection.class)));
persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JComboBox.class)));
setPersistedComponents(persistedComponents.toArray(new Component[0]));
persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, ValueSelection.class)));
persistedComponents.addAll(Arrays.asList(SwingUtils.getComponentsByType(this, JComboBox.class)));
setPersistedComponents(persistedComponents.toArray(new Component[0]));
}
@Override
@@ -84,18 +84,18 @@ public class XPSSpectrum extends Panel {
scienta.getTotalChannels().addListener(progressListener);
scienta.getCurrentChannel().addListener(progressListener);
dvpAcqTime.setDevice(scienta.getAcquisitionTime());
startTimer(500,100);
startTimer(500, 100);
}
@Override
public void onStateChange(State state, State former) {
setEnabled(state == State.Ready);
if (!state.isProcessing()){
if (!state.isProcessing()) {
buttonSkip.setVisible(false);
if (running){
if (running) {
//stopTimer();
running = false;
getView().getStatusBar().setProgress(-1);
getView().getStatusBar().setProgress(-1);
}
}
}
@@ -117,7 +117,7 @@ public class XPSSpectrum extends Panel {
//double[] data = (double[]) Convert.wrapperArrayToPrimitiveArray(ret[0], Double.class);
double[] xdata = (double[]) ret[0];
double[] ydata = (double[]) ret[1];
//double[] data = new double[]{1.0,1.0,1.0,1.0,1.0};
LinePlotSeries series = new LinePlotSeries("Data");
rangeSelectionPanel.setSeries(series);
@@ -135,13 +135,13 @@ public class XPSSpectrum extends Panel {
@Override
public void setEnabled(boolean value) {
super.setEnabled(value);
rangeSelectionPanel.setEnabled(value);
rangeSelectionPanel.setEnabled(value);
valueLow.setEnabled(value);
valueHigh.setEnabled(value);
valueTime.setEnabled(value);
valueSize.setEnabled(value);
valueIterations.setEnabled(value);
comboPass.setEnabled(value);
comboPass.setEnabled(value);
checkEndScan.setEnabled(value);
checkSaveImage.setEnabled(value);
updateButtons();
@@ -151,88 +151,91 @@ public class XPSSpectrum extends Panel {
buttonInitialScan.setEnabled(isEnabled());
buttonDetailedScan.setEnabled(isEnabled() && rangeSelectionPanel.getPlot().getSelectedRanges().length > 0);
btLoad.setEnabled(isEnabled());
btSave.setEnabled(buttonDetailedScan.isEnabled());
btSave.setEnabled(buttonDetailedScan.isEnabled());
}
DeviceListener progressListener = new DeviceAdapter() {
@Override
public void onValueChanged(Device device, Object o, Object o1) {
if (running){
getView().getStatusBar().setProgress(scienta.getProgress());
}
if (running) {
getView().getStatusBar().setProgress(scienta.getProgress());
}
}
};
public final String CURRERNT_RANGE_VAR = "cur_range";
public final String CURRERNT_ITERATION_VAR = "cur_iteration";
int currentScanIndex ;
public final String CURRERNT_RANGE_VAR = "cur_range";
public final String CURRERNT_ITERATION_VAR = "cur_iteration";
int currentScanIndex;
RangeSelection[] scanRanges;
@Override
protected void onTimer() {
try{
if (running){
try {
if (running) {
Object index = XPSSpectrum.this.eval(CURRERNT_RANGE_VAR, true);
if ((index!=null) && (index instanceof Integer) && ((Integer)index >= 0)){
int scanIndex = (Integer)index;
if (scanIndex!=currentScanIndex){
if ((index != null) && (index instanceof Integer) && ((Integer) index >= 0)) {
int scanIndex = (Integer) index;
if (scanIndex != currentScanIndex) {
buttonSkip.setEnabled(true);
}
currentScanIndex = scanIndex;
int current_iteration = (Integer) XPSSpectrum.this.eval(CURRERNT_ITERATION_VAR, true);
int iterations = (Integer)scanRanges[currentScanIndex].getVars()[2];
int iterations = (Integer) scanRanges[currentScanIndex].getVars()[2];
buttonSkip.setVisible((iterations>1) && (current_iteration < (iterations-1)));
buttonSkip.setVisible((iterations > 1) && (current_iteration < (iterations - 1)));
if (detailedScan){
RangeSelection range = rangeSelectionPanel.getRangesOrdered()[scanIndex];
for (int row = 0; row< rangeSelectionPanel.getTable().getRowCount(); row++){
if (range.equals((Double)rangeSelectionPanel.getTable().getValueAt(row, 0), (Double)rangeSelectionPanel.getTable().getValueAt(row, 2))){
if (detailedScan) {
RangeSelection range = rangeSelectionPanel.getRangesOrdered()[scanIndex];
for (int row = 0; row < rangeSelectionPanel.getTable().getRowCount(); row++) {
if (range.equals((Double) rangeSelectionPanel.getTable().getValueAt(row, 0), (Double) rangeSelectionPanel.getTable().getValueAt(row, 2))) {
rangeSelectionPanel.getTable().setRowSelectionInterval(row, row);
break;
}
if (row == (rangeSelectionPanel.getTable().getRowCount()-1)){
if (row == (rangeSelectionPanel.getTable().getRowCount() - 1)) {
rangeSelectionPanel.getTable().clearSelection();
}
}
}
}
} else {
rangeSelectionPanel.getTable().clearSelection();
}
} else {
int steps = 0;
RangeSelection[] r = rangeSelectionPanel.getRanges();
if ((buttonDetailedScan.isEnabled()) && (r.length>0)){
for (int i=0;i<r.length;i++){
int iterations = (Integer)r[i].getVars()[2];
steps += iterations;
try{
int steps = 0;
RangeSelection[] r = rangeSelectionPanel.getRanges();
if ((buttonDetailedScan.isEnabled()) && (r.length > 0)) {
for (int i = 0; i < r.length; i++) {
int iterations = (Integer) r[i].getVars()[2];
steps += iterations;
}
} else {
steps = Math.max(1, (int) valueIterations.getValue());
}
} else {
steps = Math.max(1, (int)valueIterations.getValue());
int seconds = (int) (Double.valueOf(dvpAcqTime.getLabel().getText()) * steps);
int hours = seconds / (60 * 60);
textTotalTime.setText(hours >= 24 ? hours + "h" : LocalTime.ofSecondOfDay(seconds).toString());
} catch (Exception ex) {
textTotalTime.setText("");
}
int seconds = (int) (Double.valueOf(dvpAcqTime.getLabel().getText()) * steps);
int hours= seconds / (60 * 60);
textTotalTime.setText(hours >= 24 ? hours+"h": LocalTime.ofSecondOfDay(seconds).toString());
}
} catch (Exception ex){
} catch (Exception ex) {
getLogger().log(Level.FINE, null, ex);
}
}
void start() throws Context.ContextStateException{
HashMap<String, Object> args = new HashMap<>();
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);
running = true;
void start() throws Context.ContextStateException {
HashMap<String, Object> args = new HashMap<>();
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);
running = true;
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
@@ -567,17 +570,17 @@ public class XPSSpectrum extends Panel {
scienta.stop();
} catch (Exception ex) {
showException(ex);
}
}
}//GEN-LAST:event_buttonAbortActionPerformed
private void buttonInitialScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonInitialScanActionPerformed
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});
RangeSelection initialRange = new RangeSelection(valueLow.getValue(), valueHigh.getValue());
int iterations = (int) valueIterations.getValue();
initialRange.setVars(new Object[]{valueTime.getValue(), valueSize.getValue(), iterations});
scanRanges = new RangeSelection[]{initialRange};
start();
@@ -589,9 +592,9 @@ public class XPSSpectrum extends Panel {
private void buttonDetailedScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDetailedScanActionPerformed
try {
detailedScan = true;
detailedScan = true;
scanRanges = rangeSelectionPanel.getRangesOrdered();
start();
} catch (Exception ex) {
showException(ex);
@@ -606,19 +609,19 @@ public class XPSSpectrum extends Panel {
int rVal = chooser.showSaveDialog(this);
if (rVal == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
if (IO.getExtension(f).isEmpty()){
if (IO.getExtension(f).isEmpty()) {
f = new File(f.getPath() + ".xps");
}
Object[] obj = new Object[]{SwingUtils.getTableData(rangeSelectionPanel.getTable()),
rangeSelectionPanel.getPlot().getSeries(0).getX(),
rangeSelectionPanel.getPlot().getSeries(0).getY()};
rangeSelectionPanel.getPlot().getSeries(0).getX(),
rangeSelectionPanel.getPlot().getSeries(0).getY()};
Files.write(f.toPath(), Serializer.encode(obj, Serializer.EncoderType.bin));
}
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_btSaveActionPerformed
private void btLoadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btLoadActionPerformed
@@ -629,24 +632,24 @@ public class XPSSpectrum extends Panel {
int rVal = chooser.showOpenDialog(this);
if (rVal == JFileChooser.APPROVE_OPTION) {
rangeSelectionPanel.removeAllRanges();
Object[] obj = (Object[])Serializer.decode(Files.readAllBytes(chooser.getSelectedFile().toPath()), Serializer.EncoderType.bin);
Object[] obj = (Object[]) Serializer.decode(Files.readAllBytes(chooser.getSelectedFile().toPath()), Serializer.EncoderType.bin);
Object[][] table = (Object[][]) obj[0];
if (!rangeSelectionPanel.getPlot().hasData()){
if (!rangeSelectionPanel.getPlot().hasData()) {
double[] x = (double[]) obj[1];
double[] y = (double[]) obj[2];
LinePlotSeries series = new LinePlotSeries("Data");
LinePlotSeries series = new LinePlotSeries("Data");
rangeSelectionPanel.setSeries(series);
series.setData(x, y);
}
for (Object[] row:table){
rangeSelectionPanel.getPlot().addRange((Double)row[0], (Double)row[2]);
for (Object[] row : table) {
rangeSelectionPanel.getPlot().addRange((Double) row[0], (Double) row[2]);
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
public void run() {
for (int row = 0; row < table.length; row++) {
for (int col = 3; col < 6; col++) {
rangeSelectionPanel.getTable().setValueAt(table[row][col], row , col);
rangeSelectionPanel.getTable().setValueAt(table[row][col], row, col);
}
}
}
@@ -667,9 +670,9 @@ public class XPSSpectrum extends Panel {
}//GEN-LAST:event_buttonSkipActionPerformed
private void buttonScientaSetupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonScientaSetupActionPerformed
try{
try {
showDevicePanel("Scienta");
} catch (Exception ex){
} catch (Exception ex) {
SwingUtils.showException(this, ex);
}
}//GEN-LAST:event_buttonScientaSetupActionPerformed