diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnUtils.java index 87b4d5b99ed6bdc1049c4bb3eee5bd59df1f132f..8e2308772684704ba0d9c3a09228b7b56625017b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnUtils.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnUtils.java @@ -16,10 +16,15 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid; +import java.util.Date; + import com.extjs.gxt.ui.client.event.FieldEvent; +import com.extjs.gxt.ui.client.widget.form.CheckBox; +import com.extjs.gxt.ui.client.widget.form.Field; import com.extjs.gxt.ui.client.widget.grid.CellEditor; import com.google.gwt.event.dom.client.KeyCodes; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.DateFormField; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; /** @@ -50,10 +55,53 @@ public class ColumnUtils } } }; - return editor; + break; + case BOOLEAN: + CheckBox checkBox = new CheckBox(); + editor = new StringBasedCellEditor(checkBox); + break; + case TIMESTAMP: + editor = new StringBasedCellEditor(new DateFormField("", false)); + break; default: editor = new CellEditor(new DefaultCellEditorField()); - return editor; } + return editor; + } + + /** + * Extension of GXT {@link CellEditor} with automatic conversion from String values that we hold + * in tables to specific data types (like {@link Date} or {@link Boolean}) handled by editor + * fields and vice versa. + */ + private static class StringBasedCellEditor extends CellEditor + { + + public StringBasedCellEditor(Field<? extends Object> field) + { + super(field); + } + + @Override + public Object preProcessValue(Object value) + { + if (value == null) + { + return value; + } + return getField().getPropertyEditor().convertStringValue(value.toString()); + } + + @Override + @SuppressWarnings("unchecked") + public Object postProcessValue(Object value) + { + if (value == null) + { + return value; + } + return getField().getPropertyEditor().getStringValue(value); + } + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/TableCellUtil.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/TableCellUtil.java index f0e89e9f4a93f600b609cb71d17c85bdb4b2da78..caab9b299053e6b7e34f5cab641738b09a896ff2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/TableCellUtil.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/TableCellUtil.java @@ -82,13 +82,15 @@ public class TableCellUtil case VARCHAR: case MULTILINE_VARCHAR: case BOOLEAN: -// case CONTROLLEDVOCABULARY: + case TIMESTAMP: + // case CONTROLLEDVOCABULARY: + // case MATERIAL: return true; default: return false; } } - + private TableCellUtil() { }