From 34f06e1c15f0b3940b409b4402d0d60841bec9f3 Mon Sep 17 00:00:00 2001 From: gac-iss Date: Tue, 21 Jan 2020 11:28:51 +0100 Subject: [PATCH] --- config/variables.properties | 4 +- plugins/EnergyScan.form | 206 +++++++++++++++++++++++---------- plugins/EnergyScan.java | 204 ++++++++++++++++++++++++-------- script/templates/EnergyScan.py | 14 ++- 4 files changed, 311 insertions(+), 117 deletions(-) diff --git a/config/variables.properties b/config/variables.properties index c899272..92e3b89 100644 --- a/config/variables.properties +++ b/config/variables.properties @@ -1,2 +1,2 @@ -#Mon Jan 20 16:41:58 CET 2020 -FileSequentialNumber=2 +#Tue Jan 21 11:27:16 CET 2020 +FileSequentialNumber=0 diff --git a/plugins/EnergyScan.form b/plugins/EnergyScan.form index 5f701cf..edee536 100644 --- a/plugins/EnergyScan.form +++ b/plugins/EnergyScan.form @@ -29,35 +29,52 @@ - + - + - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + @@ -86,11 +103,24 @@ - + + + + + + + + + + + + + + - + @@ -101,12 +131,12 @@ - + - + - - + + @@ -118,61 +148,109 @@ - - - - - - - - - - - - - + + + + + + + - + + + - - - - + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + +
+
+
+
+
+
+ - - - - - -
-
+
+ + + +
+ + + + + + +
- + - + - - - - - - - - - - - @@ -192,17 +270,23 @@
- + - + - + - + + + + + + + - + diff --git a/plugins/EnergyScan.java b/plugins/EnergyScan.java index 4078985..8637c3c 100644 --- a/plugins/EnergyScan.java +++ b/plugins/EnergyScan.java @@ -45,6 +45,15 @@ public class EnergyScan extends Panel { buttonStart.setEnabled(state==State.Ready); buttonAbort.setEnabled(state.isProcessing()); buttonScienta.setEnabled(state.isInitialized()); + updateSeq(); + } + + void updateSeq(){ + try{ + textFileId.setText(String.valueOf(getContext().getFileSequentialNumber())); + } catch (Exception ex){ + textFileId.setText(""); + } } @Override @@ -74,6 +83,11 @@ public class EnergyScan extends Panel { } } + String getScanName(){ + String name = textName.getText().strip(); + return name.isEmpty() ? null : name; + } + void start() throws Exception{ checkValues(); String lastOutput = getContext().getDataManager().getLastOutput(); @@ -87,7 +101,7 @@ public class EnergyScan extends Panel { region.add(model.getValueAt(i, 2)); regions.add(region); } - + args.put("NAME", getScanName()); args.put("REGIONS", regions); this.runAsync("templates/EnergyScan", args).handle((ret,ex)->{ if (ex!=null){ @@ -113,12 +127,16 @@ public class EnergyScan extends Panel { FileNameExtensionFilter filter = new FileNameExtensionFilter("Energy scan definition file", FILE_EXTENSION); chooser.setFileFilter(filter); chooser.setFileHidingEnabled(false); - if (currentFile != null) { - try { + try { + if (currentFile != null) { chooser.setSelectedFile(currentFile); - } catch (Exception ex) { + } else if (getScanName()!=null){ + File file = Paths.get(chooser.getCurrentDirectory().getAbsolutePath(),getScanName()).toFile(); + chooser.setSelectedFile(file); } - } + } catch (Exception ex) { + this.showException(ex); + } int rVal = chooser.showSaveDialog(this); if (rVal == JFileChooser.APPROVE_OPTION) { String fileName = chooser.getSelectedFile().getAbsolutePath(); @@ -131,7 +149,10 @@ public class EnergyScan extends Panel { public void save(Path path) throws IOException { currentFile = path.toFile(); - String json = JsonSerializer.encode(model.getDataVector(), true); + ArrayList data = new ArrayList(); + data.add(new Object[][]{new Object[]{textName.getText()}}); + data.add(model.getDataVector()); + String json = JsonSerializer.encode(data, true); Files.write(path, json.getBytes()); } @@ -150,8 +171,9 @@ public class EnergyScan extends Panel { public void open(Path path) throws IOException { String json = new String(Files.readAllBytes(path)); currentFile = path.toFile(); - Object[][]vector = (Object[][]) JsonSerializer.decode(json, Object[][].class); - model.setDataVector(vector, SwingUtils.getTableColumnNames(table)); + Object[][][] vector = (Object[][][]) JsonSerializer.decode(json, Object[][][].class); + textName.setText(String.valueOf(vector[0][0][0])); + model.setDataVector(vector[1], SwingUtils.getTableColumnNames(table)); } @SuppressWarnings("unchecked") @@ -162,15 +184,21 @@ public class EnergyScan extends Panel { jEditorPane1 = new javax.swing.JEditorPane(); buttonStart = new javax.swing.JButton(); buttonAbort = new javax.swing.JButton(); + checkAutoSaveArgs = new javax.swing.JCheckBox(); + buttonScienta = new javax.swing.JButton(); + jPanel2 = new javax.swing.JPanel(); + textName = new javax.swing.JTextField(); jPanel1 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); table = new javax.swing.JTable(); buttonAdd = new javax.swing.JButton(); buttonDelete = new javax.swing.JButton(); + jLabel1 = new javax.swing.JLabel(); buttonOpen = new javax.swing.JButton(); buttonSave = new javax.swing.JButton(); - checkAutoSaveArgs = new javax.swing.JCheckBox(); - buttonScienta = new javax.swing.JButton(); + jLabel2 = new javax.swing.JLabel(); + textFileId = new javax.swing.JTextField(); + buttonResetId = new javax.swing.JButton(); jScrollPane2.setViewportView(jEditorPane1); @@ -188,6 +216,17 @@ public class EnergyScan extends Panel { } }); + checkAutoSaveArgs.setText("Auto save parameters"); + + buttonScienta.setText("Scienta Panel"); + buttonScienta.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonScientaActionPerformed(evt); + } + }); + + jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters")); + jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Regions")); table.setModel(new javax.swing.table.DefaultTableModel( @@ -222,6 +261,38 @@ public class EnergyScan extends Panel { } }); + 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(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createSequentialGroup() + .addComponent(buttonAdd) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(buttonDelete) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + + jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonAdd, buttonDelete}); + + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(buttonAdd) + .addComponent(buttonDelete)) + .addContainerGap()) + ); + + jLabel1.setText("Name:"); + buttonOpen.setText("Open"); buttonOpen.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -236,49 +307,50 @@ public class EnergyScan extends Panel { } }); - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() + 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(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(buttonAdd) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createSequentialGroup() + .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(buttonDelete) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(textName) + .addGap(18, 18, 18) .addComponent(buttonOpen) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonSave))) .addContainerGap()) ); - jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonAdd, buttonDelete, buttonOpen, buttonSave}); + jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonOpen, buttonSave}); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(buttonOpen) - .addComponent(buttonSave)) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(buttonAdd) - .addComponent(buttonDelete))) - .addContainerGap()) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(textName) + .addComponent(buttonOpen) + .addComponent(buttonSave) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(12, 12, 12)) ); - checkAutoSaveArgs.setText("Auto save scan parameters"); + jLabel2.setText("File ID:"); - buttonScienta.setText("Scienta Panel"); - buttonScienta.addActionListener(new java.awt.event.ActionListener() { + textFileId.setEditable(false); + textFileId.setHorizontalAlignment(javax.swing.JTextField.CENTER); + + buttonResetId.setText("Reset"); + buttonResetId.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - buttonScientaActionPerformed(evt); + buttonResetIdActionPerformed(evt); } }); @@ -286,33 +358,50 @@ public class EnergyScan extends Panel { this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addGap(0, 2, Short.MAX_VALUE) + .addGap(0, 0, Short.MAX_VALUE) .addComponent(buttonStart, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(33, 33, 33) .addComponent(buttonAbort) - .addGap(0, 2, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() - .addComponent(checkAutoSaveArgs) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(buttonScienta))) - .addContainerGap()) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(checkAutoSaveArgs) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(textFileId, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addComponent(buttonScienta) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonResetId))) + .addContainerGap()))) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonAbort, buttonStart}); + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonResetId, textFileId}); + + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonScienta, checkAutoSaveArgs}); + layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(7, 7, 7) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(checkAutoSaveArgs) - .addComponent(buttonScienta)) + .addComponent(jLabel2) + .addComponent(textFileId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(buttonScienta) + .addComponent(buttonResetId)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonStart) @@ -340,7 +429,7 @@ public class EnergyScan extends Panel { private void buttonAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAddActionPerformed try{ //model.addRow(new Object[]{energy.getMinValue(), energy.getMaxValue(), 10.0}); - model.addRow(new Object[]{500.0, 1000.0, 10.0}); + model.addRow(new Object[]{500.0, 1000.0, 100.0}); } catch (Exception ex){ showException(ex); } @@ -380,19 +469,34 @@ public class EnergyScan extends Panel { } }//GEN-LAST:event_buttonScientaActionPerformed + private void buttonResetIdActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonResetIdActionPerformed + try{ + this.getContext().setFileSequentialNumber(0); + updateSeq(); + } catch (Exception ex){ + showException(ex); + } + }//GEN-LAST:event_buttonResetIdActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAbort; private javax.swing.JButton buttonAdd; private javax.swing.JButton buttonDelete; private javax.swing.JButton buttonOpen; + private javax.swing.JButton buttonResetId; private javax.swing.JButton buttonSave; private javax.swing.JButton buttonScienta; private javax.swing.JButton buttonStart; private javax.swing.JCheckBox checkAutoSaveArgs; private javax.swing.JEditorPane jEditorPane1; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTable table; + private javax.swing.JTextField textFileId; + private javax.swing.JTextField textName; // End of variables declaration//GEN-END:variables } diff --git a/script/templates/EnergyScan.py b/script/templates/EnergyScan.py index e2be8f4..3a039ce 100644 --- a/script/templates/EnergyScan.py +++ b/script/templates/EnergyScan.py @@ -1,8 +1,9 @@ if get_exec_pars().source == CommandSource.ui: REGIONS = [[523.0, 527.0, 2.0], [527.0, 535.0, 4.0], [535.0, 558.0, 2.0]] -NAME = None + NAME = None IOC_AUTO_SAVE = False +DUMMY_TRIGGER = True #Trigger detector to update the array sizes and calibration @@ -12,13 +13,18 @@ set_device_alias(scienta.stats[0], "sum") sensors=[i0, scienta.stats[0], scienta.getSpectrum()] #), scienta.getDataMatrix()] +def trigger(position, scan): + scienta.start() + scienta.waitNewImage(-1) + + +if DUMMY_TRIGGER: + trigger(None, None) + if IOC_AUTO_SAVE: capture.write(1) -def trigger(position, scan): - scienta.start() - scienta.waitNewImage(-1) try: