From 7d874aa63f86f61d69321fca64cd7c6999b8464b Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Fri, 7 Nov 2014 18:02:26 +0000 Subject: [PATCH] Updated Replace by External Column git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-replacebyexternal-widget@101526 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/ColumnMappingCard.java | 11 + .../client/ColumnMappingPanel.java | 43 +--- .../client/CurrentColumnSelectionCard.java | 155 ++++++++++++++ .../client/ReplaceByExternalTD.java | 14 +- .../client/TabResourcesSelectionCard.java | 14 +- .../client/grid/CurrentColumnGridPanel.java | 189 ++++++++++++++++++ .../ReplaceByExternalResourceBundle.java | 4 +- .../table-replace-by-external-col.png | Bin 872 -> 873 bytes .../table-replace-by-external-col_32.png | Bin 1672 -> 1751 bytes .../table-replace-by-external-col.png | Bin 872 -> 873 bytes .../table-replace-by-external-col_32.png | Bin 1672 -> 1751 bytes 11 files changed, 376 insertions(+), 54 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/CurrentColumnSelectionCard.java create mode 100644 src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/grid/CurrentColumnGridPanel.java diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ColumnMappingCard.java b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ColumnMappingCard.java index 67e9275..36bfe29 100644 --- a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ColumnMappingCard.java +++ b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ColumnMappingCard.java @@ -59,6 +59,17 @@ public class ColumnMappingCard extends WizardCard { getWizardWindow().setEnableBackButton(true); } + + + + public ReplaceByExternalSession getReplaceByExternalSession() { + return replaceByExternalSession; + } + + public void setReplaceByExternalSession( + ReplaceByExternalSession replaceByExternalSession) { + this.replaceByExternalSession = replaceByExternalSession; + } protected void setMapping() { getWizardWindow().setEnableNextButton(false); diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ColumnMappingPanel.java b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ColumnMappingPanel.java index 9c8b3f0..59ae62c 100644 --- a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ColumnMappingPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ColumnMappingPanel.java @@ -82,7 +82,8 @@ public class ColumnMappingPanel extends ContentPanel { Log.debug("ColumnMappingPanel"); init(); - retrieveSourceColumns(); + currentColumns=parent.getReplaceByExternalSession().getCurrentColumns(); + retrieveExternalColumns(); } public ArrayList getCurrentColumns() { @@ -148,45 +149,9 @@ public class ColumnMappingPanel extends ContentPanel { } - private void retrieveSourceColumns() { - TRId trId = parent.replaceByExternalSession.getTrId(); - TDGWTServiceAsync.INSTANCE.getColumns(trId, - new AsyncCallback>() { + - @Override - public void onFailure(Throwable caught) { - if (caught instanceof TDGWTSessionExpiredException) { - parent.getEventBus() - .fireEvent( - new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - if (caught instanceof TDGWTIsLockedException) { - Log.error(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error Locked", - caught.getLocalizedMessage()); - - } else { - Log.debug("Error retrieving source columns: " - + caught.getLocalizedMessage()); - UtilsGXT3 - .alert("Error retrieving current columns", - "Error retrieving current columns on server!"); - } - } - } - - @Override - public void onSuccess(ArrayList result) { - currentColumns = result; - retrieveUnionColumns(); - - } - }); - - } - - private void retrieveUnionColumns() { + private void retrieveExternalColumns() { TRId trId = parent.replaceByExternalSession.getExternalTabularResource().getTrId(); TDGWTServiceAsync.INSTANCE.getColumns(trId, new AsyncCallback>() { diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/CurrentColumnSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/CurrentColumnSelectionCard.java new file mode 100644 index 0000000..67ec457 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/CurrentColumnSelectionCard.java @@ -0,0 +1,155 @@ +package org.gcube.portlets.user.td.replacebyexternalwidget.client; + +import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; +import org.gcube.portlets.user.td.gwtservice.shared.tr.replacebyexternal.ReplaceByExternalSession; +import org.gcube.portlets.user.td.replacebyexternalwidget.client.grid.CurrentColumnGridPanel; +import org.gcube.portlets.user.td.wizardwidget.client.WizardCard; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.event.logical.shared.SelectionEvent; +import com.google.gwt.event.logical.shared.SelectionHandler; +import com.google.gwt.user.client.Command; +import com.sencha.gxt.core.client.util.Padding; +import com.sencha.gxt.widget.core.client.box.AlertMessageBox; +import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; +import com.sencha.gxt.widget.core.client.event.HideEvent; +import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler; +import com.sencha.gxt.widget.core.client.form.FormPanel; + +/** + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class CurrentColumnSelectionCard extends WizardCard { + + protected ReplaceByExternalSession replaceByExternalSession; + private CurrentColumnSelectionCard thisCard; + private CurrentColumnGridPanel currentColumnGridPanel; + + public ReplaceByExternalSession getReplaceByExternalSession() { + return replaceByExternalSession; + } + + public CurrentColumnSelectionCard( + final ReplaceByExternalSession replaceByExternalSession) { + super("Current Column Selection", ""); + this.thisCard=this; + if (replaceByExternalSession == null) { + Log.error("ReplaceByExternalSession is null"); + } + this.replaceByExternalSession = replaceByExternalSession; + + FormPanel panel = createPanel(); + setContent(panel); + + } + + protected FormPanel createPanel() { + FormPanel panel = new FormPanel(); + panel.setLabelWidth(90); + panel.getElement().setPadding(new Padding(5)); + + VerticalLayoutContainer content = new VerticalLayoutContainer(); + panel.add(content); + + // Column Selection Grid + currentColumnGridPanel = new CurrentColumnGridPanel(this); + + currentColumnGridPanel + .addSelectionHandler(new SelectionHandler() { + + public void onSelection(SelectionEvent event) { + + } + + }); + + content.add(currentColumnGridPanel); + + return panel; + } + + @Override + public void setup() { + Log.debug("ReplaceColumnSelectionCard Setup"); + Command sayNextCard = new Command() { + + public void execute() { + Log.debug("ReplaceColumnSelectionCard Call sayNextCard"); + checkData(); + } + + }; + + Command sayPreviousCard = new Command() { + public void execute() { + try { + getWizardWindow().previousCard(); + getWizardWindow().removeCard(thisCard); + Log.info("Remove ReplaceColumnSelectionCard"); + } catch (Exception e) { + Log.error("sayPreviousCard :" + e.getLocalizedMessage()); + } + } + }; + + getWizardWindow().setPreviousButtonCommand(sayPreviousCard); + getWizardWindow().setNextButtonCommand(sayNextCard); + + setEnableBackButton(false); + setEnableNextButton(true); + } + + protected void checkData() { + getWizardWindow().setEnableNextButton(false); + getWizardWindow().setEnableBackButton(false); + AlertMessageBox d; + HideHandler hideHandler = new HideHandler() { + + public void onHide(HideEvent event) { + getWizardWindow().setEnableNextButton(true); + getWizardWindow().setEnableBackButton(false); + + } + }; + + ColumnData currentColumn = currentColumnGridPanel.getSelectedItem(); + if (currentColumn == null) { + d = new AlertMessageBox("Attention", "No columns selected"); + d.addHideHandler(hideHandler); + d.setModal(false); + d.show(); + } else { + replaceByExternalSession.setCurrentColumn(currentColumn); + goNext(); + } + + } + + protected void goNext() { + try { + Log.info("NextCard TabResourcesSelectionCard"); + TabResourcesSelectionCard tabResourcesSelectionCard = new TabResourcesSelectionCard( + replaceByExternalSession); + getWizardWindow().addCard( + tabResourcesSelectionCard); + getWizardWindow().nextCard(); + } catch (Throwable e) { + Log.error("goNext: " + e.getLocalizedMessage()); + e.printStackTrace(); + } + } + + @Override + public void dispose() { + + } + + + + + + +} diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ReplaceByExternalTD.java b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ReplaceByExternalTD.java index cd9d2d2..6134685 100644 --- a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ReplaceByExternalTD.java +++ b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/ReplaceByExternalTD.java @@ -28,19 +28,21 @@ public class ReplaceByExternalTD extends WizardWindow { */ public ReplaceByExternalTD(TRId trId, String title, EventBus eventBus) { super(title, eventBus); - Log.debug("UnionWizardTD: " + trId); + Log.debug("ReplaceByExternalTD: " + trId); setWidth(WITHWIZARD); setHeight(HEIGHTWIZARD); this.trId = trId; replaceByExternalSession = new ReplaceByExternalSession(); replaceByExternalSession.setTrId(trId); - - TabResourcesSelectionCard tabResourcesSelection = new TabResourcesSelectionCard( + + CurrentColumnSelectionCard currentColumnSelectionCard = new CurrentColumnSelectionCard( replaceByExternalSession); - addCard(tabResourcesSelection); - tabResourcesSelection.setup(); - + addCard(currentColumnSelectionCard); + currentColumnSelectionCard.setup(); } + + + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/TabResourcesSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/TabResourcesSelectionCard.java index 4baac19..6ab8852 100644 --- a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/TabResourcesSelectionCard.java +++ b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/TabResourcesSelectionCard.java @@ -89,7 +89,7 @@ public class TabResourcesSelectionCard extends WizardCard { getWizardWindow().setPreviousButtonCommand(sayPreviousCard); getWizardWindow().setEnableNextButton(false); - getWizardWindow().setEnableBackButton(false); + getWizardWindow().setEnableBackButton(true); } @@ -140,7 +140,7 @@ public class TabResourcesSelectionCard extends WizardCard { } else if (mb.getHideButton() == mb .getButtonById(PredefinedButton.NO.name())) { getWizardWindow().setEnableNextButton(false); - getWizardWindow().setEnableBackButton(false); + getWizardWindow().setEnableBackButton(true); } } }); @@ -168,7 +168,7 @@ public class TabResourcesSelectionCard extends WizardCard { UtilsGXT3.alert("Error Locked", caught.getLocalizedMessage()); getWizardWindow().setEnableNextButton(false); - getWizardWindow().setEnableBackButton(false); + getWizardWindow().setEnableBackButton(true); } else { AlertMessageBox d = new AlertMessageBox( @@ -179,7 +179,7 @@ public class TabResourcesSelectionCard extends WizardCard { public void onHide(HideEvent event) { getWizardWindow().setEnableNextButton( - true); + false); getWizardWindow().setEnableBackButton( true); @@ -196,7 +196,7 @@ public class TabResourcesSelectionCard extends WizardCard { public void onSuccess(Void result) { tabResourcesSelectionPanel.gridReload(); getWizardWindow().setEnableNextButton(false); - getWizardWindow().setEnableBackButton(false); + getWizardWindow().setEnableBackButton(true); } }); @@ -235,13 +235,13 @@ public class TabResourcesSelectionCard extends WizardCard { UtilsGXT3.alert("Error Locked", caught.getLocalizedMessage()); getWizardWindow().setEnableNextButton(false); - getWizardWindow().setEnableBackButton(false); + getWizardWindow().setEnableBackButton(true); } else { UtilsGXT3 .alert("Error", "Error retrienving information on current tabular resource: "); getWizardWindow().setEnableNextButton(false); - getWizardWindow().setEnableBackButton(false); + getWizardWindow().setEnableBackButton(true); } } } diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/grid/CurrentColumnGridPanel.java b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/grid/CurrentColumnGridPanel.java new file mode 100644 index 0000000..2b96051 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/grid/CurrentColumnGridPanel.java @@ -0,0 +1,189 @@ +package org.gcube.portlets.user.td.replacebyexternalwidget.client.grid; + +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.exception.TDGWTIsLockedException; +import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; +import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; +import org.gcube.portlets.user.td.replacebyexternalwidget.client.CurrentColumnSelectionCard; +import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent; +import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType; +import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; +import org.gcube.portlets.user.td.wizardwidget.client.util.UtilsGXT3; + +import com.allen_sauer.gwt.log.client.Log; +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.event.logical.shared.HasSelectionHandlers; +import com.google.gwt.event.logical.shared.SelectionHandler; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sencha.gxt.core.client.IdentityValueProvider; +import com.sencha.gxt.core.client.Style.SelectionMode; +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.ContentPanel; +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.grid.CheckBoxSelectionModel; +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 email: g.panichi@isti.cnr.it + * + */ +public class CurrentColumnGridPanel extends ContentPanel implements + HasSelectionHandlers { + // private static final String GRID_WIDTH ="524px"; + private static final String GRID_HEIGHT = "340px"; + protected static final ColumnDataProperties props = GWT + .create(ColumnDataProperties.class); + protected CheckBoxSelectionModel sm; + + protected final Grid grid; + protected final CurrentColumnSelectionCard parent; + + /** + * + * @param parent + */ + public CurrentColumnGridPanel(CurrentColumnSelectionCard parent) { + this.parent = parent; + Log.debug("CurrentColumnGridPanel"); + setHeadingText("Columns"); + + ColumnConfig labelCol = new ColumnConfig( + props.label()); + + IdentityValueProvider identity = new IdentityValueProvider(); + + sm = new CheckBoxSelectionModel(identity); + + List> l = new ArrayList>(); + l.add(sm.getColumn()); + l.add(labelCol); + ColumnModel cm = new ColumnModel(l); + + ListStore store = new ListStore(props.id()); + + RpcProxy> proxy = new RpcProxy>() { + + public void load(ListLoadConfig loadConfig, + final AsyncCallback> callback) { + loadData(loadConfig, callback); + } + }; + final ListLoader> loader = new ListLoader>( + proxy); + + loader.setRemoteSort(false); + loader.addLoadHandler(new LoadResultListStoreBinding>( + store)); + + + grid = new Grid(store, cm) { + @Override + protected void onAfterFirstAttach() { + super.onAfterFirstAttach(); + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + public void execute() { + loader.load(); + } + }); + } + }; + + sm.setSelectionMode(SelectionMode.SINGLE); + grid.setSelectionModel(sm); + grid.setLoader(loader); + grid.setHeight(GRID_HEIGHT); + // grid.setWidth(GRID_WIDTH); + // grid.getView().setAutoExpandColumn(labelCol); + grid.getView().setStripeRows(true); + grid.getView().setColumnLines(true); + grid.getView().setAutoFill(true); + grid.setBorders(false); + grid.setLoadMask(true); + grid.setColumnReordering(false); + + VerticalLayoutContainer con = new VerticalLayoutContainer(); + con.setScrollMode(ScrollMode.AUTO); + con.add(grid, new VerticalLayoutData(-1, -1, new Margins(0))); + setWidget(con); + + } + + public Grid getGrid() { + return grid; + } + + public ColumnData getSelectedItem() { + return grid.getSelectionModel().getSelectedItem(); + + } + + public HandlerRegistration addSelectionHandler( + SelectionHandler handler) { + return grid.getSelectionModel().addSelectionHandler(handler); + } + + protected void loadData(ListLoadConfig loadConfig, + final AsyncCallback> callback) { + TRId trId=parent.getReplaceByExternalSession().getTrId(); + + TDGWTServiceAsync.INSTANCE.getColumns(trId, + new AsyncCallback>() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof TDGWTSessionExpiredException) { + + parent.getEventBus() + .fireEvent( + new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + if (caught instanceof TDGWTIsLockedException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Locked", + caught.getLocalizedMessage()); + + } else { + Log.debug("Error retrieving source columns: " + + caught.getLocalizedMessage()); + UtilsGXT3 + .alert("Error retrieving current columns", + "Error retrieving current columns on server!"); + } + } + callback.onFailure(caught); + + } + + @Override + public void onSuccess(ArrayList result) { + parent.getReplaceByExternalSession().setCurrentColumns(result); + callback.onSuccess(new ListLoadResultBean( + result)); + + } + }); + + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/ReplaceByExternalResourceBundle.java b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/ReplaceByExternalResourceBundle.java index c1cb91f..84e9b0d 100644 --- a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/ReplaceByExternalResourceBundle.java +++ b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/ReplaceByExternalResourceBundle.java @@ -47,10 +47,10 @@ public interface ReplaceByExternalResourceBundle extends ClientBundle { @Source("delete_32.png") ImageResource delete32(); - @Source("table-replace-by-external.png") + @Source("table-replace-by-external-col.png") ImageResource tableReplaceByExternal(); - @Source("table-replace-by-external_32.png") + @Source("table-replace-by-external-col_32.png") ImageResource tableReplaceByExternal32(); } diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/table-replace-by-external-col.png b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/table-replace-by-external-col.png index 4278827a22e51bcc10a14cf7aace85c2e4e40d11..ed1ca28080dc300786293431fec06f8e93e40e31 100644 GIT binary patch delta 815 zcmV+~1JL~F2I&TnDhVq9ZU83V7RJ4iGa-KuI3mYHWOV=l0`^HnK~y-)HIq$foMjNl zfA5=j^KLfT=4+#g2C;@#DJao^DO9AEloqU@g&qomrUwsF^rq;=TS3I5B^L`qM8u;K zDTS5>1S^RpVylIQ3MnMCo0{F^{d}I8@v!S*U=G9lXZ{}nz@_Wk^@>p|RWLD}D58Ic zis4o8-Vg+Ff;UhxveKttoIA7|T)MVhuY_FQ*e<8c)VwHO6cNRVAl~pIIPLbP6uAVG zjd(pP{E4U%Qrp-rr#^XW{4ui}Loo|5Gax`QFfaqdFonLjpEDO$czV3A7L_7&kP|Mh zensXp!~|7EOws>K6*VIYdinUsrx<@`&Id#$hKLgN)Hpx$5n%{)z=00(=I(vG2~G;0 z8a&9Ihih1Tx7w=Semrub9nwVj`DTj;t&-t-#9j&@WYT8S7I|iDKTCgo%kl9A9`*dl z$)iJqzpk&(g`%Ac0Je4t=8sK~WC4c`{KnB2_c%Q}%s{1&vHB>jmU3#Qk6M4F&c1jE zSBOU1mCY<*bYF$V}aB_w5)BF_oE3gQ*R zXeG+b)ZeWB^8+Kb22Tv%Vyu1xv?TR=Y&}dl@ls5ZXQVzM&k7>n)!7V2270)%Hb8&e zAom3~@AaatO1mc|b)5??|DJ!7x`eo_l4m)gAUN%C@F*$y@bziledQvJ{z2Y3HqH5y zhe@)3X|^A*vDM`G3%xXVn(XW~Nwcgc64!mfjM4rIi_4qTs|{YB_>Ajo5Cs`y(Jc4x z6dc(<&+=_!dgw6UTv<;Gn9Y%%}Z6aZd~pH_d)^5*PF*B6HA z`+U80b@$mP-@6s57)35Y99K9!+d#bV#>^<*OJ^8k?)d@A(xKK_&{ypx&66-MHp3_@ zeLC5Q*Uwy7!2&fA#raMOMGWT!uZD=nbzPh0E;u+@zuV3w4FEn^_@mxi32UVnR1DXR tb=g(Nd5;P>?Pfxhb}k#~wa@2v{{xg;4=Pz&>jD4(002ovPDHLkV1jjQi9Y}U delta 814 zcmV+}1JV5H2IvNmDhdAp{{a7>y{D6rGa-Ks85D=*Fkt`y0`*BmK~y-)J(JICTy+%1 zKkviqSo))o8zF&TTg$#jbc_fh)fI-B`Q^UZRSnF5a@ybUpqw;F(KEK ziSiV;l63}0?hS@hxAsR)v?rPf%fGj{-zpd#j@j-wN+C#)acAG>ghRs3jq5z4@3Hp4 zr#yBd+ayo@B3^9qr)*@{n+N>^w-4M z!#v_ovp+e_MyEj{9VBY;?Qef+kAd&dDq4hs;IyZ~PSVdd-+=Z`$a{F8e~ zWQ#_=$=$6c$DSy$nQqc_b$0UYQY5Z_f*E5&F-uqPFPhDEY0yPoE`CbY|4Ce)}hKR@YzqXsX;L)ktT04_&0Py<9*J}fDSS`GuVz_>+ si@rO~dsM(_KNF&~GwB*$d1o&959l5o@8BDgwg3PC07*qoM6N<$f>NW6=l}o! diff --git a/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/table-replace-by-external-col_32.png b/src/main/java/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/table-replace-by-external-col_32.png index 06716c8b85d9347768cdc8a52620ff2c298fb3ab..f03d9f8c8be65d3dd48495a8efc0d76ef9018a1d 100644 GIT binary patch delta 1687 zcmV;I259++4c85jRDTaUBJ625wg3PIWJyFpR9M5!mtCkGR~5&9d(X`I%Du5^ZsWDB zv6TdZX)B}z6KiWgDfod&Lqw|tL3|Q@C zTq`!lU}~+&O>e$TZgX?bJ+t>(%ZHgWbI!>vB1q}LW@gsjdw=$twf^hB)`IuLwdbh4 z=V#u(=O_TKFZk6T{(Xn2?KidMs)kxI%nVh-3`7+(hU8k!8={6$zZdhMR_-h07Zlt4 z@Hf{U0!aG`h}eEJUEa+NQ$wi_FkSrPQqJk1GNUrecLi0Ynfc|Sx(~Q+NC7ij-p!3~ z-+e8;Xi$2^D1V-->p2!3=9Wm!|Th31?d)R48)YH6|llw7-UJtFJIqDmNW}SI>{JSWiwS8xMb2NQG0ZfMvS?n-s(0`7u>B>CdaMbv@N&&O_Pr9+k z4?g+h|7+NtKHsI2rl@*M7qdW#0gM`P|HHN8z;|e8ogrB_%=6Iaf6C8~{Dgm;e+%y& zVWNvT&)1*Y@+#)Hr-SG%LJb<3=NB)$O(QL6!j){{20rebt2AvSOL+6baXvV9BdO28 zL6pFmD}U4MJ>2C_(l0l1{n;oZ*0w=iIq!6BA=A060H)jwg>ihI1fM8PCSqa@#hu=%WD!|EDlG3m{s&zfzLrZ zTf*TJk1=&>FYQhnN0DGE3pt2E2oecWDxf(r#1aF7nh-RgqB!q~A(D`exInGqcIOHV zY`<%gg|LSgj{Xei9Ene8XJf3MRPI_k&wnRY&$4yH7+2g>PR z`~Ce$6rz?EFbEQfB?h8Mfe{I)33yM8f_GY5V2~oM1YIL@Oucyn>u&l|mD5Edmw$V+ zWZ4o{Ed3}Sp7D9dS#%|_%bG&xuRc^ojUN(GWD_}IzHZc@`7&I?1Ab}7f4o8eaM94K@ zYPiH9ArkQeQ9$j2J_z%ueC^JH2Y;SAbPu^L@cP-ks5)+0*<#ym*H-TO-V>z)eGp2Z z+YNkfU4!2o^1MA4$Ya1vK_EuKIT-+9KNplK*^O|$S!Dgnd)c||0UAkys1EZ$2#|nF z94>L-3vMWQK!{@a%s~Pq4#@=#vPd?xnuwaI=hp{kN<4T#IsVovHs1Ix{(pMv0?%~M zp(b=1OTi*f?|Zr;Gw&Qu1JD0CFmv$=)8|g|$fLVR5{H@5YAqpz=!T;}2QWZAaJ5B5 zBR5~OiCnH=rX^)xVaMh@c<0HZRs3KkbbGUG-S|URuW+QP=SNQ-rIDo^o!-7?X?xYF zfr5mhfV7H?$)obsPxUb{1Ao9*?wBlhTsP!`XAZ9cVB5yYMUwRd$4|~O)=EhI9F4>? z{W!;`IWbrfX@!A)YSsZ#h&r4bMlbm<^H$c1`tB7Gs22Yo#rW(kAHaZ36Eav|eL)?+SbmB)zLDB2}f`NGc#YjDOUpLnU~cq(dJr z3*lnDL6*9a(!EY_omPs7qKR9yCcMzh{PO#DAFE1d8)-B|`_ZD9Qp!fUq=C874ogJo zG*d+F{9;w{W>MYO%=|>Zbk?grZl$Yy-KybGQ51)&VwTjc+E8m}XyVGlZOfvK;(K|0 h`Tjlci^iP)05I)CY!Gu0Ed>Ao002ovPDHLkV1nuqIHCXm delta 1607 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 delta 814 zcmV+}1JV5H2IvNmDhdAp{{a7>y{D6rGa-Ks85D=*Fkt`y0`*BmK~y-)J(JICTy+%1 zKkviqSo))o8zF&TTg$#jbc_fh)fI-B`Q^UZRSnF5a@ybUpqw;F(KEK ziSiV;l63}0?hS@hxAsR)v?rPf%fGj{-zpd#j@j-wN+C#)acAG>ghRs3jq5z4@3Hp4 zr#yBd+ayo@B3^9qr)*@{n+N>^w-4M z!#v_ovp+e_MyEj{9VBY;?Qef+kAd&dDq4hs;IyZ~PSVdd-+=Z`$a{F8e~ zWQ#_=$=$6c$DSy$nQqc_b$0UYQY5Z_f*E5&F-uqPFPhDEY0yPoE`CbY|4Ce)}hKR@YzqXsX;L)ktT04_&0Py<9*J}fDSS`GuVz_>+ si@rO~dsM(_KNF&~GwB*$d1o&959l5o@8BDgwg3PC07*qoM6N<$f>NW6=l}o! diff --git a/src/main/resources/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/table-replace-by-external-col_32.png b/src/main/resources/org/gcube/portlets/user/td/replacebyexternalwidget/client/resources/table-replace-by-external-col_32.png index 06716c8b85d9347768cdc8a52620ff2c298fb3ab..f03d9f8c8be65d3dd48495a8efc0d76ef9018a1d 100644 GIT binary patch delta 1687 zcmV;I259++4c85jRDTaUBJ625wg3PIWJyFpR9M5!mtCkGR~5&9d(X`I%Du5^ZsWDB zv6TdZX)B}z6KiWgDfod&Lqw|tL3|Q@C zTq`!lU}~+&O>e$TZgX?bJ+t>(%ZHgWbI!>vB1q}LW@gsjdw=$twf^hB)`IuLwdbh4 z=V#u(=O_TKFZk6T{(Xn2?KidMs)kxI%nVh-3`7+(hU8k!8={6$zZdhMR_-h07Zlt4 z@Hf{U0!aG`h}eEJUEa+NQ$wi_FkSrPQqJk1GNUrecLi0Ynfc|Sx(~Q+NC7ij-p!3~ z-+e8;Xi$2^D1V-->p2!3=9Wm!|Th31?d)R48)YH6|llw7-UJtFJIqDmNW}SI>{JSWiwS8xMb2NQG0ZfMvS?n-s(0`7u>B>CdaMbv@N&&O_Pr9+k z4?g+h|7+NtKHsI2rl@*M7qdW#0gM`P|HHN8z;|e8ogrB_%=6Iaf6C8~{Dgm;e+%y& zVWNvT&)1*Y@+#)Hr-SG%LJb<3=NB)$O(QL6!j){{20rebt2AvSOL+6baXvV9BdO28 zL6pFmD}U4MJ>2C_(l0l1{n;oZ*0w=iIq!6BA=A060H)jwg>ihI1fM8PCSqa@#hu=%WD!|EDlG3m{s&zfzLrZ zTf*TJk1=&>FYQhnN0DGE3pt2E2oecWDxf(r#1aF7nh-RgqB!q~A(D`exInGqcIOHV zY`<%gg|LSgj{Xei9Ene8XJf3MRPI_k&wnRY&$4yH7+2g>PR z`~Ce$6rz?EFbEQfB?h8Mfe{I)33yM8f_GY5V2~oM1YIL@Oucyn>u&l|mD5Edmw$V+ zWZ4o{Ed3}Sp7D9dS#%|_%bG&xuRc^ojUN(GWD_}IzHZc@`7&I?1Ab}7f4o8eaM94K@ zYPiH9ArkQeQ9$j2J_z%ueC^JH2Y;SAbPu^L@cP-ks5)+0*<#ym*H-TO-V>z)eGp2Z z+YNkfU4!2o^1MA4$Ya1vK_EuKIT-+9KNplK*^O|$S!Dgnd)c||0UAkys1EZ$2#|nF z94>L-3vMWQK!{@a%s~Pq4#@=#vPd?xnuwaI=hp{kN<4T#IsVovHs1Ix{(pMv0?%~M zp(b=1OTi*f?|Zr;Gw&Qu1JD0CFmv$=)8|g|$fLVR5{H@5YAqpz=!T;}2QWZAaJ5B5 zBR5~OiCnH=rX^)xVaMh@c<0HZRs3KkbbGUG-S|URuW+QP=SNQ-rIDo^o!-7?X?xYF zfr5mhfV7H?$)obsPxUb{1Ao9*?wBlhTsP!`XAZ9cVB5yYMUwRd$4|~O)=EhI9F4>? z{W!;`IWbrfX@!A)YSsZ#h&r4bMlbm<^H$c1`tB7Gs22Yo#rW(kAHaZ36Eav|eL)?+SbmB)zLDB2}f`NGc#YjDOUpLnU~cq(dJr z3*lnDL6*9a(!EY_omPs7qKR9yCcMzh{PO#DAFE1d8)-B|`_ZD9Qp!fUq=C874ogJo zG*d+F{9;w{W>MYO%=|>Zbk?grZl$Yy-KybGQ51)&VwTjc+E8m}XyVGlZOfvK;(K|0 h`Tjlci^iP)05I)CY!Gu0Ed>Ao002ovPDHLkV1nuqIHCXm delta 1607 zcmV-N2Dtgx4TuepRDTT@F5hazT>tRtC;zKne7WGZ&L+dxS^kSj0N~v7!he-pW zrPvxmEZCZ)xtBD_%}wt)Gkee8Yxyv9X6BrGf(TMNFz3u(Yk$w|wb%Nu|5_W~3D?pw zecRW(Z|N8SW+eE{a~JkR(Ss_wAfkv?x2htds6rG$l`*+AdL@dYwBt$-qV;=~{JfyI z{q(NghXK-&0Ws=9RawZrqM``x0xHu#9&4R+jhU2Dj|D`8er6Y<$m773V+N?|LhhA& zKKU+OP^hD#RDaLf%p1w6<=V(veJg9mz-%vJ-$TdgXLfNkzcE0hveX5|mr9mo)yvvl zto}FcSnHKkK{22@KEHk_VqVQrh$?J0Kr45lkR=&E|Hu7gNxyP8)tgdVH0{6gM14;@ z7h%Y~*WQofi7KROFJpkT{#|z)^lga%sEjW%Z82KVPJhnH;}9?yTKsG>K(*aT9vt7f z;lTej?cR8E$d)7}MuS?zWif!#BJO{<9(d&eQkxPaq8f<^gL1(B>-O`<*Pr0z`WXb_ z%4>%x!Z#1^dqKq9k#^Brr5f}y%Y(}+^wP>wQyXkL3!2U#Wrowe*GSSCgh*5&#FDp) zH6A;(!GAx~e={(vm=uyL1kuQFSY9V8TU#CwsgtD&M?bUl5`zmBV*6G3B$X z7z20QRE-6XrPp}j&&vbm#F1)>sNiDGdOqOuw|{KowU>l7SFlw*A`yeZ1qY(oZWc5- zJ=$5v&0Y6Dzw$g^fA$+=7#M~EFTT3fWM^* zSbqvBKqs;wsy6gG0-7iT{{=6OqAaim zN^!VY;KU;;7z0Hpz?g9&QqhLnjR7BouhcQW{#Unh!adFQY@WSWf0;FRfdi**WG5pz(p83Q8_nwk$D{@W@5 zUwz+qS(x3yU)O%YTCv92O9e;%K8I+@OLhY>4qqFf8u8)~JWn3=tX$f_C9X0+B7fG{ z+5@J|f+(ZnLK6Z*dq+w>`|f-A+O7w&(r_fGj~rSBJm3Dr&D>oq^OF~U%;pH+VjIrJP-&ZNkSB1zBf-E zh8-So#8i+dXbO4AvDhiqP+KDErTs2lPo4xD2@Dw6w;Uar?9pL>tAx#b6fA|<#n()kf?z*N|WT!hkK-EBML&o?ZeCfst1EZaPanH`F zY5Myky8*cUrfK>`PMlh2+f2f&E0|FWcXPs1c8N$D42(*%bVwn{xZ5YM_+Ru|_lk1) zjtE4my@#mW@}YSYICXXdRe!j7_jXj__0_k=yW=`*K6=$QP@T