() {
+
+ public void onSuccess(String taskId) {
+ openMonitorDialog(taskId);
+
+ }
+
+ public void onFailure(Throwable caught) {
+ if (caught instanceof TDGWTSessionExpiredException) {
+ getEventBus()
+ .fireEvent(
+ new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ if (caught instanceof TDGWTIsLockedException) {
+ Log.error(caught.getLocalizedMessage());
+ showErrorAndHide("Error Locked",
+ caught.getLocalizedMessage(), "",
+ caught);
+ } else {
+ showErrorAndHide("Error in exportSDMX",
+ "An error occured in exportSDMX.",
+ caught.getLocalizedMessage(), caught);
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ public void setup() {
+ getWizardWindow().setEnableBackButton(false);
+ setBackButtonVisible(false);
+ getWizardWindow().setEnableNextButton(false);
+ getWizardWindow().setNextButtonToFinish();
+ exportSDMX();
+ }
+
+ //
+ protected void openMonitorDialog(String taskId) {
+ MonitorDialog monitorDialog = new MonitorDialog(taskId, getEventBus());
+ monitorDialog.addProgressDialogListener(this);
+ monitorDialog.show();
+ }
+
+ @Override
+ public void operationComplete(OperationResult operationResult) {
+ newTrId = operationResult.getTrId();
+ SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder();
+ safeHtmlBuilder
+ .appendHtmlConstant("Operation Completed Check The Resources
");
+ resultField.setHTML(safeHtmlBuilder.toSafeHtml());
+ resultField.setVisible(true);
+ Command sayComplete = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().close(false);
+ Log.info("fire Complete: " + newTrId);
+
+ getWizardWindow().fireCompleted(newTrId);
+
+ } catch (Exception e) {
+ Log.error("fire Complete :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setNextButtonCommand(sayComplete);
+
+ setNextButtonVisible(true);
+ getWizardWindow().setEnableNextButton(true);
+ forceLayout();
+
+ }
+
+ @Override
+ public void operationFailed(Throwable caught, String reason, String details) {
+ SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder();
+ safeHtmlBuilder
+ .appendHtmlConstant("Operation Failed
");
+ resultField.setHTML(safeHtmlBuilder.toSafeHtml());
+ resultField.setVisible(true);
+ if (caught instanceof TDGWTSessionExpiredException) {
+ getEventBus()
+ .fireEvent(
+ new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ showErrorAndHide("Error in SDMX Export", reason, details, caught);
+ }
+ forceLayout();
+ }
+
+ @Override
+ public void operationStopped(OperationResult operationResult, String reason, String details) {
+ newTrId = operationResult.getTrId();
+ SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder();
+ safeHtmlBuilder
+ .appendHtmlConstant("Problems in the Operation
");
+ resultField.setHTML(safeHtmlBuilder.toSafeHtml());
+ resultField.setVisible(true);
+
+ Command sayComplete = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().close(false);
+ Log.info("fire Complete: tabular resource "
+ + newTrId.getId());
+ Log.info("fire Complete: tableId " + newTrId.getTableId());
+
+ getWizardWindow().fireCompleted(newTrId);
+
+ } catch (Exception e) {
+ Log.error("fire Complete :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setNextButtonCommand(sayComplete);
+
+ setNextButtonVisible(true);
+ getWizardWindow().setEnableNextButton(true);
+ forceLayout();
+ }
+
+ @Override
+ public void operationAborted() {
+ SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder();
+ safeHtmlBuilder
+ .appendHtmlConstant("Operation Aborted
");
+ resultField.setHTML(safeHtmlBuilder.toSafeHtml());
+ resultField.setVisible(true);
+
+ Command sayComplete = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().close(false);
+ Log.info("fire Aborted");
+
+ getWizardWindow().fireAborted();
+
+ } catch (Exception e) {
+ Log.error("fire Aborted :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setNextButtonCommand(sayComplete);
+
+ setNextButtonVisible(true);
+ getWizardWindow().setEnableNextButton(true);
+ forceLayout();
+
+ }
+
+ @Override
+ public void operationPutInBackground() {
+ SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder();
+ safeHtmlBuilder
+ .appendHtmlConstant("Operation in Background
");
+ resultField.setHTML(safeHtmlBuilder.toSafeHtml());
+ resultField.setVisible(true);
+
+ Command sayComplete = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().close(false);
+ Log.info("fire Operation In Background");
+
+ getWizardWindow().firePutInBackground();
+
+ } catch (Exception e) {
+ Log.error("fire Operation In Background :"
+ + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setNextButtonCommand(sayComplete);
+
+ setNextButtonVisible(true);
+ getWizardWindow().setEnableNextButton(true);
+ forceLayout();
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelTableDetailCard.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelTableDetailCard.java
new file mode 100644
index 0000000..d6da38b
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelTableDetailCard.java
@@ -0,0 +1,198 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.excelexportwidget.client;
+
+import org.gcube.portlets.user.td.gwtservice.shared.Constants;
+import org.gcube.portlets.user.td.gwtservice.shared.excel.ExcelExportSession;
+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.user.client.ui.VerticalPanel;
+import com.sencha.gxt.widget.core.client.FramedPanel;
+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.container.VerticalLayoutContainer.VerticalLayoutData;
+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.FieldLabel;
+import com.sencha.gxt.widget.core.client.form.FieldSet;
+import com.sencha.gxt.widget.core.client.form.TextField;
+
+/**
+ *
+ * @author Giancarlo Panichi
+ *
+ *
+ */
+public class ExcelTableDetailCard extends WizardCard {
+
+ private final String TABLEDETAILPANELWIDTH = "100%";
+ private final String TABLEDETAILPANELHEIGHT = "100%";
+ private final String FORMWIDTH = "538px";
+
+ private ExcelExportSession exportSession;
+ private ExcelTableDetailCard thisCard;
+
+ private VerticalLayoutContainer p = new VerticalLayoutContainer();
+ private VerticalPanel tableDetailPanel;
+
+ private TextField id;
+ private TextField agencyId;
+ private TextField version;
+ private TextField measureColumn;
+
+ public ExcelTableDetailCard(final ExcelExportSession exportSession) {
+ super("Excel Table Detail", "");
+
+ this.exportSession = exportSession;
+ thisCard = this;
+
+ tableDetailPanel = new VerticalPanel();
+
+ tableDetailPanel.setSpacing(4);
+ tableDetailPanel.setWidth(TABLEDETAILPANELWIDTH);
+ tableDetailPanel.setHeight(TABLEDETAILPANELHEIGHT);
+
+ FramedPanel form = new FramedPanel();
+ form.setHeadingText("Details");
+ form.setWidth(FORMWIDTH);
+
+ FieldSet fieldSet = new FieldSet();
+ fieldSet.setHeadingText("Information");
+ fieldSet.setCollapsible(false);
+ form.add(fieldSet);
+
+ switch (exportSession.getExportType()) {
+ case DATASET:
+ datasetViewConfig();
+ break;
+ case CODELIST:
+ case GENERIC:
+ default:
+ break;
+
+ }
+
+ fieldSet.add(p);
+
+ tableDetailPanel.add(form);
+ setContent(tableDetailPanel);
+
+ }
+
+ private void datasetViewConfig() {
+ id = new TextField();
+ id.setAllowBlank(false);
+ id.setEmptyText("Enter Id...");
+ id.setValue(Constants.EXCEL_DATASET_EXPORT_DEFAULT_ID);
+ p.add(new FieldLabel(id, "Id"), new VerticalLayoutData(1, -1));
+
+ agencyId = new TextField();
+ agencyId.setVisible(true);
+ agencyId.setEmptyText("Enter Agency Id...");
+ if (exportSession.getAgencyId() == null || exportSession.getAgencyId().isEmpty()) {
+ agencyId.setValue(Constants.EXCEL_DATASET_EXPORT_DEFAULT_AGENCY_ID);
+ } else {
+ agencyId.setValue(exportSession.getAgencyId());
+ }
+
+ FieldLabel agencyNameLabel = new FieldLabel(agencyId, "Agency Id");
+ p.add(agencyNameLabel, new VerticalLayoutData(1, -1));
+
+
+ version = new TextField();
+ version.setAllowBlank(false);
+ version.setEmptyText("Enter Version...");
+ version.setValue(Constants.EXCEL_DATASET_EXPORT_DEFAULT_VERSION);
+ p.add(new FieldLabel(version, "Version"), new VerticalLayoutData(1, -1));
+
+ measureColumn = new TextField();
+ measureColumn.setValue(exportSession.getObsValueColumn().getLabel());
+ measureColumn.setReadOnly(true);
+ p.add(new FieldLabel(measureColumn, "Measure Column"), new VerticalLayoutData(1, -1));
+
+
+ }
+
+ @Override
+ public void setup() {
+ Command sayNextCard = new Command() {
+
+ public void execute() {
+ checkData();
+ }
+
+ };
+
+ getWizardWindow().setNextButtonCommand(sayNextCard);
+
+ Command sayPreviousCard = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().previousCard();
+ getWizardWindow().removeCard(thisCard);
+ Log.info("Remove ExcelTableDetailCard");
+ } catch (Exception e) {
+ Log.error("sayPreviousCard :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
+ getWizardWindow().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);
+
+ }
+ };
+
+ if (id.getValue() == null || id.getValue().isEmpty() || !id.isValid() || version.getValue() == null
+ || version.getValue().isEmpty() || !version.isValid() || agencyId.getValue() == null
+ || agencyId.getValue().isEmpty() || !agencyId.isValid()) {
+
+ d = new AlertMessageBox("Attention!", "Fill in all fields");
+ d.addHideHandler(hideHandler);
+ d.show();
+ } else {
+ if (!version.getValue().matches("[0-9]+\\.[0-9]+")) {
+ d = new AlertMessageBox("Attention!", "Version must match the regular expression [0-9]+\\.[0-9]+");
+ d.addHideHandler(hideHandler);
+ d.show();
+ } else {
+ id.setReadOnly(true);
+ version.setReadOnly(true);
+ agencyId.setReadOnly(true);
+ goNext();
+ }
+ }
+
+ }
+
+ protected void goNext() {
+ try {
+ exportSession.setId(id.getCurrentValue());
+ exportSession.setAgencyId(agencyId.getCurrentValue());
+ exportSession.setVersion(version.getCurrentValue());
+
+ ExcelOperationInProgressCard excelOperationInProgressCard = new ExcelOperationInProgressCard(exportSession);
+ getWizardWindow().addCard(excelOperationInProgressCard);
+ Log.info("NextCard ExcelOperationInProgressCard");
+ getWizardWindow().nextCard();
+ } catch (Exception e) {
+ Log.error("sayNextCard :" + e.getLocalizedMessage());
+ }
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionCard.java
new file mode 100644
index 0000000..58ede75
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionCard.java
@@ -0,0 +1,152 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.excelexportwidget.client;
+
+import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
+import org.gcube.portlets.user.td.gwtservice.shared.excel.ExcelExportSession;
+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.TabResource;
+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.TableType;
+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.event.logical.shared.SelectionEvent;
+import com.google.gwt.event.logical.shared.SelectionHandler;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.sencha.gxt.widget.core.client.box.AutoProgressMessageBox;
+
+/**
+ *
+ * @author Giancarlo Panichi
+ *
+ *
+ */
+public class MeasureColumnSelectionCard extends WizardCard {
+
+ private MeasureColumnSelectionCard thisCard;
+ private ExcelExportSession exportSession;
+ private MeasureColumnSelectionPanel measureColumnSelectionPanel;
+
+ // private Agencies agency;
+
+ public MeasureColumnSelectionCard(final ExcelExportSession exportSession) {
+ super("Measure column selection", "");
+
+ this.exportSession = exportSession;
+ thisCard = this;
+
+ final AutoProgressMessageBox box = new AutoProgressMessageBox("Wait", "Retrieving Information, please wait...");
+ box.setProgressText("Retrieving...");
+ box.auto();
+ box.show();
+ retrieveTabularDataInfo(box);
+
+
+ }
+
+
+ public void init(){
+
+ 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);
+
+ }
+
+ private void retrieveTabularDataInfo(final AutoProgressMessageBox box) {
+ TDGWTServiceAsync.INSTANCE.getTabResourceInformation(new AsyncCallback() {
+
+ public void onFailure(Throwable caught) {
+ if (caught instanceof TDGWTSessionExpiredException) {
+ getEventBus().fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ if (caught instanceof TDGWTIsLockedException) {
+ Log.error(caught.getLocalizedMessage());
+ showErrorAndHide("Error Locked", caught.getLocalizedMessage(), "", caught);
+ } else {
+ Log.error(
+ "No Tabular Resource Information retrived from server " + caught.getLocalizedMessage());
+ box.hide();
+ showErrorAndHide("Error", "Error retrieving tabular resource information: ",
+ caught.getLocalizedMessage(), caught);
+ }
+ }
+ }
+
+ public void onSuccess(TabResource result) {
+ Log.debug("Tabular Resource Information retrieved");
+ exportSession.setTabResource(result);
+ exportSession.setExportType(TableType.getColumnDataTypeFromId(result.getTableTypeName()));
+ exportSession.setAgencyId(result.getAgency());
+ box.hide();
+ init();
+ }
+ });
+ }
+
+
+
+ @Override
+ public void setup() {
+ Command sayNextCard = new Command() {
+
+ public void execute() {
+ ExcelTableDetailCard sdmxTableDetailCard = new ExcelTableDetailCard(
+ exportSession);
+ getWizardWindow().addCard(sdmxTableDetailCard);
+ Log.info("NextCard ExcelTableDetailCard");
+ 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);
+
+ setBackButtonVisible(false);
+ setEnableBackButton(false);
+
+ if (measureColumnSelectionPanel == null
+ || measureColumnSelectionPanel.getSelectedItem() == null) {
+ setEnableNextButton(false);
+ } else {
+ setEnableNextButton(true);
+ }
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionPanel.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionPanel.java
new file mode 100644
index 0000000..d08452a
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionPanel.java
@@ -0,0 +1,259 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.excelexportwidget.client;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.gcube.portlets.user.td.excelexportwidget.client.properties.ColumnDataProperties;
+import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
+import org.gcube.portlets.user.td.gwtservice.shared.excel.ExcelExportSession;
+import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException;
+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
+ *
+ *
+ */
+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 ExcelExportSession excelExportSession;
+
+ public MeasureColumnSelectionPanel(WizardCard parent, ResourceBundle res,
+ ExcelExportSession excelExportSession) {
+ this.parent = parent;
+ this.res = res;
+ this.excelExportSession = excelExportSession;
+
+ 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(excelExportSession
+ .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/excelexportwidget/client/properties/AgenciesProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/AgenciesProperties.java
new file mode 100644
index 0000000..0efd145
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/AgenciesProperties.java
@@ -0,0 +1,34 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.excelexportwidget.client.properties;
+
+
+
+import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Agencies;
+
+import com.google.gwt.editor.client.Editor.Path;
+import com.sencha.gxt.core.client.ValueProvider;
+import com.sencha.gxt.data.shared.LabelProvider;
+import com.sencha.gxt.data.shared.ModelKeyProvider;
+import com.sencha.gxt.data.shared.PropertyAccess;
+
+/**
+ *
+ * @author Giancarlo Panichi
+ *
+ *
+ */
+public interface AgenciesProperties extends PropertyAccess {
+
+ @Path("id")
+ ModelKeyProvider key();
+ LabelProvider nameLabel();
+
+ ValueProvider id();
+ ValueProvider name();
+ ValueProvider description();
+
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/CodelistProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/CodelistProperties.java
new file mode 100644
index 0000000..acfe9ae
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/CodelistProperties.java
@@ -0,0 +1,31 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.excelexportwidget.client.properties;
+
+
+
+import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Codelist;
+
+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
+ *
+ *
+ */
+public interface CodelistProperties extends PropertyAccess {
+
+ @Path("id")
+ ModelKeyProvider key();
+
+ ValueProvider name();
+ ValueProvider agencyId();
+ ValueProvider version();
+ ValueProvider description();
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/ColumnDataProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/ColumnDataProperties.java
new file mode 100644
index 0000000..f46b080
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/ColumnDataProperties.java
@@ -0,0 +1,25 @@
+package org.gcube.portlets.user.td.excelexportwidget.client.properties;
+
+import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnData;
+
+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
+ *
+ *
+ */
+public interface ColumnDataProperties extends
+ PropertyAccess {
+
+ @Path("id")
+ ModelKeyProvider id();
+
+ ValueProvider label();
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/DatasetProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/DatasetProperties.java
new file mode 100644
index 0000000..ea48bc7
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/DatasetProperties.java
@@ -0,0 +1,30 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.excelexportwidget.client.properties;
+
+
+import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Dataset;
+
+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
+ *
+ *
+ */
+public interface DatasetProperties extends PropertyAccess {
+
+ @Path("id")
+ ModelKeyProvider key();
+
+ ValueProvider name();
+ ValueProvider agencyId();
+ ValueProvider version();
+ ValueProvider description();
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateColumnDataProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateColumnDataProperties.java
new file mode 100644
index 0000000..74d3f48
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateColumnDataProperties.java
@@ -0,0 +1,25 @@
+package org.gcube.portlets.user.td.excelexportwidget.client.properties;
+
+import org.gcube.portlets.user.td.gwtservice.shared.template.TemplateColumnData;
+
+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
+ *
+ *
+ */
+public interface TemplateColumnDataProperties extends
+ PropertyAccess {
+
+ @Path("id")
+ ModelKeyProvider id();
+
+ ValueProvider label();
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateDataProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateDataProperties.java
new file mode 100644
index 0000000..fe535e8
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateDataProperties.java
@@ -0,0 +1,35 @@
+package org.gcube.portlets.user.td.excelexportwidget.client.properties;
+
+
+
+import java.util.Date;
+
+import org.gcube.portlets.user.td.gwtservice.shared.template.TemplateData;
+
+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
+ *
+ *
+ */
+public interface TemplateDataProperties extends PropertyAccess {
+
+ @Path("id")
+ ModelKeyProvider id();
+
+ ValueProvider name();
+ ValueProvider category();
+ ValueProvider ownerLogin();
+ ValueProvider agency();
+ ValueProvider description();
+ ValueProvider creationDate();
+
+
+
+}
+
diff --git a/src/main/resources/org/gcube/portlets/user/td/excelexportwidget/ExcelExportWizardTD.gwt.xml b/src/main/resources/org/gcube/portlets/user/td/excelexportwidget/ExcelExportWizardTD.gwt.xml
new file mode 100644
index 0000000..0f35827
--- /dev/null
+++ b/src/main/resources/org/gcube/portlets/user/td/excelexportwidget/ExcelExportWizardTD.gwt.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/ExcelExportWizardTD.css b/src/main/webapp/ExcelExportWizardTD.css
new file mode 100644
index 0000000..7aca7ac
--- /dev/null
+++ b/src/main/webapp/ExcelExportWizardTD.css
@@ -0,0 +1,34 @@
+/** Add css rules here for your application. */
+
+
+/** Example rules used by the template application (remove for your app) */
+h1 {
+ font-size: 2em;
+ font-weight: bold;
+ color: #777777;
+ margin: 40px 0px 70px;
+ text-align: center;
+}
+
+.sendButton {
+ display: block;
+ font-size: 16pt;
+}
+
+/** Most GWT widgets already have a style name defined */
+.gwt-DialogBox {
+ width: 400px;
+}
+
+.dialogVPanel {
+ margin: 5px;
+}
+
+.serverResponseLabelError {
+ color: red;
+}
+
+/** Set ids using widget.getElement().setId("idOfElement") */
+#closeButton {
+ margin: 15px 6px 6px;
+}
diff --git a/src/main/webapp/ExcelExportWizardTD.html b/src/main/webapp/ExcelExportWizardTD.html
new file mode 100644
index 0000000..21814a8
--- /dev/null
+++ b/src/main/webapp/ExcelExportWizardTD.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Web Application Starter Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Your web browser must have JavaScript enabled
+ in order for this application to display correctly.
+
+
+
+ Web Application Starter Project
+
+
+
+ Please enter your name:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..03c87d7
--- /dev/null
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+ jUnitHostImpl
+ com.google.gwt.junit.server.JUnitHostImpl
+
+
+
+
+ jUnitHostImpl
+ ExcelExportWizardTD/junithost/*
+
+
+
+
+ ExcelExportWizardTD.html
+
+
+
diff --git a/src/test/java/org/gcube/portlets/user/td/excelexportwidget/client/GwtTestExcelExportWizardTD.java b/src/test/java/org/gcube/portlets/user/td/excelexportwidget/client/GwtTestExcelExportWizardTD.java
new file mode 100644
index 0000000..5665412
--- /dev/null
+++ b/src/test/java/org/gcube/portlets/user/td/excelexportwidget/client/GwtTestExcelExportWizardTD.java
@@ -0,0 +1,63 @@
+package org.gcube.portlets.user.td.excelexportwidget.client;
+
+
+import com.google.gwt.junit.client.GWTTestCase;
+
+/**
+ * GWT JUnit integration tests must extend GWTTestCase.
+ * Using "GwtTest*"
naming pattern exclude them from running with
+ * surefire during the test phase.
+ *
+ * If you run the tests using the Maven command line, you will have to
+ * navigate with your browser to a specific url given by Maven.
+ * See http://mojo.codehaus.org/gwt-maven-plugin/user-guide/testing.html
+ * for details.
+ */
+public class GwtTestExcelExportWizardTD extends GWTTestCase {
+
+ /**
+ * Must refer to a valid module that sources this class.
+ */
+ public String getModuleName() {
+ return "org.gcube.portlets.user.td.excelexportwidget.ExcelExportWizardTDJUnit";
+ }
+
+
+ /**
+ * This test will send a request to the server using the greetServer method in
+ * GreetingService and verify the response.
+ */
+ public void testGreetingService() {
+ // Create the service that we will test.
+ //GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
+ //ServiceDefTarget target = (ServiceDefTarget) greetingService;
+ //target.setServiceEntryPoint(GWT.getModuleBaseURL() + "SDMXImportWizardTD/greet");
+
+ // Since RPC calls are asynchronous, we will need to wait for a response
+ // after this test method returns. This line tells the test runner to wait
+ // up to 10 seconds before timing out.
+ //delayTestFinish(10000);
+
+ // Send a request to the server.
+ /* greetingService.greetServer("GWT User", new AsyncCallback() {
+ public void onFailure(Throwable caught) {
+ // The request resulted in an unexpected error.
+ fail("Request failure: " + caught.getMessage());
+ }
+
+
+ public void onSuccess(String result) {
+ // Verify that the response is correct.
+ assertTrue(result.startsWith("Hello, GWT User!"));
+
+ // Now that we have received a response, we need to tell the test runner
+ // that the test is complete. You must call finishTest() after an
+ // asynchronous test finishes successfully, or the test will time out.
+ finishTest();
+ }
+ });*/
+
+ }
+
+
+}
diff --git a/src/test/resources/org/gcube/portlets/user/td/excelexportwidget/SDMXExportWizardTDJUnit.gwt.xml b/src/test/resources/org/gcube/portlets/user/td/excelexportwidget/SDMXExportWizardTDJUnit.gwt.xml
new file mode 100644
index 0000000..9cf5e6f
--- /dev/null
+++ b/src/test/resources/org/gcube/portlets/user/td/excelexportwidget/SDMXExportWizardTDJUnit.gwt.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file