From 9f99157f0f078bec51e61903e957d2fd3b2b0c29 Mon Sep 17 00:00:00 2001 From: gac-x09la Date: Fri, 11 Mar 2022 14:59:17 +0100 Subject: [PATCH] Live scienta controls --- extensions/Scienta.jar | Bin 69750 -> 52540 bytes plugins/SIStem.form | 562 +++++++++++++------------- plugins/SIStem.java | 767 +++++++++++++++++------------------- script/scans/test/test.json | 23 +- 4 files changed, 644 insertions(+), 708 deletions(-) diff --git a/extensions/Scienta.jar b/extensions/Scienta.jar index 7cf33ecc30cdfb68b830ecb30c95caf9a0656dbf..bbdff866d01bb6816df409dacbd97f435d6956d6 100644 GIT binary patch literal 52540 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 literal 69750 zcmdqK2Vj-e`9J=g_q{jo&CN>)H(`Vsc1XhBLm-3zktB=+B%;Mja)D?_FoWUVRjbym zxV2hbRf}>#5yXXi+tyJ>9j)E1w$@gw|Ic&IdB?rE3E1ktKfi%{#`8YsIqNykIp;ZR z@j^2YCJGUip0K)_e1GW_po-G!;*n*Q^G1L9G|^%gbuLhUka6vCrvsgTIrzD#6~&ch z^Gd6#M^((Lh&I-*iM6zjTpnv~sc&kWmN$0Pm@eVsMjxbjL$r2XEDtbz96M&zlrG_t z=2)~fRyT6a76ceuIBrT_{-Wk+Z9^=tq^WsBQ**Qxv_^CZS48U@N0u~1TUw^&)vg=0 zp`{+bb+LwqQEm03iZ^WN67CXCO!OCR=YD!YfQWznkm#z~`dDLYbVzaSv2FD&^-Q;- zsV+9EmWe+7jkyn|Ft2Wr)(*oM|srNCdi#r0ON zi?v2;1ZDfbu5zH(kmbeY%Sx*R^9mc}hBl7BZ~lnR@B$?$AY`MwzA;wWwtjW2 zxjMSK0T4?PShPma$o%r7qZ^~68={SCM_08r*Eg=6KBAMTBjruC(T3&G=6a^2$pspt z>p?Zro|K@p8TF0ztuqDnND))nh~s6fX9tyO zQ-7La(_k86Q#Z=7sXH4z*yu?)f-=1l9fazQ?tPC!P&W-AR^dEleCd6X(MGsS-m-jzzk42^`<@qmVs{& zZ2k*xClM!OADQ>SCuB2Ali!{Jet#OE@h6ZWq2WlNU>61VQGoG{1pGWeY=uPw5d(im ziNWL;$C8PEL{>pz-<_29Q~8-&wG&+)+$y+5LpkX*3_pX0L)_)VR0%%;8R5U`-4v*a zSmsU&-An1x6AnmEhVFFXpnQ79~)!KtV=5{bzO<+4^RMiBxQRu9@ zCRGGICA*D<`hzFBFm!uFd-(3vMnkMqi~AY7#X52EX77L#wdt1wntku z2E4Yot)Yb(-cK0bM3L3QZ8?54@S<5fw*;)~N}!&eWJ$tw#ZRtZ{3IbAgzPEsbHB^% zsfq{5`yUA&e-aY~PeOjbhSV8rQ-td@+oo|e9-<*thFLOAu+hN!+hD^imOEMhBSB+> zWlabeB!gJcASF_;AQSk)f+YvS2l5@hjs#0je3LC*^Z`DLB!%CRVDaN~lW_z~A1O>& z@bpLf;}}y4mej#5$TK9J^6)btqe4jTK%J0EWQ6}lbu3tdN#es585~LvZ%Q9?|(o3Q&8exFCaRsQQ8n&kHJq>tTk!4^B)O{ zE(_|{u3NPj!=_a$7Gtat_Q$_roW{tIalY0nb>XJtkH*OV3cvU~lHWraWZw=XM3 zKvon$R^cl*bxdQiz9TJd>Cmred0d35P``VGOqBvQZkMemv(W zWsG?t8p!s144>Fu5Te0smxX8u+lPi|DBBA|G>q-?5DjO$0`oYwD?>Db?L`(XhFmBf zJE45ln6a3bJIQJ%Tq5oe#6e-vq5?u$V-=4dqey5MV4=AlUF}p*2Nej?38-D&9Bph_ zU*E!7FF{#;uNohDqnm7RbmL2lE4sS-$2LBMgAiQ9Ivv^gX#J1G){qXzHE!CzhR|AK zV+su(E3|1TVf>ht%$qiip=z5Z(j=Y)<=Ggh!x+TIU^a%ZF_evAYz${3pN$ce_dl8^ zv6>?T^CKiz&XbU0X(Q3nM!Kbqq)QvAmo_pWZRA1P$cD6$6FJX9L6Mqg6+ycoXcT-M z&9g@1o6@NK8KQ9vW=9IYqj{Dee;mR(W2f=Zckr|YQk&CFdLkj|$(Ej+ET!n_E`2>TVo&Mom8CFq zrLT8Zx(wGRE1Wc`^Xr6atnJjTswT7@%G#PNsENA60<0%20CQobZ>K(H&5r6cGcbToZNo9Ul)7X2B;p^9lb%|JMV4xyRSo`uP( zGf|vH{gWq()gPa@YeX6m|NJ^7r!iJT$(b}&Jd&mEyfDqD1yGAyR2D`p9m)no^+1;I z3mF6QTFP(8Ybn1WuciE6q~-TwEx(t9sDSa8hNzJ3st^^iT^&-osbwJ=#s1|X8qM}$ z7Oj9b7;;&Pd)uE<(Xo=sj|Q=?!b57OL4Hd@$^l5Qc=D<-uq_t&@{@Kcm_`STT})xF z4)Aq40H0DUIc1JcK0zs#gme%cLFY=bBzpg&&cNSSB~Ee^()Tqwgc=t3U`i;*4yTnq zrI??f4QX_QO=v3IA3zyDl#O9*3}+*sjS*}Vuu;fH5gQ}f7{$hD8uCBt9`ewfyP$hO z!lige+NF);OB*?mHZmb?d zVj{k&?&1q{7n2~j6@EwEg&&{AmeXBKg@k9}#X`)GF{bP;QU|vn^N@5`?uBSJ%~A;w z#Sk3)_fILdzox!lhWSRj3rVqWR#H6%7|e6NI2*VNj(o=?D>^qeYN5i!?e*Sahif(M|LP3Q%<@7}g`a zK_xU-+NBssIUP(X4NC4{ZvN|xTQIKYvAxvuIs>$-)@W->QqOXHI@ZCar-KP*gy@hk zBAgWgZA>6~(OmvkYSFw1s&qkw6A;FT;7|rH48tf7BU}Z;DlJ;Xki~2);lN8Rs^X>F zYKAPcXt_m)LC`}Z5!)CTLTfzJBmfP5F~8|!K%qgtr!XgM{t7*@-gL0Mw$dbqAmWJBb4 zB&4%NRI9#aX)IcYWn`?39u8vl>!WL9B~5L}TQe4ueF^rm+Xa+skEw`m(5tlJ(#^G4 zk;W{i1%0taScMK?^&aJyxH>tvsSQiJTr_KAt;@>h%1BYxiCFF$=0PsD9`_Hg8F;Wa7vn++csb`g%817NzSNM>|D~?+>nqy z#i3{xEgKr@TLlgG_s))ve5H>=G%QTb)Pi+2F->vkwCbkTXv3bA9v}uvcSk zwDqw1)^%{Tv_>0Sfu4$bnSX6tQx`NMMLOE2qU>;9=?{uL*^pDug1tg=iFbEXy{xhR z*tS?%ol1DB1%mdG$~Z&Oy1J5e^$paCa!EdwiJqIOU4A>lL&X;Cc z;zp3lJO;Q>^<-}^HgXkg zU>Z`N7`u*U?-=EsV;Ln88q1JzTmnmFfg2dlj%U~e zg;f@ziR_)EyyX#^%-$)=yC_0a**i^nmqxJL4Bi>ayDUP7uy>~Nu87bq_ReObSiz34 zj3Xm7han~66U#U%OzTxmMA@}ELUZ|Bsltv$XdZj#EAP4pEnsh%@*WeRL)p7fc^i=> zuCa24RVdi8meCx+tOAfloaZx)Hm>!J?CN0|o7l4%%xP?~jN{mIe8@NpY$l#p?1m>xDxV}3XtENq;?cxQ&`MdK_E`TcZy$~Zd=HV6@LUoyE)5x%G5yQgxFUnjHLhgWR(4&* zuB(~kHEdj)AvPJ;S;qD0Vxw^b8#l6XQ<&n$kHW^y#x0id<1jsFY-94bhK<{d+d2Jr zSjL^4nV(q3U7Uftnb+X?y<+TP(B6>o5QmF%{`PSU4_n5gA>;8dy=m+Z8BZ|MlMz~MJR6}UY%FD?ij8VE zma(zic$O3S3Wxs@XXRDP_*s~KXZ)Ol{~~R64MYw881!1&?0Uy%8?R>=Zy0x^o&1>s zrOn==zaiY4A+d(@@=I>ycZ7_$LdM&cc%MnW!$tKjyMD!0_8z!ZoCl6v{Y8Kqo*xKCG&=9M0Htk|&XV+pkQLNbs zDPwdzAty%6lbuvys;GmgQt&4d-x3puZafo1o+uDM6>DBeT!MRJF-m=Ne3x67BMXhZ})UcG<&3t1yO#I1PfRqggrIR=@Ot}ZU+xjNVIGUPc zYQlr!!-#riQkoOzJkSlaBHtL0LER8pTwGPPsHL~i&JJ~BC3FI=_T+0!ygF2Z zccw=1t8BEUq>C=5#m%ub_0R`R^Urj2Rr;nd9YW-6&?&{ak}a*eCKPWovae=me$|Qb z7t|iU$6BlE*S9tB=?Aoqx+ZT@hsvyLTDAck4jwU4uGm(5fWl7H)mWm`iKD`)IaEl# znk&nN20`8HnwUT2q;zhqrM9_#1F9J7eeLF@x@JqTNxwOogwJZ87VPMcp_z)gSUqW4 zv!*513ZDX_F>4T9W^)WhQj|I`9g(+nH7&&n1C&RWs*<+W`i9Zv^)0*$J}ldU{%+K+ zPCQBAN=%~`!HpJtHh7zJkHnJ*n3HNfmtLxNW0>J%0!?h@bj$dwWqgd7klA*pJo>t- zz~s{=QWp?dFOOApeE7pMFh=_uh-2p8j(8u`kE1|J`iQbHQM;%KG%bU5oZWqCchy2b z>w;t}`NTUpps?{$?15!seH%F44M9u*N%JuIbcUBI4-UjEAUeISJfQ$x7I3|JyE?XD z8GnZ;LaH2Gq}|^h9fbf?DSi>QLR-6>%gE3Ua-?`#;FscevY~^*MfQ zLA`t>;Q!*3wz~y4v9w)qa%p=XbZNVQq|$cbIwszjtEzz8yi^6H#bn(nLjLa%Phb`M zxL9*jRoezA0J(4BD)W$_#DdNPnM+hwX`ygfGdgCa?&VjuAa^B9E3W)RjcOb^V4b`+=5;<`f33#iAEI_=Il z%S(;}agyWsIXTLmm>dPu$>C@eAVo9~_DRtIk`N92ZZs=WMB@xc-DsSVG1p(IGkiKg znYg1b<{O9Wc$9o-0jeu~r&*$NAK}gj& z=Nnj@#}fY-GzWmv_QO!729cdK?v(|tV$>a81lf_&)a|e!2ejOmAUSr_U8Nt@g{SP` z5)agI(@Bh^gFu{HSxP!}0UkO-q%>owfg^-&K3Tl`djU_~ox!LO2WrTixM<|EJ?q5f z02bYWf76_VA^$lI(eIbUAP(0wH=(02TALsun$>_J$FFzxl3_MC)mz+; z=6a-5tK}XO;%CT241&FH?FHD736S(2f=}cP884`h_r>8=hw!+>NL~5Pkz%K#FF^@X znpY-$M;<#{SIgi-j1@6H(aDw5eg)0=G-Uk4Ha;`{88ZH5i$g^f4C8ZK%oFo%F-Mdf z+;W=nMacL!2VZE5ULqGFII$DyNREb#FGI#xArq>_A!2CA6d}_HnWimkX(2NlGBc1U)3!xF(cdz=*k-2L)i$%tZXq)gGP7;bTjYk! zoRHZ)WcIMd2#%*`$m|s|b8S(;zTP3TPsr?Ri$eDG3z_{x<^Wq1u`e%V4z$Gp0nnh3 zIoK9`nA(t#In)+;3>_9Shlk93Ta0A%5h1g{76bW1VaP19#UOT$44I>BF_@jBL*^J; z^yTvFY^hMmzmPdLWRA1NWHBjZjt`j=Y%!6Y6GP@CTTI}TOb(e-Y%znKQ$yx7TO7j9 z=^=B5EoQRwkdQgk7PHtnD`d_NnZ>pk#ifg**X`HI{j=?mIVWU-Ir=0b)~WTdrLo$k z<~m!97GrF4u84-r(vUgN7GpW4`5|+GEyl64EMy*Pi}CDS7&6OkF@b&#NXaU3mTewoLdnr(ZfSLCN%f+otJIg(;!;K~FRdu8tX@@BT5X%P zVk_bcsK9O`){1N&%|?G*=U;qad}y3m2H0CjCM^k z&(0F(ceTuO!1?C6aQpzj^YCNf1^E3CzYA^iB5@IC;9{pZ5=ShEfm!kr^HSTq%sk09 zFE_8S%qwkiAqU%PUWIz_k1Et6zPfgyImROh$=&AF<~6o?t+~NAuQRXb_-?Sp8RATK z-Dr!=Vv8-#L;HmHCR!SFJ1n0A1hAbc#VrqW=tq^Wt>yxF`3(o9UNjjqS=qvO3D z2fh0uB&Nv?NT4>=KgsV<#pY8NXdHRJgUE|&m3+FGCd-wldFW)Jcg~CHDKBJy`J%(L z_7VKz_iBC-c}kz{hUqG%l|Z&GEp>xsCqY!mE+UVW?QXa(V%mbT`3u}o-4gsNOoqs7 z!Au~pMNa%Ouo0!Ybn&XHvcpSJ_CBA&&J>z>-X^s=fc-YQn>eg&ZuJ6%^>y~j3`ogM z#kEi?xA4vkjFMRdVXTpQ#_wUGM`b;d2SCT1yojKMkcT7H9A2(!c@G-8Clv3ZW$4Z1 z_8}B2*Pxtm=0R_WV&y8VUVtlVR>6;A_4!qpEVmNfV5n+ci*CrAWRP3RvL4-_nY!ZK zfGBoZvl^g+WeX>b{wf8lI9R@_?U@3qsC4zH=sNaM@Kv%8PnVhxucOlAxw$H>s`9du z($r-IBxG2ZmBfP(O9Z4UCj>(g%VO~ncMD~OzfgF?l}vzJBrZi+=qnulM%^kzU(Ue~ zs%CV)U7W;RZ{Uv6Y4+fmgdq=_9ZyB`lWj)+7#!*920*Q3L2+eeX*t4y{hco=B$vMas=}fWWA5DF z%@gXobVW&7b#ZmsqDoiDfV0{`6_qrRr!X{YKgusFW97M(KNo+@3+_4216-?x^;tQK=CN+eXf#aJFmhI= zwx#ET>%1YD&Ru&5NA24g>TdRAHFpYZAIPoDE|TqdLogr0f&604o99iqTuKM>kx}b5 zeuic$D801Uv2D=?h>(;EI9LwuTHDmP5!+b3s1h)BRC0vpq)5W?K2qB zPJ6D0c#Oi+)}^tvSeBIsCWfX=aWWz=;PPU53vU%q;u?n+kQhEquyhf)J^+O;EOUK5 zwjrcJLP%&Zf2CaNO0|)ogQdx@dv{&uN9&xPiM6rTf3%mYzU0dCz*n#|3gHyuYa@e3oJTjZS~{wz8YMzQL{R!WLby z5pOs~P|&%xF*YH?{p-z{w@lcfzsu(Y87mNvA%(uV3++E7YQdrEoEJHZP{|{(N3uQIT0WWFa~V?nPuHcT%9Bdte6z3yOB&Fu`uJY6>5~mU~V? zx;#7(-a#3F+YCpY1D+|(uJUWv4(zhmU$H41Uvc9aOx%u$g9rH9-TB%>!f_E9zV>py z<~m<-90Kq@(!`Mn6}BI~_UCwU&KzI!)RBjQJ7^Gg-w)bOgX1&=C^E^YY@iI2L6PL) zz!)wu@|`F~NDN$y2s~U@prR;pzK)deQPRZbfAw{Y^A+b+5o(+?$2(sqIA3x05nsV3 zFtHzBg`I-0GVxO-9H&qDyap0K9Z8#>n0TD4N6@U;$n9YU^iL&`#~ml#J&^B9Q- z9&bSS^_;UtqLB~ah#ncp{INTz83dYfWT(Z6pj8HJb0XM??;G6+WYRWCjLiesIIbp#Xgj*?K4aY%Yh8DqQ z@EF((p8z`@_7vD**wbNWz@7=)hFuK13+z(ZeAZ?G?5?mE!p?$S3A-EYC9or~`9N|u z?2WKSHbQLdo}Dnuw$_M!d?fvAM6I${b8RB zdjRayVdudp=iuB8bH87erW|njQnGJ{AIc9Qua|=o=={ z0?48@xVqyEnu=4_(`Yx&zCVuB?{7iS{08SYf;hf07^gRI>RPPAnT^djpm7?`XIzDo z88_oN#vYu;cmn4zKEyGMFR9!J;bhoAsx%5|kuet={wuNHe+{<#Z@@LUZ-D#i#uiXi*QxLWl9(KkO7=aS|*m`&=PmY(}2VM zC^KS4U>98$r_0^)*8T7~xJ2b#8J{{hW~=xFgc#1%8T5)+0h(Bh)m{8+h=XaKhQnxA za3wC^PFI?vcG1>2UB&*I?R0gVuF<|DOd0J}1(9pF({*vWK2A3jL~h(pH^u2k(tY!G zx+P9OmhNra>DD;iCf&C?bbx<{7YBTI$`ChrIT?rB5r}?>lwF7p`yw1*yBJqcT#Ec( zM)T-$T1r>Y_vlI-OWul8WLMFtbhR(Xr|A+7@WQSxIlj$-a~VV~f8s@?hA!75q8oe! zf+>p(3&fh(i6}-4RA?B8-GvhRL3!ccL(G}|`rbs{3;T_m7RU|UPj?GC!xY=T`UA&i z%7K!)8~J9$b_+%tKgQ_c7954URmR){G<)H!*%9JMd2 z3_O{IfO}D3+skpD@ZJg-_f-~|_tOr8_ECIVpa^BA-NBI_JZ+>0w{ipfDK9s;pZesc z?WZ2O)_&@SbEP}CQW(~*t0<#T?4bL%(em72oF2#xz*x%&fjYF7-QRDT8j`T7;arQq zr|Ivz-0!x8P0cLaO%K-e3iYykg?nZ0q&=Wocn@+AkQF(TFvz6)P#8PV>Tr&fc43Hk zKc*cI;JoK?%VD}tG>G-6^RD2vMz~C*;YXrLYybld zrz^ytA)%wP-A*L<_T`4 zP~^#N6pTE@Bvoxnl9+~90-{KE^_7K1hFxrlAAlM*9q2S(f;6JbqrQc4db$FHYlsq{suT!3^2ad7sB+_g%!mdw+WOvyYa zTJ$0bi2;g2KpCaeB!sSIN?%Czf`5 z`D)FX5@$e`o`O^**BUlo=tz7labs$h5CbVJ2Kk65vc#qBh+ify*Tj7+abx6V$r3Mn zNmunZ)K`D0Mi7GchiG~;b%}&`(XE)KwIEeQW%xAwOu-| z5?5=wOF)-dtv5ypkr(6i^T;pa^x9TR$8cdA;ZC{NleuoZFV(#hxvs|?OJpTgDt5Q% zsOD;kzyqu0edO3ja-7P9s?BMr%^ALo=wd+vZE+n7fF$bIiyJicbHRtq-#k8Fu2}}P z`UZr~ofW(3O^m~TS-6wldI;IgfON}F6g*-!VxEJ}pae(5=gJgtkDP;eS=?};=IKJs zz`60GC1gCCPJ_-!eJ|GItfV^apdUEHB7j>p5yud~3fTjKN^ z**|`?i+)=Uz(zlyqHsTD740V*BKm>ME3Tqo=G_qD53slCZjkT|e8oA~yK*kBANT>r zI_KfY{{=D`%*u#LGe9@oBycCjDA0>z1n?8Ml<2m}_&1GL0}ybPxJ%rv6YE`5fjLn! zk6r4^sUFoM*gbf!M6swpaJS^ZSEdZSJ!RnT$$_s)8Tj6mfpe1sr z{6NaU6Ose(N*Q=}%D_{S13#ED@PjE!dwO!B)gVNE!GE@nnja&rS~fQOdwirOflH5%D~U147@Qp@E0iqKc6!2mZZQ?&UvFFufSeN z8Tf?cz=4#3UrgB~8320d>G!OJ`NLMsxN_)^=-A`* z=fmLqi*|0K!a{WQ-Qx7|{q%`o1&zc2EH??Zje1ugAenUZC1%wB`nH2bf@-6z^a9qj%XoA)Z`Y4{C{2Z7#*P%VH11D|$9HX#YNjRrDmahyK)73>1fd%!Y14XYqd znMz%h(GO)h0A-qoG98FA9ZX}4AvDz(3f=fHsx$Jb#TY@S8Kdb;qlnHjM$$#bD7wZN zBg>dqY{x*M^BSfO2CmljO8Yvuv@dU0+6-|@8>&rJ+FuYZr+e{V)UUHre_gzxr$)ZH z=ogWPF~`GLGnuz1`gl9_T=Y%x%l7pC9RbsVUObuJ)C1CcOT3*zxL%M<=nx+v-Q2Sb z-lL)tBW9pj)4*zH74D-iS>yQ?G@j%3)0CnB%yDpI1_(Dy?17jRNC438Nzj9K4=frP z>>lhMs9RJNltI&E(4Y*O<^}ZwWKd{*7mZ9)K?_F41>}e`9G}K2MbQimN(-iRt*Guc zT=}&TH*RghZCabL)N&jxfy!;QI03g@o``F4Poh)ADRibdRpxjpn%Z#cFW$whm+xTj zB7Ox|kXE~}78i!xYZhYHYOR$yRlFzO2djnY1n~hTmP+j?2l=?~_Df5AIL$w;M5$u? zkFH{GuFjf~UBZZqTACSb!=kN z)Qh#AA-zCqb%c7%QL5sUlHn+*hN3>w>2BertHMi4I5tUjkZ>z5Ldgj~90_0Pqkf=b z!9J`GsHew8IGK7is4x2()Unk|Q=hMkrK>C!r5TBfjN}L^v3Y!vF9NMt1YdV;UpOep zKR~;o<~$R@r~KD1^kBHg3@oY%1Q*o=LyKzCvcijMtgM_x_tKRdo$%D6ViJ0-KLTcm zKZ!rX&caIO`67#6rYGqs+An(GMFzsQgmge{k%_Qbu)E=&@|R)bDNA}1b~fy%VCTTz z54-#9T!gemPx#+79x)yxVcuiL!NR%XFNiE3*EIhXv_6*R-=z63X?`xvuh_&$gH0h# zQfxin?T8#U5>xHMNv^Lx@gI9$^H$^$CSqS;+7nq%`F_ZF4fG>_)n*s6ie#;LCS zK9m+(RBmI(Ri#afXt7O8N!?c2G!r)roncdum&CgR3nF_V<+n?_goDa0Lt+7#G*3+9yZ1d=rO(?9ir z$K44fOM5OZbn+LGpC+dOd(ACcY2!VfRs62h;QwF~vqfN8cYF5#tqsi>H-BSybLWBO zvmkN>?&3xZhKsf3yf)42&HV6(TFMTqySR6fAqP!ZYvbKMy!vu9Zd`WP-mt|48(Q%f zmehEChHv^-vizcdIUUH5>%UfGhBih?j_tA@~UvTpiKh_ z)AuaCfqJlxWF6)S{H+KxV1XrMOpUM$!}@-lc=sJ3y!j6Lyl|W{u)=i=wv=UhsgP^G z)QEy;!dBT0zN{6wDJhci^V;ta#N#|4%v&M|*Ml=;IPs2XzKog&aQt^99fb`=xxD>W zsuGHj|B={oG%~T1{pB@BzqAjj=U=-{c3e^?D_?@@6Gl4v@_QWpEb5Pk4=t?K{Xf)a zj)Nq?ou4e77RQ=p_k>Op2m9oygy^Q$(XoxV&}($DL@8yrJj86qHsX+3-_FpmMWw2# zt+_Tfuf72t;=%P<1GPX2@g+SAnp$vqzeOP%W9-5Fa9t$1OBsjmOeR%cgrUSfI_Z?D z=WC$&glxMGCbJ$leDWQrO^wJO`T%utWiK4%T;0T%WT@P`1q7xJpjuInvRxv9U>j!Y zbTkiM!tJVL%ew}J6*_mTSs8NYY^+4CO()AO$#<4^c5 zGX8|`IO9+F78$>{WPEkA&$q$zKlL%`f64Rrg6Hq^k^2UDzRQcb?>z>7=U+RXpZHzm z`HA0gp2szd-`en|ujF~>%XeK{h~*~@%(GY^^?Af zTtDeM&h?YNMXv9oB)vL<{%tV*<329^FPZ)cF#VH0a^E1+AKU%?*E^iaPW~=3{p9aB z(@*{unO@Cg`S!wZf#Z$IJ{JA&INrd6=f*T2xo?o;U+XdMh^HXp`PWX&Px&r#{FLuF z$4~hdIey^kw$|3B#>0Jg`+p0pZ(iu*)&Gw5&5J2yUg9J74YGb;^BOCLgM0kz2NjQh zc}3rg%9o=hwSgt+P=c0*p)Hzc(R>RBZ~boprCi?%W2Iv~RA^PPR*MdW0?>OB0ZO+r zyeQl(Z%*QM7T?<%ZXm_bxYp8pfXKojUs9KvdO+L*?yO|Adt?N$s%!B0E*h*+aVp#! za1)|+p@`OYu3J-~Dgbdt#th*XQ*^1Jz*@1K)6}f*x-oHEBlLAxGf7hyX<~(h?^A@u zS6xC6t*_<^>I?k%UiBaXRpT{0>Y3h)JijN{zoSLuKI0UYx0=dJ z?huXhTJ--9i^5^GzNN1BbNNCoe0!fz#|KnLyGmz^S2ZWo6dTLli@fV=lWC@qUluL? z+IQflxT)E9Nwc5b+G(zpqS{%?!*Yu$S8xWQkq4n?=08j7qj_0FEp}u6 z70mwLa#4h^9>j|yI83MQe%kKOm!04*Px}XIdyuvVYkP>chid#`+OHN}cnL<)AEE66 zZ5L{MUcTYKk=h=m?a>+!I~C;jaT-2e+Y>Z=qP8b79IIxiM&PqX9a|V+@?|+4t(xJw z6Q!M}v-#2!=foQDXT!&8a;AosLdEbIxZj{e+H>)R@4X2^cV9;7vvVQG%P13eH`u%r zs5|T)uua^6GK)l_l6~f$kK?tCMEv6=KEHfU6v~0a!(z2D*fNGd^KT4I7g1wa7{+h} zGm0!@WY`#GU^|CpjA3IeBaE|*@eH28o{5$*iS5ajF@^1^mNAWOyy-N4aj4LnSL z7hL#S$sZQ6YcbQn`}6~irD3DWz~l6mv5Z|<;kS&#`0EP(TEnix*|m~gN3iQic72as ztJrlEyQ1t`&8}LGw~ph8Sq7e8oMjAU@Y-~^)>%e9dyZz$G3;t!*Lrp}va5+*8`yO$ zyPDb6!pUm2jJ7cDmDtFTO>AstV+&&)$FAeqbwb!U(P(AwN$fqDvx|_Ya3P+`;M3SR zosBctIFqr?V%PWCbvC=sVHY0roW+lM4m8eV7hdw5#V>gd#5107UC6GB*mW_xE@9WD z?7ECym$PvNd#_~IR(4%w;R#RLs1k7vL$2j-{EjDkZU`GUazgQn=kdmm_{+@A$dvE0rx3TMXcHP0QJK2TX^`gdI>Bim0Jz?Xg#&)j4d)a#*vkRW{+-1ZWWhYnC zE;jCG;{i5yv+*Dsd)U~^#zSoEW8+~q9%18AHXdW+aW?j|@dO)BGUcb(^)#pcnK1p_ zc$U4-vGF_`FK|j<^le*u*LcY?US_sL6T+jP_kh`f_bMAdW8>$R@ry97A&}tLEaP>~ zgY>+?pWkHTmu$Sn#@lSX!?~6y@3Qw-Y`n+D`)qu`#)oYDnvLJE@ev!pW#e~j{GN?J zu<=JW{=~+g+4u_^e`VuiHa=nFZ+I(=b1Eam%f?XyFB?aV&n)Ag{P3v+|BE4?v+;#x z{5wqVD)5&K`3i=Kt7fC7V8cLJm?mBo37bJP4FzJFmT92`g62%80FA;XHo z=16lC8>876!ym?`o8!#!?3!Si6B#^-jmaExie*k^dm4Y9&J<>_m!JG_U;9w6c!bQk z>VXc<<$TLr5Ef%N2W4sd^d>kw(}5Q{P#0!7p66hKm250xV=>3Lgy}D3`c<5y>X5lC zWG+ve{pi^`n}>0YJ!_dO!eSm5=bK!dH6asX?_G0c$UGu#_Gh@zNfybGA@h47b5+PZ z3T$rq-@~bhIA|DZMcPllu*W2EqtYBXLjy9ds^!NO<>;#Y&FgAMl)CU= zq98<8@;W8PXo@n2cW5di#=hm?3nuLXfFaP9R$fis-dVMkGJWh@^}2>@YbVi%6_lXG@&gNN2ay z)?;StaH-WA+su!%VW(VTsA|CH)yEp@z!T|=BroemLv!5x3R^nw9mLZk^$4H*pmM4m zfS{G3wi_Y|yn&^Q&sUAvU4kFeMD2H{cwvRF-W$+67umyM{ayr3+Se$P8e1SIv?>kk z=5RhAf_0NIl�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 JP|`;H{{oI25V!yU diff --git a/plugins/SIStem.form b/plugins/SIStem.form index 6268088..bccf2ea 100644 --- a/plugins/SIStem.form +++ b/plugins/SIStem.form @@ -27,8 +27,10 @@ - - + + + + @@ -53,7 +55,7 @@ - + @@ -66,13 +68,14 @@ - - - - - - - + + + + + + + + @@ -153,32 +156,30 @@ - - - - + + + + - + - + - + - - - - - - + + + + - + @@ -197,7 +198,7 @@ - + @@ -205,20 +206,20 @@ - + - - - + + + - - + + - + @@ -226,26 +227,26 @@ - - - + + + - - - + + + - - - + + + - - - + + + - + @@ -257,11 +258,6 @@ - - - - - @@ -280,19 +276,24 @@ - + - + - + - + - + + + + + + @@ -310,7 +311,7 @@ - + @@ -318,20 +319,20 @@ - + - - - + + + - - + + - + @@ -339,26 +340,26 @@ - - - + + + - - - + + + - - - + + + - - - + + + - + @@ -370,11 +371,6 @@ - - - - - @@ -393,19 +389,24 @@ - + - + - + - + - + + + + + + @@ -423,23 +424,23 @@ - + - - - + + + - - - - + + + + - + @@ -451,7 +452,7 @@ - + @@ -463,129 +464,98 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + + + + + + + + - + - - - + + + - - - + + + - - - + + + - - - + + + - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + - - - - - - + - - - - - + + + + + + + + + + + + + + + + + @@ -617,7 +587,7 @@ - + @@ -627,12 +597,12 @@ - - + + @@ -642,8 +612,8 @@ - - + + @@ -653,39 +623,39 @@ - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - + - + @@ -700,17 +670,6 @@ - - - - - - - - - - - @@ -722,22 +681,6 @@ - - - - - - - - - - - - - - - - @@ -798,6 +741,21 @@ + + + + + + + + + + + + + + + @@ -813,7 +771,7 @@ - + @@ -822,45 +780,53 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + - - - - + + + + - + + - + @@ -879,7 +845,7 @@ - + @@ -933,33 +899,34 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -982,7 +949,7 @@ - + @@ -996,7 +963,7 @@ - + @@ -1075,11 +1042,11 @@ - + - + - + @@ -1088,7 +1055,7 @@ - + @@ -1207,13 +1174,13 @@ - + - + - + - + @@ -1223,7 +1190,7 @@ - + @@ -1387,7 +1354,7 @@ - + @@ -1396,5 +1363,10 @@ + + + + + diff --git a/plugins/SIStem.java b/plugins/SIStem.java index 2c6f665..75971e2 100644 --- a/plugins/SIStem.java +++ b/plugins/SIStem.java @@ -2,9 +2,10 @@ import ch.psi.pshell.core.Context; import ch.psi.pshell.core.JsonSerializer; import ch.psi.pshell.core.Nameable; -import ch.psi.pshell.device.DiscretePositioner; +import ch.psi.pshell.device.Device; +import ch.psi.pshell.device.DeviceAdapter; +import ch.psi.pshell.device.DeviceListener; import ch.psi.pshell.device.MasterPositioner; -import ch.psi.pshell.device.MasterPositionerConfig; import ch.psi.pshell.device.Motor; import ch.psi.pshell.device.Positioner; import ch.psi.pshell.device.PositionerBase; @@ -21,10 +22,11 @@ import ch.psi.pshell.ui.Preferences; import ch.psi.pshell.ui.Processor; import ch.psi.pshell.ui.QueueProcessor; import ch.psi.pshell.ui.View; +import ch.psi.pshell.swing.DiscretePositionerSelector; +import ch.psi.pshell.swing.RegisterPanel; import ch.psi.utils.Arr; import ch.psi.utils.Convert; import ch.psi.utils.IO; -import ch.psi.utils.Reflection; import ch.psi.utils.State; import ch.psi.utils.swing.SwingUtils; import java.awt.Color; @@ -46,6 +48,7 @@ import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; +import javax.script.ScriptException; import javax.swing.DefaultComboBoxModel; import javax.swing.DropMode; import javax.swing.JComboBox; @@ -74,11 +77,10 @@ public class SIStem extends PanelProcessor { JDialog dataDialog; public static final String FILE_EXTENSION = "json"; - final JTextField[] scientaFloatFields; - final JTextField[] scientaIntFields; - final JComboBox[] scientaCombos; - final JTextField[] scientaRangeFields; + final RegisterPanel[] scientaPanels; + final DiscretePositionerSelector[] scientaCombos; final JComboBox[] deviceCombos; + final JTextField[] scientaRangeFields; String[] additionalPositioners ; boolean intialized; @@ -185,32 +187,22 @@ public class SIStem extends PanelProcessor { } }); - scientaFloatFields = new JTextField[]{textLowEnergy, textCenterEnergy, textHighEnergy, textStepEnergy, - textLowThetaY, textCenterThetaY, textHighThetaY, textStepThetaY, textCenterThetaX}; - scientaIntFields = new JTextField[]{textSlices, textChannels}; + scientaPanels = new RegisterPanel[]{textLowEnergy,textCenterEnergy, textHighEnergy, textStepEnergy, + textLowThetaY, textCenterThetaY, textHighThetaY, textStepThetaY, textCenterThetaX, textSlices, textChannels}; scientaRangeFields = new JTextField[]{textXChannelMax, textXChannelMin, textYChannelMax, textYChannelMin}; - scientaCombos = new JComboBox[]{comboPass, comboAcquisition, comboEnergy, comboLens, comboDetMode}; + scientaCombos = new DiscretePositionerSelector[]{comboPass, comboAcquisition, comboEnergy, comboLens, comboDetMode}; deviceCombos = new JComboBox[]{comboPol, comboGrating}; - try { - Class scienta = getContext().getClassByName("Scienta"); - SwingUtils.setEnumCombo(comboLens, Reflection.getDeclaredClass(scienta, "LensMode"), true); - SwingUtils.setEnumCombo(comboEnergy, Reflection.getDeclaredClass(scienta, "EnergyMode"), true); - SwingUtils.setEnumCombo(comboAcquisition, Reflection.getDeclaredClass(scienta, "AcquisitionMode"), true); - SwingUtils.setEnumCombo(comboDetMode, Reflection.getDeclaredClass(scienta, "DetectorMode"), true); - comboPass.setModel(new javax.swing.DefaultComboBoxModel(Convert.toStringArray(scienta.getField("PASS_ENERGY_VALUES").get(null)))); - } catch (Exception ex) { - getLogger().log(Level.SEVERE, null, ex); - } - - for (JComboBox combo : scientaCombos) { - SwingUtils.insertCombo(combo, "", 0); - } buttonData.setVisible(isDetached()); detectorPlot.getAxis(Plot.AxisId.X).setLabel("X-Scale (energy)"); detectorPlot.getAxis(Plot.AxisId.Y).setLabel("Y-Scale (distance or angle)"); + + comboLens.getComboBox().addActionListener((java.awt.event.ActionEvent evt) -> { + updateLens(); + }); + clear(); - startTimer(2000, 100); + //startTimer(1000, 1000); } void addDevice(ProcessVariable dev, DefaultTableModel model, int row, Object[] data) { @@ -255,10 +247,39 @@ public class SIStem extends PanelProcessor { clear(); } } + + for (DiscretePositionerSelector combo:scientaCombos){ + try { + combo.setDevice((Device) eval(combo.getName(), true)); + } catch (Exception ex) { + showException(ex); + } + } + + for (RegisterPanel panel:scientaPanels){ + try { + panel.setDevice((Device) eval(panel.getName(), true)); + } catch (Exception ex) { + showException(ex); + } + } + + try { + Device curStep = (Device) eval("scienta.currentStep", true); + curStep.addListener(progressListener); + } catch (Exception ex) { + Logger.getLogger(SIStem.class.getName()).log(Level.SEVERE, null, ex); + } + try { + Device estTime = (Device) eval("scienta.estTime", true); + estTime.addListener(timeListener); + } catch (Exception ex) { + Logger.getLogger(SIStem.class.getName()).log(Level.SEVERE, null, ex); + } + if (!intialized) { try { - Class enumClass = (Class) eval("scienta.getLensModeClass()", true); String[] mode_position = (String[]) eval("id_mode.getPositions()", true); String[] grating_position = (String[]) eval("grating.getPositions()", true); List add_pos= (List) eval("get_additional_positioners()", true); @@ -268,17 +289,13 @@ public class SIStem extends PanelProcessor { } SwingUtilities.invokeLater(() -> { try { - SwingUtils.setEnumCombo(comboLens, enumClass, true); - SwingUtils.insertCombo(comboLens, "", 0); - comboLens.setSelectedIndex(0); + comboPol.setModel(new DefaultComboBoxModel(mode_position)); + SwingUtils.insertCombo(comboPol, "", 0); + comboPol.setSelectedIndex(0); - comboPol.setModel(new DefaultComboBoxModel(mode_position)); - SwingUtils.insertCombo(comboPol, "", 0); - comboPol.setSelectedIndex(0); - - comboGrating.setModel(new DefaultComboBoxModel(grating_position)); - SwingUtils.insertCombo(comboGrating, "", 0); - comboGrating.setSelectedIndex(0); + comboGrating.setModel(new DefaultComboBoxModel(grating_position)); + SwingUtils.insertCombo(comboGrating, "", 0); + comboGrating.setSelectedIndex(0); } catch (Exception ex) { ex.printStackTrace(); Logger.getLogger(SIStem.class.getName()).log(Level.SEVERE, null, ex); @@ -301,6 +318,7 @@ public class SIStem extends PanelProcessor { } updateMaster(); + updateTime(); } @Override @@ -312,12 +330,12 @@ public class SIStem extends PanelProcessor { public void onExecutedFile(String fileName, Object result) { } - @Override - public void onTimer() { - if (getState().isInitialized()){ - updateTime(); - } - } + //@Override + //public void onTimer() { + // if (getState().isInitialized()){ + // updateTime(); + // } + //} //Callback to perform update - in event thread @Override @@ -375,19 +393,17 @@ public class SIStem extends PanelProcessor { preActions.put(combo.getName(), String.valueOf(combo.getSelectedItem())); } } - for (JComboBox combo : scientaCombos) { - if ((combo.isVisible()) && (combo.getSelectedIndex() > 0)) { - preActions.put(combo.getName(), String.valueOf(combo.getSelectedItem())); + for (DiscretePositionerSelector combo : scientaCombos) { + if (combo.isVisible()) { + preActions.put(combo.getName(), String.valueOf(combo.getText())); } } - for (JTextField text : scientaFloatFields) { - if ((text.isVisible()) && (!text.getText().isBlank())) { - preActions.put(text.getName(), Double.valueOf(text.getText().trim())); - } - } - for (JTextField text : scientaIntFields) { - if ((text.isVisible()) && (!text.getText().isBlank())) { - preActions.put(text.getName(), Integer.valueOf(text.getText().trim())); + for (RegisterPanel panel : scientaPanels) { + if ((panel.isVisible()) && (!panel.getText().isBlank())) { + Object value = panel.getDevice().take(); + if (value!=null){ + preActions.put(panel.getName(), value); + } } } for (int i = 0; i < modelFixed.getRowCount(); i++) { @@ -497,15 +513,15 @@ public class SIStem extends PanelProcessor { break; } } - for (JComboBox combo : scientaCombos) { + for (DiscretePositionerSelector combo : scientaCombos) { if (name.equals(combo.getName())) { - combo.setSelectedItem(String.valueOf(preActions.get(name))); + combo.write(String.valueOf(preActions.get(name)), true); break; } } - for (JTextField text : Arr.append(scientaFloatFields, scientaIntFields)) { - if (name.equals(text.getName())) { - text.setText(String.valueOf(preActions.get(name))); + for (RegisterPanel panel : scientaPanels) { + if (name.equals(panel.getName())) { + panel.write(preActions.get(name), true); break; } } @@ -540,7 +556,6 @@ public class SIStem extends PanelProcessor { } } finally{ updateControls(); - updatingTime=false; updateTime(); } } @@ -550,13 +565,11 @@ public class SIStem extends PanelProcessor { currentFile = null; deletePrivateMasterAxis(); for (JComboBox combo : deviceCombos) { - combo.setSelectedIndex(0); - } - for (JComboBox combo : scientaCombos) { - combo.setSelectedIndex(0); - } - - for (JTextField text : Arr.append(Arr.append(scientaFloatFields, scientaIntFields), scientaRangeFields)) { + if (combo.getModel().getSize()>0){ + combo.setSelectedIndex(0); + } + } + for (JTextField text : scientaRangeFields) { text.setText(""); } @@ -585,11 +598,7 @@ public class SIStem extends PanelProcessor { updateControls(); if (isLoaded()) { updateDetectorPlot(); - try { - updateLens(); - } catch (Exception ex) { - getLogger().log(Level.WARNING, null, ex); - } + updateLens(); } textTime.setText(""); } @@ -777,23 +786,26 @@ public class SIStem extends PanelProcessor { } } - void updateLens() throws Exception { - String lens = (String) comboLens.getSelectedItem(); - boolean empty = ((lens == null) || (lens.isBlank())); - //if (empty){ - //lens = (String) eval("str(scienta.lensMode)", true); - //} - boolean visibleX = empty || lens.startsWith("A") || lens.startsWith("D"); - boolean visibleY = empty || lens.startsWith("D"); - panelX.setVisible(visibleX); - for (Component c : SwingUtils.getComponentsByType(panelX, Component.class)) { - c.setVisible(visibleX); - } - panelY.setVisible(visibleY); - for (Component c : SwingUtils.getComponentsByType(panelY, Component.class)) { - c.setVisible(visibleY); - } - + void updateLens() { + try { + String lens = (String) comboLens.getText(); + boolean empty = ((lens == null) || (lens.isBlank())); + //if (empty){ + //lens = (String) eval("str(scienta.lensMode)", true); + //} + boolean visibleX = empty || lens.startsWith("A") || lens.startsWith("D"); + boolean visibleY = empty || lens.startsWith("D"); + panelX.setVisible(visibleX); + for (Component c : SwingUtils.getComponentsByType(panelX, Component.class)) { + c.setVisible(visibleX); + } + panelY.setVisible(visibleY); + for (Component c : SwingUtils.getComponentsByType(panelY, Component.class)) { + c.setVisible(visibleY); + } + } catch (Exception ex) { + getLogger().log(Level.WARNING, null, ex); + } } void checkValues() { @@ -845,24 +857,6 @@ public class SIStem extends PanelProcessor { } } - for (JTextField text : scientaFloatFields) { - if (!text.getText().isBlank()) { - try { - Double.valueOf(text.getText().trim()); - } catch (Exception ex) { - throw new IllegalArgumentException("Invalid value in " + text.getName()); - } - } - } - for (JTextField text : scientaIntFields) { - if (!text.getText().isBlank()) { - try { - Integer.valueOf(text.getText().trim()); - } catch (Exception ex) { - throw new IllegalArgumentException("Invalid value in " + text.getName()); - } - } - } List defined = new ArrayList(); for (JTextField text : scientaRangeFields) { if (!text.getText().isBlank()) { @@ -992,55 +986,52 @@ public class SIStem extends PanelProcessor { detectorPlot.clear(); } - volatile boolean updatingTime; void updateTime(){ - if (!updatingTime){ - String cmd="calc_acquisition_time("; + try{ int samples = 1; for (int i = 0; i < modelScanned.getRowCount(); i++) { Integer points = (Integer) modelScanned.getValueAt(i, 3); samples*=points; } - cmd+="samples="+Math.max(samples,1) + ", "; - - if (!((String)comboAcquisition.getSelectedItem()).isBlank()){ - cmd+="mode='"+String.valueOf(comboAcquisition.getSelectedItem()) + "', "; - } - if (!textLowEnergy.getText().isBlank()){ - cmd+="enl="+(String)textLowEnergy.getText() + ", "; - } - if (!textHighEnergy.getText().isBlank()){ - cmd+="enh="+(String)textHighEnergy.getText() + ", "; - } - if (!textStepEnergy.getText().isBlank()){ - cmd+="ens="+(String)textStepEnergy.getText() + ", "; - } - if (!textLowThetaY.getText().isBlank()){ - cmd+="tyl="+(String)textLowThetaY.getText() + ", "; - } - if (!textHighThetaY.getText().isBlank()){ - cmd+="tyh="+(String)textHighThetaY.getText() + ", "; - } - if (!textStepThetaY.getText().isBlank()){ - cmd+="tys="+(String)textStepThetaY.getText() + ", "; - } - cmd+=")"; - updatingTime=true; - try { - this.evalAsync(cmd, true).handle((ret, ex) -> { - String text = ((ex != null) || (ret==null)) ? "" : String.valueOf(ret); - SwingUtilities.invokeLater(()->{ - textTime.setText(text); - }); - updatingTime=false; - return ret; - }); - } catch (Context.ContextStateException ex) { - Logger.getLogger(SIStem.class.getName()).log(Level.WARNING, null, ex); - updatingTime=false; - } + samples = Math.max(samples,1); + String time = (String) eval("scienta.estTime.take()", true); + String text = samples + " x " + time; + SwingUtilities.invokeLater(()->{ + textTime.setText(text); + }); + } catch (Exception ex){ + SwingUtilities.invokeLater(()->{ + textTime.setText(""); + }); } } + + DeviceListener progressListener = new DeviceAdapter() { + @Override + public void onValueChanged(final Device device, final Object value, final Object former) { + try { + Double p = (Double) eval("scienta.getProgress()", true); + SwingUtilities.invokeLater(() -> { + progress.setValue((int) (p * 1000)); + }); + + } catch (Exception ex) { + Logger.getLogger(SIStem.class.getName()).log(Level.WARNING, null, ex); + } + } + }; + + DeviceListener timeListener = new DeviceAdapter() { + @Override + public void onValueChanged(final Device device, final Object value, final Object former) { + try { + updateTime(); + } catch (Exception ex) { + Logger.getLogger(SIStem.class.getName()).log(Level.WARNING, null, ex); + } + } + }; + @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents @@ -1054,41 +1045,38 @@ public class SIStem extends PanelProcessor { jPanel4 = new javax.swing.JPanel(); panelEnergy = new javax.swing.JPanel(); jLabel14 = new javax.swing.JLabel(); - textStepEnergy = new javax.swing.JTextField(); jLabel13 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); - textHighEnergy = new javax.swing.JTextField(); - textCenterEnergy = new javax.swing.JTextField(); - textLowEnergy = new javax.swing.JTextField(); + textLowEnergy = new ch.psi.pshell.swing.RegisterPanel(); + textCenterEnergy = new ch.psi.pshell.swing.RegisterPanel(); + textHighEnergy = new ch.psi.pshell.swing.RegisterPanel(); + textStepEnergy = new ch.psi.pshell.swing.RegisterPanel(); panelY = new javax.swing.JPanel(); jLabel17 = new javax.swing.JLabel(); - textStepThetaY = new javax.swing.JTextField(); jLabel18 = new javax.swing.JLabel(); jLabel19 = new javax.swing.JLabel(); jLabel20 = new javax.swing.JLabel(); - textHighThetaY = new javax.swing.JTextField(); - textCenterThetaY = new javax.swing.JTextField(); - textLowThetaY = new javax.swing.JTextField(); + textLowThetaY = new ch.psi.pshell.swing.RegisterPanel(); + textCenterThetaY = new ch.psi.pshell.swing.RegisterPanel(); + textHighThetaY = new ch.psi.pshell.swing.RegisterPanel(); + textStepThetaY = new ch.psi.pshell.swing.RegisterPanel(); panelX = new javax.swing.JPanel(); jLabel26 = new javax.swing.JLabel(); - textCenterThetaX = new javax.swing.JTextField(); + textCenterThetaX = new ch.psi.pshell.swing.RegisterPanel(); jPanel10 = new javax.swing.JPanel(); - jLabel11 = new javax.swing.JLabel(); - jLabel6 = new javax.swing.JLabel(); - jLabel5 = new javax.swing.JLabel(); - comboPass = new javax.swing.JComboBox(); - comboLens = new javax.swing.JComboBox(); - jLabel7 = new javax.swing.JLabel(); - comboAcquisition = new javax.swing.JComboBox(); - comboEnergy = new javax.swing.JComboBox(); + jLabel29 = new javax.swing.JLabel(); + jLabel30 = new javax.swing.JLabel(); + comboLens = new ch.psi.pshell.swing.DiscretePositionerSelector(); + comboAcquisition = new ch.psi.pshell.swing.DiscretePositionerSelector(); + comboEnergy = new ch.psi.pshell.swing.DiscretePositionerSelector(); + comboPass = new ch.psi.pshell.swing.DiscretePositionerSelector(); + jLabel24 = new javax.swing.JLabel(); + jLabel28 = new javax.swing.JLabel(); jPanel5 = new javax.swing.JPanel(); jLabel16 = new javax.swing.JLabel(); - comboDetMode = new javax.swing.JComboBox(); jLabel9 = new javax.swing.JLabel(); jLabel25 = new javax.swing.JLabel(); - textSlices = new javax.swing.JTextField(); - textChannels = new javax.swing.JTextField(); jLabel27 = new javax.swing.JLabel(); textXChannelMin = new javax.swing.JTextField(); textXChannelMax = new javax.swing.JTextField(); @@ -1108,6 +1096,9 @@ public class SIStem extends PanelProcessor { } }; butonPlot = new javax.swing.JButton(); + comboDetMode = new ch.psi.pshell.swing.DiscretePositionerSelector(); + textChannels = new ch.psi.pshell.swing.RegisterPanel(); + textSlices = new ch.psi.pshell.swing.RegisterPanel(); jPanel11 = new javax.swing.JPanel(); checkZigzag = new javax.swing.JCheckBox(); jLabel4 = new javax.swing.JLabel(); @@ -1118,9 +1109,9 @@ public class SIStem extends PanelProcessor { jLabel22 = new javax.swing.JLabel(); checkCompression = new javax.swing.JCheckBox(); jLabel21 = new javax.swing.JLabel(); - comboPol = new javax.swing.JComboBox(); - comboGrating = new javax.swing.JComboBox(); jLabel23 = new javax.swing.JLabel(); + comboPol = new javax.swing.JComboBox<>(); + comboGrating = new javax.swing.JComboBox<>(); jPanel6 = new javax.swing.JPanel(); jScrollPane8 = new javax.swing.JScrollPane(); tableMaster = new javax.swing.JTable(); @@ -1151,6 +1142,7 @@ public class SIStem extends PanelProcessor { buttonData = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); textTime = new javax.swing.JTextField(); + progress = new javax.swing.JProgressBar(); buttonScienta.setText("Scienta Panel"); buttonScienta.addActionListener(new java.awt.event.ActionListener() { @@ -1186,8 +1178,6 @@ public class SIStem extends PanelProcessor { jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel14.setText("High:"); - textStepEnergy.setName("scienta.energyStepSize"); // NOI18N - jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel13.setText("Center:"); @@ -1197,11 +1187,13 @@ public class SIStem extends PanelProcessor { jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel15.setText("Step:"); - textHighEnergy.setName("scienta.highEnergy"); // NOI18N + textLowEnergy.setName("scienta.lowEnergy"); // NOI18N textCenterEnergy.setName("scienta.centerEnergy"); // NOI18N - textLowEnergy.setName("scienta.lowEnergy"); // NOI18N + textHighEnergy.setName("scienta.highEnergy"); // NOI18N + + textStepEnergy.setName("scienta.energyStepSize"); // NOI18N javax.swing.GroupLayout panelEnergyLayout = new javax.swing.GroupLayout(panelEnergy); panelEnergy.setLayout(panelEnergyLayout); @@ -1217,40 +1209,38 @@ public class SIStem extends PanelProcessor { .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(textLowEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(textCenterEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(textHighEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(textLowEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE) + .addComponent(textCenterEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE) + .addComponent(textHighEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelEnergyLayout.createSequentialGroup() .addComponent(jLabel15) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textStepEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(textStepEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE))) .addContainerGap()) ); - panelEnergyLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {textCenterEnergy, textHighEnergy, textLowEnergy, textStepEnergy}); - panelEnergyLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel12, jLabel13, jLabel14, jLabel15}); panelEnergyLayout.setVerticalGroup( panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelEnergyLayout.createSequentialGroup() .addContainerGap() - .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textLowEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel12)) + .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel12) + .addComponent(textLowEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textCenterEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel13)) + .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel13) + .addComponent(textCenterEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textHighEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel14)) + .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel14) + .addComponent(textHighEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textStepEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel15)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel15) + .addComponent(textStepEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(16, Short.MAX_VALUE)) ); panelY.setBorder(javax.swing.BorderFactory.createTitledBorder("ThetaY ")); @@ -1258,8 +1248,6 @@ public class SIStem extends PanelProcessor { jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel17.setText("High:"); - textStepThetaY.setName("scienta.thetaYStepSize"); // NOI18N - jLabel18.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel18.setText("Center:"); @@ -1269,11 +1257,13 @@ public class SIStem extends PanelProcessor { jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel20.setText("Step:"); - textHighThetaY.setName("scienta.highThetaY"); // NOI18N + textLowThetaY.setName("scienta.lowThetaY"); // NOI18N textCenterThetaY.setName("scienta.centerThetaY"); // NOI18N - textLowThetaY.setName("scienta.lowThetaY"); // NOI18N + textHighThetaY.setName("scienta.highThetaY"); // NOI18N + + textStepThetaY.setName("scienta.thetaYStepSize"); // NOI18N javax.swing.GroupLayout panelYLayout = new javax.swing.GroupLayout(panelY); panelY.setLayout(panelYLayout); @@ -1289,13 +1279,13 @@ public class SIStem extends PanelProcessor { .addComponent(jLabel18, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(textLowThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(textCenterThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(textHighThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(textLowThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE) + .addComponent(textCenterThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE) + .addComponent(textHighThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelYLayout.createSequentialGroup() .addComponent(jLabel20) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textStepThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(textStepThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE))) .addContainerGap()) ); @@ -1305,22 +1295,22 @@ public class SIStem extends PanelProcessor { panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelYLayout.createSequentialGroup() .addContainerGap() - .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textLowThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel19)) + .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel19) + .addComponent(textLowThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textCenterThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel18)) + .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel18) + .addComponent(textCenterThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textHighThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel17)) + .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel17) + .addComponent(textHighThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textStepThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel20)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel20) + .addComponent(textStepThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(16, Short.MAX_VALUE)) ); panelX.setBorder(javax.swing.BorderFactory.createTitledBorder("ThetaX")); @@ -1338,155 +1328,122 @@ public class SIStem extends PanelProcessor { .addContainerGap() .addComponent(jLabel26) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textCenterThetaX, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(textCenterThetaX, javax.swing.GroupLayout.DEFAULT_SIZE, 80, Short.MAX_VALUE) .addContainerGap()) ); panelXLayout.setVerticalGroup( panelXLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelXLayout.createSequentialGroup() - .addGap(38, 38, 38) - .addGroup(panelXLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textCenterThetaX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel26)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(36, 36, 36) + .addGroup(panelXLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel26) + .addComponent(textCenterThetaX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(67, Short.MAX_VALUE)) ); - jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel11.setText("Pass Energy:"); + jLabel29.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel29.setText("Energy Mode:"); - jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel6.setText("Acquisition:"); + jLabel30.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel30.setText("Lens Mode:"); - jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel5.setText("Energy Mode:"); - - comboPass.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " })); - comboPass.setToolTipText(""); - comboPass.setName("scienta.passEnergyDev"); // NOI18N - - comboLens.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " })); comboLens.setName("scienta.lensModeDev"); // NOI18N - comboLens.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - comboLensActionPerformed(evt); - } - }); - jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel7.setText("Lens Mode:"); - - comboAcquisition.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " })); comboAcquisition.setName("scienta.acquisitionModeDev"); // NOI18N - comboEnergy.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " })); comboEnergy.setName("scienta.energyModeDev"); // NOI18N + comboPass.setName("scienta.passEnergyDev"); // NOI18N + + jLabel24.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel24.setText("Pass Energy:"); + + jLabel28.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel28.setText("Acquisition:"); + javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10); jPanel10.setLayout(jPanel10Layout); jPanel10Layout.setHorizontalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel10Layout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(jPanel10Layout.createSequentialGroup() - .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel5) - .addComponent(jLabel6) - .addComponent(jLabel11)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(comboPass, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(comboAcquisition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(comboEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(jPanel10Layout.createSequentialGroup() - .addComponent(jLabel7) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(comboLens, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel24) + .addComponent(jLabel28) + .addComponent(jLabel29) + .addComponent(jLabel30)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(comboLens, javax.swing.GroupLayout.DEFAULT_SIZE, 150, Short.MAX_VALUE) + .addComponent(comboEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 150, Short.MAX_VALUE) + .addComponent(comboAcquisition, javax.swing.GroupLayout.DEFAULT_SIZE, 150, Short.MAX_VALUE) + .addComponent(comboPass, javax.swing.GroupLayout.DEFAULT_SIZE, 150, Short.MAX_VALUE)) .addContainerGap()) ); - jPanel10Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboAcquisition, comboEnergy, comboLens, comboPass}); - - jPanel10Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel11, jLabel5, jLabel6, jLabel7}); + jPanel10Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel24, jLabel28, jLabel29, jLabel30}); jPanel10Layout.setVerticalGroup( jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel10Layout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel10Layout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel11) - .addComponent(comboPass, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel24) + .addComponent(comboPass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel6) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel28) .addComponent(comboAcquisition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel5) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel29) .addComponent(comboEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel7) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel30) .addComponent(comboLens, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) + .addContainerGap(18, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jPanel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(panelEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(12, 12, 12) .addComponent(panelX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(panelY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(100, Short.MAX_VALUE)) + .addContainerGap()) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() - .addGap(20, 20, 20) + .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(panelEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelY, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelX, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(panelY, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelX, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(169, Short.MAX_VALUE)) ); + jPanel4Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jPanel10, panelEnergy, panelX, panelY}); + jTabbedPane1.addTab("Analyzer", jPanel4); jLabel16.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel16.setText("Mode:"); - comboDetMode.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " })); - comboDetMode.setToolTipText(""); - comboDetMode.setName("scienta.detectorModeDev"); // NOI18N - jLabel9.setText("X Channel Range:"); jLabel25.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel25.setText("Slices:"); - textSlices.setName("scienta.slices"); // NOI18N - textSlices.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - roiChanged(evt); - } - }); - - textChannels.setName("scienta.channels"); // NOI18N - textChannels.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - roiChanged(evt); - } - }); - jLabel27.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel27.setText("Channels:"); @@ -1530,6 +1487,12 @@ public class SIStem extends PanelProcessor { } }); + comboDetMode.setName("scienta.detectorModeDev"); // NOI18N + + textChannels.setName("scienta.channels"); // NOI18N + + textSlices.setName("scienta.slices"); // NOI18N + javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( @@ -1547,25 +1510,25 @@ public class SIStem extends PanelProcessor { .addComponent(textXChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textXChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(comboDetMode, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(comboDetMode, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel5Layout.createSequentialGroup() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel10) .addComponent(jLabel25)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(textSlices, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(textYChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textYChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addComponent(textYChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(textSlices, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jLabel27) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(textChannels, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(butonPlot)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(detectorPlot, javax.swing.GroupLayout.DEFAULT_SIZE, 561, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE) + .addComponent(detectorPlot, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE) .addContainerGap()) ); @@ -1576,33 +1539,33 @@ public class SIStem extends PanelProcessor { .addGroup(jPanel5Layout.createSequentialGroup() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() - .addGap(21, 21, 21) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGap(18, 18, 18) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel16) - .addComponent(comboDetMode, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(comboDetMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel9) - .addComponent(textXChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(textXChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(textXChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(textXChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textChannels, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel27)) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel27) + .addComponent(textChannels, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel10) .addComponent(textYChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(textYChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(textSlices, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel25)) - .addGap(18, 18, Short.MAX_VALUE) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel25) + .addComponent(textSlices, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(butonPlot)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup() .addContainerGap() - .addComponent(detectorPlot, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))) + .addComponent(detectorPlot, javax.swing.GroupLayout.DEFAULT_SIZE, 301, Short.MAX_VALUE))) .addContainerGap()) ); @@ -1627,22 +1590,19 @@ public class SIStem extends PanelProcessor { jLabel21.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel21.setText("Polarization:"); - comboPol.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " })); - comboPol.setToolTipText(""); - comboPol.setName("id_mode"); // NOI18N - - comboGrating.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " })); - comboGrating.setName("grating"); // NOI18N - jLabel23.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel23.setText("Grating:"); + comboPol.setName("id_mode"); // NOI18N + + comboGrating.setName("grating"); // NOI18N + javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11); jPanel11.setLayout(jPanel11Layout); jPanel11Layout.setHorizontalGroup( jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() - .addContainerGap(175, Short.MAX_VALUE) + .addGap(151, 151, 151) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel22) .addComponent(jLabel8) @@ -1650,44 +1610,47 @@ public class SIStem extends PanelProcessor { .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(checkCompression) - .addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(checkZigzag) - .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(139, 139, 139) - .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel21) - .addComponent(jLabel23)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(comboPol, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(comboGrating, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(175, Short.MAX_VALUE)) + .addGroup(jPanel11Layout.createSequentialGroup() + .addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(jPanel11Layout.createSequentialGroup() + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(checkCompression) + .addComponent(checkZigzag) + .addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(139, 139, 139) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel21) + .addComponent(jLabel23)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(comboPol, 0, 150, Short.MAX_VALUE) + .addComponent(comboGrating, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(141, Short.MAX_VALUE)))) ); jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerLatency, spinnerPasses}); jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel22, jLabel4, jLabel8}); - jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboGrating, comboPol}); - jPanel11Layout.setVerticalGroup( jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() - .addGap(52, 52, 52) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() - .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(checkCompression) - .addComponent(jLabel22)) - .addGap(18, 18, 18) - .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(checkZigzag) - .addComponent(jLabel8))) + .addGap(43, 43, 43) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel22) + .addComponent(checkCompression)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel8) + .addComponent(checkZigzag))) .addGroup(jPanel11Layout.createSequentialGroup() + .addGap(42, 42, 42) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel21) - .addComponent(comboPol, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(comboPol, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel23) @@ -1700,7 +1663,7 @@ public class SIStem extends PanelProcessor { .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(134, Short.MAX_VALUE)) + .addContainerGap(177, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Scan", jPanel11); @@ -1772,7 +1735,7 @@ public class SIStem extends PanelProcessor { .addComponent(buttonPrivateMasterAxis) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(jPanel6Layout.createSequentialGroup() - .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 743, Short.MAX_VALUE) + .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 732, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(buttonEditMaster, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) @@ -1782,7 +1745,7 @@ public class SIStem extends PanelProcessor { .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 238, Short.MAX_VALUE) + .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 269, Short.MAX_VALUE) .addComponent(buttonEditMaster)) .addGap(13, 13, 13) .addComponent(buttonPrivateMasterAxis) @@ -1884,18 +1847,18 @@ public class SIStem extends PanelProcessor { jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(0, 0, 0) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 217, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE) + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 266, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 371, Short.MAX_VALUE)) + .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 373, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(14, 14, 14) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE) + .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE) .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap()) @@ -1937,13 +1900,13 @@ public class SIStem extends PanelProcessor { jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(0, 0, 0) - .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE) + .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 213, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE) + .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE) + .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 213, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE) + .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 216, Short.MAX_VALUE) .addGap(0, 0, 0)) ); jPanel3Layout.setVerticalGroup( @@ -1951,7 +1914,7 @@ public class SIStem extends PanelProcessor { .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addGap(14, 14, 14) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jScrollPane6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE) + .addComponent(jScrollPane6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE) .addComponent(jScrollPane5, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane4, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane7)) @@ -2017,11 +1980,13 @@ public class SIStem extends PanelProcessor { } }); - jLabel2.setText("Acquisition Time:"); + jLabel2.setText("Time:"); textTime.setEditable(false); textTime.setHorizontalAlignment(javax.swing.JTextField.CENTER); + progress.setMaximum(1000); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -2037,8 +2002,10 @@ public class SIStem extends PanelProcessor { .addGap(18, 18, Short.MAX_VALUE) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textTime, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(textTime, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(progress, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, Short.MAX_VALUE) .addComponent(buttonStart) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonAbort)) @@ -2065,7 +2032,7 @@ public class SIStem extends PanelProcessor { layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGroup(layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonOpen) @@ -2077,13 +2044,14 @@ public class SIStem extends PanelProcessor { .addGap(18, 18, 18) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(18, 18, 18) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(buttonScienta) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(progress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(textTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2) .addComponent(buttonStart) .addComponent(buttonAbort) .addComponent(buttonData) - .addComponent(jLabel2) - .addComponent(textTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(buttonScienta)) .addContainerGap()) ); }// //GEN-END:initComponents @@ -2224,14 +2192,6 @@ public class SIStem extends PanelProcessor { updateDetectorPlot(); }//GEN-LAST:event_roiChanged - private void comboLensActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboLensActionPerformed - try { - updateLens(); - } catch (Exception ex) { - showException(ex); - } - }//GEN-LAST:event_comboLensActionPerformed - private void buttonEditMasterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonEditMasterActionPerformed try { String name = (String) modelMaster.getValueAt(tableMaster.getSelectedRow(), 0); @@ -2292,17 +2252,16 @@ public class SIStem extends PanelProcessor { private javax.swing.JButton buttonStart; private javax.swing.JCheckBox checkCompression; private javax.swing.JCheckBox checkZigzag; - private javax.swing.JComboBox comboAcquisition; - private javax.swing.JComboBox comboDetMode; - private javax.swing.JComboBox comboEnergy; - private javax.swing.JComboBox comboGrating; - private javax.swing.JComboBox comboLens; - private javax.swing.JComboBox comboPass; - private javax.swing.JComboBox comboPol; + private ch.psi.pshell.swing.DiscretePositionerSelector comboAcquisition; + private ch.psi.pshell.swing.DiscretePositionerSelector comboDetMode; + private ch.psi.pshell.swing.DiscretePositionerSelector comboEnergy; + private javax.swing.JComboBox comboGrating; + private ch.psi.pshell.swing.DiscretePositionerSelector comboLens; + private ch.psi.pshell.swing.DiscretePositionerSelector comboPass; + private javax.swing.JComboBox comboPol; private ch.psi.pshell.plot.MatrixPlotJFree detectorPlot; private javax.swing.JLabel jLabel1; 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; @@ -2316,14 +2275,15 @@ public class SIStem extends PanelProcessor { private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; + private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel25; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel27; + private javax.swing.JLabel jLabel28; + private javax.swing.JLabel jLabel29; private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel30; 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 jPanel1; @@ -2346,28 +2306,29 @@ public class SIStem extends PanelProcessor { private javax.swing.JPanel panelEnergy; private javax.swing.JPanel panelX; private javax.swing.JPanel panelY; + private javax.swing.JProgressBar progress; private javax.swing.JSpinner spinnerLatency; private javax.swing.JSpinner spinnerPasses; private javax.swing.JTable tableFixed; private javax.swing.JTable tableInactive; private javax.swing.JTable tableMaster; private javax.swing.JTable tableScanned; - private javax.swing.JTextField textCenterEnergy; - private javax.swing.JTextField textCenterThetaX; - private javax.swing.JTextField textCenterThetaY; - private javax.swing.JTextField textChannels; + private ch.psi.pshell.swing.RegisterPanel textCenterEnergy; + private ch.psi.pshell.swing.RegisterPanel textCenterThetaX; + private ch.psi.pshell.swing.RegisterPanel textCenterThetaY; + private ch.psi.pshell.swing.RegisterPanel textChannels; private javax.swing.JTextArea textDiagnostics; private javax.swing.JTextField textFile; - private javax.swing.JTextField textHighEnergy; - private javax.swing.JTextField textHighThetaY; - private javax.swing.JTextField textLowEnergy; - private javax.swing.JTextField textLowThetaY; + private ch.psi.pshell.swing.RegisterPanel textHighEnergy; + private ch.psi.pshell.swing.RegisterPanel textHighThetaY; + private ch.psi.pshell.swing.RegisterPanel textLowEnergy; + private ch.psi.pshell.swing.RegisterPanel textLowThetaY; private javax.swing.JTextArea textMonitors; private javax.swing.JTextArea textSensors; - private javax.swing.JTextField textSlices; + private ch.psi.pshell.swing.RegisterPanel textSlices; private javax.swing.JTextArea textSnapshots; - private javax.swing.JTextField textStepEnergy; - private javax.swing.JTextField textStepThetaY; + private ch.psi.pshell.swing.RegisterPanel textStepEnergy; + private ch.psi.pshell.swing.RegisterPanel textStepThetaY; private javax.swing.JTextField textTime; private javax.swing.JTextField textXChannelMax; private javax.swing.JTextField textXChannelMin; diff --git a/script/scans/test/test.json b/script/scans/test/test.json index fb01e9d..5dfaee5 100644 --- a/script/scans/test/test.json +++ b/script/scans/test/test.json @@ -1,18 +1,21 @@ { "PASSES" : 1, - "STOP" : [ 1.0 ], + "STOP" : [ ], "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], "PRE_ACTIONS" : { - "id_mode" : "OFF", - "grating" : "G1 300", - "scienta.passEnergyDev" : "20", + "scienta.passEnergyDev" : "50", "scienta.acquisitionModeDev" : "Fixed", "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "DA7_08", "scienta.detectorModeDev" : "ADC", - "scienta.lowEnergy" : 14.0, - "scienta.centerEnergy" : 14.5, + "scienta.lowEnergy" : 10.0, + "scienta.centerEnergy" : 12.0, "scienta.highEnergy" : 15.0, "scienta.energyStepSize" : 0.005, + "scienta.lowThetaY" : 2.0, + "scienta.centerThetaY" : 4.0, + "scienta.highThetaY" : 6.0, + "scienta.thetaYStepSize" : 0.1, "scienta.centerThetaX" : 0.0, "scienta.slices" : 601, "scienta.channels" : 801 @@ -22,9 +25,9 @@ "ZIGZAG" : false, "SETTLING_TIME" : 0.0, "MONITORS" : [ "current" ], - "START" : [ 0.0 ], - "RANGE" : [ 900, 100, 800, 200 ], - "POSITIONERS" : [ "tilt" ], - "STEPS" : [ 10 ], + "START" : [ ], + "RANGE" : [ null, null, null, null ], + "POSITIONERS" : [ ], + "STEPS" : [ ], "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] } \ No newline at end of file