diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/ColumnMappingPanel.java b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/ColumnMappingPanel.java
index c93d8c0..db86af6 100644
--- a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/ColumnMappingPanel.java
+++ b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/ColumnMappingPanel.java
@@ -5,6 +5,7 @@ import java.util.ArrayList;
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.tr.ColumnData;
+import org.gcube.portlets.user.td.unionwizardwidget.client.properties.ColumnDataProperties;
import org.gcube.portlets.user.td.unionwizardwidget.client.utils.UtilsGXT3;
import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType;
@@ -12,31 +13,55 @@ import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
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.user.client.rpc.AsyncCallback;
+import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
import com.sencha.gxt.core.client.util.Margins;
+import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.Resizable;
import com.sencha.gxt.widget.core.client.Resizable.Dir;
+import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
+import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack;
+import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer;
+import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
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;
+/**
+ *
+ * @author "Giancarlo Panichi" email: g.panichi@isti.cnr.it
+ *
+ */
public class ColumnMappingPanel extends ContentPanel {
-
+ private static final String COMBOWIDTH = null;
protected ResourceBundle res;
protected ColumnMappingCard parent;
protected VerticalLayoutContainer vert;
-
+ protected ArrayList sourceColumns;
+ protected ArrayList unionColumns;
+ protected String itemIdSourceColumn = "itemIdSourceColumn";
+ protected String itemIdUnionColumn = "itemIdUnionColumn";
+ protected String itemIdLabelColumn = "itemIdLabelColumn";
+
+ /**
+ *
+ * @param parent
+ * @param res
+ */
public ColumnMappingPanel(ColumnMappingCard parent, ResourceBundle res) {
this.res = res;
this.parent = parent;
-
+
Log.debug("ColumnMappingPanel");
init();
- retrieveColumns();
+ retrieveSourceColumns();
}
protected void init() {
@@ -46,17 +71,14 @@ public class ColumnMappingPanel extends ContentPanel {
}
protected void create() {
-
- //itemIdSourceValueArg = "SourceArg" + selectedColumn.getName();
- //itemIdTargetValueArg = "TargetArg" + selectedColumn.getName();
SimpleContainer container = new SimpleContainer();
-
+
vert = new VerticalLayoutContainer();
vert.setScrollMode(ScrollMode.AUTO);
vert.setAdjustForScroll(true);
- //setColumnMappingData();
+ // setColumnMappingData();
container.add(vert);
container.forceLayout();
@@ -70,11 +92,11 @@ public class ColumnMappingPanel extends ContentPanel {
add(vPanel);
forceLayout();
-
+
}
- private void retrieveColumns() {
- TRId trId=parent.unionSession.getTrId();
+ private void retrieveSourceColumns() {
+ TRId trId = parent.unionSession.getTrId();
TDGWTServiceAsync.INSTANCE.getColumns(trId,
new AsyncCallback>() {
@@ -86,15 +108,49 @@ public class ColumnMappingPanel extends ContentPanel {
new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
} else {
- Log.debug("Error retrieving columns: "
+ Log.debug("Error retrieving source columns: "
+ caught.getLocalizedMessage());
- UtilsGXT3.alert("Error retrieving columns",
- "Error retrieving columns on server!");
+ UtilsGXT3
+ .alert("Error retrieving source columns",
+ "Error retrieving source columns on server!");
}
}
@Override
public void onSuccess(ArrayList result) {
+ sourceColumns = result;
+ retrieveUnionColumns();
+
+ }
+ });
+
+ }
+
+ private void retrieveUnionColumns() {
+ TRId trId = parent.unionSession.getUnionTabularResource().getTrId();
+ TDGWTServiceAsync.INSTANCE.getColumns(trId,
+ new AsyncCallback>() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (caught instanceof TDGWTSessionExpiredException) {
+ parent.getEventBus()
+ .fireEvent(
+ new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.debug("Error retrieving union columns: "
+ + caught.getLocalizedMessage());
+ UtilsGXT3
+ .alert("Error retrieving union columns",
+ "Error retrieving union columns on server!");
+ }
+ }
+
+ @Override
+ public void onSuccess(ArrayList result) {
+ unionColumns = result;
+ create();
/*
* comboColumnReferenceType.reset();
* storeComboColumnReferenceType.clear();
@@ -108,4 +164,88 @@ public class ColumnMappingPanel extends ContentPanel {
}
+ protected void setColumnMappingData() {
+
+ final HBoxLayoutContainer horiz = new HBoxLayoutContainer();
+
+ // Source Combo
+ ColumnDataProperties propsSourceColumn = GWT
+ .create(ColumnDataProperties.class);
+ ListStore storeComboSourceColumn = new ListStore(
+ propsSourceColumn.id());
+
+ final ComboBox comboSourceColumn = new ComboBox(
+ storeComboSourceColumn, propsSourceColumn.label());
+ comboSourceColumn.setItemId(itemIdSourceColumn);
+
+ Log.debug("ComboSourceColumn created");
+
+ comboSourceColumn.setEmptyText("Select a column...");
+ comboSourceColumn.setWidth(COMBOWIDTH);
+ comboSourceColumn.setEditable(false);
+ comboSourceColumn.setTriggerAction(TriggerAction.ALL);
+
+ //Union Combo
+ ColumnDataProperties propsUnionColumn = GWT
+ .create(ColumnDataProperties.class);
+ ListStore storeComboUnionColumn = new ListStore(
+ propsUnionColumn.id());
+
+ final ComboBox comboUnionColumn = new ComboBox(
+ storeComboUnionColumn, propsUnionColumn.label());
+ comboUnionColumn.setItemId(itemIdUnionColumn);
+
+ Log.debug("ComboUnionColumn created");
+
+ comboUnionColumn.setEmptyText("Select a column...");
+ comboUnionColumn.setWidth(COMBOWIDTH);
+ comboUnionColumn.setEditable(false);
+ comboUnionColumn.setTriggerAction(TriggerAction.ALL);
+ /*
+ final IconButton btnAdd = new IconButton();
+ btnAdd.setItemId(itemIdBtnAdd);
+ btnAdd.setIcon(ResourceBundle.INSTANCE.add());
+ btnAdd.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ Log.debug("Clicked btnAdd");
+ addColumnMappingData();
+ thisPanel.forceLayout();
+ vert.forceLayout();
+
+ }
+ });
+ btnAdd.setVisible(true);
+
+ final IconButton btnDel = new IconButton();
+ btnDel.setItemId(itemIdBtnDel);
+ btnDel.setIcon(ResourceBundle.INSTANCE.delete());
+ btnDel.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ Log.debug("Clicked btnDel");
+ vert.remove(horiz);
+ if (vert.getWidgetCount() == 0) {
+ setColumnMappingData();
+ } else {
+
+ }
+ thisPanel.forceLayout();
+ vert.forceLayout();
+
+ }
+ });
+ btnDel.setVisible(false);
+ */
+ horiz.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
+ horiz.setPack(BoxLayoutPack.START);
+
+ horiz.add(comboSourceColumn, new BoxLayoutData(new Margins(2, 1, 2, 1)));
+ horiz.add(comboUnionColumn, new BoxLayoutData(new Margins(2, 1, 2, 1)));
+ /*horiz.add(btnAdd, new BoxLayoutData(new Margins(2, 1, 2, 1)));
+ horiz.add(btnDel, new BoxLayoutData(new Margins(2, 1, 2, 1)));*/
+
+ vert.add(horiz);
+ }
+
}
diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/grid/ColumnDataGridPanel.java b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/grid/ColumnDataGridPanel.java
deleted file mode 100644
index 40e4244..0000000
--- a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/grid/ColumnDataGridPanel.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package org.gcube.portlets.user.td.unionwizardwidget.client.grid;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
-import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
-import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
-
-import com.allen_sauer.gwt.log.client.Log;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.event.logical.shared.HasSelectionHandlers;
-import com.google.gwt.event.logical.shared.SelectionHandler;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.sencha.gxt.core.client.IdentityValueProvider;
-import com.sencha.gxt.core.client.Style.SelectionMode;
-import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
-import com.sencha.gxt.core.client.util.Margins;
-import com.sencha.gxt.data.client.loader.RpcProxy;
-import com.sencha.gxt.data.shared.ListStore;
-import com.sencha.gxt.data.shared.loader.ListLoadConfig;
-import com.sencha.gxt.data.shared.loader.ListLoadResult;
-import com.sencha.gxt.data.shared.loader.ListLoadResultBean;
-import com.sencha.gxt.data.shared.loader.ListLoader;
-import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding;
-import com.sencha.gxt.widget.core.client.ContentPanel;
-import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
-import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
-import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel;
-import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
-import com.sencha.gxt.widget.core.client.grid.ColumnModel;
-import com.sencha.gxt.widget.core.client.grid.Grid;
-
-public class ColumnDataGridPanel extends ContentPanel implements
- HasSelectionHandlers {
- protected static final int GRIDHEIGHT = 360;
-
- protected static final ColumnDataProperties props = GWT
- .create(ColumnDataProperties.class);
-
- protected final CheckBoxSelectionModel sm;
-
- protected final Grid grid;
- protected TRId trId;
-
- public ColumnDataGridPanel(TRId trId) {
- Log.debug("ColumnDataGridPanel");
- if(trId==null){
- Log.error("ColumnDataGridPanel: TRId is null");
- }
- Log.debug("ColumnDataGridPanel: "+trId.toString());
- this.trId=trId;
- setHeaderVisible(false);
- //setHeadingText("Columns");
-
- ColumnConfig labelCol = new ColumnConfig(
- props.label(), 120,"Column");
-
- IdentityValueProvider identity = new IdentityValueProvider();
-
- sm = new CheckBoxSelectionModel(identity);
-
- List> l = new ArrayList>();
-
- l.add(labelCol);
- ColumnModel cm = new ColumnModel(l);
-
- ListStore store = new ListStore(props.id());
-
- RpcProxy> proxy = new RpcProxy>() {
-
- public void load(ListLoadConfig loadConfig,
- final AsyncCallback> callback) {
- loadData(loadConfig, callback);
- }
- };
- final ListLoader> loader = new ListLoader>(
- proxy);
-
- loader.setRemoteSort(false);
- loader.addLoadHandler(new LoadResultListStoreBinding>(
- store) {
- });
-
- grid = new Grid(store, cm) {
- @Override
- protected void onAfterFirstAttach() {
- super.onAfterFirstAttach();
- Scheduler.get().scheduleDeferred(new ScheduledCommand() {
-
- public void execute() {
- loader.load();
- }
- });
- }
- };
-
- sm.setSelectionMode(SelectionMode.SINGLE);
- grid.setLoader(loader);
- grid.setSelectionModel(sm);
- grid.setHeight(GRIDHEIGHT);
- grid.getView().setStripeRows(true);
- grid.getView().setColumnLines(true);
- grid.getView().setAutoFill(true);
- grid.setBorders(false);
- grid.setLoadMask(true);
- grid.setColumnReordering(true);
-
- VerticalLayoutContainer con = new VerticalLayoutContainer();
- con.setScrollMode(ScrollMode.AUTO);
- con.add(grid, new VerticalLayoutData(-1, -1, new Margins(0)));
- setWidget(con);
-
- }
-
- public Grid getGrid() {
- return grid;
- }
-
- protected void loadData(ListLoadConfig loadConfig,
- final AsyncCallback> callback) {
- TDGWTServiceAsync.INSTANCE
- .getColumns(trId, new AsyncCallback>() {
-
- public void onFailure(Throwable caught) {
- Log.error("No load columns: "
- + caught.getLocalizedMessage());
- callback.onFailure(caught);
- }
-
- public void onSuccess(ArrayList result) {
- Log.trace("loaded " + result.size() + " columns");
- callback.onSuccess(new ListLoadResultBean(
- result));
- sm.selectAll();
- forceLayout();
- }
- });
- }
-
-
-
- public ColumnData getSelectedItem() {
- return grid.getSelectionModel().getSelectedItem();
-
- }
-
- public HandlerRegistration addSelectionHandler(
- SelectionHandler handler) {
- return grid.getSelectionModel().addSelectionHandler(handler);
- }
-
-}
diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/grid/ColumnDataProperties.java b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/grid/ColumnDataProperties.java
deleted file mode 100644
index 2c86c30..0000000
--- a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/grid/ColumnDataProperties.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.gcube.portlets.user.td.unionwizardwidget.client.grid;
-
-import org.gcube.portlets.user.td.gwtservice.shared.tr.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;
-
-public interface ColumnDataProperties extends PropertyAccess {
-
- @Path("id")
- ModelKeyProvider id();
-
- ValueProvider label();
-
- // ValueProvider typeName();
-
- // ValueProvider typeCode();
-
-}
diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/properties/ColumnDataProperties.java b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/properties/ColumnDataProperties.java
new file mode 100644
index 0000000..b0d059d
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/properties/ColumnDataProperties.java
@@ -0,0 +1,25 @@
+package org.gcube.portlets.user.td.unionwizardwidget.client.properties;
+
+import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
+
+import com.google.gwt.editor.client.Editor.Path;
+import com.sencha.gxt.data.shared.LabelProvider;
+import com.sencha.gxt.data.shared.ModelKeyProvider;
+import com.sencha.gxt.data.shared.PropertyAccess;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public interface ColumnDataProperties extends
+ PropertyAccess {
+
+ @Path("id")
+ ModelKeyProvider id();
+
+ LabelProvider label();
+
+
+}
\ No newline at end of file