diff --git a/pom.xml b/pom.xml index 5aee022..b31dfaa 100644 --- a/pom.xml +++ b/pom.xml @@ -107,8 +107,8 @@ 3.0.1 - - + + org.gcube.portlets.user @@ -125,6 +125,14 @@ provided + + + org.gcube.portlets.user + tabular-data-column-widget + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + provided + + com.allen-sauer.gwt.log diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/TableWidget.gwt.xml b/src/main/java/org/gcube/portlets/user/td/tablewidget/TableWidget.gwt.xml index 9c71f19..be625d0 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/TableWidget.gwt.xml +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/TableWidget.gwt.xml @@ -18,7 +18,7 @@ - + diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/EditRowPanel.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/EditRowPanel.java index 1a23b2d..930946f 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/EditRowPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/EditRowPanel.java @@ -2,27 +2,49 @@ package org.gcube.portlets.user.td.tablewidget.client.rows; import java.util.ArrayList; +import org.gcube.portlets.user.td.columnwidget.client.dimension.CodelistSelectionDialog; +import org.gcube.portlets.user.td.columnwidget.client.dimension.CodelistSelectionListener; +import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataPropertiesCombo; +import org.gcube.portlets.user.td.columnwidget.client.properties.TabResourceProperties; 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.gwtservice.shared.tr.TabResource; import org.gcube.portlets.user.td.tablewidget.client.resources.ResourceBundle; import org.gcube.portlets.user.td.tablewidget.client.util.UtilsGXT3; import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnDataType; +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode; 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.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.web.bindery.event.shared.EventBus; import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; +import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction; import com.sencha.gxt.core.client.util.Margins; +import com.sencha.gxt.data.shared.ListStore; import com.sencha.gxt.widget.core.client.FramedPanel; import com.sencha.gxt.widget.core.client.button.TextButton; -import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer; -import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; 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.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.event.TriggerClickEvent; +import com.sencha.gxt.widget.core.client.event.TriggerClickEvent.TriggerClickHandler; +import com.sencha.gxt.widget.core.client.form.ComboBox; +import com.sencha.gxt.widget.core.client.form.DateField; +import com.sencha.gxt.widget.core.client.form.FieldLabel; +import com.sencha.gxt.widget.core.client.form.Radio; +import com.sencha.gxt.widget.core.client.form.TextField; /** * @@ -63,6 +85,8 @@ public class EditRowPanel extends FramedPanel { } protected void create() { + VerticalLayoutContainer v = new VerticalLayoutContainer(); + btnSave = new TextButton("Save"); btnSave.setIcon(ResourceBundle.INSTANCE.save()); btnSave.setIconAlign(IconAlign.RIGHT); @@ -96,8 +120,13 @@ public class EditRowPanel extends FramedPanel { flowButton.add(btnSave, new BoxLayoutData(new Margins(2, 4, 2, 4))); flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4))); - VerticalLayoutContainer v = new VerticalLayoutContainer(); - // v.add(toolBarHead, new VerticalLayoutData(1, -1, new Margins(0))); + ArrayList fields=generateFields(); + for(FieldLabel fl:fields){ + v.add(fl, new VerticalLayoutData(1, -1, + new Margins(1))); + + } + v.add(flowButton, new VerticalLayoutData(-1, 36, new Margins(5, 2, 5, 2))); add(v); @@ -119,6 +148,7 @@ public class EditRowPanel extends FramedPanel { public void onSuccess(ArrayList result) { Log.trace("loaded " + result.size() + " ColumnData"); columns = result; + create(); } }); @@ -129,5 +159,206 @@ public class EditRowPanel extends FramedPanel { protected void close() { } + + + protected ArrayList generateFields(){ + ArrayList fields=new ArrayList(); + + for(ColumnData col:columns){ + if(col.getTypeCode().compareTo(ColumnTypeCode.DIMENSION.toString())==0|| + col.getTypeCode().compareTo(ColumnTypeCode.TIMEDIMENSION.toString())==0) + { + //Dimension Reference + ColumnDataPropertiesCombo propsColumnReferenceType = GWT + .create(ColumnDataPropertiesCombo.class); + final ListStore storeComboColumnReferenceType = new ListStore( + propsColumnReferenceType.id()); + + final ComboBox comboColumnReferenceType = new ComboBox( + storeComboColumnReferenceType, propsColumnReferenceType.label()); + Log.trace("ComboColumnReferenceType created"); + + comboColumnReferenceType + .addSelectionHandler(new SelectionHandler() { + public void onSelection(SelectionEvent event) { + Log.debug("ComboColumnReferenceType selected: " + + event.getSelectedItem()); + + } + + }); + + comboColumnReferenceType.setEmptyText("Select a Column Reference..."); + comboColumnReferenceType.setWidth(191); + comboColumnReferenceType.setEditable(false); + comboColumnReferenceType.setTriggerAction(TriggerAction.ALL); + + + //Dimension + TabResourceProperties propsDimensionType = GWT + .create(TabResourceProperties.class); + ListStore storeComboDimensionType = new ListStore( + propsDimensionType.id()); + + + final ComboBox comboDimension = new ComboBox(storeComboDimensionType, + propsDimensionType.label()); + Log.trace("ComboDimensionType created"); + + comboDimension.addTriggerClickHandler(new TriggerClickHandler() { + + @Override + public void onTriggerClick(TriggerClickEvent event) { + Log.debug("ComboDimension TriggerClickEvent"); + CodelistSelectionDialog dialogCodelistSelection = new CodelistSelectionDialog( + eventBus); + CodelistSelectionListener codelistSelectionListener=new CodelistSelectionListener() { + + @Override + public void selected(TabResource tabResource) { + Log.debug("Selected Codelist: " + tabResource); + comboDimension.setValue(tabResource); + TDGWTServiceAsync.INSTANCE.getColumnsForDimension( + tabResource.getTrId(), + new AsyncCallback>() { + + @Override + public void onFailure(Throwable caught) { + Log.debug("Error retrieving columns: " + + caught.getLocalizedMessage()); + UtilsGXT3.alert("Error retrieving columns", + "Error retrieving columns on server!"); + + } + + @Override + public void onSuccess(ArrayList result) { + storeComboColumnReferenceType.clear(); + storeComboColumnReferenceType.addAll(result); + storeComboColumnReferenceType.commitChanges(); + + } + }); + } + + @Override + public void aborted() { + Log.debug("Select Codelist Aborted"); + + } + + @Override + public void failed(String reason, String detail) { + Log.error("Select Codelist Failed[reason: " + reason + " , detail:" + + detail + "]"); + + } + }; + + dialogCodelistSelection.addListener(codelistSelectionListener); + dialogCodelistSelection.show(); + comboDimension.collapse(); + + } + + }); + + + comboDimension.setEmptyText("Select..."); + comboDimension.setWidth(191); + comboDimension.setEditable(false); + comboDimension.setTriggerAction(TriggerAction.ALL); + + HorizontalPanel hpDimension = new HorizontalPanel(); + hpDimension.add(comboDimension); + hpDimension.add(comboColumnReferenceType); + + FieldLabel comboDimensionLabel = new FieldLabel(hpDimension, col.getLabel()); + comboDimensionLabel.setId(col.getColumnId()); + fields.add(comboDimensionLabel); + } else { + if(col.getDataTypeName().compareTo(ColumnDataType.Boolean.toString())==0){ + Radio radioTrue = new Radio(); + radioTrue.setBoxLabel("true"); + Radio radioFalse = new Radio(); + radioFalse.setBoxLabel("false"); + HorizontalPanel hp = new HorizontalPanel(); + hp.add(radioTrue); + hp.add(radioFalse); + FieldLabel booleanLabel= new FieldLabel(hp, col.getLabel()); + booleanLabel.setId(col.getColumnId()); + fields.add(booleanLabel); + } else { + if(col.getDataTypeName().compareTo(ColumnDataType.Date.toString())==0){ + DateField date = new DateField(); + FieldLabel dateLabel=new FieldLabel(date, col.getLabel()); + dateLabel.setId(col.getColumnId()); + fields.add(dateLabel); + } else { + if(col.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){ + TextField text = new TextField(); + text.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + + } + }); + FieldLabel textLabel=new FieldLabel(text, col.getLabel()); + textLabel.setId(col.getColumnId()); + fields.add(textLabel); + } else { + if(col.getDataTypeName().compareTo(ColumnDataType.Geometry.toString())==0){ + TextField geometry = new TextField(); + geometry.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + + } + }); + FieldLabel geometryLabel=new FieldLabel(geometry, col.getLabel()); + geometryLabel.setId(col.getColumnId()); + fields.add(geometryLabel); + } else { + if(col.getDataTypeName().compareTo(ColumnDataType.Integer.toString())==0){ + TextField integ = new TextField(); + + integ.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + + } + }); + FieldLabel integLabel=new FieldLabel(integ, col.getLabel()); + integLabel.setId(col.getColumnId()); + fields.add(integLabel); + } else { + if(col.getDataTypeName().compareTo(ColumnDataType.Numeric.toString())==0){ + TextField numeric = new TextField(); + numeric.setId(col.getColumnId()); + numeric.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + + } + }); + FieldLabel numericLabel=new FieldLabel(numeric, col.getLabel()); + numericLabel.setId(col.getColumnId()); + fields.add(numericLabel); + } else { + + } + } + } + } + } + } + } + + } + return fields; + + } + + } diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/TableWidget.gwt.xml b/src/main/resources/org/gcube/portlets/user/td/tablewidget/TableWidget.gwt.xml index 8d4466f..bd991cb 100644 --- a/src/main/resources/org/gcube/portlets/user/td/tablewidget/TableWidget.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/td/tablewidget/TableWidget.gwt.xml @@ -18,7 +18,7 @@ - +