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 892d1ae..0493248 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,23 +2,21 @@ 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.columnwidget.client.dimension.DimensionRowSelectionDialog; +import org.gcube.portlets.user.td.columnwidget.client.dimension.DimensionRowSelectionListener; +import org.gcube.portlets.user.td.columnwidget.client.dimension.DimensionRowsProperties; 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.gwtservice.shared.tr.DimensionRow; 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.CellData; 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; @@ -38,8 +36,8 @@ 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.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.SelectEvent.SelectHandler; 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; @@ -63,6 +61,7 @@ public class EditRowPanel extends FramedPanel { protected ArrayList rows; protected ArrayList columns; protected String currentRow; + private TextButton btnSave; private TextButton btnClose; @@ -76,7 +75,7 @@ public class EditRowPanel extends FramedPanel { Log.debug("Create EditRowPanel(): [" + trId.toString() + " , rows:" + rows + "]"); if (rows == null || rows.size() <= 0) { - currentRow=rows.get(0); + currentRow = rows.get(0); UtilsGXT3.alert("Attentions", "No row selected"); } else { init(); @@ -176,216 +175,103 @@ public class EditRowPanel extends FramedPanel { 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); + if (!col.isViewColumn()) { + if (col.getTypeCode().compareTo( + ColumnTypeCode.DIMENSION.toString()) == 0 + || col.getTypeCode().compareTo( + ColumnTypeCode.TIMEDIMENSION.toString()) == 0) { + + FieldLabel dimensionLabel=retrieveDimensionLabel(col); + fields.add(dimensionLabel); } else { if (col.getDataTypeName().compareTo( - ColumnDataType.Date.toString()) == 0) { - DateField date = new DateField(); - FieldLabel dateLabel = new FieldLabel(date, + 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()); - dateLabel.setId(col.getColumnId()); - fields.add(dateLabel); + booleanLabel.setId(col.getColumnId()); + fields.add(booleanLabel); } 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, + ColumnDataType.Date.toString()) == 0) { + DateField date = new DateField(); + FieldLabel dateLabel = new FieldLabel(date, col.getLabel()); - textLabel.setId(col.getColumnId()); - fields.add(textLabel); + dateLabel.setId(col.getColumnId()); + fields.add(dateLabel); } else { if (col.getDataTypeName().compareTo( - ColumnDataType.Geometry.toString()) == 0) { - TextField geometry = new TextField(); - geometry.addValueChangeHandler(new ValueChangeHandler() { + ColumnDataType.Text.toString()) == 0) { + TextField text = new TextField(); + text.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange( ValueChangeEvent event) { } }); - FieldLabel geometryLabel = new FieldLabel( - geometry, col.getLabel()); - geometryLabel.setId(col.getColumnId()); - fields.add(geometryLabel); + FieldLabel textLabel = new FieldLabel(text, + col.getLabel()); + textLabel.setId(col.getColumnId()); + fields.add(textLabel); } else { if (col.getDataTypeName().compareTo( - ColumnDataType.Integer.toString()) == 0) { - TextField integ = new TextField(); - - integ.addValueChangeHandler(new ValueChangeHandler() { + ColumnDataType.Geometry.toString()) == 0) { + TextField geometry = new TextField(); + geometry.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange( ValueChangeEvent event) { } }); - FieldLabel integLabel = new FieldLabel( - integ, col.getLabel()); - integLabel.setId(col.getColumnId()); - fields.add(integLabel); + FieldLabel geometryLabel = new FieldLabel( + geometry, col.getLabel()); + geometryLabel.setId(col.getColumnId()); + fields.add(geometryLabel); } else { if (col.getDataTypeName().compareTo( - ColumnDataType.Numeric.toString()) == 0) { - TextField numeric = new TextField(); - numeric.setId(col.getColumnId()); - numeric.addValueChangeHandler(new ValueChangeHandler() { + ColumnDataType.Integer.toString()) == 0) { + TextField integ = new TextField(); + + integ.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange( ValueChangeEvent event) { } }); - FieldLabel numericLabel = new FieldLabel( - numeric, col.getLabel()); - numericLabel.setId(col.getColumnId()); - fields.add(numericLabel); + 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 { + + } } } } @@ -393,10 +279,79 @@ public class EditRowPanel extends FramedPanel { } } } - } return fields; } + + protected FieldLabel retrieveDimensionLabel(final ColumnData col){ + // comboDimension + DimensionRowsProperties propsDimension = GWT + .create(DimensionRowsProperties.class); + ListStore storeComboDimensionType = new ListStore( + propsDimension.rowId()); + + + final ComboBox comboDimension = new ComboBox( + storeComboDimensionType, propsDimension.value()); + + Log.debug("ComboDimensionType created"); + + + + final DimensionRowSelectionListener listener=new DimensionRowSelectionListener() { + + @Override + public void selectedDimensionRow(DimensionRow dimensionRow) { + comboDimension.setValue(dimensionRow); + + } + + @Override + public void failedDimensionRowSelection(String reason, String detail) { + Log.error("Change Value Failed:" + reason + " " + detail); + + } + + @Override + public void abortedDimensionRowSelection() { + Log.debug("Change Value Aborted"); + + } + }; + + final CellData cellData = new CellData(currentRow, + col.getName(), col.getColumnId(), col.getLabel(), + currentRow, 0, 0); + + comboDimension.addTriggerClickHandler(new TriggerClickHandler() { + + @Override + public void onTriggerClick(TriggerClickEvent event) { + Log.debug("ComboDimensionRows TriggerClickEvent"); + comboDimension.collapse(); + + DimensionRowSelectionDialog dialogDimensionRowSelection = new DimensionRowSelectionDialog( + col, cellData, eventBus); + dialogDimensionRowSelection.addListener(listener); + dialogDimensionRowSelection.show(); + + } + + }); + + comboDimension.setEmptyText("Select a Value..."); + comboDimension.setWidth(300); + comboDimension.setEditable(false); + comboDimension.setTriggerAction(TriggerAction.ALL); + + + FieldLabel dimensionLabel = new FieldLabel(comboDimension, + col.getLabel()); + dimensionLabel.setId(col.getColumnId()); + return dimensionLabel; + } + + }