From ac9ca2040077a5ac5757357e4a1e5dbe47e3fcd2 Mon Sep 17 00:00:00 2001 From: x03daop Date: Wed, 15 Jul 2015 17:46:00 +0200 Subject: [PATCH] Startup --- .gitignore | 3 +- plugins/HoloScan$1.class | Bin 0 -> 555 bytes plugins/HoloScan$2.class | Bin 0 -> 555 bytes plugins/HoloScan$3.class | Bin 0 -> 555 bytes plugins/HoloScan$4.class | Bin 0 -> 555 bytes plugins/HoloScan$5.class | Bin 0 -> 555 bytes plugins/HoloScan$6.class | Bin 0 -> 555 bytes plugins/HoloScan$7.class | Bin 0 -> 555 bytes plugins/HoloScan.class | Bin 0 -> 15209 bytes plugins/HoloScan.form | 626 +++++++++++++++++++ plugins/HoloScan.java | 630 ++++++++++++++++++++ plugins/ManipulatorScan$1.class | Bin 0 -> 597 bytes plugins/ManipulatorScan$2.class | Bin 0 -> 597 bytes plugins/ManipulatorScan$3.class | Bin 0 -> 597 bytes plugins/ManipulatorScan$4.class | Bin 0 -> 597 bytes plugins/ManipulatorScan$5.class | Bin 0 -> 597 bytes plugins/ManipulatorScan$6.class | Bin 0 -> 597 bytes plugins/ManipulatorScan$7.class | Bin 0 -> 597 bytes plugins/ManipulatorScan$8.class | Bin 0 -> 597 bytes plugins/ManipulatorScan$PluginPanel$1.class | Bin 0 -> 700 bytes plugins/ManipulatorScan$PluginPanel$2.class | Bin 0 -> 700 bytes plugins/ManipulatorScan$PluginPanel$3.class | Bin 0 -> 700 bytes plugins/ManipulatorScan$PluginPanel$4.class | Bin 0 -> 700 bytes plugins/ManipulatorScan$PluginPanel$5.class | Bin 0 -> 700 bytes plugins/ManipulatorScan$PluginPanel$6.class | Bin 0 -> 700 bytes plugins/ManipulatorScan$PluginPanel$7.class | Bin 0 -> 700 bytes plugins/ManipulatorScan$PluginPanel$8.class | Bin 0 -> 700 bytes plugins/ManipulatorScan$PluginPanel.class | Bin 0 -> 14609 bytes plugins/ManipulatorScan.class | Bin 0 -> 14589 bytes plugins/ManipulatorScan.form | 557 +++++++++++++++++ plugins/ManipulatorScan.form~ | 530 ++++++++++++++++ plugins/ManipulatorScan.java | 603 +++++++++++++++++++ plugins/ManipulatorScan.java~ | 575 ++++++++++++++++++ plugins/XPSSpectrum$1$1.class | Bin 0 -> 1299 bytes plugins/XPSSpectrum$1.class | Bin 0 -> 886 bytes plugins/XPSSpectrum$10.class | Bin 0 -> 912 bytes plugins/XPSSpectrum$2.class | Bin 0 -> 1284 bytes plugins/XPSSpectrum$3.class | Bin 0 -> 551 bytes plugins/XPSSpectrum$4.class | Bin 0 -> 573 bytes plugins/XPSSpectrum$5.class | Bin 0 -> 573 bytes plugins/XPSSpectrum$6.class | Bin 0 -> 573 bytes plugins/XPSSpectrum$7.class | Bin 0 -> 573 bytes plugins/XPSSpectrum$8.class | Bin 0 -> 573 bytes plugins/XPSSpectrum$9.class | Bin 0 -> 911 bytes plugins/XPSSpectrum.class | Bin 0 -> 12129 bytes plugins/XPSSpectrum.form | 158 +++++ plugins/XPSSpectrum.java | 386 ++++++++++++ 47 files changed, 4066 insertions(+), 2 deletions(-) create mode 100644 plugins/HoloScan$1.class create mode 100644 plugins/HoloScan$2.class create mode 100644 plugins/HoloScan$3.class create mode 100644 plugins/HoloScan$4.class create mode 100644 plugins/HoloScan$5.class create mode 100644 plugins/HoloScan$6.class create mode 100644 plugins/HoloScan$7.class create mode 100644 plugins/HoloScan.class create mode 100644 plugins/HoloScan.form create mode 100644 plugins/HoloScan.java create mode 100644 plugins/ManipulatorScan$1.class create mode 100644 plugins/ManipulatorScan$2.class create mode 100644 plugins/ManipulatorScan$3.class create mode 100644 plugins/ManipulatorScan$4.class create mode 100644 plugins/ManipulatorScan$5.class create mode 100644 plugins/ManipulatorScan$6.class create mode 100644 plugins/ManipulatorScan$7.class create mode 100644 plugins/ManipulatorScan$8.class create mode 100644 plugins/ManipulatorScan$PluginPanel$1.class create mode 100644 plugins/ManipulatorScan$PluginPanel$2.class create mode 100644 plugins/ManipulatorScan$PluginPanel$3.class create mode 100644 plugins/ManipulatorScan$PluginPanel$4.class create mode 100644 plugins/ManipulatorScan$PluginPanel$5.class create mode 100644 plugins/ManipulatorScan$PluginPanel$6.class create mode 100644 plugins/ManipulatorScan$PluginPanel$7.class create mode 100644 plugins/ManipulatorScan$PluginPanel$8.class create mode 100644 plugins/ManipulatorScan$PluginPanel.class create mode 100644 plugins/ManipulatorScan.class create mode 100644 plugins/ManipulatorScan.form create mode 100644 plugins/ManipulatorScan.form~ create mode 100644 plugins/ManipulatorScan.java create mode 100644 plugins/ManipulatorScan.java~ create mode 100644 plugins/XPSSpectrum$1$1.class create mode 100644 plugins/XPSSpectrum$1.class create mode 100644 plugins/XPSSpectrum$10.class create mode 100644 plugins/XPSSpectrum$2.class create mode 100644 plugins/XPSSpectrum$3.class create mode 100644 plugins/XPSSpectrum$4.class create mode 100644 plugins/XPSSpectrum$5.class create mode 100644 plugins/XPSSpectrum$6.class create mode 100644 plugins/XPSSpectrum$7.class create mode 100644 plugins/XPSSpectrum$8.class create mode 100644 plugins/XPSSpectrum$9.class create mode 100644 plugins/XPSSpectrum.class create mode 100644 plugins/XPSSpectrum.form create mode 100644 plugins/XPSSpectrum.java diff --git a/.gitignore b/.gitignore index 1e79cd23..c3395165 100644 --- a/.gitignore +++ b/.gitignore @@ -2,9 +2,8 @@ /sessions /context /log -/plugins /extensions script/cachedir script/Lib script/*.class -/script/ \ No newline at end of file +/script/ diff --git a/plugins/HoloScan$1.class b/plugins/HoloScan$1.class new file mode 100644 index 0000000000000000000000000000000000000000..19c747bd8eea8387663fe75fcb26ea0bb09ddb66 GIT binary patch literal 555 zcmaJ@C`u_L?aDZ$a5iFUAV%fw3Rt&5fSU0f2FcWkgKUZNe8>h-u zO`FRqMGqb61V;?X{4`v+VTjaJTQH;=juaPzeoJ`QyyfZ$w*yDXE8*QLuP@pRnS7(i zhrG=1gR&S38I+GlDRu2vHJRB|1J4#GjwVP>%I|3u5!R*cD&LWva}jh^+rVZ5TSzBh zAeKN}d)vqm%LJI)XGok$DZHA?eP8$t)~ExQ%TD>S)f0BWkp8o&hT{ia;27tW8`=C&<-60JhA6@Cfy|Gdc3BSb;sf?1ZHg5D-XI}Vegv*hj2T}RAf z=@qQ_hR`$JXezRVBKtr#iMet9?l?bQd;u%HBRowvM?{ZQIMNAD8Ipy0xcI;jsjIeNNH-iQZU+69@a}ob)e&w7j*@r6dsJRuv>CF6Mvo79 zg+B)sF%&YWoJ~^BwO`X@W>XD3TUOUz-EfZb1Fln3Hw(v=`D#=#-CD8x#B1ex91&Ir0S$Yb3n-J|dOo}d&w@-H+F-zq! zSm_O+7rN0@WC=y~m248JY5u`9KVBMvmERGbr<)U^5fvFDj5I+*u&_jDgnqyZHp$av IBXrXG0h_0I8vpR{ix`S zDE1Hy%$YME=ljlO=Ii_Q4Zs1iQG~E)B8(*y^H?^pVqnd{I>U_LwY^-0!EBr=M>Q=j ztArlf()N!S;`u3DxM2v@R9i448@3b|gMLf6*SzIugj>F?hD^TE<3nEN z_kLLnh4jnEqma7xt6I!#s)1{X6I%B+hE1enFc66$ zs=X~_NM%CI?K8yAq!ez=;hrZvhSaD6hs#d+vegro&yfDJsD|zNf|v}Ei5x>h522>| zcS=&pBp1w&%I20OJTJFbp|KTy4e0-Vk)=lngN6&1O6e}>Z348TFbSO{Z=3EKF^i=q zu;McU4|Joh$P$a}JJ~oAQXM*si- literal 0 HcmV?d00001 diff --git a/plugins/HoloScan$4.class b/plugins/HoloScan$4.class new file mode 100644 index 0000000000000000000000000000000000000000..cf287555a94909c52f4cb2fa3be59ec49de95d14 GIT binary patch literal 555 zcmaJMi62Y*aeK<$92+`btZOK`&~g%^w1CJDeC`3 zXGF1wXkgBq`8eNqE;H}nuWtaV$VL&uvWYNOOe|v6z?y*#1DgzUe$V!D6$Z0;svOm_ zxU3O+XiM8aVuB$qY-ZTwvt!Ey;bf&bQm)EW}lCE zncw?mF%r@*ACE&C+OKIbv!#ZvB~END5TB;s*DMljNXt>4ExYH!@2QS~tr)hEj=?}A zhN$*-kRg>RF;``Xok=O&y2CwBcnqm=1rC?p@@2a(ET19$XHiYt^93;(B2zhrgdRd& z4eperl1VO@AD7K7OL$)Hph9CS{2I{z{US?`5C#nwES1t-(AxxPM`02=Pu?!wHDVS^ zPhiDo1Rm%{U6Cag*$=XDBqs5DllW-y5v=rr;4Iu63w=_OF9eY!Y5*xL&>5m1u!ME; KblMP|w0;1xU3ho^ literal 0 HcmV?d00001 diff --git a/plugins/HoloScan$5.class b/plugins/HoloScan$5.class new file mode 100644 index 0000000000000000000000000000000000000000..9ea0a3523f2680cc6526d08085695a731d6fcfb5 GIT binary patch literal 555 zcmaJ7iYAJ<7&)|uE{?H@%w21U_BKcF8K zoe{+zqJf$7&Br<4xy*che|!SiM>dKO7EOe)WMUr6238EL8CYkS@w>K{t1y_2Q{||p z#buS)LtEPZ5kovbr3*IDsKzx#ZS4WXxU0ROvY}q*%epj^(Y{amMbPNU} zF+?@mLWWc(fw=>Q*qM~VtvTHDgvXE?Rp4;hDPOjF!txo?e-_oSJzr2HLu4YykkCV@ zss5dkR5Hm0^P{r4WeLyA?Nw-OgnI1*$3ow0wk_ySgXM{w$HY9aQB2zx>hNfHPkg*mbz`T+}A LC8X1a$kO@&nbCLu literal 0 HcmV?d00001 diff --git a/plugins/HoloScan$6.class b/plugins/HoloScan$6.class new file mode 100644 index 0000000000000000000000000000000000000000..f31fda1987147117765c602bf0ecb23c96698111 GIT binary patch literal 555 zcmaJ<+e$(~6kX$`qbG0Oucm~77f7M##Rx)-0=t0G`*@u6$Z;mlIofvxMbSea(4Rzo zL$pT}dx!>R_L{}sYhPyGzhB<~>?0dR2#Y4dSTZq>Wdkb))(osO%=lf~%T*Z6#;I~t z)8ev9?4d1f|A--;pVEaJhEPql1w*o7OK~yiw}gAmTaIS9<=aYL3HMgHebHvfzkED$scT%-VrEkfTuYqTS|C12zpJB2ur4h}dA97F3%{${1~y{YL^=io zkr<*HZ6QM{lfc{oL+ngS;np1PdBS5zjVf@s?36ECJz@C_=|78V*q$#ak|8pYV@T*B z)KvdYNh+D-g85O|+_Hq{<@PExw!*Ig{ogOL^ax?laKTb3-37f(fOZrnv9pA>>8=^G zSb730J|plzH|mN`iX!+yXB>&K|IXMyT6_d6y&yPsH?+`~s>ntW!m^1lR!l5n)xes84Fj7DbAHeEauo)%d8!=M zvbd}fduU7BKVpdIXLR9)Ayii#!H{g)Qd|rNZQ)+?wxbzt`L>c*!o5}QKy(-~`DUMw zc$we(Wib-cFCULx8XDKMnAuW8*AgeT7Kl&N@9QWMY)H#do-MoQ!tbe$fvp&}k&eMY zB!;L)JIIjAG%$C-5Id7nxOInnp70n_;|d%uyXDJvUsygv`p=@8w&x3qWQa`V7!rC2 zbv3wCl1e7IV18USw=Cg#xoU;RR`@lb|NBLj9w7`GE?6q1yP&rT(2l|+cAn5K-8Ewt zOHW|MX9OPTMqSZKQ3OBej3Y7e-<$YHi;rNX7X)YSrWRtKh_EjNktBftQdl4xq93q? LbwWCAh%Bui&D(h4 literal 0 HcmV?d00001 diff --git a/plugins/HoloScan.class b/plugins/HoloScan.class new file mode 100644 index 0000000000000000000000000000000000000000..f97677b7db1ec0b6cfbf0505d995579f2532339d GIT binary patch literal 15209 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 literal 0 HcmV?d00001 diff --git a/plugins/HoloScan.form b/plugins/HoloScan.form new file mode 100644 index 00000000..57c90969 --- /dev/null +++ b/plugins/HoloScan.form @@ -0,0 +1,626 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/plugins/HoloScan.java b/plugins/HoloScan.java new file mode 100644 index 00000000..6d3f2738 --- /dev/null +++ b/plugins/HoloScan.java @@ -0,0 +1,630 @@ +/* + * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. + */ + +import ch.psi.pshell.dev.Motor; +import ch.psi.pshell.ui.Panel; +import ch.psi.utils.State; +import ch.psi.utils.swing.SwingUtils; +import java.awt.Component; +import java.util.ArrayList; +import java.util.HashMap; +import javax.swing.JCheckBox; +import javax.swing.SpinnerNumberModel; + +/** + * + */ +public class HoloScan extends Panel { + + public HoloScan() { + initComponents(); + } + + //Overridable callbacks + @Override + public void onInitialize(int runCount) { + Motor phi = (Motor) getDevice("phi"); + Motor theta = (Motor) getDevice("theta"); + motorPanelPhi.setDevice(phi); + motorPanelTheta.setDevice(theta); + spinnerFromPhi.setModel(new SpinnerNumberModel(phi.getMinValue(), phi.getMinValue(), phi.getMaxValue(), 1.0)); + spinnerToPhi.setModel(new SpinnerNumberModel(phi.getMaxValue(), phi.getMinValue(), phi.getMaxValue(), 1.0)); + spinnerFromTheta.setModel(new SpinnerNumberModel(theta.getMinValue(), theta.getMinValue(), theta.getMaxValue(), 1.0)); + spinnerToTheta.setModel(new SpinnerNumberModel(theta.getMaxValue(), theta.getMinValue(), theta.getMaxValue(), 1.0)); + } + + @Override + public void onStateChange(State state, State former) { + setEnabled(isEnabled()); + } + + @Override + public void onExecutedFile(String fileName, Object result) { + } + + + @Override + public void setEnabled(boolean value) { + super.setEnabled(value); + buttonAbort.setEnabled(value && getState().isInitialized()); + + boolean enableControls = (value && (getState()==State.Ready)); + for (Component c : panelSensors.getComponents()) { + c.setEnabled(enableControls); + } + for (Component c : panelPhi.getComponents()) { + c.setEnabled(enableControls); + } + buttonStart.setEnabled(enableControls); + + spinnerStepSizePhi.setEnabled(enableControls && radioStepSize.isSelected()); + spinnerStepsPhi.setEnabled(enableControls && radioSteps.isSelected()); + spinnerFromPhi.setEnabled(enableControls && radioAbsolute.isSelected()); + spinnerToPhi.setEnabled(enableControls && radioAbsolute.isSelected()); + spinnerRangePhi.setEnabled(enableControls && !radioAbsolute.isSelected()); + + spinnerStepSizeTheta.setEnabled(spinnerStepSizePhi.isEnabled()); + spinnerStepsTheta.setEnabled(spinnerStepsPhi.isEnabled()); + spinnerFromTheta.setEnabled(spinnerFromPhi.isEnabled()); + spinnerToTheta.setEnabled(spinnerToPhi.isEnabled()); + spinnerRangeTheta.setEnabled(spinnerRangePhi.isEnabled()); + } + + void startScan() throws Exception{ + HashMap args = new HashMap<>(); + ArrayList sensors = new ArrayList(); + for (Component c : panelSensors.getComponents()) { + if ((c instanceof JCheckBox) && ((JCheckBox) c).isSelected()) { + sensors.add(c.getName()); + } + } + args.put("SENSORS", sensors); + if (radioRelative.isSelected()) { + args.put("PHI_RANGE", new Double[]{-(Double) spinnerRangePhi.getValue() / 2, (Double) spinnerRangePhi.getValue() / 2}); + args.put("THETA_RANGE", new Double[]{-(Double) spinnerRangeTheta.getValue() / 2, (Double) spinnerRangeTheta.getValue() / 2}); + } else { + args.put("PHI_RANGE", new Double[]{(Double) spinnerFromPhi.getValue(), (Double) spinnerToPhi.getValue()}); + args.put("THETA_RANGE", new Double[]{(Double) spinnerFromTheta.getValue(), (Double) spinnerToTheta.getValue()}); + } + ArrayList steps = new ArrayList(); + if (radioStepSize.isSelected()) { + steps.add((Double) spinnerStepSizePhi.getValue()); + steps.add((Double) spinnerStepSizeTheta.getValue()); + } else { + steps.add((Integer) spinnerStepsPhi.getValue()); + steps.add((Integer) spinnerStepsTheta.getValue()); + } + args.put("STEPS", steps); + args.put("LATENCY", (Double) 0.0); + args.put("RELATIVE", radioRelative.isSelected()); + + runAsync("HoloScan", args); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + buttonGroup1 = new javax.swing.ButtonGroup(); + buttonGroup2 = new javax.swing.ButtonGroup(); + panelPhi = new javax.swing.JPanel(); + motorPanelPhi = new ch.psi.pshell.swing.MotorReadoutPanel(); + jLabel2 = new javax.swing.JLabel(); + spinnerRangePhi = new javax.swing.JSpinner(); + radioStepSize = new javax.swing.JRadioButton(); + radioSteps = new javax.swing.JRadioButton(); + spinnerStepSizePhi = new javax.swing.JSpinner(); + spinnerStepsPhi = new javax.swing.JSpinner(); + radioAbsolute = new javax.swing.JRadioButton(); + spinnerFromPhi = new javax.swing.JSpinner(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + spinnerToPhi = new javax.swing.JSpinner(); + radioRelative = new javax.swing.JRadioButton(); + jLabel6 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + motorPanelTheta = new ch.psi.pshell.swing.MotorReadoutPanel(); + jLabel8 = new javax.swing.JLabel(); + jLabel9 = new javax.swing.JLabel(); + spinnerFromTheta = new javax.swing.JSpinner(); + spinnerToTheta = new javax.swing.JSpinner(); + jLabel10 = new javax.swing.JLabel(); + spinnerRangeTheta = new javax.swing.JSpinner(); + jLabel11 = new javax.swing.JLabel(); + jLabel12 = new javax.swing.JLabel(); + spinnerStepSizeTheta = new javax.swing.JSpinner(); + jLabel13 = new javax.swing.JLabel(); + jLabel14 = new javax.swing.JLabel(); + spinnerStepsTheta = new javax.swing.JSpinner(); + panelSensors = new javax.swing.JPanel(); + checkImage = new javax.swing.JCheckBox(); + checkImageIntegration = new javax.swing.JCheckBox(); + checkSpectrum = new javax.swing.JCheckBox(); + checkCounts1 = new javax.swing.JCheckBox(); + checkTotalCount = new javax.swing.JCheckBox(); + checkCounts2 = new javax.swing.JCheckBox(); + checkCounts3 = new javax.swing.JCheckBox(); + checkCounts4 = new javax.swing.JCheckBox(); + checkCurrent = new javax.swing.JCheckBox(); + checkCur1 = new javax.swing.JCheckBox(); + checkCur2 = new javax.swing.JCheckBox(); + checkCur3 = new javax.swing.JCheckBox(); + buttonScientaSetup = new javax.swing.JButton(); + jPanel3 = new javax.swing.JPanel(); + buttonStart = new javax.swing.JButton(); + buttonAbort = new javax.swing.JButton(); + + panelPhi.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioners")); + panelPhi.setPreferredSize(new java.awt.Dimension(239, 538)); + + jLabel2.setText("Range Phi:"); + + spinnerRangePhi.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.001d, 100.0d, 1.0d)); + spinnerRangePhi.setEnabled(false); + + buttonGroup1.add(radioStepSize); + radioStepSize.setSelected(true); + radioStepSize.setText("Step Size"); + radioStepSize.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioStepSizeActionPerformed(evt); + } + }); + + buttonGroup1.add(radioSteps); + radioSteps.setText("Number of Steps"); + radioSteps.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioStepSizeActionPerformed(evt); + } + }); + + spinnerStepSizePhi.setModel(new javax.swing.SpinnerNumberModel(0.1d, 0.001d, 10.0d, 0.1d)); + + spinnerStepsPhi.setModel(new javax.swing.SpinnerNumberModel(10, 1, 1000, 1)); + spinnerStepsPhi.setEnabled(false); + + buttonGroup2.add(radioAbsolute); + radioAbsolute.setSelected(true); + radioAbsolute.setText("Absolute Scan"); + radioAbsolute.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioAbsoluteActionPerformed(evt); + } + }); + + spinnerFromPhi.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); + + jLabel4.setText("Phi From:"); + + jLabel5.setText("Phi To:"); + + spinnerToPhi.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); + + buttonGroup2.add(radioRelative); + radioRelative.setText("Relative Scan"); + radioRelative.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioAbsoluteActionPerformed(evt); + } + }); + + jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel6.setText("Phi:"); + + jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel7.setText("Theta:"); + + jLabel8.setText("Theta To:"); + + jLabel9.setText("Theta From:"); + + spinnerFromTheta.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); + + spinnerToTheta.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); + + jLabel10.setText("Range Theta:"); + + spinnerRangeTheta.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.001d, 100.0d, 1.0d)); + spinnerRangeTheta.setEnabled(false); + + jLabel11.setText("Phi:"); + + jLabel12.setText("Theta:"); + + spinnerStepSizeTheta.setModel(new javax.swing.SpinnerNumberModel(0.1d, 0.001d, 10.0d, 0.1d)); + + jLabel13.setText("Phi:"); + + jLabel14.setText("Theta:"); + + spinnerStepsTheta.setModel(new javax.swing.SpinnerNumberModel(10, 1, 1000, 1)); + spinnerStepsTheta.setEnabled(false); + + javax.swing.GroupLayout panelPhiLayout = new javax.swing.GroupLayout(panelPhi); + panelPhi.setLayout(panelPhiLayout); + panelPhiLayout.setHorizontalGroup( + panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPhiLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPhiLayout.createSequentialGroup() + .addComponent(jLabel6) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(motorPanelPhi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(panelPhiLayout.createSequentialGroup() + .addComponent(jLabel7) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(motorPanelTheta, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(panelPhiLayout.createSequentialGroup() + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(radioSteps) + .addComponent(radioStepSize) + .addComponent(radioAbsolute) + .addComponent(radioRelative)) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() + .addGap(0, 16, Short.MAX_VALUE) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel8, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel10, javax.swing.GroupLayout.Alignment.TRAILING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(spinnerFromPhi, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerRangePhi, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerToPhi, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerFromTheta, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerToTheta, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerRangeTheta, javax.swing.GroupLayout.Alignment.TRAILING))) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() + .addComponent(jLabel11) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(spinnerStepSizePhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() + .addComponent(jLabel12) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(spinnerStepSizeTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPhiLayout.createSequentialGroup() + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel14) + .addComponent(jLabel13)) + .addGap(6, 6, 6) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(spinnerStepsPhi, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(spinnerStepsTheta, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))) + .addContainerGap()) + ); + + panelPhiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {radioStepSize, radioSteps}); + + panelPhiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerRangePhi, spinnerStepSizePhi, spinnerStepsPhi}); + + panelPhiLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel6, jLabel7}); + + panelPhiLayout.setVerticalGroup( + panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPhiLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel6) + .addComponent(motorPanelPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel7) + .addComponent(motorPanelTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addComponent(radioAbsolute) + .addGap(3, 3, 3) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerFromPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4)) + .addGap(3, 3, 3) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerToPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5)) + .addGap(3, 3, 3) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerFromTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel9)) + .addGap(3, 3, 3) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerToTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel8)) + .addGap(18, 18, 18) + .addComponent(radioRelative) + .addGap(1, 1, 1) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel2) + .addComponent(spinnerRangePhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(1, 1, 1) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel10) + .addComponent(spinnerRangeTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addComponent(radioStepSize) + .addGap(3, 3, 3) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerStepSizePhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel11)) + .addGap(3, 3, 3) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerStepSizeTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel12)) + .addGap(1, 1, 1) + .addComponent(radioSteps) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerStepsPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel13)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPhiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerStepsTheta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel14)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors")); + panelSensors.setPreferredSize(new java.awt.Dimension(239, 422)); + + checkImage.setSelected(true); + checkImage.setText("Scienta Image"); + checkImage.setToolTipText(""); + checkImage.setContentAreaFilled(false); + checkImage.setName("scienta.dataMatrix"); // NOI18N + + checkImageIntegration.setSelected(true); + checkImageIntegration.setText("Scienta Image Integration"); + checkImageIntegration.setToolTipText(""); + checkImageIntegration.setContentAreaFilled(false); + checkImageIntegration.setName("integration"); // NOI18N + + checkSpectrum.setSelected(true); + checkSpectrum.setText("Scienta Spectrum"); + checkSpectrum.setName("scienta.spectrum"); // NOI18N + + checkCounts1.setText("Counts Region 1"); + checkCounts1.setName("countsr1"); // NOI18N + + checkTotalCount.setSelected(true); + checkTotalCount.setText("Total Counts"); + checkTotalCount.setName("counts"); // NOI18N + + checkCounts2.setText("Counts Region 2"); + checkCounts2.setName("countsr2"); // NOI18N + + checkCounts3.setText("Counts Region 3"); + checkCounts3.setName("countsr3"); // NOI18N + + checkCounts4.setText("Counts Region 4"); + checkCounts4.setName("countsr4"); // NOI18N + + checkCurrent.setText("Current"); + checkCurrent.setName("current"); // NOI18N + + checkCur1.setText("Cur 1"); + checkCur1.setName("cur1"); // NOI18N + + checkCur2.setText("Cur 2"); + checkCur2.setName("cur2"); // NOI18N + + checkCur3.setText("Cur 3"); + checkCur3.setName("cur3"); // NOI18N + + buttonScientaSetup.setText("Scienta Setup"); + buttonScientaSetup.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonScientaSetupActionPerformed(evt); + } + }); + + javax.swing.GroupLayout panelSensorsLayout = new javax.swing.GroupLayout(panelSensors); + panelSensors.setLayout(panelSensorsLayout); + panelSensorsLayout.setHorizontalGroup( + panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(checkImage) + .addComponent(checkImageIntegration) + .addComponent(checkSpectrum) + .addComponent(checkCounts1) + .addComponent(checkTotalCount) + .addComponent(checkCounts2) + .addComponent(checkCounts3) + .addComponent(checkCounts4) + .addComponent(checkCurrent) + .addComponent(checkCur1) + .addComponent(checkCur2) + .addComponent(checkCur3)) + .addGap(0, 14, Short.MAX_VALUE))) + .addContainerGap()) + ); + panelSensorsLayout.setVerticalGroup( + panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addContainerGap() + .addComponent(checkImage) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkImageIntegration) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkSpectrum) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkTotalCount) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCurrent) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur3) + .addGap(18, 18, Short.MAX_VALUE) + .addComponent(buttonScientaSetup) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control")); + jPanel3.setPreferredSize(new java.awt.Dimension(239, 119)); + + 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); + } + }); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonStart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, 203, Short.MAX_VALUE)) + .addContainerGap()) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addComponent(buttonStart) + .addGap(18, 18, 18) + .addComponent(buttonAbort) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + 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() + .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(panelPhi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPhi, panelSensors}); + + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panelPhi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelSensors, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 538, Short.MAX_VALUE)) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + private void buttonScientaSetupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonScientaSetupActionPerformed + try{ + showDevicePanel("scienta"); + } catch (Exception ex){ + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_buttonScientaSetupActionPerformed + + private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed + try{ + startScan(); + } catch (Exception ex){ + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_buttonStartActionPerformed + + private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed + abort(); + }//GEN-LAST:event_buttonAbortActionPerformed + + private void radioStepSizeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioStepSizeActionPerformed + setEnabled(isEnabled()); + }//GEN-LAST:event_radioStepSizeActionPerformed + + private void radioAbsoluteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioAbsoluteActionPerformed + setEnabled(isEnabled()); + }//GEN-LAST:event_radioAbsoluteActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton buttonAbort; + private javax.swing.ButtonGroup buttonGroup1; + private javax.swing.ButtonGroup buttonGroup2; + private javax.swing.JButton buttonScientaSetup; + private javax.swing.JButton buttonStart; + private javax.swing.JCheckBox checkCounts1; + private javax.swing.JCheckBox checkCounts2; + private javax.swing.JCheckBox checkCounts3; + private javax.swing.JCheckBox checkCounts4; + private javax.swing.JCheckBox checkCur1; + private javax.swing.JCheckBox checkCur2; + private javax.swing.JCheckBox checkCur3; + private javax.swing.JCheckBox checkCurrent; + private javax.swing.JCheckBox checkImage; + private javax.swing.JCheckBox checkImageIntegration; + private javax.swing.JCheckBox checkSpectrum; + private javax.swing.JCheckBox checkTotalCount; + 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 jLabel2; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel3; + private ch.psi.pshell.swing.MotorReadoutPanel motorPanelPhi; + private ch.psi.pshell.swing.MotorReadoutPanel motorPanelTheta; + private javax.swing.JPanel panelPhi; + private javax.swing.JPanel panelSensors; + private javax.swing.JRadioButton radioAbsolute; + private javax.swing.JRadioButton radioRelative; + private javax.swing.JRadioButton radioStepSize; + private javax.swing.JRadioButton radioSteps; + private javax.swing.JSpinner spinnerFromPhi; + private javax.swing.JSpinner spinnerFromTheta; + private javax.swing.JSpinner spinnerRangePhi; + private javax.swing.JSpinner spinnerRangeTheta; + private javax.swing.JSpinner spinnerStepSizePhi; + private javax.swing.JSpinner spinnerStepSizeTheta; + private javax.swing.JSpinner spinnerStepsPhi; + private javax.swing.JSpinner spinnerStepsTheta; + private javax.swing.JSpinner spinnerToPhi; + private javax.swing.JSpinner spinnerToTheta; + // End of variables declaration//GEN-END:variables +} + diff --git a/plugins/ManipulatorScan$1.class b/plugins/ManipulatorScan$1.class new file mode 100644 index 0000000000000000000000000000000000000000..6693d87adbdb966c1dc65cb32e0508d88a6113d7 GIT binary patch literal 597 zcmaJWRsCQo6xk=Tb4ZTzcSiZ~(hFGm9ns%(cS!V1MFxl>MbHS+$j}<2 Px3Yj0@@&}{t@Ql>dNqm^ literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$2.class b/plugins/ManipulatorScan$2.class new file mode 100644 index 0000000000000000000000000000000000000000..a63bcf25d78d13f88dd53bfc8d9e3a14ea4a2cd8 GIT binary patch literal 597 zcmaJhS07ux0BZjPt3Cz2g#e#!H2g?pt7$!|yhPe_$rdH=l_WC|I zI=J?@D%0VyRMMOFJj1a5XNxr%8bL@ZKf=n8 zv;tLhx2F}&L9EgIa2D=)A`Ei}B~rFDF5drIV2iG60;E4!I&DXzTa3^jhfC3E^0sMj zBW_{u8LaSv$Rq7&MzVw=`%ZQS$)Eh4pZs{?32g5b(cg4;NHm}#ABZAF&Ew+ OGKVGdY}pvC^nC+`Wr{!m literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$3.class b/plugins/ManipulatorScan$3.class new file mode 100644 index 0000000000000000000000000000000000000000..a8ccb6636876b7c4d12803bdb39a1853eaf7eb5f GIT binary patch literal 597 zcmaJvN-nE03!(9Ue+0%@IR7H*&gj!w{?JhG3YkNhQv^?YaoAdEK`W?is1or3h|y&=w7b zOs;mvd%Vc+O;PlOGR5P5O4a&hOXgnbZs3U%X$jIp&Foq*@m7`R>rkrZnJ_KgaIl)d z8rBnVFp)sqdK<{lG(-68K11SEDG^kB9)==hNcH>ixoQ?K>UY934C{ZkSd*aAJ>1`h%rXb~L)h2>o%m6rCh* zi}p6+<_k|?`Da8PXh$=WB^23rvQtP7^0x>1@%$rL;RVs(bhl6RK}9|h#WX=9NMVN7 Q7`>G_ERko+#%QJQ2aDc{SpWb4 literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$4.class b/plugins/ManipulatorScan$4.class new file mode 100644 index 0000000000000000000000000000000000000000..9c24ec3f0c4b10636479f6d90919033ef923805b GIT binary patch literal 597 zcmaJrCv9_Pc_j=tDoC9}x9t zqB|l47A@?ZJ9q9m_uez}_Vw}#pp5MVV#v6NW5LB779A`(SaGn*Fkw0}%$68t>t|fa z+rH0@4jLX;6*@eWN}3~vOzzj|-Zew4s#}5~RhLSf_j^qdT=AxFBiu7mt4k5w=%6QB z3|qN+mk)T6-gY*YWr|oETixK)0a49-P z-VW_;#LX8T!SYXt+|!O`Bugl=?_{SjGs@o`S literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$5.class b/plugins/ManipulatorScan$5.class new file mode 100644 index 0000000000000000000000000000000000000000..be1a568ce81a9fd6fe864edfc932b98fa628a666 GIT binary patch literal 597 zcmaJoHx z216!SyW>4x7izJEtq(#%JX$7Rr5@kmTov$ zO<)b{2{@QYAa1=4WN4ZpeD;7LajKLEDn1WG5i+Fu{rFrpix>4f;TeYYKU=KH&B8*%f6C$Ri8A`i5q8Oaig><8H?BnSE1gZy~@5v=fn=x@5)C;Fr!Ux;Fwpb?}n SLu-uQ${d!+vt?tn()Rfgbb-cKR#Ej@_C~pJj1Z|XNz?i8bOtG z{17X{v^A)vySG}A4q}ZK23ol1i7?FXRLI%NsCoZ;fgD}e7|4IHRLV-DTa3^jhfC2( zLL0QU5w}=+0V}>D@j(cg5}60rwNut!9ZB!UQ1 TNYfmnw=#=GLiX4g&GdZ(YI=#P literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$7.class b/plugins/ManipulatorScan$7.class new file mode 100644 index 0000000000000000000000000000000000000000..d146dcae1e922af445085c5dd579cfcf62266ad9 GIT binary patch literal 597 zcmaJ^k4)b27y*!^ggarO{_DqJKFCGilT?!`}j@K z9T5VJ7Ix;$oqNyRb7nriU*7;!u$4p%85eOZxR}GDgCz$m4ptc^%#93lWro>ClPh`G z^SRMM%j2p_n+H-!bI6d%kL~VWGQ?`SBN%2HQi;=Ew=IGT-u7*Tdq!$?E`lo^bVY|@ zGvB!7eO}`CrX>18nbOf9rEYQ6lDRG23p{ZwEkS0anLS%fymjUII+W_VDa?)TI9N+z z9oZBdBvMFPw1G`hGg6=1XGonWC4!pI!%&0_=|Mj}SJ$Pp_O0*?L-x-W8!|M4D(UzU zR)%S7P)&F5v?3kE8qE*1aL*HAn5&e@+48t~|9gQgx~@3Lf3S4gN~2qh(4T}$(Mdwv zw6+nqP<#R_JR|ZzE7C|KRS|rraSGGJ{GDNbvhWC2d_nX#-L*vQ6AAW(C}xNtf;47n Rj?r70$1)*%Y>a05egKzZigEw| literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$8.class b/plugins/ManipulatorScan$8.class new file mode 100644 index 0000000000000000000000000000000000000000..3b78ae4f0046c7015ed1b32efa87322e34ab6744 GIT binary patch literal 597 zcmaJpKu=Ns zC%Pj+pwYt4oVj!FnS0L6+ts?z4ZRMH$UWC|m@Th|P+nr;e)WL+w8*6TJzaK#(Gjd0IMtu91xql2z! zGGq(&4)60azcXdg7s`|m2PsDuS1p-)se6GZj-@5Y3^lWDi;4G0dA<&%YMlzx)=dX1 z39Mo*0S6Na#4TD!medT@=l2*ACrXK+=JPNVAwz1=kIz-BeBS5?&oHe0*_#RYTo}|AV=3V2J#;)m9o<479;e>;Zk&x z&<3q-#4VN{!HQ3a+|!CQ(nwVV-)Wq}^iTfgPky}k09JZN^f%qLMC=0->=RKWi6DX$ S(lp2Dt;}MPkUcg=GkxEl2#SdS literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$PluginPanel$1.class b/plugins/ManipulatorScan$PluginPanel$1.class new file mode 100644 index 0000000000000000000000000000000000000000..757be361c668a99e9bf6bd8bfe2698b48ec1a00d GIT binary patch literal 700 zcmah{+e*Vg5Ix&QV`J2MzgsUAY74f4Z;BvAL8w|#eBY*PT}gK(+13vdeHRqP2S31% z5@(B`6sdtsW`=VPGbi)$`SuQA8*3>znDWqvX%7RKaWU&+&c!@KzqyiecFV;g!(cUR zHKeL?B|--ONGTDOLmtN>W>~Bob0u$DAvZcY3%JVuLhq2!u2j_V4`ctO-m--0~Lfima1_q%$2VDSVG2!i$Nd0&6cr3D|V58Ztl$z!<4O3Z987R@C=rJLE@1r@{uC3DBe*_WAq!p{*6!N rpTG*QNdCaRj?g`w-2;*sBWeQUn4qsiy-9eKjZtp^3rLZiLp42LCF85k literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$PluginPanel$2.class b/plugins/ManipulatorScan$PluginPanel$2.class new file mode 100644 index 0000000000000000000000000000000000000000..5da771a016e6ce3a4c4a39af966c0312672ddbd0 GIT binary patch literal 700 zcmah{+e*Vg5Ix&Q)5fT^-tV^xwSujpPl_N#L8w|#eBY*PT}gK(+3I(R6~zZXz>gAV zi=Y&#flOwGa}F~n^YQui4qykXX*ihh(1%G6DNMPTb}{2(mZ9I=$T+v4P^Ng;fgIU<&x&~$x)lZD zSXzOxt|2!qnRJg-5b9W}#;Gtjy6$5Ei#}Wo`0#DEgk@T>i~M`T+%`j|GfBu*qj+As z6@ekjpTkvTYy_F-VufM0hbqI6b*-$McUsXx3~+tL3F8txi^ zmUZY9=$C@v*dJ0h3Q8Jv=?35Nc% zRN}bVsEX)}S3}$3fstBOM0BB}hNv;j=F3<7h8Ov*DT*7ROmVLT*|+(&74uGYGYZ6k zv;sqIL#|pf>F%o_)Uj0cBVjIe&BqL8eYoiH;oEEu^R!|c`S*so4Tel>l8~!<@uYes z0z;HPhbzn22r|#b0>fknRfaz6T1hvqwW5W{=VZRM6b}Ls$GNSwHHMwej{av*f7<}G ztV5?jzYHvsu_n-wBjw@7H>%P%Bsk@kJ4&CeyO?3OaeM9APDDJ7y($m3YV40GjUuH z0ccr=PJwtlergOn{%Z986J?E$Rth{PRLA^8LM+CuMib{|M0L(~LDFiKyCdSmb?%TTWmvq+JgLp42LO}4C0 literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$PluginPanel$5.class b/plugins/ManipulatorScan$PluginPanel$5.class new file mode 100644 index 0000000000000000000000000000000000000000..26d9a4ba6f077f224f174ab0ad430ce00734f14b GIT binary patch literal 700 zcmah{+e*Vg5Ix&Q)5fT^-tV^xwSrYpUlc)#f>5=f_`Xfox{~fnveoYr6vYQWz+Vvk z6mhl)N|74KWM(+$Fmp1mpU*Dh@8#K(+07g_Q@e!XpxQRFRJqiAC{^Vg>`>_@!@r tx^NG+@`U6M+-nKF)7gC>i7ZhQ7{m~L9qJ9kqby6k6sC|SIfrU`z5rVVtbhOj literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$PluginPanel$6.class b/plugins/ManipulatorScan$PluginPanel$6.class new file mode 100644 index 0000000000000000000000000000000000000000..879490e21d0e4691f4a96cae49c4c4399107a8cc GIT binary patch literal 700 zcmah{?`s-C5PhT9oSv6xto@l-)5L;Rs40}>LqefQ0s&2hgnVDmt=Vwy+Pl^MU4@pG ze&`?2KdN+Aga!#_;r8APZyqym=g;3?zX80%ULGDE2Y7%d0djci37G3%b_C^o6mqn@w89YRV{~oX6BLs}foXcSwd6x4y=JO8?NUJ^o literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan$PluginPanel$7.class b/plugins/ManipulatorScan$PluginPanel$7.class new file mode 100644 index 0000000000000000000000000000000000000000..4fad40b54a205351d095fb6d7414202765cbd98f GIT binary patch literal 700 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 literal 0 HcmV?d00001 diff --git a/plugins/ManipulatorScan.form b/plugins/ManipulatorScan.form new file mode 100644 index 00000000..d3e63957 --- /dev/null +++ b/plugins/ManipulatorScan.form @@ -0,0 +1,557 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/plugins/ManipulatorScan.form~ b/plugins/ManipulatorScan.form~ new file mode 100644 index 00000000..4fb280fb --- /dev/null +++ b/plugins/ManipulatorScan.form~ @@ -0,0 +1,530 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/plugins/ManipulatorScan.java b/plugins/ManipulatorScan.java new file mode 100644 index 00000000..467696be --- /dev/null +++ b/plugins/ManipulatorScan.java @@ -0,0 +1,603 @@ +/* + * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. + */ + +import ch.psi.pshell.dev.Motor; +import ch.psi.pshell.ui.Panel; +import ch.psi.utils.State; +import ch.psi.utils.swing.SwingUtils; +import java.awt.Component; +import java.util.ArrayList; +import java.util.HashMap; +import javax.swing.JCheckBox; +import javax.swing.SpinnerNumberModel; + +/** + * + */ +public class ManipulatorScan extends Panel { + + public ManipulatorScan() { + initComponents(); + } + + //Overridable callbacks + @Override + public void onInitialize(int runCount) { + comboMotorActionPerformed(null); + } + + @Override + public void onStateChange(State state, State former) { + setEnabled(isEnabled()); + } + + @Override + public void onExecutedFile(String fileName, Object result) { + } + + @Override + public void setEnabled(boolean value) { + super.setEnabled(value); + buttonAbort.setEnabled(value && getState().isInitialized()); + + boolean enableControls = (value && (getState() == State.Ready)); + for (Component c : panelSensors.getComponents()) { + c.setEnabled(enableControls); + } + for (Component c : panelPositioner.getComponents()) { + c.setEnabled(enableControls); + } + buttonStart.setEnabled(enableControls); + spinnerStepSize.setEnabled(enableControls && radioStepSize.isSelected()); + spinnerSteps.setEnabled(enableControls && radioSteps.isSelected()); + + spinnerFrom.setEnabled(enableControls && radioAbsolute.isSelected()); + spinnerTo.setEnabled(enableControls && radioAbsolute.isSelected()); + spinnerRange.setEnabled(enableControls && !radioAbsolute.isSelected()); + + } + + void startScan() throws Exception { + HashMap args = new HashMap<>(); + args.put("MOTOR", comboMotor.getSelectedItem().toString()); + ArrayList sensors = new ArrayList(); + for (Component c : panelSensors.getComponents()) { + if ((c instanceof JCheckBox) && ((JCheckBox) c).isSelected()) { + sensors.add(c.getName()); + } + } + args.put("SENSORS", sensors); + if (radioRelative.isSelected()) { + args.put("RANGE", new Double[]{-(Double) spinnerRange.getValue() / 2, (Double) spinnerRange.getValue() / 2}); + } else { + args.put("RANGE", new Double[]{(Double) spinnerFrom.getValue(), (Double) spinnerTo.getValue()}); + } + if (radioStepSize.isSelected()) { + ArrayList steps = new ArrayList(); + steps.add((Double) spinnerStepSize.getValue()); + args.put("STEPS", steps); + } else { + args.put("STEPS", (Integer) spinnerSteps.getValue()); + } + args.put("LATENCY", (Double) spinnerLatency.getValue()); + args.put("RELATIVE", radioRelative.isSelected()); + + runAsync("ManipulatorScan", args); + + /* + getController().setExecutingContext("manip_scan"); + String scan ="lscan(" + comboMotor.getSelectedItem().toString() + ", ( " ; + for (Component c : panelSensors.getComponents()) { + if ((c instanceof JCheckBox) && ((JCheckBox)c).isSelected()) + scan += c.getName() + ", "; + } + scan+="), "; + if (radioRelative.isSelected()){ + double halfRange = (Double)spinnerRange.getValue()/2; + scan+= (-halfRange) + ", " + (halfRange)+ ", "; + } else { + Double from = (Double)spinnerFrom.getValue(); + Double to = (Double)spinnerTo.getValue(); + + if (to <= from){ + throw new Exception ("Invalid range"); + } + scan+= from + ", " + to + ", "; + } + + scan+= (radioStepSize.isSelected()) ? "(" +((Double)spinnerStepSize.getValue())+",)" :((Integer)spinnerSteps.getValue()); + scan+=", " + (Double)spinnerLatency.getValue() + ", "; + if (radioRelative.isSelected()){ + scan+="True, "; //Relative + } + scan+="before_read=trig_scienta)"; //Relative + + if (checkImageIntegration.isSelected()){ + scan = "set_preference(Preference.PLOT_TYPES,{'integration':1}); " + scan; + } + + evalAsync(scan); + */ + } + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + buttonGroup1 = new javax.swing.ButtonGroup(); + buttonGroup2 = new javax.swing.ButtonGroup(); + panelPositioner = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + comboMotor = new javax.swing.JComboBox(); + motorPanel = new ch.psi.pshell.swing.MotorReadoutPanel(); + txtSize = new javax.swing.JLabel(); + spinnerRange = new javax.swing.JSpinner(); + radioStepSize = new javax.swing.JRadioButton(); + radioSteps = new javax.swing.JRadioButton(); + spinnerStepSize = new javax.swing.JSpinner(); + spinnerSteps = new javax.swing.JSpinner(); + jLabel3 = new javax.swing.JLabel(); + spinnerLatency = new javax.swing.JSpinner(); + radioAbsolute = new javax.swing.JRadioButton(); + spinnerFrom = new javax.swing.JSpinner(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + spinnerTo = new javax.swing.JSpinner(); + radioRelative = new javax.swing.JRadioButton(); + jLabel6 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jLabel8 = new javax.swing.JLabel(); + panelSensors = new javax.swing.JPanel(); + checkImage = new javax.swing.JCheckBox(); + checkImageIntegration = new javax.swing.JCheckBox(); + checkSpectrum = new javax.swing.JCheckBox(); + checkCounts1 = new javax.swing.JCheckBox(); + checkTotalCount = new javax.swing.JCheckBox(); + checkCounts2 = new javax.swing.JCheckBox(); + checkCounts3 = new javax.swing.JCheckBox(); + checkCounts4 = new javax.swing.JCheckBox(); + checkCurrent = new javax.swing.JCheckBox(); + checkCur1 = new javax.swing.JCheckBox(); + checkCur2 = new javax.swing.JCheckBox(); + checkCur3 = new javax.swing.JCheckBox(); + buttonScientaSetup = new javax.swing.JButton(); + jPanel3 = new javax.swing.JPanel(); + buttonStart = new javax.swing.JButton(); + buttonAbort = new javax.swing.JButton(); + + panelPositioner.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioner")); + + jLabel1.setText("Motor:"); + + comboMotor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "dummy", "x", "y", "z", "theta", "tilt", "phi" })); + comboMotor.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + comboMotorActionPerformed(evt); + } + }); + + txtSize.setText("Size:"); + + spinnerRange.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.001d, 100.0d, 1.0d)); + spinnerRange.setEnabled(false); + + buttonGroup1.add(radioStepSize); + radioStepSize.setSelected(true); + radioStepSize.setText("Step Size"); + radioStepSize.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioStepSizeActionPerformed(evt); + } + }); + + buttonGroup1.add(radioSteps); + radioSteps.setText("Number of Steps"); + radioSteps.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioStepSizeActionPerformed(evt); + } + }); + + spinnerStepSize.setModel(new javax.swing.SpinnerNumberModel(0.1d, 0.001d, 10.0d, 0.1d)); + + spinnerSteps.setModel(new javax.swing.SpinnerNumberModel(10, 1, 1000, 1)); + spinnerSteps.setEnabled(false); + + jLabel3.setText("Latency(s):"); + + spinnerLatency.setModel(new javax.swing.SpinnerNumberModel(0.0d, 0.0d, 10.0d, 0.1d)); + + buttonGroup2.add(radioAbsolute); + radioAbsolute.setSelected(true); + radioAbsolute.setText("Absolute Scan"); + radioAbsolute.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioAbsoluteActionPerformed(evt); + } + }); + + spinnerFrom.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); + + jLabel4.setText("From:"); + + jLabel5.setText("To:"); + + spinnerTo.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); + + buttonGroup2.add(radioRelative); + radioRelative.setText("Relative Scan"); + radioRelative.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioAbsoluteActionPerformed(evt); + } + }); + + jLabel6.setText("Position:"); + + jLabel7.setText("Range:"); + + jLabel8.setText("Steps:"); + + javax.swing.GroupLayout panelPositionerLayout = new javax.swing.GroupLayout(panelPositioner); + panelPositioner.setLayout(panelPositionerLayout); + panelPositionerLayout.setHorizontalGroup( + panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(radioSteps, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel6) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(motorPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(comboMotor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 41, Short.MAX_VALUE) + .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(radioStepSize) + .addComponent(radioAbsolute) + .addComponent(radioRelative)) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionerLayout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionerLayout.createSequentialGroup() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addComponent(jLabel7) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(spinnerFrom, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerRange, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerTo, javax.swing.GroupLayout.Alignment.TRAILING))) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionerLayout.createSequentialGroup() + .addComponent(jLabel8) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(spinnerSteps, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionerLayout.createSequentialGroup() + .addComponent(txtSize) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(spinnerStepSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))) + .addContainerGap()) + ); + + panelPositionerLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerLatency, spinnerRange, spinnerStepSize, spinnerSteps}); + + panelPositionerLayout.setVerticalGroup( + panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1) + .addComponent(comboMotor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel6) + .addComponent(motorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addComponent(radioAbsolute) + .addGap(3, 3, 3) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerFrom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4)) + .addGap(3, 3, 3) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerTo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5)) + .addGap(18, 18, 18) + .addComponent(radioRelative) + .addGap(1, 1, 1) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerRange, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel7)) + .addGap(18, 18, 18) + .addComponent(radioStepSize) + .addGap(0, 0, 0) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerStepSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtSize)) + .addGap(12, 12, 12) + .addComponent(radioSteps) + .addGap(0, 0, 0) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerSteps, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel8)) + .addGap(18, 18, 18) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel3) + .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)) + ); + + panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors")); + + checkImage.setSelected(true); + checkImage.setText("Scienta Image"); + checkImage.setToolTipText(""); + checkImage.setContentAreaFilled(false); + checkImage.setName("scienta.dataMatrix"); // NOI18N + + checkImageIntegration.setSelected(true); + checkImageIntegration.setText("Scienta Image Integration"); + checkImageIntegration.setToolTipText(""); + checkImageIntegration.setContentAreaFilled(false); + checkImageIntegration.setName("integration"); // NOI18N + + checkSpectrum.setSelected(true); + checkSpectrum.setText("Scienta Spectrum"); + checkSpectrum.setName("scienta.spectrum"); // NOI18N + + checkCounts1.setText("Counts Region 1"); + checkCounts1.setName("countsr1"); // NOI18N + + checkTotalCount.setSelected(true); + checkTotalCount.setText("Total Counts"); + checkTotalCount.setName("counts"); // NOI18N + + checkCounts2.setText("Counts Region 2"); + checkCounts2.setName("countsr2"); // NOI18N + + checkCounts3.setText("Counts Region 3"); + checkCounts3.setName("countsr3"); // NOI18N + + checkCounts4.setText("Counts Region 4"); + checkCounts4.setName("countsr4"); // NOI18N + + checkCurrent.setText("Current"); + checkCurrent.setName("current"); // NOI18N + + checkCur1.setText("Cur 1"); + checkCur1.setName("cur1"); // NOI18N + + checkCur2.setText("Cur 2"); + checkCur2.setName("cur2"); // NOI18N + + checkCur3.setText("Cur 3"); + checkCur3.setName("cur3"); // NOI18N + + buttonScientaSetup.setText("Scienta Setup"); + buttonScientaSetup.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonScientaSetupActionPerformed(evt); + } + }); + + javax.swing.GroupLayout panelSensorsLayout = new javax.swing.GroupLayout(panelSensors); + panelSensors.setLayout(panelSensorsLayout); + panelSensorsLayout.setHorizontalGroup( + panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(checkImage) + .addComponent(checkImageIntegration) + .addComponent(checkSpectrum) + .addComponent(checkCounts1) + .addComponent(checkTotalCount) + .addComponent(checkCounts2) + .addComponent(checkCounts3) + .addComponent(checkCurrent) + .addComponent(checkCur1) + .addComponent(checkCur2) + .addComponent(checkCur3) + .addComponent(checkCounts4)) + .addGap(0, 14, Short.MAX_VALUE))) + .addContainerGap()) + ); + panelSensorsLayout.setVerticalGroup( + panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addContainerGap() + .addComponent(checkImage) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkImageIntegration) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkSpectrum) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkTotalCount) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCurrent) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur3) + .addGap(18, 18, Short.MAX_VALUE) + .addComponent(buttonScientaSetup) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control")); + + 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); + } + }); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonStart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, 203, Short.MAX_VALUE)) + .addContainerGap()) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addComponent(buttonStart) + .addGap(18, 18, 18) + .addComponent(buttonAbort) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + 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() + .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(panelPositioner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioner, panelSensors}); + + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panelPositioner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelSensors, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + private void buttonScientaSetupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonScientaSetupActionPerformed + try { + showDevicePanel("scienta"); + } catch (Exception ex) { + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_buttonScientaSetupActionPerformed + + private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed + try { + startScan(); + } catch (Exception ex) { + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_buttonStartActionPerformed + + private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed + abort(); + }//GEN-LAST:event_buttonAbortActionPerformed + + private void radioStepSizeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioStepSizeActionPerformed + setEnabled(isEnabled()); + }//GEN-LAST:event_radioStepSizeActionPerformed + + private void comboMotorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboMotorActionPerformed + try { + Motor motor = (Motor) getDevice(comboMotor.getSelectedItem().toString()); + motorPanel.setDevice(motor); + spinnerFrom.setModel(new SpinnerNumberModel(motor.getMinValue(), motor.getMinValue(), motor.getMaxValue(), 1.0)); + spinnerTo.setModel(new SpinnerNumberModel(motor.getMaxValue(), motor.getMinValue(), motor.getMaxValue(), 1.0)); + txtSize.setText("Size (" + motor.getUnit() +")"); + //spinnerFrom.setModel(new javax.swing.SpinnerNumberModel(3.0, 0.001, 100.0, 1.0)); + //spinnerTo.setModel(new javax.swing.SpinnerNumberModel(2.0, 0.001, 100.0, 1.0)); + } catch (Exception ex) { + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_comboMotorActionPerformed + + private void radioAbsoluteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioAbsoluteActionPerformed + setEnabled(isEnabled()); + }//GEN-LAST:event_radioAbsoluteActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton buttonAbort; + private javax.swing.ButtonGroup buttonGroup1; + private javax.swing.ButtonGroup buttonGroup2; + private javax.swing.JButton buttonScientaSetup; + private javax.swing.JButton buttonStart; + private javax.swing.JCheckBox checkCounts1; + private javax.swing.JCheckBox checkCounts2; + private javax.swing.JCheckBox checkCounts3; + private javax.swing.JCheckBox checkCounts4; + private javax.swing.JCheckBox checkCur1; + private javax.swing.JCheckBox checkCur2; + private javax.swing.JCheckBox checkCur3; + private javax.swing.JCheckBox checkCurrent; + private javax.swing.JCheckBox checkImage; + private javax.swing.JCheckBox checkImageIntegration; + private javax.swing.JCheckBox checkSpectrum; + private javax.swing.JCheckBox checkTotalCount; + private javax.swing.JComboBox comboMotor; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JPanel jPanel3; + private ch.psi.pshell.swing.MotorReadoutPanel motorPanel; + private javax.swing.JPanel panelPositioner; + private javax.swing.JPanel panelSensors; + private javax.swing.JRadioButton radioAbsolute; + private javax.swing.JRadioButton radioRelative; + private javax.swing.JRadioButton radioStepSize; + private javax.swing.JRadioButton radioSteps; + private javax.swing.JSpinner spinnerFrom; + private javax.swing.JSpinner spinnerLatency; + private javax.swing.JSpinner spinnerRange; + private javax.swing.JSpinner spinnerStepSize; + private javax.swing.JSpinner spinnerSteps; + private javax.swing.JSpinner spinnerTo; + private javax.swing.JLabel txtSize; + // End of variables declaration//GEN-END:variables +} diff --git a/plugins/ManipulatorScan.java~ b/plugins/ManipulatorScan.java~ new file mode 100644 index 00000000..1c1a1ed6 --- /dev/null +++ b/plugins/ManipulatorScan.java~ @@ -0,0 +1,575 @@ +/* + * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. + */ + +import ch.psi.pshell.dev.Motor; +import ch.psi.utils.swing.MonitoredPanel; +import ch.psi.pshell.ui.Panel; +import ch.psi.utils.State; +import ch.psi.utils.swing.SwingUtils; +import java.awt.Component; +import javax.swing.JCheckBox; +import javax.swing.JPanel; +import javax.swing.SpinnerNumberModel; + +/** + * + */ +public class ManipulatorScan extends Panel { + + @Override + protected JPanel create() { + return new PluginPanel(); + } + + @Override + public PluginPanel getComponent(){ + return (PluginPanel) super.getComponent(); + } + + //Overridables + @Override + protected void onInitialize(int runCount) { + getComponent().comboMotorActionPerformed(null); + } + + @Override + protected void onStateChange(State state, State former) { + getComponent().setEnabled(getComponent().isEnabled()); + } + + @Override + protected void onExecutedFile(String fileName, Object result) { + } + + @Override + protected void doUpdate() { + } + + + //Panel Class + public class PluginPanel extends MonitoredPanel { + + public PluginPanel() { + initComponents(); + } + + @Override + public void setEnabled(boolean value) { + super.setEnabled(value); + buttonAbort.setEnabled(value && getState().isInitialized()); + + boolean enableControls = (value && (getState()==State.Ready)); + for (Component c : panelSensors.getComponents()) { + c.setEnabled(enableControls); + } + for (Component c : panelPositioner.getComponents()) { + c.setEnabled(enableControls); + } + buttonStart.setEnabled(enableControls); + spinnerStepSize.setEnabled(enableControls && radioStepSize.isSelected()); + spinnerSteps.setEnabled(enableControls && radioSteps.isSelected()); + + spinnerFrom.setEnabled(enableControls && radioAbsolute.isSelected()); + spinnerTo.setEnabled(enableControls && radioAbsolute.isSelected()); + spinnerRange.setEnabled(enableControls && !radioAbsolute.isSelected()); + + } + + void startScan() throws Exception{ + String scan ="lscan(" + comboMotor.getSelectedItem().toString() + ",( " ; + for (Component c : panelSensors.getComponents()) { + if ((c instanceof JCheckBox) && ((JCheckBox)c).isSelected()) + scan += c.getName() + ", "; + } + scan+="), "; + if (radioRelative.isSelected()){ + double halfRange = (Double)spinnerRange.getValue()/2; + scan+= (-halfRange) + ", " + (halfRange)+ ", "; + } else { + Double from = (Double)spinnerFrom.getValue(); + Double to = (Double)spinnerTo.getValue(); + + if (to <= from){ + throw new Exception ("Invalid range"); + } + scan+= from + ", " + to + ", "; + } + + scan+= (radioStepSize.isSelected()) ? "(" +((Double)spinnerStepSize.getValue())+",)" :((Integer)spinnerSteps.getValue()); + scan+=", " + (Double)spinnerLatency.getValue() + ", "; + if (radioRelative.isSelected()){ + scan+="True, "; //Relative + } + scan+="before_read=trig_scienta)"; //Relative + + if (checkImageIntegration.isSelected()){ + scan = "set_preference(Preference.PLOT_TYPES,{'integration':1}); " + scan; + } + + evalAsync(scan); + } + + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + buttonGroup1 = new javax.swing.ButtonGroup(); + buttonGroup2 = new javax.swing.ButtonGroup(); + panelPositioner = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + comboMotor = new javax.swing.JComboBox(); + motorPanel = new ch.psi.pshell.swing.MotorReadoutPanel(); + jLabel2 = new javax.swing.JLabel(); + spinnerRange = new javax.swing.JSpinner(); + radioStepSize = new javax.swing.JRadioButton(); + radioSteps = new javax.swing.JRadioButton(); + spinnerStepSize = new javax.swing.JSpinner(); + spinnerSteps = new javax.swing.JSpinner(); + jLabel3 = new javax.swing.JLabel(); + spinnerLatency = new javax.swing.JSpinner(); + radioAbsolute = new javax.swing.JRadioButton(); + spinnerFrom = new javax.swing.JSpinner(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + spinnerTo = new javax.swing.JSpinner(); + radioRelative = new javax.swing.JRadioButton(); + jLabel6 = new javax.swing.JLabel(); + panelSensors = new javax.swing.JPanel(); + checkImage = new javax.swing.JCheckBox(); + checkImageIntegration = new javax.swing.JCheckBox(); + checkSpectrum = new javax.swing.JCheckBox(); + checkCounts1 = new javax.swing.JCheckBox(); + checkTotalCount = new javax.swing.JCheckBox(); + checkCounts2 = new javax.swing.JCheckBox(); + checkCounts3 = new javax.swing.JCheckBox(); + checkCounts4 = new javax.swing.JCheckBox(); + checkCurrent = new javax.swing.JCheckBox(); + checkCur1 = new javax.swing.JCheckBox(); + checkCur2 = new javax.swing.JCheckBox(); + checkCur3 = new javax.swing.JCheckBox(); + buttonScientaSetup = new javax.swing.JButton(); + jPanel3 = new javax.swing.JPanel(); + buttonStart = new javax.swing.JButton(); + buttonAbort = new javax.swing.JButton(); + + panelPositioner.setBorder(javax.swing.BorderFactory.createTitledBorder("Positioner")); + + jLabel1.setText("Motor:"); + + comboMotor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "dummy", "x", "y", "z", "theta", "tilt", "phi" })); + comboMotor.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + comboMotorActionPerformed(evt); + } + }); + + jLabel2.setText("Range:"); + + spinnerRange.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.001d, 100.0d, 1.0d)); + spinnerRange.setEnabled(false); + + buttonGroup1.add(radioStepSize); + radioStepSize.setSelected(true); + radioStepSize.setText("Step size:"); + radioStepSize.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioStepSizeActionPerformed(evt); + } + }); + + buttonGroup1.add(radioSteps); + radioSteps.setText("Steps:"); + radioSteps.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioStepSizeActionPerformed(evt); + } + }); + + spinnerStepSize.setModel(new javax.swing.SpinnerNumberModel(0.1d, 0.001d, 10.0d, 0.1d)); + + spinnerSteps.setModel(new javax.swing.SpinnerNumberModel(10, 1, 1000, 1)); + spinnerSteps.setEnabled(false); + + jLabel3.setText("Latency(s):"); + + spinnerLatency.setModel(new javax.swing.SpinnerNumberModel(0.0d, 0.0d, 10.0d, 0.1d)); + + buttonGroup2.add(radioAbsolute); + radioAbsolute.setSelected(true); + radioAbsolute.setText("Absolute Scan"); + radioAbsolute.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioAbsoluteActionPerformed(evt); + } + }); + + spinnerFrom.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); + + jLabel4.setText("From:"); + + jLabel5.setText("To:"); + + spinnerTo.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 1.0d, 1.0d)); + + buttonGroup2.add(radioRelative); + radioRelative.setText("Relative Scan"); + radioRelative.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioAbsoluteActionPerformed(evt); + } + }); + + jLabel6.setText("Position:"); + + javax.swing.GroupLayout panelPositionerLayout = new javax.swing.GroupLayout(panelPositioner); + panelPositioner.setLayout(panelPositionerLayout); + panelPositionerLayout.setHorizontalGroup( + panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addComponent(radioStepSize) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE) + .addComponent(spinnerStepSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel6) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(motorPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(comboMotor, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addComponent(radioSteps) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(spinnerSteps, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionerLayout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(spinnerFrom, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerRange, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(spinnerTo, javax.swing.GroupLayout.Alignment.TRAILING))) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(radioAbsolute) + .addComponent(radioRelative)) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + + panelPositionerLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {radioStepSize, radioSteps}); + + panelPositionerLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerLatency, spinnerRange, spinnerStepSize, spinnerSteps}); + + panelPositionerLayout.setVerticalGroup( + panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPositionerLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1) + .addComponent(comboMotor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel6) + .addComponent(motorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addComponent(radioAbsolute) + .addGap(3, 3, 3) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerFrom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4)) + .addGap(3, 3, 3) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(spinnerTo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel5)) + .addGap(18, 18, 18) + .addComponent(radioRelative) + .addGap(1, 1, 1) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel2) + .addComponent(spinnerRange, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(radioStepSize) + .addComponent(spinnerStepSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(radioSteps) + .addComponent(spinnerSteps, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel3) + .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)) + ); + + panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors")); + + checkImage.setSelected(true); + checkImage.setText("Scienta Image"); + checkImage.setToolTipText(""); + checkImage.setContentAreaFilled(false); + checkImage.setName("scienta.dataMatrix"); // NOI18N + + checkImageIntegration.setSelected(true); + checkImageIntegration.setText("Scienta Image Integration"); + checkImageIntegration.setToolTipText(""); + checkImageIntegration.setContentAreaFilled(false); + checkImageIntegration.setName("integration"); // NOI18N + + checkSpectrum.setSelected(true); + checkSpectrum.setText("Scienta Spectrum"); + checkSpectrum.setName("scienta.spectrum"); // NOI18N + + checkCounts1.setText("Counts Region 1"); + checkCounts1.setName("countsr1"); // NOI18N + + checkTotalCount.setSelected(true); + checkTotalCount.setText("Total Counts"); + checkTotalCount.setName("counts"); // NOI18N + + checkCounts2.setText("Counts Region 2"); + checkCounts2.setName("countsr2"); // NOI18N + + checkCounts3.setText("Counts Region 3"); + checkCounts3.setName("countsr3"); // NOI18N + + checkCounts4.setText("Counts Region 4"); + checkCounts4.setName("countsr4"); // NOI18N + + checkCurrent.setText("Current"); + checkCurrent.setName("current"); // NOI18N + + checkCur1.setText("Cur 1"); + checkCur1.setName("cur1"); // NOI18N + + checkCur2.setText("Cur 2"); + checkCur2.setName("cur2"); // NOI18N + + checkCur3.setText("Cur 3"); + checkCur3.setName("cur3"); // NOI18N + + buttonScientaSetup.setText("Scienta Setup"); + buttonScientaSetup.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonScientaSetupActionPerformed(evt); + } + }); + + javax.swing.GroupLayout panelSensorsLayout = new javax.swing.GroupLayout(panelSensors); + panelSensors.setLayout(panelSensorsLayout); + panelSensorsLayout.setHorizontalGroup( + panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonScientaSetup, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addGroup(panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(checkImage) + .addComponent(checkSpectrum) + .addComponent(checkCounts1) + .addComponent(checkTotalCount) + .addComponent(checkCounts2) + .addComponent(checkCounts3) + .addComponent(checkCounts4) + .addComponent(checkCurrent) + .addComponent(checkCur1) + .addComponent(checkCur2) + .addComponent(checkCur3) + .addComponent(checkImageIntegration)) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + panelSensorsLayout.setVerticalGroup( + panelSensorsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelSensorsLayout.createSequentialGroup() + .addContainerGap() + .addComponent(checkImage) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkImageIntegration) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkSpectrum) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkTotalCount) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCounts4) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCurrent) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(checkCur3) + .addGap(18, 18, Short.MAX_VALUE) + .addComponent(buttonScientaSetup) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Scan Control")); + + 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); + } + }); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(buttonStart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonAbort, javax.swing.GroupLayout.DEFAULT_SIZE, 189, Short.MAX_VALUE)) + .addContainerGap()) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addContainerGap() + .addComponent(buttonStart) + .addGap(18, 18, 18) + .addComponent(buttonAbort) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + 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() + .addComponent(panelSensors, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(panelPositioner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPanel3, panelPositioner, panelSensors}); + + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panelPositioner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelSensors, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + private void buttonScientaSetupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonScientaSetupActionPerformed + try{ + showDevicePanel("scienta"); + } catch (Exception ex){ + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_buttonScientaSetupActionPerformed + + private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed + try{ + startScan(); + } catch (Exception ex){ + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_buttonStartActionPerformed + + private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed + ManipulatorScan.this.abort(); + }//GEN-LAST:event_buttonAbortActionPerformed + + private void radioStepSizeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioStepSizeActionPerformed + setEnabled(isEnabled()); + }//GEN-LAST:event_radioStepSizeActionPerformed + + private void comboMotorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboMotorActionPerformed + try{ + Motor motor = (Motor) getDevice(comboMotor.getSelectedItem().toString()); + motorPanel.setDevice(motor); + spinnerFrom.setModel(new SpinnerNumberModel(motor.getMinValue(), motor.getMinValue(), motor.getMaxValue(), 1.0)); + spinnerTo.setModel(new SpinnerNumberModel(motor.getMaxValue(), motor.getMinValue(), motor.getMaxValue(), 1.0)); + //spinnerFrom.setModel(new javax.swing.SpinnerNumberModel(3.0, 0.001, 100.0, 1.0)); + //spinnerTo.setModel(new javax.swing.SpinnerNumberModel(2.0, 0.001, 100.0, 1.0)); + } catch (Exception ex){ + SwingUtils.showException(this, ex); + } + }//GEN-LAST:event_comboMotorActionPerformed + + private void radioAbsoluteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioAbsoluteActionPerformed + setEnabled(isEnabled()); + }//GEN-LAST:event_radioAbsoluteActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton buttonAbort; + private javax.swing.ButtonGroup buttonGroup1; + private javax.swing.ButtonGroup buttonGroup2; + private javax.swing.JButton buttonScientaSetup; + private javax.swing.JButton buttonStart; + private javax.swing.JCheckBox checkCounts1; + private javax.swing.JCheckBox checkCounts2; + private javax.swing.JCheckBox checkCounts3; + private javax.swing.JCheckBox checkCounts4; + private javax.swing.JCheckBox checkCur1; + private javax.swing.JCheckBox checkCur2; + private javax.swing.JCheckBox checkCur3; + private javax.swing.JCheckBox checkCurrent; + private javax.swing.JCheckBox checkImage; + private javax.swing.JCheckBox checkImageIntegration; + private javax.swing.JCheckBox checkSpectrum; + private javax.swing.JCheckBox checkTotalCount; + private javax.swing.JComboBox comboMotor; + private javax.swing.JLabel jLabel1; + 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.JPanel jPanel3; + private ch.psi.pshell.swing.MotorReadoutPanel motorPanel; + private javax.swing.JPanel panelPositioner; + private javax.swing.JPanel panelSensors; + private javax.swing.JRadioButton radioAbsolute; + private javax.swing.JRadioButton radioRelative; + private javax.swing.JRadioButton radioStepSize; + private javax.swing.JRadioButton radioSteps; + private javax.swing.JSpinner spinnerFrom; + private javax.swing.JSpinner spinnerLatency; + private javax.swing.JSpinner spinnerRange; + private javax.swing.JSpinner spinnerStepSize; + private javax.swing.JSpinner spinnerSteps; + private javax.swing.JSpinner spinnerTo; + // End of variables declaration//GEN-END:variables +} +} diff --git a/plugins/XPSSpectrum$1$1.class b/plugins/XPSSpectrum$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..14e46611790cd6c94ac83012f883c5dc4d327076 GIT binary patch literal 1299 zcmaJ>T~iWK7=8{CE9;{8kydE=feL7@n5KqVhFTP;6OMJe!Vy-Ng<*HG>AIWx5nXiS zbu(&B7yW?ly6V4FQ@sb60UC>$J?}Z^ectE&Jbd}}=`(ZxOzwY+>SmQ+An+{g1|$g>O+p`@^Sp<2fj zzRD}ywAE_bDJqn)AVBtcG}NELX^^@S%)npox$e<0d<2&YYj`J3l{veft665gw*s;e7!yjDcF`MCN*ye{KAeh_? z`(0f+As@(g5JpsggR5THG2mFpqii9EYZk5|YhefX8P;c8^;digyV@~317cU~icaSm z*t1Z<10pzQCQdr98&I9@%hm~XmcjlPlqVv^X`l@0nM@4vk}luqa&`Q1K(&%yCm+%e z#V}Gw;Tgl?+?4D}wXS1|vv5tl3a^z2gc5pP(n5~IQ||dnLoQFpFr|Aml2UI8^&M-p zlWEY{5XM)qEA8_`Zn<1GtnJ#qu+<7fOf{V#v&axHz22!* zS|s(`2ccrsk&b%CkjY)q{0k;uWr(hObqX_Da-?|KKBx(Qw;MR(wS#d9ajFwvJlF-(=vHl*!(fg>ARLN&d*j(aAu$eAz^H(_Ad#0Zim@+jz- zH?e^GI*KMNP)Q?wfSDx{n43}xf8FIlAOZ^bcRv`${)ozLDZ3R6_u(*1)Ktmi^)*{L zp4<`s8_z!wb%vQ-x4-;IS>jMgWpzz9!uv{Cy}@l;1VQHEBIWYrYFqOqyJ@uohfY(t zt`!_n(N>veB`U(Dsf59}6fTV>`=6!^gAJj2t)9%~JNdoqLBHt839VD|RVk$!2vy~7 zTdXODsa|FMo3pu@uhO>Zw1Bi{&=QGo8US$`4ehB$X9T09P0%e%?+EeH!u%;%Vc`^7 z;WHv1NyKoCXpA`6HqkL8drt2W?KnM-tfmT|pq-zf7<-yd#7;0vZ}tVzGYo{9)N*<` zl|Do4SYsc4{WxYszlY#j2Yi~~!O9qB6(rd%3d9%b{fNE7I9VkSy@bXtVXzC#U0{I1 YPISB{F-1H|f7lJ&p_@Ue>BQ;#4TAgFvj6}9 literal 0 HcmV?d00001 diff --git a/plugins/XPSSpectrum$2.class b/plugins/XPSSpectrum$2.class new file mode 100644 index 0000000000000000000000000000000000000000..d2253ef3e9740a8846cacf1da2e8e960866bf763 GIT binary patch literal 1284 zcmaJ>Sx*yD6#gzf|Mc3_xkW`TDfG;vFO z^kAYd_C;sjhcQ&;xlO)}?Rq!;AXDgaj<|T%uWL~eRRo9?Z z;ijpU_@0{Mdxp+4M;hNVOjoVjohTC?iMXhlev^3Nf5h9`o~D`eV@jA)zDt&F+OA=h*SJ@)OA>A>h@(eAFJ=_n!fge2 zFe~A%f;nU)%qzGDQNpJCob6Mk6g)si!9y%aSX7WjPQenEB|K8Ff>jEw#rrt5Nm;cl z?qp5Pb-CL{*vOD!Zg9(^T!)Uj6ZDN& z4V{|QP}6t}w7Y9lQ+#FaZQ7n@ib1frNg+=pQzudeh(=wAc=ROVHW1C9r|nRS`iQbw z*`U=7J>)#=I}Rlh*im96D;j*CA#p4Y-%y2$e4lOi9Vn>!WG&{?cNaCPV++N;t39ue zZe2wbT?E~5?6SjMN}6h%YtpuZ3G23E!^vE#h!J|JyFs%C7LSYJqIW$+s~2ZT+DA`g z=%7C!rzbyyrN5x#6Wz!Q?NK^`7qp+l`2e3FNmwBMhP@=f1tbF4D{>Ph*hcyQ>;R#U zSZO?kYlzek{SIj^{6}&skVF#ULkuS(hv*l&8aitfSe=3Fx@u5_*N%E{{dNA=knskC qc#A2#!z|uo9Ust7s0i3kx`Z%LHyOkboniWX0n@Z(3N%J1{eA;-7(DR+ literal 0 HcmV?d00001 diff --git a/plugins/XPSSpectrum$3.class b/plugins/XPSSpectrum$3.class new file mode 100644 index 0000000000000000000000000000000000000000..098ba17ca5cad76f934ac071b4105e75418f88e7 GIT binary patch literal 551 zcma)3+e!m55IyO=>u$T&`wc`2)(Te8H^m2wf>5Pc5ns1$=tj0l+3f1Sh@!tBcmW^$ z06$8ch}8OKLNb$?IcE-&kI%Pv0NYr~BZWx|X-rutVLFSMEan(8kuP+4lfh|RG+V6! z??hqT-=V~=kRsY+a4UZ@Yv&B9y6SR?NISb$?AgRG65@fP8b z^bu@%i@`pUl85!c)0%6B)s9~qXhFy4K~U4z#8^8u`i7dCp5y_;*a#6r!3?0T`U54o zjEKmI2VF1X`*9R0sj*BGP1A6h>l#JmCF$gl2ZKf43KFydtGfOSR((a{kzUk=?hIMr zh8S!(KlNp@CYq~0fxRI4TWx*w+)|G_LKOauxF^H|sVWj{0xrhMrs(%4FiW0A-BM&} FeE}>pZa)A3 literal 0 HcmV?d00001 diff --git a/plugins/XPSSpectrum$4.class b/plugins/XPSSpectrum$4.class new file mode 100644 index 0000000000000000000000000000000000000000..9ff802dbd03d8b106f9044879152bc5f4399b371 GIT binary patch literal 573 zcmaJfOzZ$=Pe5LgLD^t!H-uI$dr?rMK3il8WZ=m+$p zqC1O_LNqXU?%cWO%(-{w>-*yqKovO^F|25aV^zZv))cHO*i^8^Fc2UAb=-4u1n1SVr7WeL4&*5E$ zY@sYcA@irSrsW5mkPL|_ zMur91kh<#(T|wH3FY#9>S2YtcsSdv|7%B%o+S?IHJGl;a_F@pG*xI6O^~-o zdl}J+rB|@x8zRrNquR(4itGc~6c#4=`;&aN_ySgXNAx#c3yB`-k|#uwCTIjY7HN&q PpIF8QdGgvAtu%fBr5Ar^ literal 0 HcmV?d00001 diff --git a/plugins/XPSSpectrum$5.class b/plugins/XPSSpectrum$5.class new file mode 100644 index 0000000000000000000000000000000000000000..4c559d9c26f2d0e4cc41ef8712a33a771a2dcdba GIT binary patch literal 573 zcmaJvVX^*RGl_wNYyRDuZR5>cW;fBEhC2MTaIXO_rY=dyv>lw z*L%juC>f7_iI2GOOXopKP5KoHrZt_RYw`)`V$0o+Ub0-0wPV6gaJOn3p2t0c4tUsx=#*|+J<`dL{*zkW@_bH}46!Lh zhNNsr)#(o$LEH&3oDcXLrpY}ocT}b>9?UlDf9=T9vqV6>2GeyZhh8g0GYXBOG4gh4 zFC$u^I0h@cA@oE$(ngl5$Uc)zAUVn3o8(6eFJQ%Ygn!eu0BB5?ydsPgm4={WfmVh7 O#1huYlh-P=()a=to6& z79oXbVD8+xbMKjR?#$Qs_!Gb}vQa2l))2vphDEHZSW~f~Vv}Lc?^<52%#f(xH=4}> zH+^^5uh7A%B`p7pLC?>e?B6jcRj17vQguu4>tVme-CLt&%ZOq6mLnS6eQ?}9Z!=`_ z^`0>@O2(sK;v+8n(s__llYT{lX-#M7n*73&0QwY(Ls>|eHDTJ0XNk@g_q$G8#a0~K zNXMaKK8~pLc90^I;ERdk90Dm|D;y8JfBk~Lu?9> zAt@VDb@~HG5O+ch=L7zRX>!lY9hIqz2eZxkUpun&ED=zz!E{~9q1Ou0j6$PmjJ#di z%ZOGezJL{85qhE>X(LNjWXEI^NKW$iCi&6AGg$Er;oo#E0D7lOJ`hHVN<+}GK&wK3 OVhQWy$!ir_Y5V}POMjIB literal 0 HcmV?d00001 diff --git a/plugins/XPSSpectrum$7.class b/plugins/XPSSpectrum$7.class new file mode 100644 index 0000000000000000000000000000000000000000..b2f5caa1e1d702eb2f13d6dea1d617a792b88afd GIT binary patch literal 573 zcmaJN!B%=lf)%as`t_1i|X zIpC)64*L~4IJSi4pD^h8sgvCs2Bqq>IYX*$34S^3x43(4v}_qMOy6=ugS&T*+vjbD zOupVTMn=iF_e*@lgAh9nC39}|l+wm;Xx!``+X{*?X zV-x8(RLsT^mEIOIq+p^pcf=4s7lON0+weT@5p=-AHbkd%)#{N>hV-A*>Xzqos$_^w zATlInL#j@H;0WSQh~a#|-!M(?dAWl!b#ZUHS^sNCmYyX7>NS|IOF8sfA(~NW6pfL$ zO?w&93dJX|!ZSh-v?Fa~sfz47*#wf~{GD-rwD1U4d_nj(T?>Fd=#o!_k)qNNbj;DJ P(4SbqDtYo+g;p9rxaEJW literal 0 HcmV?d00001 diff --git a/plugins/XPSSpectrum$8.class b/plugins/XPSSpectrum$8.class new file mode 100644 index 0000000000000000000000000000000000000000..d5494bf37cb0f093386a2b8ade9c2af662c5b17a GIT binary patch literal 573 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 M;qbj`Q(f`@0R%%{VE_OC literal 0 HcmV?d00001 diff --git a/plugins/XPSSpectrum.form b/plugins/XPSSpectrum.form new file mode 100644 index 00000000..d88c6ded --- /dev/null +++ b/plugins/XPSSpectrum.form @@ -0,0 +1,158 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/plugins/XPSSpectrum.java b/plugins/XPSSpectrum.java new file mode 100644 index 00000000..4e2a44fc --- /dev/null +++ b/plugins/XPSSpectrum.java @@ -0,0 +1,386 @@ +/* + * Copyright (c) 2014 Paul Scherrer Institute. All rights reserved. + */ + +import ch.psi.pshell.dev.Device; +import ch.psi.pshell.dev.DeviceListener; +import ch.psi.pshell.epics.Scienta; +import ch.psi.pshell.plot.LinePlotSeries; +import ch.psi.pshell.plot.RangeSelectionPlot.RangeSelection; +import ch.psi.pshell.ui.Panel; +import ch.psi.utils.Convert; +import ch.psi.utils.IO; +import ch.psi.utils.Serializer; +import ch.psi.utils.State; +import ch.psi.utils.swing.SwingUtils; +import java.io.File; +import java.nio.file.Files; +import java.util.HashMap; +import javax.swing.JFileChooser; +import javax.swing.SwingUtilities; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.table.DefaultTableModel; + +/** + * + */ +public class XPSSpectrum extends Panel { + + boolean detailedScan; + boolean running; + Scienta scienta; + + public XPSSpectrum() { + initComponents(); + rangeSelectionPanel.setAditionalColumns(new String[]{"Time", "Size", "Iter"}, new Class[]{Double.class, Double.class, Integer.class}); + final DefaultTableModel model = (DefaultTableModel) rangeSelectionPanel.getTable().getModel(); + model.addTableModelListener(new TableModelListener() { + @Override + public void tableChanged(TableModelEvent e) { + if (e.getType() == TableModelEvent.INSERT) { + final int row = e.getFirstRow(); + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + if (row > 0) { + for (int col = 3; col < 6; col++) { + model.setValueAt(model.getValueAt(row - 1, col), row, col); + } + } else { + model.setValueAt(scienta.getStepTime().take(), row, 3); + model.setValueAt(scienta.getStepSize().take(), row, 4); + model.setValueAt(Integer.valueOf(1), row, 5); + } + } + }); + } + } + }); + } + + @Override + public void onInitialize(int runCount) { + scienta = (Scienta) getDevice("scienta"); + scienta.getTotalChannels().addListener(progressListener); + scienta.getCurrentChannel().addListener(progressListener); + } + + @Override + public void onStateChange(State state, State former) { + setEnabled(state == State.Ready); + if (!state.isProcessing()){ + if (running){ + running = false; + getView().getStatusBar().setProgress(-1); + } + } + } + + @Override + public void onExecutedFile(String fileName, Object result) { + String script = IO.getPrefix(fileName); + if (script != null) { + switch (script) { + case "XPSSpectrum": + if (result instanceof Exception) { + //SwingUtils.showMessage(getComponent(), "Error in " + fileName, exception.getMessage()); + } else { + if (detailedScan) { + + } else { + Object[] ret = (Object[]) ((Object[]) result)[0]; + if (ret.length > 0) { + //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); + series.setData(xdata, ydata); + } + } + } + break; + } + } + detailedScan = false; + updateButtons(); + } + + @Override + public void setEnabled(boolean value) { + super.setEnabled(value); + rangeSelectionPanel.setEnabled(value); + valueLow.setEnabled(value); + valueHigh.setEnabled(value); + updateButtons(); + } + + void updateButtons() { + buttonInitialScan.setEnabled(isEnabled()); + buttonDetailedScan.setEnabled(isEnabled() && rangeSelectionPanel.getPlot().getSelectedRanges().length > 0); + btLoad.setEnabled(isEnabled()); + btSave.setEnabled(buttonDetailedScan.isEnabled()); + } + + DeviceListener progressListener = new DeviceListener() { + + @Override + public void onStateChanged(Device device, State state, State state1) { + } + + @Override + public void onValueChanged(Device device, Object o, Object o1) { + if (running){ + Double total = scienta.getTotalChannels().take(); + Double current = scienta.getCurrentChannel().take(); + if ((total!=null) && (current!=null)){ + getView().getStatusBar().setProgress(scienta.getProgress()); + } + } + } + }; + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + buttonAbort = new javax.swing.JButton(); + buttonInitialScan = new javax.swing.JButton(); + rangeSelectionPanel = new ch.psi.pshell.swing.RangeSelectionPanel() { + protected void onSeriesChanged() { + updateButtons(); + } + protected void onSelectionChanged() { + updateButtons(); + } + } + ; + buttonDetailedScan = new javax.swing.JButton(); + btSave = new javax.swing.JButton(); + btLoad = new javax.swing.JButton(); + jLabel1 = new javax.swing.JLabel(); + valueLow = new ch.psi.pshell.swing.ValueSelection(); + jLabel2 = new javax.swing.JLabel(); + valueHigh = new ch.psi.pshell.swing.ValueSelection(); + + buttonAbort.setText("Abort"); + buttonAbort.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonAbortActionPerformed(evt); + } + }); + + buttonInitialScan.setText("Initial Scan"); + buttonInitialScan.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); + } + }); + + btSave.setText("Save"); + btSave.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btSaveActionPerformed(evt); + } + }); + + btLoad.setText("Load"); + btLoad.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btLoadActionPerformed(evt); + } + }); + + jLabel1.setText("Low:"); + + valueLow.setDecimals(2); + valueLow.setMaxValue(1000.0); + valueLow.setMinValue(0.0); + valueLow.setShowButtons(false); + valueLow.setValue(0.0); + + jLabel2.setText("High:"); + + valueHigh.setDecimals(2); + valueHigh.setMaxValue(1000.0); + valueHigh.setMinValue(0.0); + valueHigh.setShowButtons(false); + valueHigh.setValue(100.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() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(rangeSelectionPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 900, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addComponent(buttonInitialScan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(18, 18, 18) + .addComponent(jLabel1) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(valueLow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jLabel2) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(valueHigh, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(60, 60, 60) + .addComponent(buttonDetailedScan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonAbort)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(btLoad) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(btSave))) + .addContainerGap()) + ); + + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btLoad, btSave, buttonAbort, buttonDetailedScan, buttonInitialScan}); + + layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {valueHigh, valueLow}); + + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(buttonInitialScan) + .addComponent(buttonDetailedScan) + .addComponent(buttonAbort) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel2) + .addComponent(valueHigh, 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) + .addComponent(jLabel1))) + .addGap(18, 18, 18) + .addComponent(rangeSelectionPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 240, Short.MAX_VALUE) + .addGap(43, 43, 43)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(btLoad, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(btSave, javax.swing.GroupLayout.Alignment.TRAILING)))) + .addContainerGap()) + ); + }// //GEN-END:initComponents + + private void buttonAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAbortActionPerformed + abort(); + }//GEN-LAST:event_buttonAbortActionPerformed + + private void buttonInitialScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonInitialScanActionPerformed + try { + //getApp().startTask(task); + HashMap args = new HashMap<>(); + args.put("ranges", new RangeSelection[]{new RangeSelection(valueLow.getValue(),valueHigh.getValue())}); + rangeSelectionPanel.clear(); + detailedScan = false; + runAsync("XPSSpectrum", args); + running = true; + } catch (Exception ex) { + showException(ex); + } + + }//GEN-LAST:event_buttonInitialScanActionPerformed + + private void buttonDetailedScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDetailedScanActionPerformed + try { + RangeSelection[] ranges = rangeSelectionPanel.getRangesOrdered(); + HashMap args = new HashMap<>(); + args.put("ranges", ranges); + detailedScan = true; + runAsync("XPSSpectrum", args); + running = true; + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_buttonDetailedScanActionPerformed + + private void btSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSaveActionPerformed + try { + JFileChooser chooser = new JFileChooser(getController().getSetup().getContextPath()); + FileNameExtensionFilter filter = new FileNameExtensionFilter("XPS Spectrum scan definition file", "xps"); + chooser.setFileFilter(filter); + int rVal = chooser.showSaveDialog(this); + if (rVal == JFileChooser.APPROVE_OPTION) { + File f = chooser.getSelectedFile(); + 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()}; + 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 + try { + JFileChooser chooser = new JFileChooser(getController().getSetup().getContextPath()); + FileNameExtensionFilter filter = new FileNameExtensionFilter("XPS Spectrum scan definition file", "xps"); + chooser.setFileFilter(filter); + 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[][] table = (Object[][]) obj[0]; + if (!rangeSelectionPanel.getPlot().hasData()){ + double[] x = (double[]) obj[1]; + double[] y = (double[]) obj[2]; + 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]); + } + SwingUtilities.invokeLater(new Runnable() { + @Override + 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); + } + } + } + }); + } + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_btLoadActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + 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.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private ch.psi.pshell.swing.RangeSelectionPanel rangeSelectionPanel; + private ch.psi.pshell.swing.ValueSelection valueHigh; + private ch.psi.pshell.swing.ValueSelection valueLow; + // End of variables declaration//GEN-END:variables +}