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 index 67ec457..1065bf1 100644 --- 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 @@ -24,9 +24,10 @@ import com.sencha.gxt.widget.core.client.form.FormPanel; */ public class CurrentColumnSelectionCard extends WizardCard { - protected ReplaceByExternalSession replaceByExternalSession; + private ReplaceByExternalSession replaceByExternalSession; private CurrentColumnSelectionCard thisCard; private CurrentColumnGridPanel currentColumnGridPanel; + private String colname; public ReplaceByExternalSession getReplaceByExternalSession() { return replaceByExternalSession; @@ -46,6 +47,23 @@ public class CurrentColumnSelectionCard extends WizardCard { } + public CurrentColumnSelectionCard(String colname, + final ReplaceByExternalSession replaceByExternalSession) { + super("Current Column Selection", ""); + this.thisCard=this; + this.colname=colname; + 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); @@ -55,7 +73,7 @@ public class CurrentColumnSelectionCard extends WizardCard { panel.add(content); // Column Selection Grid - currentColumnGridPanel = new CurrentColumnGridPanel(this); + currentColumnGridPanel = new CurrentColumnGridPanel(colname,this); currentColumnGridPanel .addSelectionHandler(new SelectionHandler() { 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 6134685..19fd509 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 @@ -14,12 +14,10 @@ import com.google.web.bindery.event.shared.EventBus; * */ public class ReplaceByExternalTD extends WizardWindow { - protected static final int WITHWIZARD = 800; - protected static final int HEIGHTWIZARD = 520; - - protected ReplaceByExternalSession replaceByExternalSession; - protected TRId trId; + private static final int WITHWIZARD = 800; + private static final int HEIGHTWIZARD = 520; + private ReplaceByExternalSession replaceByExternalSession; /** * * @param trId @@ -32,17 +30,35 @@ public class ReplaceByExternalTD extends WizardWindow { setWidth(WITHWIZARD); setHeight(HEIGHTWIZARD); - this.trId = trId; replaceByExternalSession = new ReplaceByExternalSession(); replaceByExternalSession.setTrId(trId); - + CurrentColumnSelectionCard currentColumnSelectionCard = new CurrentColumnSelectionCard( replaceByExternalSession); addCard(currentColumnSelectionCard); currentColumnSelectionCard.setup(); } - - - + /** + * + * @param trId + * @param title + * @param eventBus + */ + public ReplaceByExternalTD(TRId trId, String columnName, String title, + EventBus eventBus) { + super(title, eventBus); + Log.debug("ReplaceByExternalTD: " + trId+" columnName: "+columnName); + setWidth(WITHWIZARD); + setHeight(HEIGHTWIZARD); + replaceByExternalSession = new ReplaceByExternalSession(); + replaceByExternalSession.setTrId(trId); + + CurrentColumnSelectionCard currentColumnSelectionCard = new CurrentColumnSelectionCard( + columnName, replaceByExternalSession); + addCard(currentColumnSelectionCard); + currentColumnSelectionCard.setup(); + } + + } \ No newline at end of file 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 index 2b96051..871bb88 100644 --- 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 @@ -27,6 +27,8 @@ 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.event.StoreDataChangeEvent; +import com.sencha.gxt.data.shared.event.StoreDataChangeEvent.StoreDataChangeHandler; import com.sencha.gxt.data.shared.loader.ListLoadConfig; import com.sencha.gxt.data.shared.loader.ListLoadResult; import com.sencha.gxt.data.shared.loader.ListLoadResultBean; @@ -50,22 +52,31 @@ 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 + private static final ColumnDataProperties props = GWT .create(ColumnDataProperties.class); - protected CheckBoxSelectionModel sm; + private CheckBoxSelectionModel sm; - protected final Grid grid; - protected final CurrentColumnSelectionCard parent; + private Grid grid; + private CurrentColumnSelectionCard parent; + private String columnName; + private ColumnData columnSelected; + private List cols; /** * * @param parent */ - public CurrentColumnGridPanel(CurrentColumnSelectionCard parent) { + public CurrentColumnGridPanel(String columnName, + CurrentColumnSelectionCard parent) { this.parent = parent; + this.columnName = columnName; Log.debug("CurrentColumnGridPanel"); setHeadingText("Columns"); - + create(); + } + + protected void create() { + ColumnConfig labelCol = new ColumnConfig( props.label()); @@ -79,7 +90,18 @@ public class CurrentColumnGridPanel extends ContentPanel implements ColumnModel cm = new ColumnModel(l); ListStore store = new ListStore(props.id()); - + + store.addStoreDataChangeHandler(new StoreDataChangeHandler() { + + @Override + public void onDataChange(StoreDataChangeEvent event) { + List cols = event.getSource().getAll(); + Log.debug("Columns:" + cols.size()); + dataChangeOnStore(cols); + + } + }); + RpcProxy> proxy = new RpcProxy>() { public void load(ListLoadConfig loadConfig, @@ -94,7 +116,6 @@ public class CurrentColumnGridPanel extends ContentPanel implements loader.addLoadHandler(new LoadResultListStoreBinding>( store)); - grid = new Grid(store, cm) { @Override protected void onAfterFirstAttach() { @@ -106,7 +127,7 @@ public class CurrentColumnGridPanel extends ContentPanel implements }); } }; - + sm.setSelectionMode(SelectionMode.SINGLE); grid.setSelectionModel(sm); grid.setLoader(loader); @@ -126,7 +147,7 @@ public class CurrentColumnGridPanel extends ContentPanel implements setWidget(con); } - + public Grid getGrid() { return grid; } @@ -141,17 +162,49 @@ public class CurrentColumnGridPanel extends ContentPanel implements return grid.getSelectionModel().addSelectionHandler(handler); } + protected void dataChangeOnStore(List cols){ + this.cols=cols; + if(columnName==null||columnName.isEmpty()){ + columnSelected=null; + } else { + retrieveColumnSelected(); + } + } + + + protected void updateInitialColumnSelected(){ + Log.debug("ColumnSelected: "+columnSelected); + + if (columnSelected != null) { + String columnId; + if(columnSelected.isViewColumn()){ + columnId=columnSelected.getColumnViewData().getSourceTableDimensionColumnId(); + } else { + columnId=columnSelected.getColumnId(); + } + for (ColumnData c : cols) { + Log.debug("Column Retrieved: "+c); + if (c.getColumnId().compareTo(columnId) == 0) { + sm.select(c, true); + sm.refresh(); + break; + } + } + } + } + + protected void loadData(ListLoadConfig loadConfig, final AsyncCallback> callback) { - TRId trId=parent.getReplaceByExternalSession().getTrId(); - + 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( @@ -171,19 +224,58 @@ public class CurrentColumnGridPanel extends ContentPanel implements } } callback.onFailure(caught); - + } @Override public void onSuccess(ArrayList result) { - parent.getReplaceByExternalSession().setCurrentColumns(result); + parent.getReplaceByExternalSession().setCurrentColumns( + result); callback.onSuccess(new ListLoadResultBean( result)); } }); - - + + } + + protected void retrieveColumnSelected() { + TRId trId = parent.getReplaceByExternalSession().getTrId(); + TDGWTServiceAsync.INSTANCE.getColumn(trId, columnName, + 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 column: " + + caught.getLocalizedMessage()); + UtilsGXT3 + .alert("Error retrieving current column", + "Error retrieving current column on server!"); + } + } + + } + + @Override + public void onSuccess(ColumnData result) { + columnSelected = result; + updateInitialColumnSelected(); + + } + }); + } }