diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java index efe9d8d..aaa2df8 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java @@ -13,6 +13,7 @@ import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnTypeCodeP import org.gcube.portlets.user.td.columnwidget.client.properties.LocaleTypeProperties; import org.gcube.portlets.user.td.columnwidget.client.properties.PeriodDataTypeProperties; import org.gcube.portlets.user.td.columnwidget.client.properties.TabResourceProperties; +import org.gcube.portlets.user.td.columnwidget.client.properties.TimeDataFormatProperties; import org.gcube.portlets.user.td.columnwidget.client.resources.ResourceBundle; import org.gcube.portlets.user.td.columnwidget.client.store.ColumnDataTypeElement; import org.gcube.portlets.user.td.columnwidget.client.store.ColumnDataTypeStore; @@ -28,6 +29,7 @@ import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; import org.gcube.portlets.user.td.gwtservice.shared.tr.PeriodDataType; import org.gcube.portlets.user.td.gwtservice.shared.tr.RefColumn; import org.gcube.portlets.user.td.gwtservice.shared.tr.TabResource; +import org.gcube.portlets.user.td.gwtservice.shared.tr.TimeDataFormat; import org.gcube.portlets.user.td.gwtservice.shared.tr.column.mapping.ColumnMappingList; import org.gcube.portlets.user.td.gwtservice.shared.tr.column.type.ChangeColumnTypeSession; import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialog; @@ -118,10 +120,14 @@ public class ChangeColumnTypePanel extends FramedPanel implements private FieldLabel comboColumnMappingLabel; private ListStore storeComboColumnMapping; - private ComboBox comboTimeDimensionType = null; - private FieldLabel comboTimeDimensionTypeLabel; - private ListStore storeComboTimeDimensionType; - + private ComboBox comboPeriodType = null; + private FieldLabel comboPeriodTypeLabel; + private ListStore storeComboPeriodType; + + private ListStore storeComboTimeDataFormat; + private ComboBox comboTimeDataFormat; + private FieldLabel comboTimeDataFormatLabel; + private ComboBox comboLocaleType = null; private FieldLabel comboLocaleTypeLabel; private ListStore storeComboLocaleType; @@ -132,7 +138,6 @@ public class ChangeColumnTypePanel extends FramedPanel implements private ChangeColumnTypeSession changeColumnTypeSession; private boolean panelCreated; - public ChangeColumnTypePanel(TRId trId, String columnName, EventBus eventBus) { setWidth(WIDTH); @@ -410,14 +415,14 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboColumnMappingLabel = new FieldLabel(comboColumnMapping, "Mapping"); - // comboTimeDimensionType - PeriodDataTypeProperties propsTimeDimensionType = GWT + // comboPeriodType + PeriodDataTypeProperties propsPeriodDataType = GWT .create(PeriodDataTypeProperties.class); - storeComboTimeDimensionType = new ListStore( - propsTimeDimensionType.name()); - - comboTimeDimensionType = new ComboBox( - storeComboTimeDimensionType, propsTimeDimensionType.label()){ + storeComboPeriodType = new ListStore( + propsPeriodDataType.name()); + + comboPeriodType = new ComboBox(storeComboPeriodType, + propsPeriodDataType.label()) { protected void onAfterFirstAttach() { super.onAfterFirstAttach(); Scheduler.get().scheduleDeferred(new ScheduledCommand() { @@ -427,19 +432,36 @@ public class ChangeColumnTypePanel extends FramedPanel implements }); } }; - - Log.trace("ComboTimeDimensionType created"); - addHandlersForComboTimeDimensionType(propsTimeDimensionType.label()); + Log.trace("ComboPeriodType created"); - comboTimeDimensionType.setEmptyText("Select a time dimension type..."); - comboTimeDimensionType.setWidth(191); - comboTimeDimensionType.setTypeAhead(true); - comboTimeDimensionType.setTriggerAction(TriggerAction.ALL); - // comboTimeDimensionType.getListView().getElement().applyStyles("width:170px;"); + addHandlersForComboPeriodType(propsPeriodDataType.label()); - comboTimeDimensionTypeLabel = new FieldLabel(comboTimeDimensionType, - "Time Type"); + comboPeriodType.setEmptyText("Select a period type..."); + comboPeriodType.setWidth(191); + comboPeriodType.setTypeAhead(true); + comboPeriodType.setTriggerAction(TriggerAction.ALL); + comboPeriodTypeLabel = new FieldLabel(comboPeriodType, "Period Type"); + + // comboTimeDataFormat + TimeDataFormatProperties propsTimeDataFormat = GWT + .create(TimeDataFormatProperties.class); + storeComboTimeDataFormat = new ListStore( + propsTimeDataFormat.id()); + + comboTimeDataFormat = new ComboBox( + storeComboTimeDataFormat, propsTimeDataFormat.example()); + + Log.trace("ComboTimeDataFormat created"); + + addHandlersForComboTimeDataFormat(propsTimeDataFormat.example()); + + comboTimeDataFormat.setEmptyText("Select a time format..."); + comboTimeDataFormat.setWidth(191); + comboTimeDataFormat.setTypeAhead(true); + comboTimeDataFormat.setTriggerAction(TriggerAction.ALL); + comboTimeDataFormatLabel = new FieldLabel(comboTimeDataFormat, + "Time Format"); // Change change = new TextButton("Change"); @@ -475,7 +497,9 @@ public class ChangeColumnTypePanel extends FramedPanel implements * v.add(comboColumnMappingLabel, new VerticalLayoutData(1, -1, new * Margins(1))); */ - v.add(comboTimeDimensionTypeLabel, new VerticalLayoutData(1, -1, + v.add(comboPeriodTypeLabel, new VerticalLayoutData(1, -1, + new Margins(1))); + v.add(comboTimeDataFormatLabel, new VerticalLayoutData(1, -1, new Margins(1))); v.add(change, new VerticalLayoutData(-1, -1, new Margins(10, 0, 10, 0))); add(v, new VerticalLayoutData(1, 1, new Margins(0))); @@ -491,7 +515,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboDimensionTypeLabel.setVisible(false); comboColumnReferenceTypeLabel.setVisible(false); comboColumnMappingLabel.setVisible(false); - comboTimeDimensionTypeLabel.setVisible(false); + comboPeriodTypeLabel.setVisible(false); + comboTimeDataFormat.setValidateOnBlur(false); comboLocaleTypeLabel.setVisible(false); } @@ -637,20 +662,6 @@ public class ChangeColumnTypePanel extends FramedPanel implements + "!")); Log.debug("ComboColumnReferenceType selected: " + event.getSelectedItem()); - - //Change column enables the Change Button - //ColumnData columnReference = event.getSelectedItem(); - //updateConfBtnChange(columnReference); - - - // TODO Mapping fix - /* - * comboColumnMapping.reset(); - * storeComboColumnMapping.clear(); - * storeComboColumnMapping.commitChanges(); - * comboColumnMappingLabel.setVisible(true); - * forceLayout(); - */ } @@ -675,30 +686,48 @@ public class ChangeColumnTypePanel extends FramedPanel implements } - protected void addHandlersForComboTimeDimensionType( + protected void addHandlersForComboPeriodType( final LabelProvider labelProvider) { - comboTimeDimensionType + comboPeriodType .addSelectionHandler(new SelectionHandler() { - public void onSelection( - SelectionEvent event) { + public void onSelection(SelectionEvent event) { Info.display( - "Time Dimension Type Selected", + "Period Type Selected", "You selected " + (event.getSelectedItem() == null ? "nothing" : labelProvider.getLabel(event .getSelectedItem()) + "!")); - Log.debug("ComboTimeDimensionType selected: " + Log.debug("ComboPeriodType selected: " + event.getSelectedItem()); - PeriodDataType timeDimensionType = event - .getSelectedItem(); - updateTimeDimensionType(timeDimensionType); + PeriodDataType periodDataType = event.getSelectedItem(); + updatePeriodType(periodDataType); + } + + }); + } + + protected void addHandlersForComboTimeDataFormat( + final LabelProvider labelProvider) { + comboTimeDataFormat + .addSelectionHandler(new SelectionHandler() { + public void onSelection(SelectionEvent event) { + Info.display( + "Time Format Selected", + "You selected " + + (event.getSelectedItem() == null ? "nothing" + : labelProvider.getLabel(event + .getSelectedItem()) + + "!")); + Log.debug("ComboTimeDataFormat selected: " + + event.getSelectedItem()); + TimeDataFormat timeDataFormat = event.getSelectedItem(); + updateTimeDataFormat(timeDataFormat); } }); } - // TODO protected void updateColumnType(ColumnTypeCode type) { Log.debug("Update ColumnTypeCode: " + type); switch (type) { @@ -709,7 +738,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboDimensionTypeLabel.setVisible(false); comboColumnReferenceTypeLabel.setVisible(false); comboColumnMappingLabel.setVisible(false); - comboTimeDimensionTypeLabel.setVisible(false); + comboPeriodTypeLabel.setVisible(false); + comboTimeDataFormatLabel.setVisible(false); break; case ATTRIBUTE: comboLocaleTypeLabel.setVisible(false); @@ -718,7 +748,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboDimensionTypeLabel.setVisible(false); comboColumnReferenceTypeLabel.setVisible(false); comboColumnMappingLabel.setVisible(false); - comboTimeDimensionTypeLabel.setVisible(false); + comboPeriodTypeLabel.setVisible(false); + comboTimeDataFormatLabel.setVisible(false); break; case DIMENSION: comboLocaleTypeLabel.setVisible(false); @@ -727,7 +758,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboDimensionTypeLabel.setVisible(true); comboColumnReferenceTypeLabel.setVisible(false); comboColumnMappingLabel.setVisible(false); - comboTimeDimensionTypeLabel.setVisible(false); + comboPeriodTypeLabel.setVisible(false); + comboTimeDataFormatLabel.setVisible(false); break; case MEASURE: comboLocaleTypeLabel.setVisible(false); @@ -736,7 +768,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboDimensionTypeLabel.setVisible(false); comboColumnReferenceTypeLabel.setVisible(false); comboColumnMappingLabel.setVisible(false); - comboTimeDimensionTypeLabel.setVisible(false); + comboPeriodTypeLabel.setVisible(false); + comboTimeDataFormatLabel.setVisible(false); break; case TIMEDIMENSION: comboLocaleTypeLabel.setVisible(false); @@ -745,7 +778,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboDimensionTypeLabel.setVisible(false); comboColumnReferenceTypeLabel.setVisible(false); comboColumnMappingLabel.setVisible(false); - comboTimeDimensionTypeLabel.setVisible(true); + comboPeriodTypeLabel.setVisible(true); + comboTimeDataFormatLabel.setVisible(true); break; default: comboLocaleTypeLabel.setVisible(false); @@ -754,7 +788,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboDimensionTypeLabel.setVisible(false); comboColumnReferenceTypeLabel.setVisible(false); comboColumnMappingLabel.setVisible(false); - comboTimeDimensionTypeLabel.setVisible(false); + comboPeriodTypeLabel.setVisible(false); + comboTimeDataFormatLabel.setVisible(false); break; } @@ -777,7 +812,18 @@ public class ChangeColumnTypePanel extends FramedPanel implements } - protected void updateTimeDimensionType(PeriodDataType type) { + protected void updatePeriodType(PeriodDataType periodDataType) { + ArrayList timeDataFormats = periodDataType + .getTimeDataFormats(); + comboTimeDataFormat.clear(); + comboTimeDataFormat.reset(); + comboTimeDataFormat.getStore().clear(); + comboTimeDataFormat.getStore().addAll(timeDataFormats); + comboTimeDataFormat.redraw(); + + } + + protected void updateTimeDataFormat(TimeDataFormat type) { } @@ -879,11 +925,16 @@ public class ChangeColumnTypePanel extends FramedPanel implements } else { if (type == ColumnTypeCode.TIMEDIMENSION) { - changeColumnTypeSession - .setTimeDimensionType(cd - .getPeriodDataType()); - comboTimeDimensionType.setValue(cd - .getPeriodDataType()); + changeColumnTypeSession.setPeriodDataType(cd + .getPeriodDataType()); + comboPeriodType.setValue(cd.getPeriodDataType()); + ArrayList timeDataFormats = cd + .getPeriodDataType().getTimeDataFormats(); + comboTimeDataFormat.clear(); + comboTimeDataFormat.reset(); + comboTimeDataFormat.getStore().clear(); + comboTimeDataFormat.getStore().addAll(timeDataFormats); + comboTimeDataFormat.redraw(); } else { // TODO if (type == ColumnTypeCode.DIMENSION) { @@ -1146,17 +1197,25 @@ public class ChangeColumnTypePanel extends FramedPanel implements break; case TIMEDIMENSION: changeColumnTypeSession.setColumnTypeCodeTarget(type); - PeriodDataType periodDataType = comboTimeDimensionType + PeriodDataType periodDataType = comboPeriodType .getCurrentValue(); if (periodDataType != null) { + changeColumnTypeSession + .setPeriodDataType(periodDataType); + TimeDataFormat timeDataFormat = comboTimeDataFormat + .getCurrentValue(); + if (timeDataFormat != null) { changeColumnTypeSession - .setTimeDimensionType(periodDataType); + .setTimeDataFormat(timeDataFormat); callChangeColumnType(); - + } else { + UtilsGXT3.alert("Attention", + "Time Format not selected!"); + } } else { UtilsGXT3.alert("Attention", - "Time Dimension type not selected!"); + "Period Type not selected!"); } break; default: @@ -1412,7 +1471,7 @@ public class ChangeColumnTypePanel extends FramedPanel implements }); } - + protected void retrievePeriodDataType() { TDGWTServiceAsync.INSTANCE .getPeriodDataTypes(new AsyncCallback>() { @@ -1434,26 +1493,26 @@ public class ChangeColumnTypePanel extends FramedPanel implements caught.getLocalizedMessage()); } else { Log.debug(caught.getLocalizedMessage()); - UtilsGXT3.alert("Error retrieving period type", + UtilsGXT3.alert( + "Error retrieving period type", caught.getLocalizedMessage()); } } } - + } @Override public void onSuccess(ArrayList result) { - storeComboTimeDimensionType.clear(); - storeComboTimeDimensionType.addAll(result); - storeComboTimeDimensionType.commitChanges(); - + storeComboPeriodType.clear(); + storeComboPeriodType.addAll(result); + storeComboPeriodType.commitChanges(); + } }); - + } - - + protected void setLocale(String locale) { for (LocaleTypeElement loc : storeComboLocaleType.getAll()) { if (loc.getLocaleName().compareTo(locale) == 0) { @@ -1525,7 +1584,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements public void operationComplete(OperationResult operationResult) { ChangeTableWhy why = ChangeTableWhy.TABLEUPDATED; ChangeTableRequestEvent changeTableRequestEvent = new ChangeTableRequestEvent( - ChangeTableRequestType.CHANGECOLUMNTYPE, operationResult.getTrId(), why); + ChangeTableRequestType.CHANGECOLUMNTYPE, + operationResult.getTrId(), why); eventBus.fireEvent(changeTableRequestEvent); close(); } @@ -1538,10 +1598,12 @@ public class ChangeColumnTypePanel extends FramedPanel implements } @Override - public void operationStopped(OperationResult operationResult, String reason, String details) { + public void operationStopped(OperationResult operationResult, + String reason, String details) { ChangeTableWhy why = ChangeTableWhy.TABLECURATION; ChangeTableRequestEvent changeTableRequestEvent = new ChangeTableRequestEvent( - ChangeTableRequestType.CHANGECOLUMNTYPE, operationResult.getTrId(), why); + ChangeTableRequestType.CHANGECOLUMNTYPE, + operationResult.getTrId(), why); eventBus.fireEvent(changeTableRequestEvent); close(); diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/TimeDataFormatProperties.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/TimeDataFormatProperties.java new file mode 100644 index 0000000..272b610 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/TimeDataFormatProperties.java @@ -0,0 +1,24 @@ +package org.gcube.portlets.user.td.columnwidget.client.properties; + +import org.gcube.portlets.user.td.gwtservice.shared.tr.TimeDataFormat; + +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 + * email: g.panichi@isti.cnr.it + * + */ +public interface TimeDataFormatProperties extends + PropertyAccess { + + @Path("id") + ModelKeyProvider id(); + + LabelProvider example(); + +} \ No newline at end of file