From b7ffa4987d65461f0109ba3a298f7153a53f7e73 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Wed, 9 Apr 2014 17:04:45 +0000 Subject: [PATCH] Added ValidationsTablePanel git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-table-widget@94655 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../properties/ValidationsProperties.java | 25 ++ .../client/resources/ResourceBundle.java | 12 + .../td/tablewidget/client/resources/exit.png | Bin 0 -> 523 bytes .../tablewidget/client/resources/exit_32.png | Bin 0 -> 984 bytes .../td/tablewidget/client/resources/ok.png | Bin 0 -> 814 bytes .../td/tablewidget/client/resources/ok_32.png | Bin 0 -> 1665 bytes .../client/rows/DuplicatesRowsPanel.java | 5 +- .../validation/ValidationsTablePanel.java | 215 ++++++++++++++++++ .../td/tablewidget/client/resources/exit.png | Bin 0 -> 523 bytes .../tablewidget/client/resources/exit_32.png | Bin 0 -> 984 bytes .../td/tablewidget/client/resources/ok.png | Bin 0 -> 814 bytes .../td/tablewidget/client/resources/ok_32.png | Bin 0 -> 1665 bytes 12 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/properties/ValidationsProperties.java create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/exit.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/exit_32.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ok.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ok_32.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/validation/ValidationsTablePanel.java create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/exit.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/exit_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/ok.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/ok_32.png diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/properties/ValidationsProperties.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/properties/ValidationsProperties.java new file mode 100644 index 0000000..d61f28b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/properties/ValidationsProperties.java @@ -0,0 +1,25 @@ +package org.gcube.portlets.user.td.tablewidget.client.properties; + +import org.gcube.portlets.user.td.gwtservice.shared.tr.table.Validations; + +import com.google.gwt.editor.client.Editor.Path; +import com.sencha.gxt.core.client.ValueProvider; +import com.sencha.gxt.data.shared.ModelKeyProvider; +import com.sencha.gxt.data.shared.PropertyAccess; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public interface ValidationsProperties extends + PropertyAccess { + + @Path("id") + ModelKeyProvider id(); + + ValueProvider description(); + ValueProvider valid(); + +} diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java index 228c54a..3558ae4 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java @@ -40,4 +40,16 @@ public interface ResourceBundle extends ClientBundle { @Source("arrow-refresh_32.png") ImageResource refresh32(); + @Source("exit.png") + ImageResource exit(); + + @Source("exit_32.png") + ImageResource exit32(); + + @Source("ok.png") + ImageResource ok(); + + @Source("ok_32.png") + ImageResource ok32(); + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/exit.png b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..74f482675feeea7b45c39a8d23257a4496bd1283 GIT binary patch literal 523 zcmV+m0`&cfP)CQtMcOS!ri_mJ5);4LZKO=RQb3rpg1%NR^W)>kvC!~KPShz;x-V-8%wAd$x z--%zte3*MyJ&oYG(BBch^Ab)5aJ5$@`Mk?0@ft48W=yxU2(<^yc1V}!D%tjGgBTo=t}Ku`^X1>#g9(JP zdH4l?`#c*~nC-%vmR*agL2RD^&l4;Gygfoe-7&goA6+);0NY?Sy_eB z#!=cAb0W9zRGWv$QB?rZ2gkd6+o94A(ehx*1FGVw^^vKqpX(Wq$A4VMrB;7lvXcM+ N002ovPDHLkV1iP`?LzUK~z|U?N?2RPEi&w1YG zJs0@b4-@`*fA!KV(ww5mTBuH@DxeCA04ku^|EhpU@g1EPK z;Ald?fZ(JEjHs!C(gSV@oG+e^z|5Epn5-nRX-9FL8iD&~jSSiGfj3ASP?{2mtALT) z`RXws0@La%Nn{z!mfb~^R>1YjN$|-%5AK!qDf!DPuuLm1=F3OmjlqaLvh2^m-K@!S zsS^)`Rlv$Xm-jCpg4fQ)B>n#Z6L1F*km%??2(w~Ul7w`PO_~&NK!IC-2d-C6LNA|4 zN$ffd)3c@o_etnHP+J8-&Id_I5~ioO(e3*9F66?oghbZcie2wLU{y&KD7zNz5>OS$ zbLgex;G59|+=tAgyO8roJqeCJhaBGr=29x@x~waAdz49NFR;o~75MQTdj1Hq{zKr% zP;II4;V?uLS#PTV|Mo3jM!&hS=B^T84b#X-?KbrEKoqZ4xAVa*$o*Sjo~PZ^b=gWc z40=IjKhV(k8|yqYToqizciHA{820U;8I1*a)MXpHq3BntPI5t1?&0DMDT8tfH?XeG zf48BvIq*4EKzKXq1>*o7Y{_n>CX{>t)Yb2XhNnd@8|t=E?sqJA`9dOP$Vkl#iTLXu zsO|lU0$pbZM}^YOT(5)rc^tq$k$R2N?(Tl^`Yrw+_V@`9@fz#4NgW6P0000Px#24YJ`L;yDcdH^xv`Z84j000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^n; z5DGQi60vLm00OQ_L_t(I%T1Hdi`7*a#y{tKzgO|*j58C|pf-jG*(Qw2EZP+PShX;4 z(b2`E1dZ8?Ve?uQnttvii{-840n;ukcsSu!csOL9zAeukN}Q< zf8^PAw0?Lr8qJvJFe^ecL$V^4$d<7XW^JObuguKNJyip!ZC={CW7l2t+wY9*ISJu7 zLIi%(&GB$Loo@X4^AEQ#p1b&H4bVzWYhx}gUPx;<`eCjlGC4~0@L+9y6$m;}bN9ac z(s(?=+(spV8RkyTnWi15jA35lo17biJ_q+6Vr6}qvzN~x844jYY5-G4QABOZn1q{Q zG8$zb+xa;6Y}-RsB?iNP_)FK32{obukUNrN6xUv-M`JA}(e)1d79OI}nBP}^AFcmiPq_v5G z5QckTmf5~#fp~{`^;`XUr_r7&(`k$`;yWxr8Z`v!%|)`pTAVb6=;IKY57nK@ta+;Q#;t07*qoM6N<$g0b9w%>V!Z literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ok_32.png b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ok_32.png new file mode 100644 index 0000000000000000000000000000000000000000..dae05cd72c8b6b9f48841290b17508e751869d4c GIT binary patch literal 1665 zcmV-{27dX8P)Px#24YJ`L;yDcdH^xv`Z84j000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^n; z5DF3C5mmha00sd`L_t(o!_Ajph+S6|#((RaGc!phGn1yxwDu_=mWWbpu>_S?s#ptZ zDHKt$SWzGJAxN##iZ+52eNdZb z&ROg8Vej*2Zbtf6dM}52?m2t!wf48Z^{utxmGn8NAH6JgKDGbj{e3llaq8)R?Yi%` z-?%o~*cS>EK|~M=B9wmfbB{pE??dT+^gqH0r8#ba@-q(|JLmOHz>z(Fy<@!tA%397 zuWs8~E?IaWg7C3HjSOx4Y;f2K>kQ|yaCu?H3Seh`cogf5f9uHCcN6iOxy|#u=5<%$ zazF$^$&Gxs{(o{j@<`G<3#8%6c;@pb*Ldn@kA+;%?EldBuILd^MB72vc#R~iD$;`b zKgPw#F@|>%lE6lD6tqo4(=saAWhJU z@EDCr@%I>bw6JxNt8Tn5xv031gvyiX;51=n0f3oPM2VOEV2Y>^j?4%Jr5S|b1=MF> zL>0_bGq@X-3al&%Wi&h>E#3WqyQ7Y5C^0yccO<;~b_ApCcc@6at?LPk#S-`4@=flz z?yiK&q(yC7gKk|CD(f7ONQ>vx=~B$Y@giNJ>=1!`xKEHflbG<~-5;U$noAchW6xV| z=iOJ{%p@8VDI-Kq+eT9eglF=MNTt9l;n7`V9Y{v|)C*^MZU@T?mm;Oic-6Mc*}d~k zEYB}zZe=8zK;hE}bmB22UTcw`<=vA=8j-jkS&$-vrP*zK^7_xv=8b?TtYGEn6C6MN zpDa`w#7k2MbPp9n+H`{zB7BIshkDW~f~cLHOFNk>=Mch7m>JKV`7ie${x*gUT9LCO ze2N2|lDTqRQQmFZ`L<0Lu~aP3%CkC>c+du?&aUzPH{M1N7(#-osCeL4``J3Xi080% zT0sn{I6@%DzYBpSDV5;d3 z*{yu`oqNe@1rntdJpB8ISX(=p)7rCEBqu;wH>R_Ip`;4Y&>{sV&z|6XeJ+iV00YFu z^A~gH4R=%fB-saK#J^~@!y51nf$WFroE@+`k>Ng-&w<;%bLA}7zT zQdp5mX1US@W|lVqhVjo6f2VHi+!JI@dCr_J5F2Jebj71nffRy}GdH`5dk=ku)pM&T zBVgI2vWj+_IB;m+kk*}6C=$mIsB3ICK%mck0t3RlZ!pw|y+65=nV(eJuaI z`Yfx@pTOnm>WHV2gm)UdkrJj#*Tqe}dU=*;+6<>V5B=^S2M*sy-P9Oh4v$P8&m{I9k!xtXA_8kk#8j4EoCr~rB@aLNeGck7%v5s}WtpL7V1EoXMVXYz zMnFt;M3K|3YbGOt_Jun2eM)H)mhxJoDrhQbn#uZ>98a|(y4K8@UD%vSnCBHXK* zWv*Ha+qd!d+ipqfWsIcsCA#BrBg(k4ih45X8`kit5Xe=9r6N?#&fxA@I$y%Ljk@Cv zjCYzZ6V>J!irEs62t!Mqg7%+JJowQg5pi{0*OJ24A2tN_0DWKG!ig+cJ^4aC{KG+I zsDM@#{Q901yZ!^$tUnpi@WCi`ZCRH4!VKK7!Y~ySb>NjzhG8;HLSa}KRt6T9Q?9@i zL?ofI2uy*6Q$#_aV?o>m@Z9IM{?Pc|Ki>MX98TZ*v1?vAC-VORIPM8<^^I9o00000 LNkvXXu0mjf;u0X? literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/DuplicatesRowsPanel.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/DuplicatesRowsPanel.java index 13fea3f..820c0d5 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/DuplicatesRowsPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/DuplicatesRowsPanel.java @@ -149,6 +149,7 @@ public class DuplicatesRowsPanel extends FramedPanel { FieldLabel columnsLabel = new FieldLabel(null, "Columns"); + columnsLabel.getElement().applyStyles("font-weight:bold"); HBoxLayoutContainer hBox=new HBoxLayoutContainer(); hBox.add(validatesButton, new BoxLayoutData(new Margins(2,5,2,5))); hBox.add(deleteButton,new BoxLayoutData(new Margins(2,5,2,5))); @@ -156,8 +157,8 @@ public class DuplicatesRowsPanel extends FramedPanel { VerticalLayoutContainer v = new VerticalLayoutContainer(); v.setScrollMode(ScrollMode.AUTO); - v.add(columnsLabel, new VerticalLayoutData(-1, -1, new Margins(0))); - v.add(grid, new VerticalLayoutData(-1, -1, new Margins(0))); + v.add(columnsLabel, new VerticalLayoutData(-1, -1, new Margins(2,1,5,1))); + v.add(grid, new VerticalLayoutData(1, -1, new Margins(0))); v.add(hBox, new VerticalLayoutData(-1, -1, new Margins(10, 0, 10, 0))); add(v, new VerticalLayoutData(-1, -1, new Margins(0))); diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/validation/ValidationsTablePanel.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/validation/ValidationsTablePanel.java new file mode 100644 index 0000000..34954b1 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/validation/ValidationsTablePanel.java @@ -0,0 +1,215 @@ +package org.gcube.portlets.user.td.tablewidget.client.validation; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; +import org.gcube.portlets.user.td.gwtservice.shared.tr.TableData; +import org.gcube.portlets.user.td.gwtservice.shared.tr.table.Validations; +import org.gcube.portlets.user.td.gwtservice.shared.tr.table.metadata.TabValidationsMetadata; +import org.gcube.portlets.user.td.tablewidget.client.properties.ValidationsProperties; +import org.gcube.portlets.user.td.tablewidget.client.resources.ResourceBundle; +import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; +import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.cell.client.AbstractCell; +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.web.bindery.event.shared.EventBus; +import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode; +import com.sencha.gxt.core.client.util.Margins; +import com.sencha.gxt.data.client.loader.RpcProxy; +import com.sencha.gxt.data.shared.ListStore; +import com.sencha.gxt.data.shared.loader.ListLoadConfig; +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.FramedPanel; +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.form.ComboBox; +import com.sencha.gxt.widget.core.client.form.FieldLabel; +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; + +/** + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class ValidationsTablePanel extends FramedPanel { + protected String WIDTH = "640px"; + protected String HEIGHT = "520px"; + + protected TRId trId; + protected TableData table; + protected String headingTitle; + protected VerticalLayoutContainer vl; + protected EventBus eventBus; + + protected ComboBox comboValidations; + protected ListStore storeValidations; + protected ListLoader> loader; + protected Grid grid; + + public ValidationsTablePanel(TRId trId, EventBus eventBus) { + super(); + this.trId = trId; + this.eventBus = eventBus; + forceLayoutOnResize = true; + init(); + create(); + } + + protected void init() { + setWidth(WIDTH); + setHeight(HEIGHT); + setHeaderVisible(false); + setBodyBorder(false); + } + + protected void create(){ + ValidationsProperties props = GWT + .create(ValidationsProperties.class); + + + ColumnConfig descriptionCol = new ColumnConfig( + props.description(), 168, "Description"); + ColumnConfig validCol = new ColumnConfig( + props.valid(), 32, "Valid"); + validCol.setCell(new AbstractCell(){ + + @Override + public void render(Context context, Boolean value, + SafeHtmlBuilder sb) { + + if(value){ + sb.appendHtmlConstant("true"); + + } else { + sb.appendHtmlConstant("true"); + + } + + } + }); + + + + List> l = new ArrayList>(); + l.add(descriptionCol); + l.add(validCol); + + ColumnModel cm = new ColumnModel(l); + + storeValidations = new ListStore(props.id()); + + + + RpcProxy> proxy = new RpcProxy>() { + + public void load(ListLoadConfig loadConfig, + final AsyncCallback> callback) { + loadData(loadConfig, callback); + } + + + }; + + loader = new ListLoader>( + proxy); + + loader.setRemoteSort(false); + loader.addLoadHandler(new LoadResultListStoreBinding>( + storeValidations) { + }); + + + + + grid = new Grid(storeValidations, cm) { + @Override + protected void onAfterFirstAttach() { + super.onAfterFirstAttach(); + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + + public void execute() { + loader.load(); + } + }); + } + }; + + grid.setLoader(loader); + grid.setHeight(360); + grid.getView().setStripeRows(true); + grid.getView().setColumnLines(true); + grid.getView().setAutoFill(true); + grid.setBorders(false); + grid.setLoadMask(true); + grid.setColumnReordering(true); + grid.setColumnResize(true); + grid.getView().setAutoExpandColumn(descriptionCol); + + FieldLabel validationsLabel = new FieldLabel(null, "Validations"); + validationsLabel.getElement().applyStyles("font-weight:bold"); + + VerticalLayoutContainer v = new VerticalLayoutContainer(); + v.setScrollMode(ScrollMode.AUTO); + v.add(validationsLabel, new VerticalLayoutData(-1, -1, new Margins(2,1,5,1))); + v.add(grid, new VerticalLayoutData(1, -1, new Margins(0))); + add(v); + + } + + + protected void loadData(ListLoadConfig loadConfig, + final AsyncCallback> callback) { + + TDGWTServiceAsync.INSTANCE.getTableValidationsMetadata(trId, + new AsyncCallback() { + + public void onFailure(Throwable caught) { + Log.error("load validations metadata failure:" + + caught.getLocalizedMessage()); + UtilsGXT3.alert("Error retrieving validations metadata", + "Error retrieving validations metadata"); + callback.onFailure(caught); + } + + public void onSuccess(TabValidationsMetadata result) { + Log.trace("loaded " + result.getId()); + if(result.getValidations()!=null){ + callback.onSuccess(new ListLoadResultBean( + result.getValidations())); + } else { + Log.error("load validations metadata failure: null"); + UtilsGXT3.alert("Error retrieving validations metadata", + "Error retrieving validations metadata"); + callback.onFailure(new Exception("Error retrieving validations metadata")); + } + + + } + + }); + + } + + + + + + public void update(TRId trId) { + this.trId = trId; + loader.load(); + } + +} diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/exit.png b/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..74f482675feeea7b45c39a8d23257a4496bd1283 GIT binary patch literal 523 zcmV+m0`&cfP)CQtMcOS!ri_mJ5);4LZKO=RQb3rpg1%NR^W)>kvC!~KPShz;x-V-8%wAd$x z--%zte3*MyJ&oYG(BBch^Ab)5aJ5$@`Mk?0@ft48W=yxU2(<^yc1V}!D%tjGgBTo=t}Ku`^X1>#g9(JP zdH4l?`#c*~nC-%vmR*agL2RD^&l4;Gygfoe-7&goA6+);0NY?Sy_eB z#!=cAb0W9zRGWv$QB?rZ2gkd6+o94A(ehx*1FGVw^^vKqpX(Wq$A4VMrB;7lvXcM+ N002ovPDHLkV1iP`?LzUK~z|U?N?2RPEi&w1YG zJs0@b4-@`*fA!KV(ww5mTBuH@DxeCA04ku^|EhpU@g1EPK z;Ald?fZ(JEjHs!C(gSV@oG+e^z|5Epn5-nRX-9FL8iD&~jSSiGfj3ASP?{2mtALT) z`RXws0@La%Nn{z!mfb~^R>1YjN$|-%5AK!qDf!DPuuLm1=F3OmjlqaLvh2^m-K@!S zsS^)`Rlv$Xm-jCpg4fQ)B>n#Z6L1F*km%??2(w~Ul7w`PO_~&NK!IC-2d-C6LNA|4 zN$ffd)3c@o_etnHP+J8-&Id_I5~ioO(e3*9F66?oghbZcie2wLU{y&KD7zNz5>OS$ zbLgex;G59|+=tAgyO8roJqeCJhaBGr=29x@x~waAdz49NFR;o~75MQTdj1Hq{zKr% zP;II4;V?uLS#PTV|Mo3jM!&hS=B^T84b#X-?KbrEKoqZ4xAVa*$o*Sjo~PZ^b=gWc z40=IjKhV(k8|yqYToqizciHA{820U;8I1*a)MXpHq3BntPI5t1?&0DMDT8tfH?XeG zf48BvIq*4EKzKXq1>*o7Y{_n>CX{>t)Yb2XhNnd@8|t=E?sqJA`9dOP$Vkl#iTLXu zsO|lU0$pbZM}^YOT(5)rc^tq$k$R2N?(Tl^`Yrw+_V@`9@fz#4NgW6P0000Px#24YJ`L;yDcdH^xv`Z84j000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^n; z5DGQi60vLm00OQ_L_t(I%T1Hdi`7*a#y{tKzgO|*j58C|pf-jG*(Qw2EZP+PShX;4 z(b2`E1dZ8?Ve?uQnttvii{-840n;ukcsSu!csOL9zAeukN}Q< zf8^PAw0?Lr8qJvJFe^ecL$V^4$d<7XW^JObuguKNJyip!ZC={CW7l2t+wY9*ISJu7 zLIi%(&GB$Loo@X4^AEQ#p1b&H4bVzWYhx}gUPx;<`eCjlGC4~0@L+9y6$m;}bN9ac z(s(?=+(spV8RkyTnWi15jA35lo17biJ_q+6Vr6}qvzN~x844jYY5-G4QABOZn1q{Q zG8$zb+xa;6Y}-RsB?iNP_)FK32{obukUNrN6xUv-M`JA}(e)1d79OI}nBP}^AFcmiPq_v5G z5QckTmf5~#fp~{`^;`XUr_r7&(`k$`;yWxr8Z`v!%|)`pTAVb6=;IKY57nK@ta+;Q#;t07*qoM6N<$g0b9w%>V!Z literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/ok_32.png b/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/ok_32.png new file mode 100644 index 0000000000000000000000000000000000000000..dae05cd72c8b6b9f48841290b17508e751869d4c GIT binary patch literal 1665 zcmV-{27dX8P)Px#24YJ`L;yDcdH^xv`Z84j000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^n; z5DF3C5mmha00sd`L_t(o!_Ajph+S6|#((RaGc!phGn1yxwDu_=mWWbpu>_S?s#ptZ zDHKt$SWzGJAxN##iZ+52eNdZb z&ROg8Vej*2Zbtf6dM}52?m2t!wf48Z^{utxmGn8NAH6JgKDGbj{e3llaq8)R?Yi%` z-?%o~*cS>EK|~M=B9wmfbB{pE??dT+^gqH0r8#ba@-q(|JLmOHz>z(Fy<@!tA%397 zuWs8~E?IaWg7C3HjSOx4Y;f2K>kQ|yaCu?H3Seh`cogf5f9uHCcN6iOxy|#u=5<%$ zazF$^$&Gxs{(o{j@<`G<3#8%6c;@pb*Ldn@kA+;%?EldBuILd^MB72vc#R~iD$;`b zKgPw#F@|>%lE6lD6tqo4(=saAWhJU z@EDCr@%I>bw6JxNt8Tn5xv031gvyiX;51=n0f3oPM2VOEV2Y>^j?4%Jr5S|b1=MF> zL>0_bGq@X-3al&%Wi&h>E#3WqyQ7Y5C^0yccO<;~b_ApCcc@6at?LPk#S-`4@=flz z?yiK&q(yC7gKk|CD(f7ONQ>vx=~B$Y@giNJ>=1!`xKEHflbG<~-5;U$noAchW6xV| z=iOJ{%p@8VDI-Kq+eT9eglF=MNTt9l;n7`V9Y{v|)C*^MZU@T?mm;Oic-6Mc*}d~k zEYB}zZe=8zK;hE}bmB22UTcw`<=vA=8j-jkS&$-vrP*zK^7_xv=8b?TtYGEn6C6MN zpDa`w#7k2MbPp9n+H`{zB7BIshkDW~f~cLHOFNk>=Mch7m>JKV`7ie${x*gUT9LCO ze2N2|lDTqRQQmFZ`L<0Lu~aP3%CkC>c+du?&aUzPH{M1N7(#-osCeL4``J3Xi080% zT0sn{I6@%DzYBpSDV5;d3 z*{yu`oqNe@1rntdJpB8ISX(=p)7rCEBqu;wH>R_Ip`;4Y&>{sV&z|6XeJ+iV00YFu z^A~gH4R=%fB-saK#J^~@!y51nf$WFroE@+`k>Ng-&w<;%bLA}7zT zQdp5mX1US@W|lVqhVjo6f2VHi+!JI@dCr_J5F2Jebj71nffRy}GdH`5dk=ku)pM&T zBVgI2vWj+_IB;m+kk*}6C=$mIsB3ICK%mck0t3RlZ!pw|y+65=nV(eJuaI z`Yfx@pTOnm>WHV2gm)UdkrJj#*Tqe}dU=*;+6<>V5B=^S2M*sy-P9Oh4v$P8&m{I9k!xtXA_8kk#8j4EoCr~rB@aLNeGck7%v5s}WtpL7V1EoXMVXYz zMnFt;M3K|3YbGOt_Jun2eM)H)mhxJoDrhQbn#uZ>98a|(y4K8@UD%vSnCBHXK* zWv*Ha+qd!d+ipqfWsIcsCA#BrBg(k4ih45X8`kit5Xe=9r6N?#&fxA@I$y%Ljk@Cv zjCYzZ6V>J!irEs62t!Mqg7%+JJowQg5pi{0*OJ24A2tN_0DWKG!ig+cJ^4aC{KG+I zsDM@#{Q901yZ!^$tUnpi@WCi`ZCRH4!VKK7!Y~ySb>NjzhG8;HLSa}KRt6T9Q?9@i zL?ofI2uy*6Q$#_aV?o>m@Z9IM{?Pc|Ki>MX98TZ*v1?vAC-VORIPM8<^^I9o00000 LNkvXXu0mjf;u0X? literal 0 HcmV?d00001