From c33c6479d231e4b1b3cee644350e6b308525e385 Mon Sep 17 00:00:00 2001 From: cbmarcum Date: Sun, 5 Jul 2020 12:05:59 -0400 Subject: [PATCH] Refs #3 - added GUI section. --- docs/images/infobox.png | Bin 0 -> 6860 bytes docs/images/swingbuilder-1.png | Bin 0 -> 3770 bytes docs/images/swingbuilder-2.png | Bin 0 -> 3998 bytes docs/images/warningbox.png | Bin 0 -> 9046 bytes docs/index.adoc | 91 ++++++++++++++++++++++- docs/index.html | 131 +++++++++++++++++++++++++++++++-- 6 files changed, 212 insertions(+), 10 deletions(-) create mode 100644 docs/images/infobox.png create mode 100644 docs/images/swingbuilder-1.png create mode 100644 docs/images/swingbuilder-2.png create mode 100644 docs/images/warningbox.png diff --git a/docs/images/infobox.png b/docs/images/infobox.png new file mode 100644 index 0000000000000000000000000000000000000000..912840afa972d9ea2f8b18ef5425bb2e9cffc6a7 GIT binary patch literal 6860 zcmZvB1yEGc`!*pdNK1o+pi&ajAuXK?NVBxW(jAi03P>zVDG0bo3DPOu-AgX8ba(!* z|KIPM`DVWF&YZhv&fGhD&KuAByw8o+R97U#r@==QueQ>dXJ9Wsd zEb#NlT}DY47q|j&t)l)dd&nDj=s;{dye-_U(QKU|PS#xRmTuP8&hB;)j|0pWNi;MX zQzbcRU7yUo1@8a~&|K@$62e~xH(V2g^=mjet{TQS*3%K`z?b;_u`vzYQL&-VJX0v7 zO~|!eo|keu6xKe?=USkYex|#{`;}ZqX|mfY>-+wlZ?vGe=meje22&5e*CR8>JPng8xBb&sF@bIt zD-*{f0>L`+VG<5HNT3sO`vQmCWkeR(KXIxe{(ekNfK7mnsgRfWaEp?Hb;VKhlU;V= zUX~dC*=A%>h@-OlV>l{6XfjQ|V9F#%G2%(DHm(UuSzcbY8O(TdVp3@{DEVAK;B;8( z?sU9c5T=%Z8Sc|6EF!XH(%==SAmX|z7uV7f{4tM~HQXgGJw2W3ITzO;Sb!#reu0W9 z+;V2mE4Ix}KvbljNd~u@7pgjh?KVt<%fw(D(>BUQEF+xFioq2A-|@)Y%>%O|tI`6= zHucMB`06pGOPN+!UD;4Upo>e$df7lmTT(Fh4-*%o0uAWyrcJEaThca6X19l+MZ-&O zH5wtCQ$_`FwSgU?Nb6hw&QysC7|i^~VcN~3vXh=UdKuky_Yx0{O(P(?)WX8Izs2M( z@LT_M-~}OIx`xVl^5@$$i=V2A{;cc?nHK7mAmp-Avxhj`O_7@wNV$E4R%xxWjZHy7 z`zAw05K^J}-s?>ow^>0wj5bIOcD#X@E;4C&Dk37nd3Q;6zCW*MXh;)sk1j6c%()jj z&*!;eHXD3s-fXaFYI=EnNnU>|)!&k<{}AG_JrWY!SVN2k8|+Hs(66vWsdJkt<=d!v zV-r!eh93ynUFTd&MTIu1FdV!c z1oY};17oB@7MDjgD4IvF)at&mj!rBnvt5euo9$<34+6a2`Rej@K^T|WZTgJCzm452 zn=>z(bsRtp+;2OS66mGcdb%S|(rmlYT_l-8dhT%EX$DF&ywQl5A-4!wzjrlq`MUHLjA2* z+>)el`iIiej?PX{?Y=v21zPyUcJH2dNsL%9!$(MqS$oY=S?`4*SUZU|^wqMJ+uzx% zngcvh5s{VEUF~n_Nx1tYri3)*$0r(BmzBd;uG1QvcNg7`v(;I{saz4TO7WV9#8*NG zaynYqCHVMt7V-Y^G-z=Fj>3S;HvCJJkO~x~Mr+;@&m)w0)Q|x(7|oKBXspJyt@%I4 zqkMu%Ja;Bu>KoVPZZeGJ1_jy-XY_7(I&991WuD;S(MkEnpan~P3?K{E8XdK=wFSb+ zY{d_TBZ#^D5QKQY{M73{NDcj6vse6iTicbg)(PSF+k!zq5gt6b#+In43(A!pr0m~_ z$EsOZ({9}OF1R;H79@9(l!@MIH2#}Pk4CS0?9m|0cuIE`ZRO*iaK8RhW16G?k_F@AY^BZe!Sq+I z`RbD++Z>(og{+`JKg`z`lPwjyNR1h?y3b*so{ZOOvE1I>je0h`@&QAh%x{E+0NXYC60u1Ac`fO;S=*Vfm#NsBlX7 zEI-2bhqoNAR*<#wqxvTYWuk3UcWL&!CZE4dsU1SJanvR?J?TM{&JxdwuwK&;Qc+-q zjlM;6k|)TStZ9S!FxzQ(*Q2X@DtW?d#lDJ?7&m70{$1~mY65>#>_#)h^0WN&b7t=q zyx^Nd?v~-AJ0ArWK@55)nnDD@GICx1mMH?@NxJkzePPgVr*^}{#CnMn>>^6Nr_f6@>PX)d4 zy-q~1qk`&==(LWusN#e)RA1m@lgBAw4h^Z#?0R|0DIoX09kmUZx}`r0$4v3Lb~)!{Q#i0~U^PXtxGGsDYL&wO`tY3x-@`)kTbG@uRB>!$e86LGAmoSsUjA)H z+3NduaF?mRh3>s6RV#kH|^YgZy!9TIvH$1lgUV^vb|vwu zpnL)@Dd~8$c(&ZTn`$fT`Emm%U$U@>QGu+$LhYykYj(64aI3lIh(}2j4f!rSvXn!> z9`Ug!kNw>{)$ZvA8>|M_@E66*ijRygx-2}r+M6Q9-iruw>Jb*Jb$%Gf=klTuFp=(# zN+40wFE1vqYo06sSA4KqpK&Q$Nf@1tFY!n2TP;Np3sFFEpJdm|WX=8Q>8VJx{9{=S zH*hp;23ODY_EmgIwC2|Q?Z%nTb&fH=Hopi@viy^rXql(JXGkaR`9mgaYwQPysp+D8 zYCNsb7#!qK?KrEwd0t;y>2q{rT5rTON#)|A^2cC)v!u(FIKi+=A@@j~GJ}yeOwxeZ!vxmc7 z>9Wp~uBzUtTb5fST3@P}r$7iE*59RUa$YdheRF|XWixmYa6XIrW!55ja5neHfubQ$ zUHu7%erZ0aIQ8=K@@xI#v9tbc-&_Ju^JS=IcS42dj^6gflpzd1qN(|Fg*&3Ugl$)AhFxpQp>ap3g zQ`TZ?HLwJk{%y@6d2RQSNa_|B9X%vG!qcKVfnMIZ!MqJaMz;O%%t^UBA?xyVT;s%) z!{OIhwdMANJ*Qc7Cg5RGV&Zo-&I{<}vyPkw5 zIOCEbc!s>aI;nD;jfslF^}E=Yef#zqi{gFA%#842z{x>)WF!gsL};2>kO-tuOE;%G z&Nn0C@zQfXK2jbY$lrE<)Xp^H!zDYLdS-f=1YoB1X!dM0HzMx>jT~tg7qPi2-zfX> zg5<%K$T6^C;KUvAt}QmjGEtVN7(03v+f$CC(njqGF@Iw zBM53Q-Hv#wrmsoB7RP3*8E0i>wZf%usjgN*^-6bb+Hkvv6jHZ{MBkwmh$ zK0c7DesZ%IetRLJx_Cw`rw{m#4+R3OQ(6sqh#bzK~eY(^{Nm}%~qX9ckEY>gkZQcL08nUGB=*W4pL6OzkKexZSnsy3(xql&U-KWyg zk%@#sn%S7actJryR~wFfb7j9@@sZTly|A)=Uq1h5i~=M(eoWb5*yprI^Zxx)gz^4> zXP0c`Es=!ZY3uwvOe;^pb-j;bZ0uO-Xsaupwg|2~oGo#9dYW(19_axz921@dGy-4B z%U=T-LnYxSFkNPbnl=mO@>m!d8M?f_UR_=N%ko(~uAxD!P$P$1|5r>E3l~@XdVgA_ zdE0yyWGNfScK*O?kGU%QWXJ*5YwvxB)1B$hY-$;~h(^iVitfnqpE~Rq7`N2oKE&wg z=;9BzCj!oh^u?xjJOTpNSKDdYXLTHFRz5?aqNWMyr;x@JhG*5Ju&G3w6*8k8FMcYvC3I1m5GeUZz7zmZ9>?I)a8 zaYZp*ZXt{IOV6Qs9Wc1~aZft|HQ!gjh`d3!mFw9>$LB*O$P539B{9F#7b>ZoE1RQv z`GvM$Qc@xoOfT!7cf#L^ts;@50`cYL1P})cQ!xjC*U`FU8aNzw>856o0p;^7{4FDztfH_d`t zmzEgiwS)sMU7FWFJ)zH+kA0e=r(u6>j94rUez?ysEIiq(St6yR>~0OgL_0h>YU}O& z`SylG#U4p{4t-fV91;=&r~$6KGZpxgMkMlVp+Oe+RA;Kc`E;}h@Rj$?oSHoa)Y@$- zEh-EE#Kls0RMV1b=B(P8`y~Y$qcxmwHnZSPqXGg=m74UQ?M&CXBC&0UGTR0R32jk* z5&=KWS{ROwj&>Is(sriHPVR3WTxKF90BeaKb=cVqWyPZ0nLEyW&f# z{FJxd0k@0zpL0e>M|X5mG|o*74#o%FT_1JPLdJl+YusUk>z56s^IE2hxIblA&uj%( z5K~Zq*08LsLE5*glKh=#vq01Uk$SXU>@MuRPiIpJ9fS#`)tj13Lxo+LX@RDGaya58 zA4!$-V$_pCiFXazQPRAj;94k7kP0>&{@cn;CCGrTuQX~OICBGY{Ym?(W~!>Q?|eCG z16P*UTr)1;L?d6;oybrKqMN#;lA^4nv;x$(0{t?Vxf&vilMOCTqiTY@isQ&0Gys^_ zA}CGG0V|*G&3^_;1cP7Ep=GC-#r^Ho>A_NtZT1yEy_gqxx-{qVAXsQ5S2|3&I4@t4 zh(>@|Lqo&wbhG#COP%uhJuEN*t>D+SHLFO1tDJy-)KFl22qw<)ZY2^A|3h1?>o6%` z2YV+T?jYA3XwvoVl+g(uA>sN_w<0m=SO|dEfC(BFhDP(ckCSYaq$mq!XpEH?@`#eu*gDvpQbb~l_ml9@3GQk zDBa*rFrKx`fmdf2$*QzP<*eOU$0wjNp!@Vxj5Szu>4#GH29 zA7!eS;s3tebaSuY&7ntP{)>MeDP{{B+ZST@m{h_&Rln~n^r0}&wQ3{rcSq$rW6a`7 zWiXgjMUTP!;>ba_cu$dKX~Sm<^3^{zx7;chAueC^!uaNlFO6&{$(<#ep)Fh0kB=Mz z;ZeenL16XW_EhHQv!376^%pF-(ut+T=y*c5ecu!$6jJUpcoyk#T@c8qtFuwtzsxsQ zVHVjUt^Or9_oleBUE+3YifK7PEfkkYS+CTV(Z<#`IVtHcv{vq%u1?P5mXMpx+GQ^i z%IUr@vb0^wChpKM*3qAp8uVw2VJ!VwFl2k;Ckt7a48poE1=qR4umnJ*rQ!-BD+Sg0J0il!>V6>Z?n=;6l zn=n=koQ6BC;}lT6#}=R_7s30&@rEm{dPy1l9fkiEb8A2QkZS25Fwq3Ad(l86BSfdi+*XlXzui zWgtr|ZMO0OsF#68<~Klyb;bLqMw7Ag*^RVfxOU#jD?ECl2XcS3&~O1XrKz0J0E<1E zC^0H*6-{Q>*qHdKLnrL=>_FILnu(qLQ-x(W3C$c-DVgmljs6DiJ`bR==`?sB`~@JM zkx?U!+ajV=r&y0GG&J-$;Q`&l#B#1`D^uJz33!o$MjsIjc+UV7kL!0%fI439x64qt zyFQCGE|U(!26{nWNZIY#^peYREBe0@ABy!DKb`|{!RLX0Z{3mXBI?32GwA?}2Mgy3Y&Ec~2)oLH({+;6go{=R~GVpq3 zdpqW{2H6vOQQb{ZptNO524(=Jg!M1?vgbTw&6iNi5U@bhx(?(>F;>oI@|4Em?n?nd z`3p|kMkM7ZJMEe6zt3~KW7hvpO^vI3=o908^2d*8GP1HK_f!B$PQ17d$0Gx3@$Jph z12-|Cl-Df^wQ%^CTrD9e1Y4xdbPQVBi$PW92Y za%C_Py=W%DQW5;F$W`##{HG_ZEEqWBXYknupm(cR2J3^2R}A3w^wGIB^;CfKV45YLRkKv$G0c>0VH%!^JQ2ZPOSAHlN_zq7ppi^UeOuyL?oi_mo z;ZRaiDhhRe8?fR3`Sa%^oEmoz9R>q8yXCi&@H*G?UHgDQn08)dLmmuC424p&vSt?A z>jWzbt%tAyIi2z5@xLIW@Wd#d+}PX@4o^-d8-(GIP|XaCs`=*jegi;=?QsP0|E=2n duZ(y2pr?dmj2YLk0(_1_Q<7JgE0r-1{U0B^nH>NC literal 0 HcmV?d00001 diff --git a/docs/images/swingbuilder-1.png b/docs/images/swingbuilder-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ec5387907a2710e5517d5b0d0ff1e705b5bfe7 GIT binary patch literal 3770 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 literal 0 HcmV?d00001 diff --git a/docs/images/swingbuilder-2.png b/docs/images/swingbuilder-2.png new file mode 100644 index 0000000000000000000000000000000000000000..8f5a42bfb6315aab5815ae9c914e97c7cb3030d1 GIT binary patch literal 3998 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

_vm6BsF{b?X8v7}@4KbM7qJ37un3cx859PS zQIt1Z4+?4aIuC@WK(83^59!z zCd0AcPEv$Ivf$zQLdj*|;7G*&Und>jc6E3pCnr~l`aBC21fs;TnU0RmBUT_hJp6~4 zKWiOr^~WKBfg&^oP^kUqqWHkTc=9X2pZDGdlOw)zM-ff@AC7LVkvRRNLw!yvvmuzc zGhjPiAJ}ac)IT?)I!uFYCAEqDL`qJ%De*~a=UpWFr!LyBf!$p=akGh%SyMWE5z|XW z2;USdzq|V+7mTJG!uaUv@rj6*_40QSROHV7qLk}RT&0RP8A*;-{joGe+!+09ASy#- z5kCHxsr*ZF)T)oA9r~MIfwrhxT3QDaJ3Bi-A(+}NpLIMaC@S*0?Nm$cF3-3>{MdAk zYwe~Iu9Z8@5z+O}q_YQ$XrbfKsHmdUwh4U33$49FnQo)|^rxbKp%aWO9**9#xEL1j z_u+hi4Dxlt$Je*4>vXX$LNo+vb8k;#BBw*A-dgn=SN0bcTH5gLZXq5%zNrdrkTK-1 zN8GuQ|2YjVi-FFu4zOWlEL8V6GdEXwxyh+|zOl3vZ+9GKwl%2A!^@kJlqA~Zm{V!k z7GIh}7+z691b%qsa*ui=(mGr$)O9#=tLkGeD#xBaHC2X*M9B~--}4n4Jw}AOM})e#@X~~uVC3KJ02G6o zkumx`UHs%^IpBOl($&?qJc^uQU*P`!{^04L_Cv-I660O{=P51Z zjNQG%BrcMuYEdUM$;!fl!HJ1)?HwElxE+agb#-N^XX$L$TilRa43u7;DRlJoOs%Y> z*E_+74XX?8K|viZ?(RjJ6PEu-O%(lIlmBO@bUvlzX5_vdQ=7qY%SQGWuNazKDkljCan z)a}y7S|>Og{CHF2eU9bt?|*i4vlGX?_OK_F7@y+q_K&{2d_lAa^xw&xJ6k3Fw%GB8 z@FGSiNN2y|4aQ*~k@MOsLpw#K$hA%8J;<{dR2Qx$pM=5^qG2!+kXl*&l8cpr-oQk@dwg`eJNrzl z1Rea-7m>x~K!_C;S}2_`)nKRnhD>PGZ6eO$`*Hbdx?SI#mL?bbV&C%&&Mn}{gWInD z{;l)bRV;p(Rk!9=RuKxcG#ni70|Nv7{L%o)#zxhQFaqD^HM+_wD_8$IeYlu?rC3D~ z<7Q^#;E(L)hNhAlqBcC#b*g4$q~znn>taQnM~`%GIQrqp#=$_srRo_S_idDf|MjeP zrSS{m{{H^eDcLa4TycJ3VPc9&qLQ9!ax!joT$S>FYT@J0r=;xVb>Cz4I$5FMy@#iu zpa=~Mb2(aId%oW#+t}QEjfv@$e7uv_f~#T&G$oWtk@fW&jw{XMaYXY&!>zJPN?a

fPO)iGE9+i@UFUlyk~j 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 literal 0 HcmV?d00001 diff --git a/docs/index.adoc b/docs/index.adoc index 047ba7c..63b7713 100644 --- a/docs/index.adoc +++ b/docs/index.adoc @@ -80,7 +80,7 @@ XIndexAccess xIndexSheets = UnoRuntime.queryInterface(XIndexAccess.class, xSheet ---- === Static and Dynamic Types -While Groovy works great as a dynamic language where we can declare variables with the _def_ keyword, I prefer to declare +While Groovy works great as a dynamic language where we can declare variables with the `def` keyword, I prefer to declare types most of the time. This is only my preference and not a requirement. === Property Access @@ -126,7 +126,8 @@ If you start OpenOffice from the command line you can see stdout and stderr mess The best way to explain the differences between the Java UNO API's and using Groovy with and without the extension is with some example code. Many of the examples are spreadsheet examples are from SCalc.java that is included with the AOO SDK. === Import Statement -To use the UnoExtension you need to add to your imports section +To use the UnoExtension you need to add to your imports section. + .Add the UnoExtension to imports [source, groovy] ---- @@ -245,7 +246,7 @@ This first example will ignore that we already have a method to get a sheet by i Example: Set the active sheet. -.With Extension (begin with an XSpreadsheetDocument `xSpreadsheetDocument` reference) +.With Extension (begin with an XSpreadsheetDocument xSpreadsheetDocument reference) ---- XSpreadsheets xSheets = xSpreadsheetDocument.sheets XIndexAccess xIndexAccess = xSheets.guno(XIndexAccess.class) @@ -352,7 +353,7 @@ xCell.vertJustify = com.sun.star.table.CellVertJustify.TOP ---- === Cell Ranges -The GUNO Extension adds a method to XSpeadsheet to get the the cell ranges that match certain types.: + +The GUNO Extension adds a method to XSpreadsheet to get the the cell ranges that match certain types.: + `XSheetCellRanges getCellRanges(Object type)` where type is one or a combination of http://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/CellFlags.html[CellFlag constants] added together. .Without Extension @@ -442,3 +443,85 @@ cellList.each() { cell -> } ---- +== Graphical User Interfaces +=== Message Box +UNO provides a XMessageBox to display UI messages to the user. There a a number of steps to get from an XComponentContext to displaying a message. + +There are standard https://www.openoffice.org/api/docs/common/ref/com/sun/star/awt/MessageBoxType.html[MessageBoxType enums] used depending on the icon and https://www.openoffice.org/api/docs/common/ref/com/sun/star/awt/MessageBoxButtons.html[MessageBoxButton constants] for button combinations displayed. the INFOBOX type is different in that it will ignore the button parameter and use BUTTONS_OK and display a single OK button. + +.Without Extension (begins with an XcomponentContext xContext reference) +[source,groovy] +---- +XMultiComponentFactory xMCF = xContext.getServiceManager() +XDesktop xDesktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext) +XFrame xFrame = xDesktop.getCurrentFrame() +Object oToolkit = xMCF.createInstanceWithContext("com.sun.star.awt.Toolkit", xContext) +XMessageBoxFactory xMessageBoxFactory = UnoRuntime.queryInterface(XMessageBoxFactory.class, oToolkit) +XWindow xWindow = xFrame.getContainerWindow() +XWindowPeer xWindowPeer = UnoRuntime.queryInterface(XWindowPeer.class, xWindow) + +XMessageBox xMessageBox = xMessageBoxFactory.createMessageBox(xWindowPeer, + MessageBoxType.INFOBOX, MessageBoxButtons.BUTTONS_OK, + "Window Title", "This in an informative mesage...") + +short infoBoxResult = xMessageBox.execute() +---- + +The GUNO extension adds two methods to XComponentContext that return a XMessageBox: + +`XMessageBox getMessageBox(MessageBoxType type, Integer buttons, String message)` that uses a default window title of "soffice" and + +`XMessageBox getMessageBox(MessageBoxType type, Integer buttons, String message, String title)` that includes a title parameter. + +.With Extension (Info Box example using default title) +[source,groovy] +---- +XMessageBox infoBox = xContext.getMessageBox(MessageBoxType.INFOBOX, + MessageBoxButtons.BUTTONS_OK, "This in an informative mesage...") + +short infoBoxResult = infoBox.execute() +---- +.Info Box +image::images/infobox.png[] + +.With Extension (Warning Box example with title and default okay button and a cancel button) +[source,groovy] +---- +String warnMsg = "This is a warning mesage...\nYou should be careful." +Integer warnButtons = MessageBoxButtons.BUTTONS_OK_CANCEL + MessageBoxButtons.DEFAULT_BUTTON_OK +XMessageBox warningBox = xContext.getMessageBox(MessageBoxType.WARNINGBOX, + warnButtons, warnMsg, "Warning Title") + +short warnBoxResult = warningBox.execute() +---- +.Warning Box +image::images/warningbox.png[] + +=== Groovy SwingBuilder +If you're a Java developer you've probaly heard of Swing with was Java's 2nd generation UI Toolkit. Many developers have ran into threading issues leading to blocked and unresponsive UI's if Swing wasn't used correctly. + +Groovy includes many examples of what they call Builders which are examples of a Domain Specific Language (DSL) focused on hierarchal structures. Builders are great for declaring content like HTML, XML, and in this case Swing. An added bonus is it takes care of handling the threading for you. + +This simple example comes straight from the http://groovy-lang.org/swing.html[Groovy Swing] page. I modified the size dimension of the frame and added the return Integer at the end. Otherwise it runs as a AOO marco. + +.Simple SwingBuilder Example +[source,groovy] +---- +import groovy.swing.SwingBuilder +import java.awt.BorderLayout as BL + +count = 0 +new SwingBuilder().edt { + frame(title: 'Frame', size: [150, 80], show: true) { + borderLayout() + textlabel = label(text: 'Click the button!', constraints: BL.NORTH) + button(text:'Click Me', + actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"}, constraints:BL.SOUTH) + } +} + +// Groovy OpenOffice scripts should always return 0 +return 0 +---- +.After launch +image::images/swingbuilder-1.png[] +.After first button click +image::images/swingbuilder-2.png[] diff --git a/docs/index.html b/docs/index.html index dbbeda9..d54fe61 100644 --- a/docs/index.html +++ b/docs/index.html @@ -482,6 +482,12 @@

GUNO Extension Documentation

  • RangeContainer
  • +
  • Graphical User Interfaces + +
  • @@ -607,7 +613,7 @@

    Casting

    Static and Dynamic Types

    -

    While Groovy works great as a dynamic language where we can declare variables with the def keyword, I prefer to declare +

    While Groovy works great as a dynamic language where we can declare variables with the def keyword, I prefer to declare types most of the time. This is only my preference and not a requirement.

    @@ -679,10 +685,10 @@

    Import Statement

    -

    To use the UnoExtension you need to add to your imports section -.Add the UnoExtension to imports

    +

    To use the UnoExtension you need to add to your imports section.

    +
    Add the UnoExtension to imports
    import org.openoffice.guno.UnoExtension
    @@ -826,7 +832,7 @@

    Index A

    Example: Set the active sheet.

    -
    With Extension (begin with an XSpreadsheetDocument xSpreadsheetDocument reference)
    +
    With Extension (begin with an XSpreadsheetDocument xSpreadsheetDocument reference)
    XSpreadsheets xSheets = xSpreadsheetDocument.sheets
     XIndexAccess xIndexAccess = xSheets.guno(XIndexAccess.class)
    @@ -951,7 +957,7 @@ 

    Cell Ranges

    -

    The GUNO Extension adds a method to XSpeadsheet to get the the cell ranges that match certain types.:
    +

    The GUNO Extension adds a method to XSpreadsheet to get the the cell ranges that match certain types.:
    XSheetCellRanges getCellRanges(Object type) where type is one or a combination of CellFlag constants added together.

    @@ -1054,10 +1060,123 @@

    Ran

    +
    +

    Graphical User Interfaces

    +
    +
    +

    Message Box

    +
    +

    UNO provides a XMessageBox to display UI messages to the user. There a a number of steps to get from an XComponentContext to displaying a message.

    +
    +
    +

    There are standard MessageBoxType enums used depending on the icon and MessageBoxButton constants for button combinations displayed. the INFOBOX type is different in that it will ignore the button parameter and use BUTTONS_OK and display a single OK button.

    +
    +
    +
    Without Extension (begins with an XcomponentContext xContext reference)
    +
    +
    XMultiComponentFactory xMCF = xContext.getServiceManager()
    +XDesktop xDesktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext)
    +XFrame xFrame = xDesktop.getCurrentFrame()
    +Object oToolkit = xMCF.createInstanceWithContext("com.sun.star.awt.Toolkit", xContext)
    +XMessageBoxFactory xMessageBoxFactory = UnoRuntime.queryInterface(XMessageBoxFactory.class, oToolkit)
    +XWindow xWindow = xFrame.getContainerWindow()
    +XWindowPeer xWindowPeer = UnoRuntime.queryInterface(XWindowPeer.class, xWindow)
    +
    +XMessageBox xMessageBox = xMessageBoxFactory.createMessageBox(xWindowPeer,
    +    MessageBoxType.INFOBOX, MessageBoxButtons.BUTTONS_OK,
    +    "Window Title", "This in an informative mesage...")
    +
    +short infoBoxResult = xMessageBox.execute()
    +
    +
    +
    +

    The GUNO extension adds two methods to XComponentContext that return a XMessageBox:
    +XMessageBox getMessageBox(MessageBoxType type, Integer buttons, String message) that uses a default window title of "soffice" and
    +XMessageBox getMessageBox(MessageBoxType type, Integer buttons, String message, String title) that includes a title parameter.

    +
    +
    +
    With Extension (Info Box example using default title)
    +
    +
    XMessageBox infoBox = xContext.getMessageBox(MessageBoxType.INFOBOX,
    +    MessageBoxButtons.BUTTONS_OK, "This in an informative mesage...")
    +
    +short infoBoxResult = infoBox.execute()
    +
    +
    +
    +
    +infobox +
    +
    Figure 1. Info Box
    +
    +
    +
    With Extension (Warning Box example with title and default okay button and a cancel button)
    +
    +
    String warnMsg = "This is a warning mesage...\nYou should be careful."
    +Integer warnButtons = MessageBoxButtons.BUTTONS_OK_CANCEL +  MessageBoxButtons.DEFAULT_BUTTON_OK
    +XMessageBox warningBox = xContext.getMessageBox(MessageBoxType.WARNINGBOX,
    +    warnButtons, warnMsg, "Warning Title")
    +
    +short warnBoxResult = warningBox.execute()
    +
    +
    +
    +
    +warningbox +
    +
    Figure 2. Warning Box
    +
    +
    +
    +

    Groovy SwingBuilder

    +
    +

    If you’re a Java developer you’ve probaly heard of Swing with was Java’s 2nd generation UI Toolkit. Many developers have ran into threading issues leading to blocked and unresponsive UI’s if Swing wasn’t used correctly.

    +
    +
    +

    Groovy includes many examples of what they call Builders which are examples of a Domain Specific Language (DSL) focused on hierarchal structures. Builders are great for declaring content like HTML, XML, and in this case Swing. An added bonus is it takes care of handling the threading for you.

    +
    +
    +

    This simple example comes straight from the Groovy Swing page. I modified the size dimension of the frame and added the return Integer at the end. Otherwise it runs as a AOO marco.

    +
    +
    +
    Simple SwingBuilder Example
    +
    +
    import groovy.swing.SwingBuilder
    +import java.awt.BorderLayout as BL
    +
    +count = 0
    +new SwingBuilder().edt {
    +  frame(title: 'Frame', size: [150, 80], show: true) {
    +    borderLayout()
    +    textlabel = label(text: 'Click the button!', constraints: BL.NORTH)
    +    button(text:'Click Me',
    +         actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"}, constraints:BL.SOUTH)
    +  }
    +}
    +
    +// Groovy OpenOffice scripts should always return 0
    +return 0
    +
    +
    +
    +
    +swingbuilder 1 +
    +
    Figure 3. After launch
    +
    +
    +
    +swingbuilder 2 +
    +
    Figure 4. After first button click
    +
    +
    +
    +