From ef30f29dc45632dd8b689d0910e11a384f5fa6ad Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Wed, 15 Jun 2011 11:20:30 +0000 Subject: [PATCH] [LMS-2281] table editing for boolean and date properties SVN: 21699 --- .../application/ui/grid/ColumnUtils.java | 52 ++++++++++++++++++- .../generic/shared/basic/TableCellUtil.java | 6 ++- 2 files changed, 54 insertions(+), 4 deletions(-) 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 87b4d5b99ed..8e230877268 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 f0e89e9f4a9..caab9b29905 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() { } -- GitLab