diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index a8e7681..c7160d5 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -10,6 +10,9 @@ uses + + uses + 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 75d630c..f7d6153 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 @@ -3,9 +3,17 @@ package org.gcube.portlets.user.td.columnwidget.client; import java.util.ArrayList; import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataProperties; +import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnDataTypeProperties; +import org.gcube.portlets.user.td.columnwidget.client.properties.ColumnTypeCodeProperties; +import org.gcube.portlets.user.td.columnwidget.client.store.ColumnDataTypeElement; +import org.gcube.portlets.user.td.columnwidget.client.store.ColumnDataTypeStore; +import org.gcube.portlets.user.td.columnwidget.client.store.ColumnTypeCodeElement; +import org.gcube.portlets.user.td.columnwidget.client.store.ColumnTypeCodeStore; 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 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; @@ -47,40 +55,46 @@ public class ChangeColumnTypePanel extends FramedPanel { protected String columnName; protected ColumnData column; protected ComboBox comboColumn = null; - protected ComboBox comboTypeColumn = null; - + protected ComboBox comboColumnTypeCode = null; + protected ComboBox comboMeasureType = null; + protected TextField labelColumn; + protected FieldLabel comboMeasureTypeLabel; - - public ChangeColumnTypePanel(TRId trId, String columnName){ + public ChangeColumnTypePanel(TRId trId, String columnName) { setWidth(WIDTH); setHeight(HEIGHT); setHeaderVisible(false); setBodyBorder(false); - this.trId=trId; - this.columnName=columnName; - + this.trId = trId; + this.columnName = columnName; + VerticalLayoutContainer basicLayout = new VerticalLayoutContainer(); - + ContentPanel panel = new ContentPanel(); panel.setHeaderVisible(false); - - ColumnDataProperties props = GWT.create(ColumnDataProperties.class); - ListStore store = new ListStore(props.id()); - - Log.trace("Store created"); - RpcProxy> proxy = new RpcProxy>() { - - public void load(ListLoadConfig loadConfig, final AsyncCallback> callback) { + + ColumnDataProperties propsColumnData = GWT + .create(ColumnDataProperties.class); + ListStore storeCombo = new ListStore( + propsColumnData.id()); + + Log.trace("StoreCombo created"); + RpcProxy> proxy = new RpcProxy>() { + + public void load(ListLoadConfig loadConfig, + final AsyncCallback> callback) { loadData(loadConfig, callback); - } + } }; - final ListLoader> loader = new ListLoader>(proxy); + final ListLoader> loader = new ListLoader>( + proxy); loader.setRemoteSort(false); - loader.addLoadHandler(new LoadResultListStoreBinding>(store)); - Log.trace("Loader created"); - - - comboColumn = new ComboBox(store, props.label()){ + loader.addLoadHandler(new LoadResultListStoreBinding>( + storeCombo)); + Log.trace("LoaderCombo created"); + + comboColumn = new ComboBox(storeCombo, + propsColumnData.label()) { protected void onAfterFirstAttach() { super.onAfterFirstAttach(); @@ -91,36 +105,79 @@ public class ChangeColumnTypePanel extends FramedPanel { }); } }; - Log.trace("Combo created"); - - addHandlersForEventObservation(comboColumn, props.label()); + Log.trace("Combo ColumnData created"); + + addHandlersForEventObservation(comboColumn, propsColumnData.label()); comboColumn.setEmptyText("Select a column..."); comboColumn.setWidth(150); comboColumn.setTypeAhead(true); + comboColumn.setEditable(true); comboColumn.setTriggerAction(TriggerAction.ALL); comboColumn.setLoader(loader); + + // comboColumnTypeCode + ColumnTypeCodeProperties propsColumnTypeCode = GWT + .create(ColumnTypeCodeProperties.class); + ListStore storeComboTypeCode = new ListStore( + propsColumnTypeCode.id()); + storeComboTypeCode.addAll(ColumnTypeCodeStore.getColumnTypeCodes()); + + comboColumnTypeCode = new ComboBox( + storeComboTypeCode, propsColumnTypeCode.label()); + Log.trace("ComboColumnTypeCode created"); + + addHandlersForComboColumnTypeCode(propsColumnTypeCode.label()); + + comboColumnTypeCode.setEmptyText("Select a column type..."); + comboColumnTypeCode.setWidth(150); + comboColumnTypeCode.setTypeAhead(true); + comboColumnTypeCode.setTriggerAction(TriggerAction.ALL); + + // comboMeasureType + ColumnDataTypeProperties propsMeasureType = GWT + .create(ColumnDataTypeProperties.class); + ListStore storeComboMeasureType = new ListStore( + propsMeasureType.id()); + storeComboMeasureType.addAll(ColumnDataTypeStore.getMeasureType()); + + comboMeasureType = new ComboBox( + storeComboMeasureType, propsMeasureType.label()); + Log.trace("ComboMeasureType created"); + + addHandlersForComboMeasureType(propsMeasureType.label()); + + comboMeasureType.setEmptyText("Select a column type..."); + comboMeasureType.setWidth(150); + comboMeasureType.setTypeAhead(true); + comboMeasureType.setTriggerAction(TriggerAction.ALL); + + comboMeasureTypeLabel=new FieldLabel(comboMeasureType, "Measure Type"); + comboMeasureTypeLabel.setVisible(false); FramedPanel form = new FramedPanel(); - form.setHeaderVisible(false); - //form.setWidth(350); - form.setBodyStyle("background: none;"); - - TextField labelColumn=new TextField(); - - - - - VerticalLayoutContainer v = new VerticalLayoutContainer(); - v.add(new FieldLabel(comboColumn, "Column"), new VerticalLayoutData(1, -1)); - v.add(new FieldLabel(labelColumn, "Label"), new VerticalLayoutData(1, -1)); - - form.add(v); - form.addButton(new TextButton("Change")); - - - panel.add(form); - basicLayout.add(panel, new VerticalLayoutData(-1, -1, new Margins())); + form.setHeaderVisible(false); + // form.setWidth(350); + form.setBodyStyle("background: none;"); + + labelColumn = new TextField(); + + VerticalLayoutContainer v = new VerticalLayoutContainer(); + v.add(new FieldLabel(comboColumn, "Column"), new VerticalLayoutData(1, + -1)); + v.add(new FieldLabel(labelColumn, "Label"), new VerticalLayoutData(1, + -1)); + v.add(new FieldLabel(comboColumnTypeCode, "Column Type"), + new VerticalLayoutData(1, -1)); + v.add(comboMeasureTypeLabel, + new VerticalLayoutData(1, -1)); + + + form.add(v); + form.addButton(new TextButton("Change")); + + panel.add(form); + basicLayout.add(panel, new VerticalLayoutData(-1, -1, new Margins())); add(basicLayout); } @@ -151,6 +208,61 @@ public class ChangeColumnTypePanel extends FramedPanel { }); } + + protected void addHandlersForComboColumnTypeCode(final LabelProvider labelProvider){ + comboColumnTypeCode.addSelectionHandler(new SelectionHandler() { + public void onSelection(SelectionEvent event) { + Info.display( + "Type Selected", + "You selected " + + (event.getSelectedItem() == null ? "nothing" + : labelProvider.getLabel(event + .getSelectedItem()) + "!")); + Log.debug("ComboColumnTypeCode selected: "+event.getSelectedItem()); + ColumnTypeCodeElement columnType=event.getSelectedItem(); + updateColumnType(columnType.getCode()); + } + + }); + } + + protected void addHandlersForComboMeasureType(final LabelProvider labelProvider){ + comboMeasureType.addSelectionHandler(new SelectionHandler() { + public void onSelection(SelectionEvent event) { + Info.display( + "Type Selected", + "You selected " + + (event.getSelectedItem() == null ? "nothing" + : labelProvider.getLabel(event + .getSelectedItem()) + "!")); + Log.debug("ComboMeasureType selected: "+event.getSelectedItem()); + ColumnDataTypeElement measureType=event.getSelectedItem(); + updateMeasureType(measureType.getType()); + } + + }); + } + + + + protected void updateColumnType(ColumnTypeCode type){ + if(type==ColumnTypeCode.MEASURE){ + comboMeasureTypeLabel.setVisible(true); + } else { + comboMeasureTypeLabel.setVisible(false); + } + } + + protected void updateMeasureType(ColumnDataType type){ + /*if(type==ColumnDataType.Integer){ + + } else { + + }*/ + } + + + protected void loadData(ListLoadConfig loadConfig, final AsyncCallback> callback) { TDGWTServiceAsync.INSTANCE.getColumns(trId, @@ -168,6 +280,9 @@ public class ChangeColumnTypePanel extends FramedPanel { for (ColumnData cd : result) { if (cd.getName().compareTo(columnName) == 0) { comboColumn.setValue(cd); + labelColumn.setValue(cd.getLabel()); + comboColumnTypeCode.select(ColumnTypeCodeStore + .selected(cd.getTypeCode())); } } } diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataTypeProperties.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataTypeProperties.java new file mode 100644 index 0000000..c625c7c --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnDataTypeProperties.java @@ -0,0 +1,23 @@ +package org.gcube.portlets.user.td.columnwidget.client.properties; + + + + + +import org.gcube.portlets.user.td.columnwidget.client.store.ColumnDataTypeElement; + +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; + +public interface ColumnDataTypeProperties extends + PropertyAccess { + + @Path("id") + ModelKeyProvider id(); + + LabelProvider label(); + + +} diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnTypeCodeProperties.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnTypeCodeProperties.java index b3329ad..a6cb64c 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnTypeCodeProperties.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/properties/ColumnTypeCodeProperties.java @@ -1,7 +1,8 @@ package org.gcube.portlets.user.td.columnwidget.client.properties; -import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnTypeCode; + +import org.gcube.portlets.user.td.columnwidget.client.store.ColumnTypeCodeElement; import com.google.gwt.editor.client.Editor.Path; import com.sencha.gxt.data.shared.LabelProvider; @@ -9,12 +10,12 @@ import com.sencha.gxt.data.shared.ModelKeyProvider; import com.sencha.gxt.data.shared.PropertyAccess; public interface ColumnTypeCodeProperties extends - PropertyAccess { + PropertyAccess { @Path("id") - ModelKeyProvider id(); + ModelKeyProvider id(); - LabelProvider label(); + LabelProvider label(); } diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnDataTypeElement.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnDataTypeElement.java new file mode 100644 index 0000000..eaac74d --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnDataTypeElement.java @@ -0,0 +1,49 @@ +package org.gcube.portlets.user.td.columnwidget.client.store; + +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnDataType; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public class ColumnDataTypeElement { + + protected int id; // For insert in table only + protected ColumnDataType type; + + + public ColumnDataTypeElement(int id,ColumnDataType type){ + this.id=id; + this.type=type; + } + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public ColumnDataType getType() { + return type; + } + public void setCode(ColumnDataType type) { + this.type = type; + } + + public String getLabel() { + return type.toString(); + } + + @Override + public String toString() { + return "ColumnTypeCode [id=" + id + ", code=" + type + ", getLabel()=" + + getLabel() + "]"; + } + + +} diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnDataTypeStore.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnDataTypeStore.java new file mode 100644 index 0000000..ee4a580 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnDataTypeStore.java @@ -0,0 +1,44 @@ +package org.gcube.portlets.user.td.columnwidget.client.store; + +import java.io.Serializable; +import java.util.ArrayList; + +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnDataType; +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode; + + + + +/** + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class ColumnDataTypeStore implements Serializable { + + private static final long serialVersionUID = -1908324094430432681L; + + protected static ArrayList store; + + public static ArrayList getMeasureType(){ + store=new ArrayList(); + store.add(new ColumnDataTypeElement(1,ColumnDataType.Integer)); + store.add(new ColumnDataTypeElement(2,ColumnDataType.Numeric)); + return store; + } + + public static int selectedMeasure(String selected){ + int position=0; + if(selected.compareTo(ColumnDataType.Integer.toString())==0){ + position=1; + } else { + if(selected.compareTo(ColumnDataType.Numeric.toString())==0){ + position=2; + } else { + } + } + return position; + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnTypeCodeElement.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnTypeCodeElement.java new file mode 100644 index 0000000..5392de3 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnTypeCodeElement.java @@ -0,0 +1,49 @@ +package org.gcube.portlets.user.td.columnwidget.client.store; + +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public class ColumnTypeCodeElement { + + protected int id; // For insert in table only + protected ColumnTypeCode code; + + + public ColumnTypeCodeElement(int id,ColumnTypeCode code){ + this.id=id; + this.code=code; + } + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public ColumnTypeCode getCode() { + return code; + } + public void setCode(ColumnTypeCode code) { + this.code = code; + } + + public String getLabel() { + return code.getColumnTypeCodeLabel(); + } + + @Override + public String toString() { + return "ColumnTypeCode [id=" + id + ", code=" + code + ", getLabel()=" + + getLabel() + "]"; + } + + +} diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnTypeCodeStore.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnTypeCodeStore.java new file mode 100644 index 0000000..a911af7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/store/ColumnTypeCodeStore.java @@ -0,0 +1,81 @@ +package org.gcube.portlets.user.td.columnwidget.client.store; + +import java.io.Serializable; +import java.util.ArrayList; + +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode; + + + + +/** + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class ColumnTypeCodeStore implements Serializable { + + private static final long serialVersionUID = -1908324094430432681L; + + protected static ArrayList store = new ArrayList(); + + public static ArrayList getColumnTypeCodes(){ + store.add(new ColumnTypeCodeElement(1,ColumnTypeCode.ANNOTATION)); + store.add(new ColumnTypeCodeElement(2,ColumnTypeCode.ATTRIBUTE)); + store.add(new ColumnTypeCodeElement(3,ColumnTypeCode.MEASURE)); + store.add(new ColumnTypeCodeElement(4,ColumnTypeCode.CODE)); + store.add(new ColumnTypeCodeElement(5,ColumnTypeCode.CODENAME)); + store.add(new ColumnTypeCodeElement(6,ColumnTypeCode.CODEDESCRIPTION)); + store.add(new ColumnTypeCodeElement(7,ColumnTypeCode.DIMENSION)); + store.add(new ColumnTypeCodeElement(8,ColumnTypeCode.TIMEDIMENSION)); + + return store; + } + + public static int selected(String selected){ + int position=0; + if(selected.compareTo(ColumnTypeCode.ANNOTATION.toString())==0){ + position=1; + } else { + if(selected.compareTo(ColumnTypeCode.ATTRIBUTE.toString())==0){ + position=2; + } else { + if(selected.compareTo(ColumnTypeCode.MEASURE.toString())==0){ + position=3; + } else { + if(selected.compareTo(ColumnTypeCode.CODE.toString())==0){ + position=4; + } else { + if(selected.compareTo(ColumnTypeCode.CODENAME.toString())==0){ + position=5; + } else { + if(selected.compareTo(ColumnTypeCode.CODEDESCRIPTION.toString())==0){ + position=6; + } else { + if(selected.compareTo(ColumnTypeCode.DIMENSION.toString())==0){ + position=7; + } else { + if(selected.compareTo(ColumnTypeCode.TIMEDIMENSION.toString())==0){ + position=8; + } else { + + } + + } + + } + + } + + } + + } + + } + + } + return position; + } + +}