diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/MeasureColumnSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/MeasureColumnSelectionCard.java
new file mode 100644
index 0000000..812de4c
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/MeasureColumnSelectionCard.java
@@ -0,0 +1,92 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXExportSession;
+import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnData;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.event.logical.shared.SelectionEvent;
+import com.google.gwt.event.logical.shared.SelectionHandler;
+
+/**
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class MeasureColumnSelectionCard extends WizardCard {
+
+ private MeasureColumnSelectionCard thisCard;
+ private SDMXExportSession exportSession;
+ private MeasureColumnSelectionPanel measureColumnSelectionPanel;
+ //private Agencies agency;
+
+ public MeasureColumnSelectionCard(final SDMXExportSession exportSession) {
+ super("Measure column selection", "");
+
+ this.exportSession = exportSession;
+ thisCard = this;
+
+ this.measureColumnSelectionPanel = new MeasureColumnSelectionPanel(thisCard,res, exportSession);
+
+ measureColumnSelectionPanel
+ .addSelectionHandler(new SelectionHandler() {
+
+ public void onSelection(SelectionEvent event) {
+ exportSession.setObsValueColumn(measureColumnSelectionPanel
+ .getSelectedItem());
+ getWizardWindow().setEnableNextButton(true);
+
+ }
+
+ });
+
+ setContent(measureColumnSelectionPanel);
+
+ }
+
+ @Override
+ public void setup() {
+ Command sayNextCard = new Command() {
+
+ public void execute() {
+ SDMXTableDetailCard sdmxTableDetailCard = new SDMXTableDetailCard(
+ exportSession);
+ getWizardWindow().addCard(sdmxTableDetailCard);
+ Log.info("NextCard SDMXTableDetailCard");
+ getWizardWindow().nextCard();
+
+ }
+
+ };
+
+ getWizardWindow().setNextButtonCommand(sayNextCard);
+
+ Command sayPreviousCard = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().previousCard();
+ getWizardWindow().removeCard(thisCard);
+ Log.info("Remove measureColumnSelectionCard");
+ } catch (Exception e) {
+ Log.error("sayPreviousCard :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
+ // getWizardWindow().setEnableNextButton(false);
+
+ setEnableNextButton(false);
+
+ setBackButtonVisible(true);
+ setEnableBackButton(true);
+
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/MeasureColumnSelectionPanel.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/MeasureColumnSelectionPanel.java
new file mode 100644
index 0000000..b2e45ee
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/MeasureColumnSelectionPanel.java
@@ -0,0 +1,259 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
+import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException;
+import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXExportSession;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.properties.ColumnDataProperties;
+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.tr.column.ColumnData;
+import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
+import org.gcube.portlets.user.td.wizardwidget.client.dataresource.ResourceBundle;
+
+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.dom.client.KeyUpEvent;
+import com.google.gwt.event.dom.client.KeyUpHandler;
+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.data.client.loader.RpcProxy;
+import com.sencha.gxt.data.shared.ListStore;
+import com.sencha.gxt.data.shared.ModelKeyProvider;
+import com.sencha.gxt.data.shared.Store;
+import com.sencha.gxt.data.shared.Store.StoreFilter;
+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.button.TextButton;
+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;
+import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
+import com.sencha.gxt.widget.core.client.form.TextField;
+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;
+import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem;
+import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
+
+/**
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class MeasureColumnSelectionPanel extends ContentPanel implements
+ HasSelectionHandlers {
+
+ private static final ColumnDataProperties properties = GWT
+ .create(ColumnDataProperties.class);
+
+ private static final ColumnConfig nameColumn = new ColumnConfig(
+ properties.label(), 50, "Name");
+
+ private Grid grid;
+
+ private WizardCard parent;
+ private ResourceBundle res;
+ private SDMXExportSession sdmxExportSession;
+
+ public MeasureColumnSelectionPanel(WizardCard parent, ResourceBundle res,
+ SDMXExportSession sdmxExportSession) {
+ this.parent = parent;
+ this.res = res;
+ this.sdmxExportSession = sdmxExportSession;
+
+ setHeaderVisible(false);
+ buildPanel(properties.id(),
+ Arrays.> asList(nameColumn),
+ nameColumn);
+ }
+
+ private void buildPanel(ModelKeyProvider keyProvider,
+ List> columns,
+ ColumnConfig autoexpandColumn) {
+
+ ToolBar toolBar = new ToolBar();
+ toolBar.add(new LabelToolItem("Search: "));
+ final TextField searchField = new TextField();
+ toolBar.add(searchField);
+
+ TextButton btnReload = new TextButton();
+ // btnReload.setText("Reload");
+ btnReload.setIcon(res.refresh16());
+ btnReload.setToolTip("Reload");
+ toolBar.add(btnReload);
+
+ IdentityValueProvider identity = new IdentityValueProvider();
+ final CheckBoxSelectionModel sm = new CheckBoxSelectionModel(
+ identity);
+
+ ColumnModel cm = new ColumnModel(columns);
+
+ final ExtendedListStore store = new ExtendedListStore(
+ keyProvider);
+
+ searchField.addKeyUpHandler(new KeyUpHandler() {
+
+ public void onKeyUp(KeyUpEvent event) {
+ Log.trace("searchTerm: " + searchField.getCurrentValue());
+ store.applyFilters();
+ }
+ });
+
+ store.addFilter(new StoreFilter() {
+
+ public boolean select(Store store, ColumnData parent,
+ ColumnData item) {
+ String searchTerm = searchField.getCurrentValue();
+ if (searchTerm == null)
+ return true;
+ return MeasureColumnSelectionPanel.this
+ .select(item, searchTerm);
+ }
+ });
+
+ store.setEnableFilters(true);
+
+ 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.setLoader(loader);
+ grid.setSelectionModel(sm);
+ grid.getView().setAutoExpandColumn(autoexpandColumn);
+ grid.getView().setStripeRows(true);
+ grid.getView().setColumnLines(true);
+ grid.getView().setAutoFill(true);
+ grid.setBorders(false);
+ grid.setLoadMask(true);
+ grid.setColumnReordering(true);
+
+ SelectHandler sh = new SelectHandler() {
+ public void onSelect(SelectEvent event) {
+ loader.load();
+ }
+ };
+
+ btnReload.addSelectHandler(sh);
+
+ VerticalLayoutContainer con = new VerticalLayoutContainer();
+ con.add(toolBar, new VerticalLayoutData(1, -1));
+ con.add(grid, new VerticalLayoutData(1, 1));
+ setWidget(con);
+ }
+
+ protected boolean select(ColumnData item, String searchTerm) {
+ if (item.getLabel() != null
+ && item.getLabel().toLowerCase()
+ .contains(searchTerm.toLowerCase()))
+ return true;
+
+ return false;
+ }
+
+ protected void loadData(ListLoadConfig loadConfig,
+ final AsyncCallback> callback) {
+
+ TDGWTServiceAsync.INSTANCE.getColumns(sdmxExportSession
+ .getTabResource().getTrId(),
+ new AsyncCallback>() {
+
+ public void onFailure(Throwable caught) {
+ if (caught instanceof TDGWTSessionExpiredException) {
+ parent.getEventBus()
+ .fireEvent(
+ new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("No ColumnData retrieved");
+ }
+ callback.onFailure(caught);
+ }
+
+ public void onSuccess(ArrayList result) {
+ Log.trace("loaded " + result.size() + " ColumnData");
+ List measureColumn = new ArrayList<>();
+ for (ColumnData column : result) {
+ if (column != null
+ && column.getTypeCode() != null
+ && column.getTypeCode().compareTo(
+ ColumnTypeCode.MEASURE.toString()) == 0) {
+ measureColumn.add(column);
+ }
+ }
+
+ callback.onSuccess(new ListLoadResultBean(
+ measureColumn));
+ }
+ });
+ }
+
+ public HandlerRegistration addSelectionHandler(
+ SelectionHandler handler) {
+ return grid.getSelectionModel().addSelectionHandler(handler);
+ }
+
+ /*
+ * public List getSelectedItems() { return
+ * grid.getSelectionModel().getSelectedItems(); }
+ */
+
+ public ColumnData getSelectedItem() {
+ return grid.getSelectionModel().getSelectedItem();
+ }
+
+ protected class ExtendedListStore extends ListStore {
+
+ public ExtendedListStore(ModelKeyProvider super M> keyProvider) {
+ super(keyProvider);
+ }
+
+ public void applyFilters() {
+ super.applyFilters();
+ }
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgenciesSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgenciesSelectionCard.java
index f8cade7..b27e0a3 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgenciesSelectionCard.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgenciesSelectionCard.java
@@ -64,10 +64,10 @@ public class SDMXAgenciesSelectionCard extends WizardCard {
getWizardWindow().nextCard();
break;
case DATASET:
- ViewColumnSelectionCard viewColumnSelectionCard = new ViewColumnSelectionCard(
+ MeasureColumnSelectionCard measureColumnSelectionCard = new MeasureColumnSelectionCard(
exportSession);
- getWizardWindow().addCard(viewColumnSelectionCard);
- Log.info("NextCard ViewColumnSelectionCard");
+ getWizardWindow().addCard(measureColumnSelectionCard);
+ Log.info("NextCard MeasureColumnSelectionCard");
getWizardWindow().nextCard();
break;
case GENERIC:
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java
index b52e9e8..1b896ec 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java
@@ -43,7 +43,7 @@ public class SDMXTableDetailCard extends WizardCard {
private TextField agencyName;
private TextField registryBaseUrl;
private TextField version;
- private TextField viewColumn;
+ private TextField measureColumn;
public SDMXTableDetailCard(final SDMXExportSession exportSession) {
super("SDMX Table Detail", "");
@@ -128,10 +128,10 @@ public class SDMXTableDetailCard extends WizardCard {
version.setValue(Constants.SDMX_DATASET_EXPORT_DEFAULT_ID);
p.add(new FieldLabel(version, "Version"), new VerticalLayoutData(1, -1));
- viewColumn = new TextField();
- viewColumn.setValue(exportSession.getObsValueColumn().getLabel());
- viewColumn.setReadOnly(true);
- p.add(new FieldLabel(viewColumn, "Codelist Column"),
+ measureColumn = new TextField();
+ measureColumn.setValue(exportSession.getObsValueColumn().getLabel());
+ measureColumn.setReadOnly(true);
+ p.add(new FieldLabel(measureColumn, "Measure Column"),
new VerticalLayoutData(1, -1));
}