event) {
+ exportSession.setAgency(agenciesSelectionPanel.getSelectedItem());
+ getWizardWindow().setEnableNextButton(true);
+
+ }
+
+ });
+
+ setContent(agenciesSelectionPanel);
+
+ }
+
+
+ @Override
+ public void setup(){
+ /*Command sayNextCard = new Command() {
+
+ @Override
+ public void execute() {
+ SDMXTableDetailCard sdmxTableDetailCard = new SDMXTableDetailCard(
+ importSession);
+ 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 SDMXCodelistSelectionCard");
+ } catch (Exception e) {
+ Log.error("sayPreviousCard :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
+ getWizardWindow().setEnableNextButton(false);
+ */
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgencyTypeCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgencyTypeCard.java
new file mode 100644
index 0000000..05fb8e4
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgencyTypeCard.java
@@ -0,0 +1,121 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.Agencies;
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.SDMXExportSession;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
+import com.google.gwt.user.client.ui.HasValue;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.sencha.gxt.core.client.util.ToggleGroup;
+import com.sencha.gxt.widget.core.client.form.Radio;
+
+/**
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class SDMXAgencyTypeCard extends WizardCard {
+
+ protected final SDMXExportSession exportSession;
+
+ protected Agencies agency;
+
+ public SDMXAgencyTypeCard(final SDMXExportSession exportSession) {
+ super("SDMX agency type", "");
+
+ this.exportSession = exportSession;
+
+ agency = new Agencies();
+ //agency.setNewAgency(false);
+ exportSession.setAgency(agency);
+
+ VerticalPanel selectionPanel = new VerticalPanel();
+ selectionPanel.setStylePrimaryName(res.sdmxExportCss()
+ .getExportSelectionSources());
+
+ Radio radioSDMXAgencyPresent = new Radio();
+
+ radioSDMXAgencyPresent
+ .setBoxLabel("Agencies Present
Select from the agencies already present in the registry
");
+ radioSDMXAgencyPresent.setValue(true);
+ radioSDMXAgencyPresent.setName("present");
+ radioSDMXAgencyPresent.setStylePrimaryName(res.sdmxExportCss()
+ .getExportSelectionSource());
+
+ Radio radioSDMXAgencyNew = new Radio();
+ radioSDMXAgencyNew
+ .setBoxLabel("New Agencies
Creates a new agency in the registry
");
+ radioSDMXAgencyNew.setName("new");
+ radioSDMXAgencyNew.setStylePrimaryName(res.sdmxExportCss()
+ .getExportSelectionSource());
+
+ selectionPanel.add(radioSDMXAgencyPresent);
+ selectionPanel.add(radioSDMXAgencyNew);
+
+ // we can set name on radios or use toggle group
+ ToggleGroup toggle = new ToggleGroup();
+ toggle.add(radioSDMXAgencyPresent);
+ toggle.add(radioSDMXAgencyNew);
+
+ toggle.addValueChangeHandler(new ValueChangeHandler>() {
+
+ @Override
+ public void onValueChange(ValueChangeEvent> event) {
+ try {
+ ToggleGroup group = (ToggleGroup) event.getSource();
+ Radio radio = (Radio) group.getValue();
+ Log.info("Agency type: " + radio.getName());
+ if (radio.getName().compareTo("present") == 0) {
+ //exportSession.getAgency().setNewAgency(false);
+ } else {
+ if (radio.getName().compareTo("new") == 0) {
+ //exportSession.getAgency().setNewAgency(true);
+ } else {
+
+ }
+
+ }
+ } catch (Exception e) {
+ Log.error("ToggleGroup: onValueChange "
+ + e.getLocalizedMessage());
+ }
+
+ }
+ });
+
+ setContent(selectionPanel);
+
+ }
+
+ @Override
+ public void setup() {
+ /*Log.info("Agency New: "+exportSession.getAgency().isNewAgency());
+ if (exportSession.getAgency().isNewAgency()) {
+ } else {
+ Command sayNextCard = new Command() {
+ public void execute() {
+ try {
+ SDMXAgenciesSelectionCard sdmxAgenciesSelectionCard = new SDMXAgenciesSelectionCard(
+ exportSession);
+ getWizardWindow().addCard(sdmxAgenciesSelectionCard);
+ Log.info("NextCard SDMXAgenciesSelectionCard");
+ getWizardWindow().nextCard();
+ } catch (Exception e) {
+ Log.error("sayNextCard :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setNextButtonCommand(sayNextCard);
+
+ }*/
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXCodelistSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXCodelistSelectionCard.java
new file mode 100644
index 0000000..4861008
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXCodelistSelectionCard.java
@@ -0,0 +1,87 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.Codelist;
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.SDMXExportSession;
+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;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public class SDMXCodelistSelectionCard extends WizardCard {
+
+ protected SDMXCodelistSelectionCard thisCard;
+ protected SDMXExportSession importSession;
+ protected CodelistSelectionPanel codelistSelectionPanel;
+ protected Codelist selectedCodelist=null;
+ public SDMXCodelistSelectionCard(final SDMXExportSession importSession) {
+ super("SDMX Codelist selection", "");
+
+ this.importSession = importSession;
+ thisCard=this;
+
+ this.codelistSelectionPanel=new CodelistSelectionPanel(res);
+
+ codelistSelectionPanel.addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(SelectionEvent event) {
+ importSession.setSelectedCodelist(codelistSelectionPanel.getSelectedItem());
+ getWizardWindow().setEnableNextButton(true);
+ }
+
+
+ });
+
+ setContent(codelistSelectionPanel);
+
+ }
+
+
+ @Override
+ public void setup(){
+ Command sayNextCard = new Command() {
+
+ @Override
+ public void execute() {
+ SDMXTableDetailCard sdmxTableDetailCard = new SDMXTableDetailCard(
+ importSession);
+ 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 SDMXCodelistSelectionCard");
+ } catch (Exception e) {
+ Log.error("sayPreviousCard :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
+ getWizardWindow().setEnableNextButton(false);
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXDatasetSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXDatasetSelectionCard.java
new file mode 100644
index 0000000..f08a787
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXDatasetSelectionCard.java
@@ -0,0 +1,56 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.SDMXExportSession;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.Command;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public class SDMXDatasetSelectionCard extends WizardCard {
+
+ protected SDMXDatasetSelectionCard thisCard;
+ protected SDMXExportSession importSession;
+ protected DatasetSelectionPanel datasetSelectionPanel;
+
+ public SDMXDatasetSelectionCard(final SDMXExportSession importSession) {
+ super("SDMX Dataset selection", "");
+
+ this.importSession = importSession;
+
+ thisCard=this;
+
+ this.datasetSelectionPanel=new DatasetSelectionPanel();
+
+ setContent(datasetSelectionPanel);
+
+ }
+
+
+ @Override
+ public void setup(){
+ Command sayPreviousCard = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().previousCard();
+ getWizardWindow().removeCard(thisCard);
+ Log.info("Remove SDMXDatasetSelectionCard");
+
+ } catch (Exception e) {
+ Log.error("sayPreviousCard :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTD.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTD.java
new file mode 100644
index 0000000..84022c9
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTD.java
@@ -0,0 +1,62 @@
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import org.gcube.portlets.user.td.sdmxexportwidget.client.rpc.SDMXExportWizardServiceAsync;
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.SDMXExportSession;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardWindow;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ * Entry point classes define onModuleLoad()
.
+ *
+ */
+public class SDMXExportWizardTD extends WizardWindow {
+
+ protected SDMXExportSession exportSession;
+
+
+ /**
+ * The id of the {@link CSVTarget} to use.
+ * @param targetId
+ */
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public SDMXExportWizardTD(String title) {
+ super(title);
+ setWidth(550);
+ setHeight(520);
+
+ exportSession= new SDMXExportSession();
+
+ SDMXExportWizardServiceAsync.INSTANCE.setSDMXSession(exportSession,new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onSuccess(Object result) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+
+ SDMXAgencyTypeCard sdmxAgencyType= new SDMXAgencyTypeCard(exportSession);
+ addCard(sdmxAgencyType);
+
+ SDMXAgenciesSelectionCard sdmxAgenciesSelection= new SDMXAgenciesSelectionCard(exportSession);
+ addCard(sdmxAgenciesSelection);
+
+
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTDEntry.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTDEntry.java
new file mode 100644
index 0000000..d3a685d
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTDEntry.java
@@ -0,0 +1,21 @@
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.core.client.EntryPoint;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public class SDMXExportWizardTDEntry implements EntryPoint {
+
+ @Override
+ public void onModuleLoad() {
+ SDMXExportWizardTD exportWizard= new SDMXExportWizardTD("SDMXExport");
+ Log.info(exportWizard.getId());
+ }
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXOperationInProgressCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXOperationInProgressCard.java
new file mode 100644
index 0000000..b566214
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXOperationInProgressCard.java
@@ -0,0 +1,160 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import org.gcube.portlets.user.td.sdmxexportwidget.client.progress.ImportProgressBarUpdater;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.progress.OperationProgressListener;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.progress.OperationProgressUpdater;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.rpc.SDMXExportWizardServiceAsync;
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.SDMXExportSession;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
+import org.gcube.portlets.user.td.gwtservice.shared.TRId;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.sencha.gxt.core.client.util.Margins;
+import com.sencha.gxt.widget.core.client.FramedPanel;
+import com.sencha.gxt.widget.core.client.ProgressBar;
+import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
+import com.sencha.gxt.widget.core.client.container.VBoxLayoutContainer;
+import com.sencha.gxt.widget.core.client.container.VBoxLayoutContainer.VBoxLayoutAlign;
+
+//import com.allen_sauer.gwt.log.client.Log;
+//import com.google.gwt.user.client.Command;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public class SDMXOperationInProgressCard extends WizardCard
+ implements OperationProgressListener {
+
+ public static final int STATUS_POLLING_DELAY = 1000;
+ protected SDMXOperationInProgressCard thisCard;
+ protected SDMXExportSession importSession;
+ protected OperationProgressUpdater progressUpdater;
+
+
+
+ public SDMXOperationInProgressCard(final SDMXExportSession importSession) {
+ super("Operation In Progress", "");
+
+ this.importSession = importSession;
+ thisCard=this;
+
+ VBoxLayoutContainer operationInProgressPanel = new VBoxLayoutContainer();
+ operationInProgressPanel.setVBoxLayoutAlign(VBoxLayoutAlign.CENTER);
+
+ final FlexTable description = new FlexTable();
+ //FlexCellFormatter cellFormatter = description.getFlexCellFormatter();
+ description.setCellSpacing(10);
+ description.setCellPadding(4);
+ description.setBorderWidth(0);
+
+
+
+ FramedPanel summary = new FramedPanel();
+ summary.setHeadingText("Import Summary");
+ summary.setWidth(400);
+ summary.add(description);
+ operationInProgressPanel.add(summary, new BoxLayoutData(new Margins(20,5,10,5)));
+
+ ProgressBar progressBar = new ProgressBar();
+ operationInProgressPanel.add(progressBar, new BoxLayoutData(new Margins(10,5,10,5)));
+
+ progressUpdater = new OperationProgressUpdater();
+ progressUpdater.addListener(new ImportProgressBarUpdater(progressBar));
+
+ progressUpdater.addListener(this);
+
+ setContent(operationInProgressPanel);
+
+ }
+
+
+
+ public void exportSDMX()
+ {
+ SDMXExportWizardServiceAsync.INSTANCE.exportSDMXClientLibraryRequest(importSession, new AsyncCallback() {
+
+ @Override
+ public void onSuccess(Void result) {
+ progressUpdater.scheduleRepeating(STATUS_POLLING_DELAY);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ showErrorAndHide("Error in exportSDMX", "An error occured in exportSDMX", "", caught);
+ }
+ });
+ }
+
+
+ @Override
+ public void setup(){
+ getWizardWindow().setEnableBackButton(false);
+ setBackButtonVisible(false);
+ setNextButtonVisible(false);
+ getWizardWindow().setEnableNextButton(false);
+ getWizardWindow().setNextButtonToFinish();
+ exportSDMX();
+ }
+
+
+
+ @Override
+ public void operationInitializing() {
+
+ }
+
+
+ @Override
+ public void operationUpdate(float elaborated) {
+
+ }
+
+ @Override
+ public void operationComplete(final TRId trId){
+ // final String tableId,final String tableResourceId) {
+
+ Command sayComplete = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().close(false);
+ Log.info("fire Complete: tabular resource "+trId.getId());
+ Log.info("fire Complete: tableId "+trId.getTableId());
+
+ getWizardWindow().fireCompleted(trId);
+
+ } catch (Exception e) {
+ Log.error("fire Complete :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setNextButtonCommand(sayComplete);
+
+ setNextButtonVisible(true);
+ getWizardWindow().setEnableNextButton(true);
+ }
+
+
+ @Override
+ public void operationFailed(Throwable caught, String reason,
+ String failureDetails) {
+
+
+ }
+
+
+
+
+
+
+
+}
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
new file mode 100644
index 0000000..e2f39b4
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java
@@ -0,0 +1,317 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import java.util.List;
+
+import org.gcube.portlets.user.td.sdmxexportwidget.client.rpc.SDMXExportWizardServiceAsync;
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.Agencies;
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.SDMXExportSession;
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.TableDetail;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.logical.shared.SelectionEvent;
+import com.google.gwt.event.logical.shared.SelectionHandler;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.HasValue;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
+import com.sencha.gxt.core.client.util.ToggleGroup;
+import com.sencha.gxt.data.client.loader.RpcProxy;
+import com.sencha.gxt.data.shared.LabelProvider;
+import com.sencha.gxt.data.shared.ListStore;
+import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding;
+import com.sencha.gxt.data.shared.loader.PagingLoadConfig;
+import com.sencha.gxt.data.shared.loader.PagingLoadResult;
+import com.sencha.gxt.data.shared.loader.PagingLoadResultBean;
+import com.sencha.gxt.data.shared.loader.PagingLoader;
+import com.sencha.gxt.widget.core.client.FramedPanel;
+import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
+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.form.FieldSet;
+import com.sencha.gxt.widget.core.client.form.Radio;
+import com.sencha.gxt.widget.core.client.form.TextArea;
+import com.sencha.gxt.widget.core.client.form.TextField;
+import com.sencha.gxt.widget.core.client.info.Info;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public class SDMXTableDetailCard extends WizardCard {
+
+ protected SDMXExportSession importSession;
+ protected SDMXTableDetailCard thisCard;
+
+ protected static final AgenciesProperties agenciesProperties = GWT.create(AgenciesProperties.class);
+ protected VerticalLayoutContainer p = new VerticalLayoutContainer();
+ //private final ComboBox combo2;
+ protected VerticalPanel tableDetailPanel;
+
+ //private static TextField agencyName=null;
+
+ protected TextField name;
+ protected TextArea description;
+ protected TextField right;
+ protected ComboBox combo=null;
+
+ TableDetail detail=new TableDetail();
+
+
+
+ public SDMXTableDetailCard(final SDMXExportSession importSession) {
+ super("SDMX Table Detail", "");
+
+ this.importSession = importSession;
+ thisCard=this;
+
+
+ tableDetailPanel = new VerticalPanel();
+
+ tableDetailPanel.setSpacing(4);
+ tableDetailPanel.setWidth("100%");
+ tableDetailPanel.setHeight("100%");
+
+
+ FramedPanel form2 = new FramedPanel();
+ form2.setHeadingText("Details");
+ //form2.setWidth(350);
+
+ FieldSet fieldSet = new FieldSet();
+ fieldSet.setHeadingText("Information");
+ fieldSet.setCollapsible(true);
+ form2.add(fieldSet);
+
+ //VerticalLayoutContainer p = new VerticalLayoutContainer();
+ fieldSet.add(p);
+
+ name = new TextField();
+ name.setAllowBlank(false);
+ name.setEmptyText("Enter a name...");
+ name.setValue(importSession.getSelectedCodelist().getName());
+ p.add(new FieldLabel(name, "Name"), new VerticalLayoutData(1, -1));
+
+
+ description = new TextArea();
+ description.setAllowBlank(false);
+ description.setEmptyText("Enter a description...");
+ description.setValue(importSession.getSelectedCodelist().getDescription());
+ p.add(new FieldLabel(description, "Description"), new VerticalLayoutData(1, -1));
+
+ right = new TextField();
+ right.setEmptyText("Enter right...");
+ right.setAllowBlank(false);
+ p.add(new FieldLabel(right, "Right"), new VerticalLayoutData(1, -1));
+
+
+ ListStore agenciesStore = new ListStore(agenciesProperties.key());
+
+ RpcProxy> proxy = new RpcProxy>() {
+
+
+ public void load(PagingLoadConfig loadConfig, final AsyncCallback> callback) {
+ loadData(loadConfig, callback);
+ }
+ };
+
+
+ final PagingLoader> loader = new PagingLoader>(proxy);
+
+ loader.setRemoteSort(false);
+ loader.addLoadHandler(new LoadResultListStoreBinding>(agenciesStore));
+
+ //agenciesStore.addAll(TestData.getStates());
+
+ combo = new ComboBox(agenciesStore, agenciesProperties.nameLabel());
+ addHandlersForEventObservation(combo, agenciesProperties.nameLabel());
+
+ combo.setLoader(loader);
+ combo.setEmptyText("Enter Agency...");
+ combo.setTriggerAction(TriggerAction.ALL);
+ combo.setAllowBlank(false);
+ combo.setForceSelection(true);
+ combo.setVisible(true);
+
+
+
+ //HorizontalLayoutContainer agenciesSelect= selectAgencies();
+ p.add(new FieldLabel(combo, "Agencies"), new VerticalLayoutData(1, -1));
+
+ /*FieldLabel comboLabel=new FieldLabel(combo, "");
+ comboLabel.setLabelSeparator("");
+ p.add(comboLabel, new VerticalLayoutData(1, -1));
+
+
+ agencyName = new TextField();
+ agencyName.setVisible(false);
+ agencyName.setEmptyText("Enter Agency...");
+ FieldLabel agencyNameLabel=new FieldLabel(agencyName, "");
+ agencyNameLabel.setLabelSeparator("");
+ p.add(agencyNameLabel, new VerticalLayoutData(1, -1));
+ */
+ tableDetailPanel.add(form2);
+
+ setContent(tableDetailPanel);
+
+ }
+
+
+ protected void loadData(PagingLoadConfig loadConfig, final AsyncCallback> callback) {
+ SDMXExportWizardServiceAsync.INSTANCE.getAgencies(new AsyncCallback>() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ callback.onFailure(caught);
+ }
+
+ @Override
+ public void onSuccess(List result) {
+ Log.trace("loaded "+result.size()+" agencies");
+ for(int i=0; i(result, result.size(), 0));
+ }
+ });
+ }
+
+ /**
+ * Helper to add handlers to observe events that occur on each combobox
+ */
+ private void addHandlersForEventObservation(final ComboBox combo, final LabelProvider labelProvider) {
+ combo.addValueChangeHandler(new ValueChangeHandler() {
+ @Override
+ public void onValueChange(ValueChangeEvent event) {
+
+ Info.display("Value Changed", "New value: "
+ + (event.getValue() == null ? combo.getValue() : labelProvider.getLabel(event.getValue()) + "!"));
+ }
+ });
+ combo.addSelectionHandler(new SelectionHandler() {
+ @Override
+ public void onSelection(SelectionEvent event) {
+ Info.display("Agency Selected", "You selected "
+ + (event.getSelectedItem() == null ? combo.getValue() : labelProvider.getLabel(event.getSelectedItem()) + "!"));
+ }
+ });
+ }
+
+ @Override
+ public void setup(){
+ Command sayNextCard = new Command() {
+
+ @Override
+ public void execute() {
+ detail.setName(name.getCurrentValue());
+ detail.setAgency(combo.getSelectedText());
+ detail.setDescription(description.getCurrentValue());
+ detail.setRight(right.getCurrentValue());
+
+ importSession.setTableDetail(detail);
+ SDMXOperationInProgressCard sdmxOperationInProgressCard = new SDMXOperationInProgressCard(
+ importSession);
+ getWizardWindow()
+ .addCard(sdmxOperationInProgressCard);
+ Log.info("NextCard SDMXOperationInProgressCard");
+ getWizardWindow().nextCard();
+
+ }
+
+ };
+
+ getWizardWindow().setNextButtonCommand(sayNextCard);
+
+
+ Command sayPreviousCard = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().previousCard();
+ getWizardWindow().removeCard(thisCard);
+ Log.info("Remove SDMXTableDetailCard");
+ } catch (Exception e) {
+ Log.error("sayPreviousCard :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
+ getWizardWindow().setEnableNextButton(true);
+
+ }
+
+
+
+ private HorizontalLayoutContainer selectAgencies(){
+
+
+
+ HorizontalLayoutContainer documentSelectionPanel = new HorizontalLayoutContainer();
+
+ Radio radioAgenciesAlready = new Radio();
+
+ radioAgenciesAlready.setBoxLabel("Present");
+ radioAgenciesAlready.setValue(true);
+ radioAgenciesAlready.setName("Agencies");
+
+ Radio radioAgencyNew = new Radio();
+ radioAgencyNew.setBoxLabel("New");
+ radioAgencyNew.setName("AgencyNew");
+
+
+ documentSelectionPanel.add(radioAgenciesAlready);
+ documentSelectionPanel.add(radioAgencyNew);
+
+
+ // we can set name on radios or use toggle group
+ ToggleGroup toggle = new ToggleGroup();
+ toggle.add(radioAgenciesAlready);
+ toggle.add(radioAgencyNew);
+
+ toggle.addValueChangeHandler(new ValueChangeHandler>() {
+
+ @Override
+ public void onValueChange(ValueChangeEvent> event) {
+ try {
+ ToggleGroup group = (ToggleGroup) event.getSource();
+ Radio radio = (Radio) group.getValue();
+ Log.info("Document Selected:" + radio.getName());
+ if (radio.getName().compareTo("AgencyNew") == 0) {
+ /*agencyName.setVisible(true);
+ combo.setVisible(false);
+ */
+ } else {
+ if (radio.getName().compareTo("Agency") == 0) {
+ /*agencyName.setVisible(false);
+ combo.setVisible(true);
+ */
+ } else {
+
+ }
+
+ }
+
+ } catch (Exception e) {
+ Log.error("ToggleGroup: onValueChange " + e.getLocalizedMessage());
+ }
+
+ }
+ });
+
+ return documentSelectionPanel;
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/ImportProgressBarUpdater.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/ImportProgressBarUpdater.java
new file mode 100644
index 0000000..fae2ab1
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/ImportProgressBarUpdater.java
@@ -0,0 +1,87 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client.progress;
+
+
+
+
+import org.gcube.portlets.user.td.gxtservice.shared.TRId;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.sencha.gxt.widget.core.client.ProgressBar;
+
+/**
+ * Updates a {@link ProgressBar} progress and text based on {@link OperationProgressListener} events.
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public class ImportProgressBarUpdater implements OperationProgressListener {
+
+ protected ProgressBar progressBar;
+ //protected FramedPanel operationResult;
+ //protected WizardWindow wizardWindow;
+ /**
+ * Creates a new {@link ProgressBar} updater.
+ * @param progressBar the {@link ProgressBar} to update.
+ */
+ public ImportProgressBarUpdater(ProgressBar progressBar) {
+ this.progressBar = progressBar;
+ //this.wizardWindow = w;
+ //this.operationResult = operationResult;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void operationComplete(TRId trId) {// TODO Auto-generated method stub
+ Log.info("Import complete");
+ progressBar.updateProgress(1, "Import complete.");
+ /*final FlexTable descriptionResult = new FlexTable();
+ descriptionResult.setCellSpacing(10);
+ descriptionResult.setCellPadding(4);
+ descriptionResult.setBorderWidth(0);
+ descriptionResult.setText(0, 0, "Result: ");
+ descriptionResult.setText(0, 1, "Import complete");
+
+ operationResult.add(descriptionResult);
+ operationResult.setVisible(true);
+ */
+ //wizardWindow.setEnableNextButton(true);
+
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void operationFailed(Throwable caught, String reason, String failureDetails) {
+ Log.info("Import failed");
+ progressBar.updateText("Import failed.");
+ }
+
+ @Override
+ public void operationInitializing() {
+ Log.info("Inport inizializing");
+ progressBar.updateProgress(0, "initializing...");
+ }
+
+ @Override
+ public void operationUpdate(float elaborated) {
+ Log.info("Import elaborated: "+elaborated);
+ if (elaborated == 0) progressBar.updateProgress(0, "initializing...");
+ if (elaborated>0 && elaborated<1) {
+ Log.trace("progress "+elaborated);
+ int elab=new Float(elaborated*100).intValue();
+ progressBar.updateProgress(elaborated,elab+"% importing...");
+ }
+ if (elaborated == 1) progressBar.updateProgress(1, "completing...");
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/OperationProgressListener.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/OperationProgressListener.java
new file mode 100644
index 0000000..e7b119f
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/OperationProgressListener.java
@@ -0,0 +1,42 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client.progress;
+
+import org.gcube.portlets.user.td.gxtservice.shared.TRId;
+
+
+
+/**
+ * Defines a listener for operation progress.
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public interface OperationProgressListener {
+
+ /**
+ * Called when the operation is starting.
+ */
+ public void operationInitializing();
+
+ /**
+ * Called when there is a progress for the operation.
+ * @param elaborated the elaborated part.
+ */
+ public void operationUpdate(float elaborated);
+
+
+ /**
+ * Called when the operation is complete.
+ */
+ public void operationComplete(TRId trId);
+
+ /**
+ * Called when the operation is failed.
+ * @param caught the failure exception.
+ * @param reason the failure reason.
+ */
+ public void operationFailed(Throwable caught, String reason, String failureDetails);
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/OperationProgressUpdater.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/OperationProgressUpdater.java
new file mode 100644
index 0000000..846e27e
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/progress/OperationProgressUpdater.java
@@ -0,0 +1,131 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client.progress;
+
+import java.util.ArrayList;
+
+import org.gcube.portlets.user.td.gxtservice.shared.TRId;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.rpc.SDMXExportWizardServiceAsync;
+import org.gcube.portlets.user.td.sdmxexportwidget.shared.ExportMonitor;
+
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+/**
+ * This {@link Timer} retrieves {@link OperationProgress} from the specified {@link OperationProgressSource} with the scheduled interval.
+ * The retrieved information are spread to the subscribed {@link OperationProgressListener}.
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public class OperationProgressUpdater extends Timer {
+
+ protected ArrayList listeners = new ArrayList();
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void run() {
+ Log.debug("requesting operation progress");
+ SDMXExportWizardServiceAsync.INSTANCE.getExportMonitor(new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ cancel();
+ Log.error("Error retrieving the operation state", caught);
+ String message = getStack(caught);
+ fireOperationFailed(caught, "Failed getting operation updates", message);
+ }
+
+ @Override
+ public void onSuccess(ExportMonitor result) {
+ Log.info("retrieved ImportMonitor: "+result.getStatus());
+ switch (result.getStatus()) {
+ case WAITING:
+ break;
+ case INITIALIZING:
+ fireOperationInitializing();
+ break;
+ case IN_PROGRESS:
+ fireOperationUpdate(result.getProgress());
+ break;
+ case FAILED:
+ cancel();
+ fireOperationFailed(result.getError(),"Failed Client Library Import", result.getStatusDescription());
+ break;
+ case SUCCEDED:
+ cancel();
+ Log.info("Import fisnish TableId :"+result.getTrId());
+ fireOperationComplete(result.getTrId());
+ break;
+ case ABORTED:
+ cancel();
+ break;
+ default:
+ break;
+ }
+
+ }
+
+
+
+
+
+ });
+
+
+
+ }
+
+ protected String getStack(Throwable e)
+ {
+ String message = e.getLocalizedMessage()+" ->
";
+ Throwable c = e.getCause();
+ if (c!=null) message += getStack(c);
+ return message;
+ }
+
+ protected void fireOperationInitializing()
+ {
+ for (OperationProgressListener listener:listeners) listener.operationInitializing();
+ }
+
+ protected void fireOperationUpdate(float elaborated)
+ {
+ for (OperationProgressListener listener:listeners) listener.operationUpdate(elaborated);
+ }
+
+ protected void fireOperationComplete(TRId trId)
+ {
+ for (OperationProgressListener listener:listeners) listener.operationComplete(trId);
+ }
+
+ protected void fireOperationFailed(Throwable caught, String failure, String failureDetails)
+ {
+ for (OperationProgressListener listener:listeners) listener.operationFailed(caught, failure, failureDetails);
+ }
+
+ /**
+ * Add a new {@link OperationProgressListener} to this {@link OperationProgressUpdater}.
+ * @param listener the listener to add.
+ */
+ public void addListener(OperationProgressListener listener)
+ {
+ listeners.add(listener);
+ }
+
+ /**
+ * Removes the specified {@link OperationProgressListener} from this {@link OperationProgressUpdater}.
+ * @param listener the listener to remove.
+ */
+ public void removeListener(OperationProgressListener listener)
+ {
+ listeners.remove(listener);
+ }
+}