From 12619508bfb1d2c630f6aa86c9c0873bb557fd2c Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Tue, 21 Apr 2015 11:37:02 +0000 Subject: [PATCH] Updated Rules git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-portlet@114285 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/resource/TabularDataResources.java | 21 +- .../td/client/resource/rule-column-add.png | Bin 0 -> 882 bytes .../td/client/resource/rule-column-add_32.png | Bin 0 -> 2031 bytes .../td/client/resource/rule-column-apply.png | Bin 0 -> 863 bytes .../client/resource/rule-column-apply_32.png | Bin 0 -> 1926 bytes .../td/client/resource/rule-column-close.png | Bin 0 -> 877 bytes .../client/resource/rule-column-close_32.png | Bin 0 -> 2012 bytes .../client/resource/rule-tabularresource.png | Bin 0 -> 719 bytes .../resource/rule-tabularresource_32.png | Bin 0 -> 1571 bytes .../user/td/client/resource/rules.png | Bin 1390 -> 0 bytes .../user/td/client/resource/rules_32.png | Bin 1766 -> 0 bytes .../user/td/client/ribbon/RuleToolBar.java | 134 +++++----- .../td/client/ribbon/RuleToolBarMessages.java | 30 ++- .../user/td/client/rule/RuleApplyDialog.java | 14 +- .../user/td/client/rule/RuleApplyPanel.java | 231 +++++++++++++----- .../user/td/client/rule/RuleDeleteDialog.java | 7 +- .../user/td/client/rule/RuleDeletePanel.java | 91 ++++--- .../user/td/client/rule/RuleOpenPanel.java | 74 ++++-- .../user/td/client/resource/rule-apply.png | Bin 0 -> 819 bytes .../user/td/client/resource/rule-apply_32.png | Bin 0 -> 1802 bytes .../user/td/client/resource/rule-close.png | Bin 0 -> 819 bytes .../user/td/client/resource/rule-close_32.png | Bin 0 -> 1988 bytes .../td/client/resource/rule-column-add.png | Bin 0 -> 882 bytes .../td/client/resource/rule-column-add_32.png | Bin 0 -> 2031 bytes .../td/client/resource/rule-column-apply.png | Bin 0 -> 863 bytes .../client/resource/rule-column-apply_32.png | Bin 0 -> 1926 bytes .../td/client/resource/rule-column-close.png | Bin 0 -> 877 bytes .../client/resource/rule-column-close_32.png | Bin 0 -> 2012 bytes .../user/td/client/resource/rule-delete.png | Bin 0 -> 861 bytes .../td/client/resource/rule-delete_32.png | Bin 0 -> 2064 bytes .../user/td/client/resource/rule-edit.png | Bin 0 -> 969 bytes .../user/td/client/resource/rule-edit_32.png | Bin 0 -> 2549 bytes .../user/td/client/resource/rule-share.png | Bin 0 -> 958 bytes .../user/td/client/resource/rule-share_32.png | Bin 0 -> 2341 bytes .../client/resource/rule-tabularresource.png | Bin 0 -> 719 bytes .../resource/rule-tabularresource_32.png | Bin 0 -> 1571 bytes .../ribbon/RuleToolBarMessages.properties | 13 +- .../ribbon/RuleToolBarMessages_es.properties | 15 +- .../ribbon/RuleToolBarMessages_it.properties | 15 +- 39 files changed, 418 insertions(+), 227 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-add.png create mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-add_32.png create mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-apply.png create mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-apply_32.png create mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-close.png create mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-close_32.png create mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rule-tabularresource.png create mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rule-tabularresource_32.png delete mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rules.png delete mode 100644 src/main/java/org/gcube/portlets/user/td/client/resource/rules_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-apply.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-apply_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-close.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-close_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-add.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-add_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-apply.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-apply_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-close.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-close_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-delete.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-delete_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-edit.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-edit_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-share.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-share_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-tabularresource.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/client/resource/rule-tabularresource_32.png diff --git a/src/main/java/org/gcube/portlets/user/td/client/resource/TabularDataResources.java b/src/main/java/org/gcube/portlets/user/td/client/resource/TabularDataResources.java index ca509e2..e8ab342 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/resource/TabularDataResources.java +++ b/src/main/java/org/gcube/portlets/user/td/client/resource/TabularDataResources.java @@ -159,13 +159,24 @@ public interface TabularDataResources extends ClientBundle { @Source("rule-share_32.png") ImageResource ruleShare32(); + @Source("rule-column-add.png") + ImageResource ruleColumnAdd(); + @Source("rule-column-add_32.png") + ImageResource ruleColumnAdd32(); + + @Source("rule-column-apply.png") + ImageResource ruleColumnApply(); + + @Source("rule-column-apply_32.png") + ImageResource ruleColumnApply32(); + + @Source("rule-tabularresource.png") + ImageResource ruleTabularResource(); + + @Source("rule-tabularresource_32.png") + ImageResource ruleTabularResource32(); - @Source("rules.png") - ImageResource rules(); - - @Source("rules_32.png") - ImageResource rules32(); @Source("table-filter_32.png") ImageResource filter32(); diff --git a/src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-add.png b/src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-add.png new file mode 100644 index 0000000000000000000000000000000000000000..15e8736f6aaff0f535386c23420e9f22912ecdaf GIT binary patch literal 882 zcmV-&1C9KNP)To#cIDmzv-F(K# zr7D;hUKCM7#Rw{dUK?x#w zJ<_IhJK`qq&n~yS;l(5qkz3nM%kN&A7zY6itVbMC2!TwJ!2mTQjuT#f?`KLA1Gyv> z!AuPTx9)6!8is*6a7N@}{`mbjO64+}>+AIAa#YSfi8-}22#Jaz;s8gx*#ZSca1Kn3 zD30l*T{_JMH*fw;sdNe>LPSw9lKwERJ6yI;u2nfa@FcAa7mAm-b$gX;rVn!(9A71ix3l}DcD#;-pxcY2<*+u__ZQ+&R-4$k3&UOHt%ln+Wb6m95Meyg?hb)5djc62MR$A9|Fnh#@5FZ+38nq zcb5B?J;Oxjntfkz!w*e0NvVA;%{y7YAI1D35KqX6Ze&oxw^_7)_(UF~rV!@EK zNTYF*Z})bXnSB(TBZ(ufT;0SuDC82O%4vv?nRk2ZSm1YUaT7=@uM zt&VppN+O~|dgS=mTC29QebByIT_+8Kh~a|})DQ`HF+`MB$Ge%y{6Dphw32%@|Hk*# z+GinHV{5qu+ygA4Wl0AwWUWBQ$mR{#J207*qo IM6N<$f(<&3R{#J2 literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-add_32.png b/src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-add_32.png new file mode 100644 index 0000000000000000000000000000000000000000..230cb1bff7d3c0335db8037d29c4823552b58c8a GIT binary patch literal 2031 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 pb|IMU5(n6(#!jx?g|FV;{U14<2E(Rcp$~;p zydjztgQ%d0(iYJ^c!QFNn6yYW)`})H8lsYrrn#JC%w=YpOy-uEbJ_d**79NRv(K5^ zg9ze*!#R6>-`?xL*INJoS|9vBd=8z{|GCctht2_DnueeKdFo*=dPGIbB8q7GRaHb3 zRq!IHvdAv^y5dDqTG#11h-UYt_B(<;{@o{coB#-$0KC^Ds#31Sii#q%9H^}PaG$M7 zJD8<5vTFemp%~e+7x@jaeh~mwE!Se@seS!4oI;irCH=4YzNVebuDPwX-m>M_z?wq9 zGe0>`F|zBL`*Q#yDbj{h;zYq(R29@La+ZTx;#^UJARN_ zE)=kq$?;K)v00fYh7^dQ6^-^Hvexj&H{M|H-n}^I@-+oigs5u}C3POET?K%&;^v&k z*vw_~l}+=B?W7sqgW)2LKJ8;Vm58w z#Q69)s><;2W*Tvlr?N@aWdOVg+TtEbk|2S$rQQ(7G2`Q71Yt-aicnQ%XJ^^4aU*?w zeOc|qcoBw%hN#tQs8)~;PkJ!v4$gVFq+cHLOSf@X230TeyI zMtRrJ5H4w;KEWk*#7jzA1s^-SOHfQ!=z@q{g#}p+Sn-S%A0iA4#-s(-XpGTU7|jY+ zh~t>6S4Zg_-bJ-%i0Sz|1Vih%x*)9S-AE8bd1Rf3`^A9`P+^q_WZK@$mBAAjL+k`F zc<)dZM5Gld6)=Xz%uS{$Csvc~5{a;xQl^_V%vSkZbDu2a$VPNA%wr<_ZwQJY-;QQ9o+g}FY<>M1r+oEX7 zG_!I9WJ!UTwvCf_rt`ON)BQfskFlDr%aSAddpcrD+PC}jw?566vKeYc}K%; z=RNmWtT8yB@XF;EnW&DktLGE+G6aBgj_&SmcJJOz7=|nP&wL1~!Ro!BTKD|w#3aSg zGBRAEk-+K8mOs5+<+1IKiLsm9o_>c(8RxZymw002X?AaYjLyzA^p*R8fYk~>)u6)a z-Ov~~a`FzfhO*<`CBnckT|dpba?GXi8h6jmVdpQfU>4{u^@RaJNUz;uX26%FJvP??tB>o+V!Rxfp35QUY>cr(p|56HuMy@e{+c_ zuy|D#>Yl`V9vps{4c(jYDyXIm5R||KJhF8kuU~kTORjdIg%GGzO z)MCe*mDllE6Y(lIpD@@v%+7lr<=ES=GBG{J2JO zzrfcovt*Z`!bgTkhvfRd4hA^GCTg-C)3eg*E0u zBy^|-t)tqaqn#pw$(-xQbD93!_utwA=IEw!amP@(K;q%@%_`&5@$csD`cM7#n-9z` z)s**ttM{l%_)#zZX5wp~IlI4p>_0u6K5^g>hYx%b^Sy&7IkTpBi!t)FDi4WJPrSTl z6Z_IHzcw=c`2K%zc!(18f#sw@@&xTL1t6 M07*qoM6N<$f}L=#X8-^I literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-close.png b/src/main/java/org/gcube/portlets/user/td/client/resource/rule-column-close.png new file mode 100644 index 0000000000000000000000000000000000000000..90c75ed270ee1c6eb6326b30873cb090ac666970 GIT binary patch literal 877 zcmV-z1CsoSP)zIfL*YsYaMV~4ekZDQmg0+PFg5G33HqM!f?AyLs&(S!~J zNK_Qiqyo`UP|!dV1p)~O2_Yv~CL~yP{71Za{r3Oed(NR)SDa=}H8YwS2XN(Dbs%pP zGZjn>FN&z4VgwaJFa$xo5DZj|b{1M6y}3|#SFTnE@)6%|RnRi|u8wCLjtOp!H2!VW@#{e}Wmy3DjyOHZxUY@ud2Q=9`+ zBg*CIWL-MV26yiKNu@G{5h0?e81Y_ySWl-ntp43El2Qy2snoif*C|v zy?Ij}p2u2s^qVhX`8AsL4mvtUoQpX7B zR*Q6Giu>oDB~5E|n_X~FND5qh<^l#d9EK4jppp=Oy?lAYwzdz>j$RlWAIh`k%B*yU zaBKfCH~%;|N1TiJ>c<_NgTZ2q8iZhYRpQ!#o*bVzT`WFY=3c{7Z+Z%~E|-=TS(+c@ z|M&T|Z7@SrQB~rhfx^f0lcmAKv`YxaVcqlU`BA1$C3qiti#B@e1YUURID`EOt&Vpp zN-U!Ndc?T4*-G#2)!Nrrx5$DZV)!5gHADhl3=yT(@osKn;IFhJt$086Z{1i;KMlbe zy9b@OPn2!e&o@=mqAFY^x|~M_N}uc&`2*k09fVN`fA`MJuI=^uYwg(HIBx5FG&C=ime7O)! zJBienB1T%x-gEEV^S|f(&&P%Thv(>N{h#YRa`ZF+W<&6s*Oou&M31XzNkkD%eyWOy zq6$s~RW`{bn^&ADN_(8lgJ}9)BEKr=!$1DozBd5;4FJyRaaAcbLPbRp+6q*zzqw22 zq!Y|m8R=L+M92rWg! zc;Z)Q$Om?KV|@ldBthDWl`vAU7F7i`o0Mf>wkTH=&kKm6FaxM+QZNddtW^c4!nFW2 zF&7G0%hKFMjIk+A6hi{U(6&Y=iL5oe^6IM`I&_FQjNFjuPy^Q5#CSj$hJ<0_iXaHmWs0iFBIt%3NW5T(!U*emnc3-pVXhO`#+YPd zV;CG9WPW}gfMT(TO^ukiW3vV9(Zh#R7XU88Ro9S}tLWMaQdz~-YeZ2*7=_8Z)ndK6 zPNhH>S-e~bF@ zb!;wR0*G57tfU~I7ExxL|&2n!ey3LmYM14XLMqM@v*Ut zH`CM8xHu+`B2<+yj1X}Y3I%$5duc{3Bz9ml`=&E*`0qaP_)Xf^_mhdSF1q72>_QcD zbq>N1F+REe5(6XKVYS9Y%`iANmYH{Uc9!>MF0#E`CXQODi-@Bp;v@-L1sBG+I6^Tg z(FKu?Fbo0?cWoQl*G&U&>?YW^AO7-tbnX)7-Y;T`L-4{g6w6bLzrReYR>O676NVud zE?lH%@-FKAWmc+J@yf$os0rNzqj+ABWy09OtrCOvP+_wLjP(!Y3OQ>RFTlVErZkQ| z^cBp)JZA4l(X%IE{tBL#Bk#IsF3cg5x1^g37(;9I3d_@PFkBj@Rj*_Hg9JST7z4hw zN&M55g}RfDOlVZfejH+|>u}<)s0}dpJOaaIbmkoL^i!Cn_px0C{Gpp+Z4FfMJddfV zDb7#7iF3l(=qS5(?P6wThR@tF!oW}ofM;Ky$J%y?CPl3s$i768Q|Hhy25T{cBVZFB znVur_m*CPg>I6xNmQ*~UR4P#@6mZUw%jHsnDY0C?zes9uU82QRI-WZaDA& z=FU%}Xa0q}cno^`uwVW*Iy8#(4G~srxI!-~k}1pOa^&;*jN#5Xf*{zOq-ZCiq(pac zAg)#aRGVFVFh4e$Gc)Iq6R)DrJq?R;@>RTJzrZYC#e^aH@*i>ACWvB2VZ@L`FCF9ma}IW$SJ;Oh#XW4BTVmqkT>OK&YW6hu(in0+^WlWGJ>;z&`oQvxAQK*idi4-W>%3 zFKH}l&6rwCl9L#CcecS`ug_zjD}P|+08Sv5vf0={Pvg=#aV z))cHsJ~(^1L3aT6-_g%nt;K4!dEKtJEo+bO-d)I&Q%<=ignf*8U}B_;z)zHik)zQ{ zl&iw|xdy{Uk4HZ>OtIU$M$txFs3dW|xl>Nrk0Gbf)8*rwAYMl*b|PIClch;j#Ttl3 zIX~Cn@?xFEwTL5sSi%WeN!7HmaI)o=)G@d9hUJ{lllO6=OYKbPIB|KYb$6*RNgnyY zBNBM~T$RPOIz8PnU@*p}8-a*zU)3;(69j`ul4P>0+NP_WBA!W=>lZQrk#j%2wAeW0 zMD~?SIU)z=uGE=Z313=Y=SwgA@MDz^<8pfV$We|Rc@*>1_y57k?tv*|@nBCseI~&>|sKZN&oW01`idnYrr14`X7}aP zlmR7SDE&Zf?4*rJ+}OT{sZrCGD_!a8oO|B)J&yqxz~k-h?bS3*3;utMR;zX7`~I)N zU~oAt0t%>Vt^a7P2Qw3fF@5KGZge`G!}ay`=V2HcQ4~$CdJ32m5z$&pmSr*?k0nVG zIX^#_IF9A`_*g_l&d$zce}DfQuu-qqZGh5EN7FR1ENgmg+ooJD15l|{Xfzs|dwYBD zdcEEMDj|5JeH~ zcAG|{!O6)9TU%Sx^izQ>%joy}BuT<(G{W;d!Z5_LEV|t;j^nVqyUWtj5~I;*YHD4N z4G@MQzV8#qG3|C6*L4{Vhxoovv)N=anN0uAKvYUGKQ~7|j!1?Vc&e z3QxDUxBu8^G?oDeC{1GEM=FH)$t9&k)3mXBI3A9LVwxtVX<}Jc_T|f$A7nyKqA^@N z1n@p^@B1DyV45bnt`mtwvV}t7X(Ex(faTGckhl4A)WVy}MnQzvC;(m8F$^OFlYQ~x z#oquISidy}CV^2(0T2Yib-aY%Z@S=ytODK9y+)r_u@GWRVQB3rn450+&~j5{0l;7| zKnQVdiR-#3r7#TR8q6p&K@f0$evWCHD5dZ`kHKJoVHl*-Y3`JUtyYWY&!3}d8aq2X z06cs4j35Yj^5hA&ZI8LZbzNS+e$Dy$Ih&iCB$G)F4h|@lN^ERwd=S8UgD_movMgNJ z<@orRd_GU7(?QpDUcGvS>$+osStu0fcDtlfDUObgsMqTpA0LxUCVBJb4YgWrdI0r$ z9oKb9CX-l}MWs@qTrOi-7O_~2a=Faz?k{B@&5X z+cwc?l#`Q_=>d!eTRa}e^E?1jsT3C%7g(0X#l;2re4bLN#Qy$1wrz8Ec7|aX%+Jr$ z?RLpzGH9Ci-hE;sfJ7pJVHmVpEi_FdolcWZrwM`p$8pGJv&3RCy4^0#W)mUA_4h`j zK|CHOlgVJ)Hm>W^Y&OYcGSdUFEQ?2v9?@>MX*QeJ)2YD2+yggM$MW7Z<}F zk7~7w@B2t8ab1^cwaUiE21`pz(*p=u*xufzSS;eYE}rL6tJR1^BJ_GaOw%Nr&9c6} zPCOpR_kDW39)@AiZnyD$pJK5{I-O>9b(Lw$@tDlb%>x3@^YQ%vO*eS>@Cz!H3Y|{p zx&V2eN2O9Bx0)rnkic^t5Q2WMM>3HZ+oGr52VBqRKl?4-4sulAnRtFcr@KO;5@BoW zm+bC7Czs11rKDIalFQ}zG70DZeagTC*@|LcR$0uSAr`)dXp}ql1Cry4hdH|phQzt_ z2xbC~N)Er@TE;X?`n?{u9i`jp^5FB&k;mVXc78z2rBVG;m~o(14|eexNbm=F)W0Rg;Tkm&5)Mn?ZmPU4(@-M7so+9Rk0B6d&ONRLI0t z`B0z&5JK_t;yaF(zsD329OdB5Ikdaq@<1(PTooq}!wFJ@2}MeuTm`RysPW3^E1%`a zGK-N#nqGsx->2vIhf0MUnK;BQKMsIG1w-@INDcLa0D(XXi9{d}Cu~tK15ZLSg8jNr4{-q!1(ag}+K9^2%2VbQ81)2sz0E6Pi*fF%1pZQ%E70wKSAc z*rp&LK&fD8@f8Rq1j@9)9Sl*=#KBGs>ws?D9e}9|*3%Z}%>mW6OSSFN?09Ug&0=U* zy&*&DrIZB9htvbmBT#<}oeGo>;j=H0cH-k)@T;H2_-ZqLWvSv1zgghR`!RH(5#S>b zL}e5c6Cnk9;vW3&8;H!pWgG54hTncYbjOrIsK#1rUGiiz!Q;)u7}~XHjyL@R1LYtQ zwEQ;r>>QS6!O9k_{NgHS^$7|7(+2U^Qyxwgl7(;n^`}3tWLCaHpua1heD}}4{Nu0A zzkA=`(vT|CG~Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*q` z4G03JI1yj~00izyL_t(Y$F-Kri(Ew%hrg%6;+oyRlmnM#fK*r_`kl_J~)p7_~>*cXf!%UMRZg})Co8hR1}vsRl%v^oT4Ir zUe*7zKCgnP8kfjyn9IHY#xuJl1ZXrmM^*LhYBLE$6-hVsy&#(Q&Tl4eBUpD$1QAG_ zqmYl>YP}BdZU`Wvqt#{-yz} z)zq7gL_3}%5w3yA6N)ihUTm_`a9Cry2pbF-#U&lYIgGVrvUyaJbj@QKhcH^q_#34p zr4V@~7=`&to2jcU>T8Z{WQZe6ZOx&sjlFu3(qI86%H`Q5#_oKQX1(I!1a=O^j1?oq zd5LcdAgT!dFpZYu#Y1H#rt6%Xta9|hGPo8WePXz-JOUU-wiH>p@&$*Vc&ZCgwbAl$ ztC#r(M4Doz3I^iHGBI6ec6p7ANf@76!~_9V>Ep-ov+Td)PI9>%%VD1Ji;F~23@A|m zBZUYNMXu$*n`cA!+0b%wvPQCSfqt1|X0^Z{6`{CwFUu2CSZfjShZ?_FA&Rr8!VRSi zqlL&Da1%tSL)G(4Z7t#GgJr(^c8d9hEPHp~Nax%*%fEifEw}E+S_?of4te(et=KRI zV5Qdbfm4{SH5%dsj1Lk=mh&?W7MdX<5JeIDZoLgvB}o#Tb69KXB*Kpumx%LySOXSe zxIfw?Q`=S1x;YfGk>%86g?hZ5g?gL$`8nb^##&1lh6F)?s*=lQIR5ol9Q$;dvlpw( zRoh@pHwkXyz@;2upthRu`~zjq&(xX7K1^lt1j|dy7;A7zLJ)?G3=h*kFvLP;8#{|R zewb`>&+bA>@ZVLG$~2{!Y{qharq0|-8`o~J{q{pN8x2&2PP@&y)5mGF3}@%d^yc%7 z4TkjPEpL5xg_j>MBO?EB1CefKj6=)m->T#?mV74Q)Gv!z>pcR7pnQA#{eV6 zh`DNqo;YB~SdOebY`l;v-fS?lyknHtZ-pEq0kc& z28N;jh=pp0LOx_`Ntvq*u+pdmU6NIOu@F`5&suhk#MGK?BCG5i&QfW#SgNJ1y2fCy z;n4#{E=)hhLv4_=2Nq66fg6MdrE^y1j&PDvTC0 zj1?oCicf0lIV$x=4EM$C7|HVSH%s(n1A4Ln1HBQgM0Bt(G`niKyMDUV*ppT?xmxIn z+>vAF0$(gP%3`+{O${lV<_h@?gEK`Q+P{U~T&Q6X7*Ndw#zX;82+(%Hdq`W0`Ebms zs0uidjiR3B7FjRwvhg5Dl7#wNJvlQOKYjDI+`dwOhDswbmls-dQD~>ks~=48<_r7& w^AqKzcP59Tz#JD5NFsja%-gMgp^0{1+BeF*(1`v3p{07*qoM6N<$g6a@~S^xk5 diff --git a/src/main/java/org/gcube/portlets/user/td/client/resource/rules_32.png b/src/main/java/org/gcube/portlets/user/td/client/resource/rules_32.png deleted file mode 100644 index 60c9febe1188ec2ca1d8ceeaa2f154b8f65ee6ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1766 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*q` z4F@rvaBR5%00w4BL_t(o!_AjpY#m1x#(!sKcK7*3iAD(VN-0IOLJ_K{P!Lcfnu?^Q{1J$f*iG6b)T9Y< z6Q^-(=lcHHox{WIUhnlEo(SUVUhSRP*_pH7_sw_C!2iSN=_&o6uX*U{DFCGCc=GtQ zz256l?{!F3@m}!?UOlSh?a;4iZ(B=k)qK1U&lmT#J8o9t{_lQa{3QTa1W+vAY3o_l}r`YVvLe`uSsNwz0ZyU8&?J})NFhG(np4*l`4cUs8SH5 zEBo>r#R%=Ti!qY-g%N#`k%Ld1(ZtDcv2Hhj942X{N~`UOZCqL~TzePDCoc7Asjp`Y zLMvSg^Qek1X`ze&K7TT{F+ZF-Ol*>%0YJ;w909Lks-7_#mJDM81Z>szqzRVAlQbEMYNKpt7*439r|naD~o3Mm;z0j8#O8grCznb%AeRQ(`@pu zGuSxI?9{Wwal9NvIgoru6vnhB0$QR#fL7}H{QeODp8DMkBJjBnhxY6h`0cSOTQ+YY z^Fes^+5oe!PjKKf53HhKdS)K$96k?XwFby3D0ae1*rj(uF~Y?+{>kJkuOJc>J}@vq zrP|NJ{M>2{ z2*wB|hf5^?EyIBK^oVd30);J$2^uIk|ISNLtJT@Mb&NF4m_GMBs&MD_9Yj%7GArSu z?;U32rjZ^B&R?1*>XYC%YFINDsQ2B(QqZuhf$)|9V`F2Cj*f;vMaZ%&*FhjbRtg3{ z@=Usdf*u4ir6;Q;vEe5tW-!JvII@k!Mib{8-UsM4r_C7Cy*g`n=GaNzcKa@xZO?{2 zLnl=}u)QBe@R{Q6IvUWf4@j3g0o13|-}ydfZ!B@)!Uf_u#yQvJ-&%`^psLgd2Wii| z%=vTw;JLrv;Ko9RG17Hc&w9I{2bzF?tK)faU*Ph{3p3od<6h?9JkH6vIg%s^1xfzq zBO@a?=jiX>z{p+q@bi;3#^2%i!|6r7`PpqWnoT0Bc`nekG?1fEh_I(%3x7Llhfm)B z2^x#@G@H$wI?u$!1Q#z}q5ayfD+XVg!Er;>;?)@89t;=3o8=zxm5m&Mdx*_wVc@a)wNm!G6abBYiw| z>?#j^d~;VfYt{oOPp@Vp3bYnsk z86JD~P5Ppk)OXg)1ai`eKJH zQ#K98v^$_WSp zW~FMEd`l^jH8?9ApIqRNrx)3`t4>aO>M26T2!?l<+^F&VAvvZJFFU^cv z@wb-)xRykA=-?A)RP%#Lalj}%!g~!y((TJ@N!8$Rd9D|fP4zk_PI*2!UZ+~IIKUZ$ zS5<3}*os4NuEg;M1&07*qo IM6N<$g1#|dga7~l diff --git a/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBar.java b/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBar.java index 393bf26..2a9f569 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBar.java +++ b/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBar.java @@ -36,13 +36,13 @@ public class RuleToolBar { private EventBus eventBus; private ToolBar toolBar; - //Rules + // Rules private TextButton ruleNewButton; private TextButton ruleOpenButton; private TextButton ruleDeleteButton; private TextButton ruleApplyButton; - //private TextButton ruleShareButton; - + + // private TextButton ruleShareButton; public RuleToolBar(EventBus eventBus) { this.eventBus = eventBus; @@ -55,40 +55,22 @@ public class RuleToolBar { protected void build() { RuleToolBarMessages msgs = GWT.create(RuleToolBarMessages.class); - + toolBar = new ToolBar(); toolBar.setSpacing(1); toolBar.setEnableOverflow(false); - + // Rules ButtonGroup rulesGroup = new ButtonGroup(); rulesGroup.setId("Manage"); rulesGroup.setStyleName("ribbon"); rulesGroup.setHeadingText(msgs.ruleGroupHeadingText()); - //templateGroup.disable(); + // templateGroup.disable(); toolBar.add(rulesGroup); FlexTable ruleLayout = new FlexTable(); rulesGroup.add(ruleLayout); - ruleNewButton = new TextButton(msgs.ruleNewButton(), - TabularDataResources.INSTANCE.ruleAdd32()); - ruleNewButton.enable(); - ruleNewButton.setToolTip(msgs.ruleNewButtonToolTip()); - ruleNewButton.setScale(ButtonScale.LARGE); - ruleNewButton.setIconAlign(IconAlign.TOP); - ruleNewButton.setArrowAlign(ButtonArrowAlign.BOTTOM); - ruleNewButton.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - eventBus.fireEvent(new RibbonEvent( - RibbonType.RULE_NEW)); - } - }); - - ruleLayout.setWidget(0, 0, ruleNewButton); - ruleLayout.getFlexCellFormatter().setRowSpan(0, 0, 2); - ruleOpenButton = new TextButton(msgs.ruleOpenButton(), TabularDataResources.INSTANCE.ruleEdit32()); ruleOpenButton.enable(); @@ -99,15 +81,13 @@ public class RuleToolBar { ruleOpenButton.addSelectHandler(new SelectHandler() { public void onSelect(SelectEvent event) { - eventBus.fireEvent(new RibbonEvent( - RibbonType.RULE_MODIFY)); + eventBus.fireEvent(new RibbonEvent(RibbonType.RULE_MODIFY)); } }); - ruleLayout.setWidget(0, 1, ruleOpenButton); - ruleLayout.getFlexCellFormatter().setRowSpan(0, 1, 2); - - + ruleLayout.setWidget(0, 0, ruleOpenButton); + ruleLayout.getFlexCellFormatter().setRowSpan(0, 0, 2); + ruleDeleteButton = new TextButton(msgs.ruleDeleteButton(), TabularDataResources.INSTANCE.ruleDelete32()); ruleDeleteButton.enable(); @@ -118,17 +98,64 @@ public class RuleToolBar { ruleDeleteButton.addSelectHandler(new SelectHandler() { public void onSelect(SelectEvent event) { - eventBus.fireEvent(new RibbonEvent( - RibbonType.RULE_DELETE)); + eventBus.fireEvent(new RibbonEvent(RibbonType.RULE_DELETE)); + } + }); + + ruleLayout.setWidget(0, 1, ruleDeleteButton); + ruleLayout.getFlexCellFormatter().setRowSpan(0, 1, 2); + + + + /* + * ruleShareButton = new TextButton(msgs.ruleShareButton(), + * TabularDataResources.INSTANCE.ruleShare32()); + * ruleShareButton.enable(); + * ruleShareButton.setScale(ButtonScale.LARGE); + * ruleShareButton.setIconAlign(IconAlign.TOP); + * ruleShareButton.setToolTip(msgs.ruleShareButtonToolTip()); + * ruleShareButton.setArrowAlign(ButtonArrowAlign.BOTTOM); + * ruleShareButton.addSelectHandler(new SelectHandler() { + * + * public void onSelect(SelectEvent event) { eventBus.fireEvent(new + * RibbonEvent(RibbonType.RULE_SHARE)); } }); + * + * ruleLayout.setWidget(0, 3, ruleShareButton); + * ruleLayout.getFlexCellFormatter().setRowSpan(0, 3, 2); + */ + + cleanCells(ruleLayout.getElement()); + + // Column Rules + ButtonGroup ruleOnColumnGroup = new ButtonGroup(); + ruleOnColumnGroup.setId("On Column"); + ruleOnColumnGroup.setStyleName("ribbon"); + ruleOnColumnGroup.setHeadingText(msgs.ruleOnColumnGroupHeadingText()); + + toolBar.add(ruleOnColumnGroup); + + FlexTable ruleOnColumnLayout = new FlexTable(); + ruleOnColumnGroup.add(ruleOnColumnLayout); + + ruleNewButton = new TextButton(msgs.ruleNewButton(), + TabularDataResources.INSTANCE.ruleColumnAdd32()); + ruleNewButton.enable(); + ruleNewButton.setToolTip(msgs.ruleNewButtonToolTip()); + ruleNewButton.setScale(ButtonScale.LARGE); + ruleNewButton.setIconAlign(IconAlign.TOP); + ruleNewButton.setArrowAlign(ButtonArrowAlign.BOTTOM); + ruleNewButton.addSelectHandler(new SelectHandler() { + + public void onSelect(SelectEvent event) { + eventBus.fireEvent(new RibbonEvent(RibbonType.RULE_NEW)); } }); - ruleLayout.setWidget(0, 2, ruleDeleteButton); - ruleLayout.getFlexCellFormatter().setRowSpan(0, 2, 2); - + ruleOnColumnLayout.setWidget(0, 0, ruleNewButton); + ruleOnColumnLayout.getFlexCellFormatter().setRowSpan(0, 0, 2); ruleApplyButton = new TextButton(msgs.ruleApplyButton(), - TabularDataResources.INSTANCE.ruleApply32()); + TabularDataResources.INSTANCE.ruleColumnApply32()); ruleApplyButton.disable(); ruleApplyButton.setScale(ButtonScale.LARGE); ruleApplyButton.setIconAlign(IconAlign.TOP); @@ -141,27 +168,8 @@ public class RuleToolBar { } }); - ruleLayout.setWidget(0, 3, ruleApplyButton); - ruleLayout.getFlexCellFormatter().setRowSpan(0, 3, 2); - - /* - ruleShareButton = new TextButton(msgs.ruleShareButton(), - TabularDataResources.INSTANCE.ruleShare32()); - ruleShareButton.enable(); - ruleShareButton.setScale(ButtonScale.LARGE); - ruleShareButton.setIconAlign(IconAlign.TOP); - ruleShareButton.setToolTip(msgs.ruleShareButtonToolTip()); - ruleShareButton.setArrowAlign(ButtonArrowAlign.BOTTOM); - ruleShareButton.addSelectHandler(new SelectHandler() { - - public void onSelect(SelectEvent event) { - eventBus.fireEvent(new RibbonEvent(RibbonType.RULE_SHARE)); - } - }); - - ruleLayout.setWidget(0, 4, ruleShareButton); - ruleLayout.getFlexCellFormatter().setRowSpan(0, 4, 2); - */ + ruleOnColumnLayout.setWidget(0, 1, ruleApplyButton); + ruleOnColumnLayout.getFlexCellFormatter().setRowSpan(0, 1, 2); cleanCells(ruleLayout.getElement()); @@ -196,31 +204,31 @@ public class RuleToolBar { ruleNewButton.enable(); ruleDeleteButton.enable(); ruleApplyButton.disable(); - //ruleShareButton.enable(); + // ruleShareButton.enable(); break; case TR_CLOSE: - case TR_READONLY: + case TR_READONLY: ruleOpenButton.enable(); ruleNewButton.enable(); ruleDeleteButton.enable(); ruleApplyButton.disable(); - //ruleShareButton.enable(); + // ruleShareButton.enable(); break; case TR_OPEN: case TABLEUPDATE: - case TABLECURATION: + case TABLECURATION: ruleOpenButton.enable(); ruleNewButton.enable(); ruleDeleteButton.enable(); ruleApplyButton.enable(); - //ruleShareButton.enable(); + // ruleShareButton.enable(); break; case WIZARD_OPEN: ruleOpenButton.disable(); ruleNewButton.disable(); ruleDeleteButton.disable(); ruleApplyButton.disable(); - //ruleShareButton.disable(); + // ruleShareButton.disable(); break; default: break; diff --git a/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBarMessages.java b/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBarMessages.java index 3652d54..83cdff7 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBarMessages.java +++ b/src/main/java/org/gcube/portlets/user/td/client/ribbon/RuleToolBarMessages.java @@ -12,13 +12,7 @@ public interface RuleToolBarMessages extends Messages { @DefaultMessage("Manage") String ruleGroupHeadingText(); - - @DefaultMessage("New") - String ruleNewButton(); - - @DefaultMessage("New") - String ruleNewButtonToolTip(); - + @DefaultMessage("Open") String ruleOpenButton(); @@ -30,6 +24,22 @@ public interface RuleToolBarMessages extends Messages { @DefaultMessage("Delete") String ruleDeleteButtonToolTip(); + + @DefaultMessage("Share") + String ruleShareButton(); + + @DefaultMessage("Share") + String ruleShareButtonToolTip(); + + + @DefaultMessage("On Column") + String ruleOnColumnGroupHeadingText(); + + @DefaultMessage("New") + String ruleNewButton(); + + @DefaultMessage("New") + String ruleNewButtonToolTip(); @DefaultMessage("Apply") String ruleApplyButton(); @@ -37,11 +47,7 @@ public interface RuleToolBarMessages extends Messages { @DefaultMessage("Apply") String ruleApplyButtonToolTip(); - @DefaultMessage("Share") - String ruleShareButton(); - - @DefaultMessage("Share") - String ruleShareButtonToolTip(); + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyDialog.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyDialog.java index c0b7f63..96e2c93 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyDialog.java +++ b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyDialog.java @@ -5,7 +5,7 @@ import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceA import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsFinalException; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RulesOnColumnApplySession; +import org.gcube.portlets.user.td.gwtservice.shared.rule.ApplyColumnRulesSession; import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialog; import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialogListener; import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; @@ -40,9 +40,9 @@ public class RuleApplyDialog extends Window implements this.eventBus = eventBus; initWindow(); - RuleApplyPanel templateApplyPanel = new RuleApplyPanel(this, + RuleApplyPanel ruleApplyPanel = new RuleApplyPanel(this, trId, eventBus); - add(templateApplyPanel); + add(ruleApplyPanel); } protected void initWindow() { @@ -50,11 +50,11 @@ public class RuleApplyDialog extends Window implements setHeight(HEIGHT); setBodyBorder(false); setResizable(false); - setHeadingText("Apply Template"); + setHeadingText("Apply Column Rule"); setClosable(true); setModal(true); forceLayoutOnResize = true; - getHeader().setIcon(TabularDataResources.INSTANCE.ruleApply()); + getHeader().setIcon(TabularDataResources.INSTANCE.ruleColumnApply()); } @@ -78,8 +78,8 @@ public class RuleApplyDialog extends Window implements hide(); } - protected void applyRules(RulesOnColumnApplySession ruleOnColumnApplySession) { - ExpressionServiceAsync.INSTANCE.startRulesOnColumnApply(ruleOnColumnApplySession, new AsyncCallback() { + protected void applyRules(ApplyColumnRulesSession applyColumnRulesSession) { + ExpressionServiceAsync.INSTANCE.startApplyColumnRules(applyColumnRulesSession, new AsyncCallback() { @Override public void onFailure(Throwable caught) { diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyPanel.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyPanel.java index 8017a32..b58ee15 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleApplyPanel.java @@ -11,8 +11,8 @@ import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsFinalException; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; +import org.gcube.portlets.user.td.gwtservice.shared.rule.ApplyColumnRulesSession; import org.gcube.portlets.user.td.gwtservice.shared.rule.RuleDescriptionData; -import org.gcube.portlets.user.td.gwtservice.shared.rule.RulesOnColumnApplySession; import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; @@ -36,12 +36,15 @@ import com.sencha.gxt.data.shared.LabelProvider; import com.sencha.gxt.data.shared.ListStore; import com.sencha.gxt.dnd.core.client.GridDragSource; import com.sencha.gxt.dnd.core.client.GridDropTarget; +import com.sencha.gxt.widget.core.client.Dialog; +import com.sencha.gxt.widget.core.client.Dialog.PredefinedButton; import com.sencha.gxt.widget.core.client.FramedPanel; import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData; import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack; import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer; import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign; +import com.sencha.gxt.widget.core.client.container.MarginData; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.event.SelectEvent; @@ -49,12 +52,17 @@ import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; import com.sencha.gxt.widget.core.client.form.ComboBox; import com.sencha.gxt.widget.core.client.form.FieldLabel; import com.sencha.gxt.widget.core.client.form.FieldSet; +import com.sencha.gxt.widget.core.client.form.TextArea; +import com.sencha.gxt.widget.core.client.form.TextField; import com.sencha.gxt.widget.core.client.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; import com.sencha.gxt.widget.core.client.grid.Grid; import com.sencha.gxt.widget.core.client.grid.filters.GridFilters; import com.sencha.gxt.widget.core.client.grid.filters.StringFilter; import com.sencha.gxt.widget.core.client.info.Info; +import com.sencha.gxt.widget.core.client.menu.Item; +import com.sencha.gxt.widget.core.client.menu.Menu; +import com.sencha.gxt.widget.core.client.menu.MenuItem; /** * @@ -81,26 +89,23 @@ public class RuleApplyPanel extends FramedPanel { private ColumnData column; private ArrayList applicableRules; private ArrayList appliesRules; - - + private TextButton btnApply; private TextButton btnClose; - + private ComboBox comboColumns; private ListStore applicableRulesStore; private Grid gridApplicableRules; private ListStore appliesRulesStore; private Grid gridAppliesRules; - - - public RuleApplyPanel(RuleApplyDialog parent, TRId trId, EventBus eventBus) { + public RuleApplyPanel(RuleApplyDialog parent, TRId trId, EventBus eventBus) { this.parent = parent; this.trId = trId; - applicableRules=new ArrayList(); - appliesRules=new ArrayList(); - - Log.debug("TemplateApplyPanel"); + applicableRules = new ArrayList(); + appliesRules = new ArrayList(); + + Log.debug("RuleApplyPanel"); setWidth(WIDTH); setHeight(HEIGHT); setHeaderVisible(false); @@ -191,11 +196,6 @@ public class RuleApplyPanel extends FramedPanel { new VerticalLayoutData(1, -1, new Margins(0))); // Rules - // IdentityValueProvider identity = new - // IdentityValueProvider(); - // CheckBoxSelectionModel sm = new - // CheckBoxSelectionModel( - // identity); RuleDescriptionDataProperties propsRules = GWT .create(RuleDescriptionDataProperties.class); @@ -212,6 +212,8 @@ public class RuleApplyPanel extends FramedPanel { sb.append(ruleApplyTemplates.format(value)); } }); + + ColumnConfig descriptionCol = new ColumnConfig( propsRules.description(), 120, "Description"); @@ -258,10 +260,11 @@ public class RuleApplyPanel extends FramedPanel { ColumnModel cm = new ColumnModel( l); - - StringFilter nameFilter = new StringFilter(propsRules.name()); - StringFilter descriptionFilter = new StringFilter(propsRules.description()); - + + StringFilter nameFilter = new StringFilter( + propsRules.name()); + StringFilter descriptionFilter = new StringFilter( + propsRules.description()); // Applicable Rules applicableRulesStore = new ListStore( @@ -278,21 +281,19 @@ public class RuleApplyPanel extends FramedPanel { gridApplicableRules.setColumnReordering(true); gridApplicableRules.setColumnResize(true); gridApplicableRules.getView().setAutoExpandColumn(descriptionCol); - - + GridFilters filtersApplicableRules = new GridFilters(); filtersApplicableRules.initPlugin(gridApplicableRules); filtersApplicableRules.setLocal(true); filtersApplicableRules.addFilter(nameFilter); filtersApplicableRules.addFilter(descriptionFilter); - + + createContextMenu(gridApplicableRules); // Applies Rules - appliesRulesStore = new ListStore( - propsRules.id()); + appliesRulesStore = new ListStore(propsRules.id()); - gridAppliesRules = new Grid( - appliesRulesStore, cm); + gridAppliesRules = new Grid(appliesRulesStore, cm); gridAppliesRules.setHeight(RULES_GRID_HEIGHT); gridAppliesRules.getView().setStripeRows(true); gridAppliesRules.getView().setColumnLines(true); @@ -302,41 +303,43 @@ public class RuleApplyPanel extends FramedPanel { gridAppliesRules.setColumnReordering(true); gridAppliesRules.setColumnResize(true); gridAppliesRules.getView().setAutoExpandColumn(descriptionCol); - + GridFilters filtersAppliesRules = new GridFilters(); filtersAppliesRules.initPlugin(gridAppliesRules); filtersAppliesRules.setLocal(true); filtersAppliesRules.addFilter(nameFilter); filtersAppliesRules.addFilter(descriptionFilter); - - // - - new GridDragSource(gridApplicableRules).setGroup(SET_RULES); - new GridDragSource(gridAppliesRules).setGroup(SET_RULES); + createContextMenu(gridAppliesRules); - new GridDropTarget(gridApplicableRules).setGroup(SET_RULES); - new GridDropTarget(gridAppliesRules).setGroup(SET_RULES); - - - - // - FieldLabel rulesApplicableLabel = new FieldLabel(gridApplicableRules, "Applicable Rules"); + + new GridDragSource(gridApplicableRules) + .setGroup(SET_RULES); + new GridDragSource(gridAppliesRules) + .setGroup(SET_RULES); + + new GridDropTarget(gridApplicableRules) + .setGroup(SET_RULES); + new GridDropTarget(gridAppliesRules) + .setGroup(SET_RULES); + + // + FieldLabel rulesApplicableLabel = new FieldLabel(gridApplicableRules, + "Applicable Rules"); configurationFieldSetLayout.add(rulesApplicableLabel, new VerticalLayoutData(1, -1, new Margins(0))); - - - FieldLabel rulesAppliesLabel = new FieldLabel(gridAppliesRules, "Applies Rules"); - + + FieldLabel rulesAppliesLabel = new FieldLabel(gridAppliesRules, + "Applies Rules"); + configurationFieldSetLayout.add(rulesAppliesLabel, new VerticalLayoutData(1, -1, new Margins(0))); - // Button btnApply = new TextButton("Apply"); - btnApply.setIcon(TabularDataResources.INSTANCE.ruleApply()); + btnApply.setIcon(TabularDataResources.INSTANCE.ruleColumnApply()); btnApply.setIconAlign(IconAlign.RIGHT); btnApply.setToolTip("Apply Template"); btnApply.addSelectHandler(new SelectHandler() { @@ -398,11 +401,10 @@ public class RuleApplyPanel extends FramedPanel { protected void updateRulesInGrids(ColumnData columnData) { column = columnData; getApplicableBaseColumnRules(); - } - - protected void getApplicableBaseColumnRules(){ + + protected void getApplicableBaseColumnRules() { ExpressionServiceAsync.INSTANCE.getApplicableBaseColumnRules(column, new AsyncCallback>() { @@ -423,15 +425,15 @@ public class RuleApplyPanel extends FramedPanel { @Override public void onSuccess(ArrayList result) { Log.trace("loaded " + result.size() + " Rules"); - applicableRules=result; + applicableRules = result; getAppliesBaseColumnRules(); - + } }); } - protected void getAppliesBaseColumnRules(){ + protected void getAppliesBaseColumnRules() { ExpressionServiceAsync.INSTANCE.getApplicableBaseColumnRules(column, new AsyncCallback>() { @@ -447,18 +449,21 @@ public class RuleApplyPanel extends FramedPanel { UtilsGXT3.alert("Error retrieving rules", "Error retrieving applicable rules"); } - } @Override public void onSuccess(ArrayList result) { Log.trace("loaded " + result.size() + " Rules"); - appliesRules=result; + appliesRules = result; applicableRulesStore.clear(); - applicableRulesStore.addAll(applicableRules); + applicableRulesStore + .addAll(new ArrayList( + applicableRules)); appliesRulesStore.clear(); - appliesRulesStore.addAll(appliesRules); + appliesRulesStore + .addAll(new ArrayList( + appliesRules)); forceLayout(); } @@ -474,12 +479,26 @@ public class RuleApplyPanel extends FramedPanel { } protected void apply() { - ArrayList selectedRules = getSelectedItems(); ColumnData column = comboColumns.getCurrentValue(); if (column != null) { - RulesOnColumnApplySession rulesOnColumnApplySession = new RulesOnColumnApplySession( - trId, column, selectedRules); - parent.applyRules(rulesOnColumnApplySession); + ArrayList selectedRules = getSelectedItems(); + ArrayList rulesToBeApplied = new ArrayList(); + for (RuleDescriptionData ruleSelected : selectedRules) { + boolean ruleApplied = false; + for (RuleDescriptionData ruleAlreadyApplied : appliesRules) { + if (ruleSelected.getId() == ruleAlreadyApplied.getId()) { + ruleApplied = true; + break; + } + } + if (ruleApplied == false) { + rulesToBeApplied.add(ruleSelected); + } + } + + ApplyColumnRulesSession applyColumnRulesSession = new ApplyColumnRulesSession( + trId, column, rulesToBeApplied); + parent.applyRules(applyColumnRulesSession); } else { Log.error("No column selected"); UtilsGXT3.alert("Attention", "Select a column"); @@ -490,4 +509,96 @@ public class RuleApplyPanel extends FramedPanel { parent.close(); } + protected void requestInfo(RuleDescriptionData rule) { + + final Dialog infoRuleDialog = new Dialog(); + infoRuleDialog.setHeadingText("Info Rule"); + infoRuleDialog.getHeader().setIcon( + TabularDataResources.INSTANCE.information()); + infoRuleDialog.setPredefinedButtons(PredefinedButton.OK); + + FieldSet configurationFieldSet = new FieldSet(); + configurationFieldSet.setHeadingText("Configuration"); + configurationFieldSet.setCollapsible(false); + configurationFieldSet.setBorders(true); + + VerticalLayoutContainer configurationFieldSetLayout = new VerticalLayoutContainer(); + configurationFieldSet.add(configurationFieldSetLayout, + new MarginData(0)); + + TextField ruleName = new TextField(); + ruleName.setToolTip("Rule Name"); + ruleName.setValue(rule.getName()); + ruleName.setReadOnly(true); + FieldLabel ruleNameLabel = new FieldLabel(ruleName, "Name"); + configurationFieldSetLayout.add(ruleNameLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + + TextField ruleScope = new TextField(); + ruleScope.setToolTip("Rule Scope"); + ruleScope.setValue(rule.getScopeLabel()); + ruleScope.setReadOnly(true); + FieldLabel ruleScopeLabel = new FieldLabel(ruleScope, "Scope"); + configurationFieldSetLayout.add(ruleScopeLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + + TextArea ruleDescription = new TextArea(); + ruleDescription.setToolTip("Rule Description"); + ruleDescription.setValue(rule.getDescription()); + ruleDescription.setReadOnly(true); + FieldLabel ruleDescriptionLabel = new FieldLabel(ruleDescription, + "Description"); + configurationFieldSetLayout.add(ruleDescriptionLabel, + new VerticalLayoutData(1, -1, new Margins(0))); + + TextField ruleOwner = new TextField(); + ruleOwner.setToolTip("Rule Owner"); + ruleOwner.setValue(rule.getOwner()); + ruleOwner.setReadOnly(true); + FieldLabel ruleOwnerLabel = new FieldLabel(ruleOwner, "Owner"); + configurationFieldSetLayout.add(ruleOwnerLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + + TextArea ruleExpression = new TextArea(); + ruleExpression.setToolTip("Rule Expression"); + ruleExpression.setValue(rule.getReadableExpression()); + ruleExpression.setReadOnly(true); + ruleExpression.setHeight("82px"); + FieldLabel ruleExpressionLabel = new FieldLabel(ruleExpression, + "Expression"); + configurationFieldSetLayout.add(ruleExpressionLabel, + new VerticalLayoutData(1, -1, new Margins(0))); + + infoRuleDialog.add(configurationFieldSet, new MarginData(0)); + infoRuleDialog.setHideOnButtonClick(true); + infoRuleDialog.setButtonAlign(BoxLayoutPack.CENTER); + infoRuleDialog.setWidth(500); + + infoRuleDialog.show(); + + } + + protected void createContextMenu(final Grid grid) { + Menu contextMenu = new Menu(); + + MenuItem infoItem = new MenuItem(); + infoItem.setText("Info"); + infoItem.setIcon(TabularDataResources.INSTANCE.information()); + infoItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + RuleDescriptionData selected = grid.getSelectionModel() + .getSelectedItem(); + Log.debug(selected.toString()); + requestInfo(selected); + } + }); + + contextMenu.add(infoItem); + + grid.setContextMenu(contextMenu); + + } + } diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeleteDialog.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeleteDialog.java index c8c55ac..b911717 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeleteDialog.java +++ b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeleteDialog.java @@ -27,14 +27,15 @@ public class RuleDeleteDialog extends Window { private static final String WIDTH = "720px"; private static final String HEIGHT = "530px"; private EventBus eventBus; + private RuleDeletePanel ruleDeletePanel; public RuleDeleteDialog(EventBus eventBus) { this.eventBus = eventBus; initWindow(); - RuleDeletePanel templateDeletePanel = new RuleDeletePanel(this, + ruleDeletePanel = new RuleDeletePanel(this, eventBus); - add(templateDeletePanel); + add(ruleDeletePanel); } protected void initWindow() { @@ -80,7 +81,7 @@ public class RuleDeleteDialog extends Window { public void onSuccess(Void v) { Log.debug("Rule is deleted!"); UtilsGXT3.info("Delete Rule", "The rule is deleted!"); - + ruleDeletePanel.gridReload(); } @Override diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeletePanel.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeletePanel.java index 29aa9a2..3ae6748 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeletePanel.java +++ b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleDeletePanel.java @@ -43,14 +43,14 @@ import com.sencha.gxt.data.shared.loader.ListLoadResultBean; import com.sencha.gxt.data.shared.loader.ListLoader; import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding; import com.sencha.gxt.widget.core.client.Dialog; -import com.sencha.gxt.widget.core.client.FramedPanel; import com.sencha.gxt.widget.core.client.Dialog.PredefinedButton; +import com.sencha.gxt.widget.core.client.FramedPanel; import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData; import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack; import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer; -import com.sencha.gxt.widget.core.client.container.MarginData; import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign; +import com.sencha.gxt.widget.core.client.container.MarginData; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.event.SelectEvent; @@ -72,16 +72,15 @@ import com.sencha.gxt.widget.core.client.toolbar.ToolBar; public class RuleDeletePanel extends FramedPanel { private static final String WIDTH = "630px"; private static final String HEIGHT = "520px"; - + interface RuleDeleteTemplates extends XTemplates { @XTemplate("{value}") SafeHtml format(String value); } - + private EventBus eventBus; private RuleDeleteDialog parent; - private TextButton btnDelete; private TextButton btnClose; @@ -134,6 +133,19 @@ public class RuleDeletePanel extends FramedPanel { } }); + ColumnConfig scopeCol = new ColumnConfig( + props.scopeLabel(), 40, "Scope"); + + nameCol.setCell(new AbstractCell() { + + @Override + public void render(Context context, String value, SafeHtmlBuilder sb) { + RuleDeleteTemplates ruleDeleteTemplates = GWT + .create(RuleDeleteTemplates.class); + sb.append(ruleDeleteTemplates.format(value)); + } + }); + ColumnConfig descriptionCol = new ColumnConfig( props.description(), 120, "Description"); descriptionCol.setCell(new AbstractCell() { @@ -145,7 +157,7 @@ public class RuleDeletePanel extends FramedPanel { sb.append(ruleDeleteTemplates.format(value)); } }); - + ColumnConfig ownerCol = new ColumnConfig( props.owner(), 70, "Owner"); ownerCol.setCell(new AbstractCell() { @@ -170,9 +182,10 @@ public class RuleDeletePanel extends FramedPanel { sb.append(ruleDeleteTemplates.format(value)); } }); - + List> l = new ArrayList>(); l.add(nameCol); + l.add(scopeCol); l.add(descriptionCol); l.add(ownerCol); l.add(readableExpressionCol); @@ -253,9 +266,9 @@ public class RuleDeletePanel extends FramedPanel { grid.setColumnReordering(true); grid.setColumnResize(true); grid.getView().setAutoExpandColumn(descriptionCol); - + createContextMenu(); - + ToolBar toolBar = new ToolBar(); toolBar.add(grid); toolBar.addStyleName(ThemeStyles.get().style().borderTop()); @@ -392,59 +405,71 @@ public class RuleDeletePanel extends FramedPanel { final Dialog infoRuleDialog = new Dialog(); infoRuleDialog.setHeadingText("Info Rule"); - infoRuleDialog.getHeader().setIcon(TabularDataResources.INSTANCE.information()); + infoRuleDialog.getHeader().setIcon( + TabularDataResources.INSTANCE.information()); infoRuleDialog.setPredefinedButtons(PredefinedButton.OK); - - + FieldSet configurationFieldSet = new FieldSet(); configurationFieldSet.setHeadingText("Configuration"); configurationFieldSet.setCollapsible(false); configurationFieldSet.setBorders(true); VerticalLayoutContainer configurationFieldSetLayout = new VerticalLayoutContainer(); - configurationFieldSet.add(configurationFieldSetLayout, new MarginData(0)); - + configurationFieldSet.add(configurationFieldSetLayout, + new MarginData(0)); + TextField ruleName = new TextField(); ruleName.setToolTip("Rule Name"); ruleName.setValue(rule.getName()); ruleName.setReadOnly(true); FieldLabel ruleNameLabel = new FieldLabel(ruleName, "Name"); - configurationFieldSetLayout.add(ruleNameLabel,new VerticalLayoutData(1, -1, new Margins(0))); - - + configurationFieldSetLayout.add(ruleNameLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + + TextField ruleScope = new TextField(); + ruleScope.setToolTip("Rule Scope"); + ruleScope.setValue(rule.getScopeLabel()); + ruleScope.setReadOnly(true); + FieldLabel ruleScopeLabel = new FieldLabel(ruleScope, "Scope"); + configurationFieldSetLayout.add(ruleScopeLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + TextArea ruleDescription = new TextArea(); ruleDescription.setToolTip("Rule Description"); ruleDescription.setValue(rule.getDescription()); ruleDescription.setReadOnly(true); - FieldLabel ruleDescriptionLabel = new FieldLabel(ruleDescription, "Description"); - configurationFieldSetLayout.add(ruleDescriptionLabel,new VerticalLayoutData(1, -1, new Margins(0))); - + FieldLabel ruleDescriptionLabel = new FieldLabel(ruleDescription, + "Description"); + configurationFieldSetLayout.add(ruleDescriptionLabel, + new VerticalLayoutData(1, -1, new Margins(0))); + TextField ruleOwner = new TextField(); ruleOwner.setToolTip("Rule Owner"); ruleOwner.setValue(rule.getOwner()); ruleOwner.setReadOnly(true); FieldLabel ruleOwnerLabel = new FieldLabel(ruleOwner, "Owner"); - configurationFieldSetLayout.add(ruleOwnerLabel,new VerticalLayoutData(1, -1, new Margins(0))); - + configurationFieldSetLayout.add(ruleOwnerLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + TextArea ruleExpression = new TextArea(); ruleExpression.setToolTip("Rule Expression"); ruleExpression.setValue(rule.getReadableExpression()); ruleExpression.setReadOnly(true); ruleExpression.setHeight("82px"); - FieldLabel ruleExpressionLabel = new FieldLabel(ruleExpression, "Expression"); - configurationFieldSetLayout.add(ruleExpressionLabel,new VerticalLayoutData(1, -1, new Margins(0))); + FieldLabel ruleExpressionLabel = new FieldLabel(ruleExpression, + "Expression"); + configurationFieldSetLayout.add(ruleExpressionLabel, + new VerticalLayoutData(1, -1, new Margins(0))); - infoRuleDialog.add(configurationFieldSet, new MarginData(0)); infoRuleDialog.setHideOnButtonClick(true); infoRuleDialog.setButtonAlign(BoxLayoutPack.CENTER); infoRuleDialog.setWidth(500); - + infoRuleDialog.show(); - + } - protected void createContextMenu() { Menu contextMenu = new Menu(); @@ -455,17 +480,17 @@ public class RuleDeletePanel extends FramedPanel { @Override public void onSelection(SelectionEvent event) { - RuleDescriptionData selected = grid.getSelectionModel().getSelectedItem(); + RuleDescriptionData selected = grid.getSelectionModel() + .getSelectedItem(); Log.debug(selected.toString()); requestInfo(selected); } }); - + contextMenu.add(infoItem); grid.setContextMenu(contextMenu); - + } - - + } diff --git a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenPanel.java b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenPanel.java index 2969307..6f53336 100644 --- a/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/client/rule/RuleOpenPanel.java @@ -42,7 +42,6 @@ import com.sencha.gxt.data.shared.loader.ListLoadResult; import com.sencha.gxt.data.shared.loader.ListLoadResultBean; import com.sencha.gxt.data.shared.loader.ListLoader; import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding; -import com.sencha.gxt.widget.core.client.ContentPanel; import com.sencha.gxt.widget.core.client.Dialog; import com.sencha.gxt.widget.core.client.Dialog.PredefinedButton; import com.sencha.gxt.widget.core.client.FramedPanel; @@ -140,6 +139,19 @@ public class RuleOpenPanel extends FramedPanel { } }); + ColumnConfig scopeCol = new ColumnConfig( + props.scopeLabel(), 40, "Scope"); + + nameCol.setCell(new AbstractCell() { + + @Override + public void render(Context context, String value, SafeHtmlBuilder sb) { + RuleOpenTemplates ruleOpenTemplates = GWT + .create(RuleOpenTemplates.class); + sb.append(ruleOpenTemplates.format(value)); + } + }); + ColumnConfig descriptionCol = new ColumnConfig( props.description(), 120, "Description"); descriptionCol.setCell(new AbstractCell() { @@ -179,6 +191,7 @@ public class RuleOpenPanel extends FramedPanel { List> l = new ArrayList>(); l.add(nameCol); + l.add(scopeCol); l.add(descriptionCol); l.add(ownerCol); l.add(readableExpressionCol); @@ -261,7 +274,7 @@ public class RuleOpenPanel extends FramedPanel { grid.getView().setAutoExpandColumn(descriptionCol); createContextMenu(); - + ToolBar toolBar = new ToolBar(); toolBar.add(grid); toolBar.addStyleName(ThemeStyles.get().style().borderTop()); @@ -400,59 +413,71 @@ public class RuleOpenPanel extends FramedPanel { final Dialog infoRuleDialog = new Dialog(); infoRuleDialog.setHeadingText("Info Rule"); - infoRuleDialog.getHeader().setIcon(TabularDataResources.INSTANCE.information()); + infoRuleDialog.getHeader().setIcon( + TabularDataResources.INSTANCE.information()); infoRuleDialog.setPredefinedButtons(PredefinedButton.OK); - - + FieldSet configurationFieldSet = new FieldSet(); configurationFieldSet.setHeadingText("Configuration"); configurationFieldSet.setCollapsible(false); configurationFieldSet.setBorders(true); VerticalLayoutContainer configurationFieldSetLayout = new VerticalLayoutContainer(); - configurationFieldSet.add(configurationFieldSetLayout, new MarginData(0)); - + configurationFieldSet.add(configurationFieldSetLayout, + new MarginData(0)); + TextField ruleName = new TextField(); ruleName.setToolTip("Rule Name"); ruleName.setValue(rule.getName()); ruleName.setReadOnly(true); FieldLabel ruleNameLabel = new FieldLabel(ruleName, "Name"); - configurationFieldSetLayout.add(ruleNameLabel,new VerticalLayoutData(1, -1, new Margins(0))); - - + configurationFieldSetLayout.add(ruleNameLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + + TextField ruleScope = new TextField(); + ruleScope.setToolTip("Rule Scope"); + ruleScope.setValue(rule.getScopeLabel()); + ruleScope.setReadOnly(true); + FieldLabel ruleScopeLabel = new FieldLabel(ruleScope, "Scope"); + configurationFieldSetLayout.add(ruleScopeLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + TextArea ruleDescription = new TextArea(); ruleDescription.setToolTip("Rule Description"); ruleDescription.setValue(rule.getDescription()); ruleDescription.setReadOnly(true); - FieldLabel ruleDescriptionLabel = new FieldLabel(ruleDescription, "Description"); - configurationFieldSetLayout.add(ruleDescriptionLabel,new VerticalLayoutData(1, -1, new Margins(0))); - + FieldLabel ruleDescriptionLabel = new FieldLabel(ruleDescription, + "Description"); + configurationFieldSetLayout.add(ruleDescriptionLabel, + new VerticalLayoutData(1, -1, new Margins(0))); + TextField ruleOwner = new TextField(); ruleOwner.setToolTip("Rule Owner"); ruleOwner.setValue(rule.getOwner()); ruleOwner.setReadOnly(true); FieldLabel ruleOwnerLabel = new FieldLabel(ruleOwner, "Owner"); - configurationFieldSetLayout.add(ruleOwnerLabel,new VerticalLayoutData(1, -1, new Margins(0))); - + configurationFieldSetLayout.add(ruleOwnerLabel, new VerticalLayoutData( + 1, -1, new Margins(0))); + TextArea ruleExpression = new TextArea(); ruleExpression.setToolTip("Rule Expression"); ruleExpression.setValue(rule.getReadableExpression()); ruleExpression.setReadOnly(true); ruleExpression.setHeight("82px"); - FieldLabel ruleExpressionLabel = new FieldLabel(ruleExpression, "Expression"); - configurationFieldSetLayout.add(ruleExpressionLabel,new VerticalLayoutData(1, -1, new Margins(0))); + FieldLabel ruleExpressionLabel = new FieldLabel(ruleExpression, + "Expression"); + configurationFieldSetLayout.add(ruleExpressionLabel, + new VerticalLayoutData(1, -1, new Margins(0))); - infoRuleDialog.add(configurationFieldSet, new MarginData(0)); infoRuleDialog.setHideOnButtonClick(true); infoRuleDialog.setButtonAlign(BoxLayoutPack.CENTER); infoRuleDialog.setWidth(500); - + infoRuleDialog.show(); - + } - protected void createContextMenu() { Menu contextMenu = new Menu(); @@ -463,15 +488,16 @@ public class RuleOpenPanel extends FramedPanel { @Override public void onSelection(SelectionEvent event) { - RuleDescriptionData selected = grid.getSelectionModel().getSelectedItem(); + RuleDescriptionData selected = grid.getSelectionModel() + .getSelectedItem(); Log.debug(selected.toString()); requestInfo(selected); } }); - + contextMenu.add(infoItem); grid.setContextMenu(contextMenu); - + } } diff --git a/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-apply.png b/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-apply.png new file mode 100644 index 0000000000000000000000000000000000000000..edf83f0415251dff05555470f00b01bdc59496e2 GIT binary patch literal 819 zcmV-31I+x1P)DW` zK~y-)g_281RACr~-~Zg^sOK;?9xoAHXCO*J5(}XS7f}#xGpJ>kMK>~tC?yBUTI5Kf zLRc+Aj3|PLGAe{xnl@fa>|&YP5H?=s%s5BS%ztSS4k3l#_Tzcp55AXRnF)nLx@B31 zHBGDGoUe3Ucha`)((3B!NdQom6IhmYytueHWSS;)T}L<^CXq-avtL%AC`!mQO%OuR z-QA7R(b3mluh-Mi&`?MSSzaK7fDi(dQY4c}sH%E4olZAdmQ~3Z6Vm^{=H_Mq0OuTx zF#v$y?-zz){4flos-mKzK-cv`vJ^af>noa$`WGc9Ow(*BFE0n@JafsScyMs=r}8iO zOxsA4Mq}$#sb{x85P(D^BvP~RNI4nUaU4)e>*b~J>6;^U8wxxZDA6_*`f}o%*XL!E zg&fqq-G@2b;dH_v6FZXDmHhM>wi2m}NGpRp1Z>nic6uOp}`o=zo8 zlg{~zbO3;zWJt_2MHtoCgL6AT;z-~vv19$lY0p($Cdy%(o?6fUp=0Js1o z0IE#T`xy|Di{~F6fN~DXDO6c!+XK7gXYU^&;U-S@*V?TBpv05x`nO51 zi?Nw^_0KM*>VV-)M|L)@5|8`uBgJWJf34kG*5E_9W(MTgjgKD6_yJ9o&rl|2Y=<^# xsoWRHnid`BOEZG4SMvnr>_}ft?9Sii`wi{9TcG~w2KE2|002ovPDHLkV1nI%YD544 literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-apply_32.png b/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-apply_32.png new file mode 100644 index 0000000000000000000000000000000000000000..3ea6ae598186401d0758f17862537a96108f9c21 GIT binary patch literal 1802 zcmV+l2le=gP)|e>3Oo#n{HTn8XM+36~Hq1&ab{T0f9BiWK#!QlHv9L`_R@gAfG~ zJ54K0)Hb#d2tx}FREjFmy!P_YrV0%pN(#b2Y?X*QtP_I)6MVzi-rJe)>%;Dvbs z;jBh;_UxYdegFCX^UW9@@M>#oWBvN|w6(Pr0pAgkS5$R1P^zk^D#jQ#Y}jD#^uGU~ z0p#G7s(LaKi7br8Vnm}+092JkB0*PI*InO#pa2dWI6x+oiK^gwtRwY9b6Rp;B- z*w{VCun!Wzx^?UDJny^FXmmksZ7m{#h@h&72mn{ET$#9kC@FBxZH&cY6N-U}Allp8 z85kJA7~>ww3;-BoR!5`JNpOIXkr9T5hOpMYuBx$zHUowE&cjueWHO0}uxZn#9RRJZ zt&fVxB~=XRYgTb#e=0_|Ni~d*Vj);MWGLtEnCLW&=CFo{e(gx zX3d&KBodjlTK=y9_Uze1eSJOq_U&681i{2$h4B3M^73*jDk>&H3);xEQ?U79eByrN z#*OUVyLY~G?r*A!@B33sSlFC%6Tjty$UQslPZz%HNAuZyF#anQbYA)|zca>kib$lo zx|*`Gvb)0Xlp13UeSLj6=MMV+1AH4IZ>Sm_v2)kXbe~6RYUc3t(~AmxAVj?qRFzba zAkfT|;$)2B+O=z3zI?gM81pA@x^NX~iiR!DsTrnbZutz(ty%G8O>TTtl_I~C%}2h$ z;Y)|`2=R#bIO$B9bSh0cohF$~($mvJJRa}zJnz}Y#>QJ_y6~c~WzC|Q+#Cxy-E|99 z<+*wNR~N_1W(O`?X}`ESKwHl`d=tfqV{WigW2rSJ&~)A-r$nUHTKk8_#>QlGb2DbT z@Mjm7VGJ1H(v2jYpN)~oSiZgJ`qf2qN@jm?qo4B~7dT$pig6)Cl|VC$n&FLq|8f7` z!tq;LT4-o!0Kl6LeDzZ^@jQd767tHZES*7dq=ZtxJ%CSdp_JsIFf0fi$nWyYFJXUnpBWP)ZxV8Ci(y;0jfeGJ%;av znO*)kAumkNU^l?pInU4FWJCY4Rc}|~?|gLuTi&_2RqmiXe~pYgMw5<+2Tm0yn)86= z^MMOkGug|9uRC=_L&YqaUCYhn5FcM|2Tapf->x+6Zwxm1KRM9-q^f%>;+si1&nq7p zcZ{VR)?`blQ$e}Csh9%X)HR)5IoT8$oG7BXq-pl=KI*=oaT;AQuat1;_Our&&%&7~ zsZJ#8Y<0}3Sb*j~swg0;hy~A3B+|E)8z2UZoloRnIbo91o1r)%~zB!1m zP;AW|k2;X6dhNtC&kNyuVSF1RIk@WfLk(Zq z_EO9Fd!8Re1kZ*z+Vy^ZrQ8)hv2uR+o4$|@hCgz`s=x`6kVh&If@-W!xDRJz}i=IbxT* s*SK`&_nPky&$>K!_(XnsKRCdD0C{?~QMf)lr~m)}07*qoM6N<$g83V5O8@`> literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-close.png b/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-close.png new file mode 100644 index 0000000000000000000000000000000000000000..3f05d50b601f60721c19b95598be16316fa52a81 GIT binary patch literal 819 zcmV-31I+x1P)wPM2pIqX0>DW` zK~y-)jg4JsTV))FpZ9#ECs{sPnzdHjY?xkb%|Ij-q9EItI-#%|VY?NIx3Ye0V|2_Y zcvr+L8N5sO>4R~CMP*3Imvn7cNeu@$j0`-AO1Jb?-2kG zil>s66Fp`Pq^5-s<7j=i_m6ua?D&_jB!;@_bb2}xi7Y6kMuH%yHX4oBW@cup09JWn zE-9qGHjvBa?CLUjE(m+DJ26q%{Po81S5nDu#&fyP6NviDt7I2qCb{s59NSUWUr&-1Wtd$!l>eUVP54@fDsp~K#|@LTZXRdn?c zVt5R_dLRA$6+~@=Si6ms5`b(rtK;$bN<1DvS|}8T9LE{9bh~p`?=S~N{@{PIczHKs z{}k%Z4O$A&8l@DeR7&LYc>ucIE?Vm~t5aRS&>o*G#N0aa;^J0${}jq~2_`1#m?<1U z|2qPpl*0FY!Z7?y+&c13(y$}fMh?B5>nq>HXf{x$O|W;8<=_64@!46^?I}v75<&=+ zQrkCEsZ`DhfSd0fNLq;<$2vp1&i09LRQB&=J@Y!3ynVcxt!?_NzdN4aJ~=->{}um3 zY(F2LyZ1?EFjCx;iD4MfXi2;vQtUS%1^fA@1f-uGSKt}R_Z+}LEz3LP7@L#BMBK){SGf`DOagrElEKMomP z*d{W85YhOtFcOj~iOCY+4-5gL#AuKhHwkmoVHMoEb$qm4->vQ5u3zuRInQ(Z$LU*F z*^uFOCr@(noSbuA_jOc^hng74oZBG;%$s}ZtJnKbAjb#AxD_E*N2 zBMZOtcwBj|ySqCB-0qyaM^#q?)vAiBA|hGYvv*Pb;*(?q|<2tRFy)ZKyPpF z84386i}xPivJ@Nb^ipAGdQmf(<^>p|NT~?cLdr+$8gUmkQOJ!p7Y1|pl`S3rc;ex2 z?pFPELqo%|j*bp0Sy$H7)D#~UKES}X`x{-vPH$e=IsejDf;G9EM0dUSCA`A`=;+#7(fuXJU`;qmxd1Qp0>lx-F%nzQB7#AVA0=qNlKE{dXwQL5+M@!_T6E^66(alg?PGLw z6cMp!B48pLw`d%%PcLl54+QW1gP5jIB6oZXF25eiWr$-mF2j{;G50)#EL@7&w+mll z(hD2O4hdCW=kpk2HmmBAGb-RLxB1oSrcCn!%*X&@3|xCFQrC!FcN=bM z0^R!>TyXB+%0#bJ03!M|4F9patZ@O6yNQ`UAAi0e8plB=Nub1Zu~L8jvYIi zoOAE1YItf%j5>EsP+N_MVor|0$vnD$S7JQR!>qd#xoZ>N&3A+6gN@Pfcsno1Ws*3MoJ84TL&@?y)u|?x3sd>w#a~*qeJ9_mR z^baqCb*LD?!Qdd_u2lSLRZiu2oasDKD0g6G@A=liDcgxqn4#}Dwnx&c}D<%CfXqL~bFehizfnFD_6vewSttB{!4+iTRtyNkz0u#v@9)k3Bk zuDE{IaQ206+*8}I&p(}%$M=!zK96Q=(B{QBClrs3V4Ipx3tm~Lsv{!gayhKE&v@Uy ztZl>=it8l|v*9NeBFFoYTt8gcg1-79`szy%Tj+ZmjY?48gzkI_JDkH^el?Q=Lrjm3 z5nXp9n$CPEcx5mR4Gq!P*VhYdl)ry*jh_yyw)^SSef3wbCKU?af&EE8$PYuQoER=n z2A^hYaZw3(<&Bi_8GU^(rIj5-H?9HWQ79CM?A89R2G<#nJv}|BY93g#Y15{Ce1w=YqYvGBQ-f8u zsdMYY+WF0?#s!46HAons<%sgwNlM2@n6`#v7p>-%3vOT{$nxpN!MBRJH&?1 zNs6(@V%h(CgA9D*fv&Dz<cQpzE2wN7T7TGofMi#q$Y#VWymj!1%Ofs$>zs2uzig zHxG{!#i)fJJon)8@16|-b0+Ysme&yYbNP)=TPBMMIFc}`3Jr@Eq)}AFIm20oe4NZ> zhCwPY>^U&TM8RQ19{WXC+oKH93Q6Whk|zW~1oj^u=ftE% zR3CeG%ZjrG2apGTeq^breLM6e{n@sf|B-pZEEO8|{A=w022VVo_Rh#^dijzpVQ}V} zS5y(Rx=Mvc!h@Da>C$ftOf{+f)Igx!X0jQGG{W7Q~^_CgK8+hX! zW6;d%-s$7C@%IqOXSHb%&X9wJHRe>*gO&cPD`u{To#cIDmzv-F(K# zr7D;hUKCM7#Rw{dUK?x#w zJ<_IhJK`qq&n~yS;l(5qkz3nM%kN&A7zY6itVbMC2!TwJ!2mTQjuT#f?`KLA1Gyv> z!AuPTx9)6!8is*6a7N@}{`mbjO64+}>+AIAa#YSfi8-}22#Jaz;s8gx*#ZSca1Kn3 zD30l*T{_JMH*fw;sdNe>LPSw9lKwERJ6yI;u2nfa@FcAa7mAm-b$gX;rVn!(9A71ix3l}DcD#;-pxcY2<*+u__ZQ+&R-4$k3&UOHt%ln+Wb6m95Meyg?hb)5djc62MR$A9|Fnh#@5FZ+38nq zcb5B?J;Oxjntfkz!w*e0NvVA;%{y7YAI1D35KqX6Ze&oxw^_7)_(UF~rV!@EK zNTYF*Z})bXnSB(TBZ(ufT;0SuDC82O%4vv?nRk2ZSm1YUaT7=@uM zt&VppN+O~|dgS=mTC29QebByIT_+8Kh~a|})DQ`HF+`MB$Ge%y{6Dphw32%@|Hk*# z+GinHV{5qu+ygA4Wl0AwWUWBQ$mR{#J207*qo IM6N<$f(<&3R{#J2 literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-add_32.png b/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-add_32.png new file mode 100644 index 0000000000000000000000000000000000000000..230cb1bff7d3c0335db8037d29c4823552b58c8a GIT binary patch literal 2031 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 pb|IMU5(n6(#!jx?g|FV;{U14<2E(Rcp$~;p zydjztgQ%d0(iYJ^c!QFNn6yYW)`})H8lsYrrn#JC%w=YpOy-uEbJ_d**79NRv(K5^ zg9ze*!#R6>-`?xL*INJoS|9vBd=8z{|GCctht2_DnueeKdFo*=dPGIbB8q7GRaHb3 zRq!IHvdAv^y5dDqTG#11h-UYt_B(<;{@o{coB#-$0KC^Ds#31Sii#q%9H^}PaG$M7 zJD8<5vTFemp%~e+7x@jaeh~mwE!Se@seS!4oI;irCH=4YzNVebuDPwX-m>M_z?wq9 zGe0>`F|zBL`*Q#yDbj{h;zYq(R29@La+ZTx;#^UJARN_ zE)=kq$?;K)v00fYh7^dQ6^-^Hvexj&H{M|H-n}^I@-+oigs5u}C3POET?K%&;^v&k z*vw_~l}+=B?W7sqgW)2LKJ8;Vm58w z#Q69)s><;2W*Tvlr?N@aWdOVg+TtEbk|2S$rQQ(7G2`Q71Yt-aicnQ%XJ^^4aU*?w zeOc|qcoBw%hN#tQs8)~;PkJ!v4$gVFq+cHLOSf@X230TeyI zMtRrJ5H4w;KEWk*#7jzA1s^-SOHfQ!=z@q{g#}p+Sn-S%A0iA4#-s(-XpGTU7|jY+ zh~t>6S4Zg_-bJ-%i0Sz|1Vih%x*)9S-AE8bd1Rf3`^A9`P+^q_WZK@$mBAAjL+k`F zc<)dZM5Gld6)=Xz%uS{$Csvc~5{a;xQl^_V%vSkZbDu2a$VPNA%wr<_ZwQJY-;QQ9o+g}FY<>M1r+oEX7 zG_!I9WJ!UTwvCf_rt`ON)BQfskFlDr%aSAddpcrD+PC}jw?566vKeYc}K%; z=RNmWtT8yB@XF;EnW&DktLGE+G6aBgj_&SmcJJOz7=|nP&wL1~!Ro!BTKD|w#3aSg zGBRAEk-+K8mOs5+<+1IKiLsm9o_>c(8RxZymw002X?AaYjLyzA^p*R8fYk~>)u6)a z-Ov~~a`FzfhO*<`CBnckT|dpba?GXi8h6jmVdpQfU>4{u^@RaJNUz;uX26%FJvP??tB>o+V!Rxfp35QUY>cr(p|56HuMy@e{+c_ zuy|D#>Yl`V9vps{4c(jYDyXIm5R||KJhF8kuU~kTORjdIg%GGzO z)MCe*mDllE6Y(lIpD@@v%+7lr<=ES=GBG{J2JO zzrfcovt*Z`!bgTkhvfRd4hA^GCTg-C)3eg*E0u zBy^|-t)tqaqn#pw$(-xQbD93!_utwA=IEw!amP@(K;q%@%_`&5@$csD`cM7#n-9z` z)s**ttM{l%_)#zZX5wp~IlI4p>_0u6K5^g>hYx%b^Sy&7IkTpBi!t)FDi4WJPrSTl z6Z_IHzcw=c`2K%zc!(18f#sw@@&xTL1t6 M07*qoM6N<$f}L=#X8-^I literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-close.png b/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-column-close.png new file mode 100644 index 0000000000000000000000000000000000000000..90c75ed270ee1c6eb6326b30873cb090ac666970 GIT binary patch literal 877 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-delete_32.png b/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-delete_32.png new file mode 100644 index 0000000000000000000000000000000000000000..9ace2f1e61efb775f69d3fec1a2a878c81d0d8fd GIT binary patch literal 2064 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 LNkvXXu0mjfvNydd literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-share.png b/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-share.png new file mode 100644 index 0000000000000000000000000000000000000000..5e8164da4c66d9c45e3ccc943861e815db43ea55 GIT binary patch literal 958 zcmV;v13~-od4g4x%tTV`Xyh! zOFqFm2!%pk(=?wn4C6H^WqBr(i6s(=y4Kd#7=X5(fN7d7wY9aOKp=qE>t$eIKtv*u z8@vXfltKu>Qsj!iujeiQ-OZiL-h%QJfTn4oKp=n+g8u$~CMPG)27^IQdwYAS5aODE z5Q4dhKewJfcJRyD@MziC;2kScsRvy`TvSS-l)|=cQmGWWu0Nm6W{;Vs+2lBma$UD_ z;p^jj3^zMAZrf2DkHJN0EuKc9k zeyk)|=>Uya4w+x1Pb@SBa|>&C-{!jc_Irq49bzSXVaN97&xZiCakVp5m+bBc6h8Xw zx99#TnuuCdmUw8a(<$58#8lif}qc>z$Q<0SA3^*a!n3r2qf`07*qoM6N<$f-$YVe*gdg literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-share_32.png b/src/main/resources/org/gcube/portlets/user/td/client/resource/rule-share_32.png new file mode 100644 index 0000000000000000000000000000000000000000..04b84b141d80f9f85bed1a81c644d447b5c2f6fe GIT binary patch literal 2341 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