From 26bb013d8eff5673c1105dcfe3719d4ddba629a2 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 23 May 2011 12:00:40 +0000 Subject: [PATCH] LMS-2240 finishing up SVN: 21436 --- .../model/EntityGridModelFactory.java | 45 ++++++++++--------- .../renderer/AbstractPropertyColRenderer.java | 2 +- .../renderer/RealPropertyColRenderer.java | 10 +---- .../ui/data/AbstractExternalDataGrid.java | 3 +- .../ui/data/DataSetSearchHitGrid.java | 3 +- .../ui/data/DataSetSearchHitModel.java | 8 +++- .../ui/data/RelatedDataSetGrid.java | 3 +- .../ui/experiment/ExperimentBrowserGrid.java | 3 +- .../ui/grid/ColumnDefsAndConfigs.java | 35 +++++++++++++-- .../ui/material/MaterialBrowserGrid.java | 3 +- .../generic/shared/basic/TableCellUtil.java | 2 +- 11 files changed, 77 insertions(+), 40 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/EntityGridModelFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/EntityGridModelFactory.java index da258b89a55..299d543e360 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/EntityGridModelFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/EntityGridModelFactory.java @@ -16,11 +16,13 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.model; -import java.util.ArrayList; import java.util.List; +import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; + import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer.AbstractPropertyColRenderer; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.RealNumberRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.EntityPropertyColDef; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI; @@ -29,6 +31,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.en import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityPropertiesHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; @@ -75,7 +78,7 @@ public class EntityGridModelFactory<T extends IEntityPropertiesHolder> * here we create the columns definition having just one table row. We need them only to render * column values (headers have been already created), so no message provider is needed. */ - public List<IColumnDefinitionUI<T>> createColumnsSchemaForRendering(GridRowModel<T> rowModel, + private List<IColumnDefinitionUI<T>> createColumnsSchemaForRendering(GridRowModel<T> rowModel, RealNumberFormatingParameters realNumberFormatingParameters) { List<IColumnDefinitionUI<T>> list = createStaticColumnDefinitions(null); @@ -90,25 +93,26 @@ public class EntityGridModelFactory<T extends IEntityPropertiesHolder> } public ColumnDefsAndConfigs<T> createColumnsSchema(IMessageProvider messageProvider, - EntityType selectedTypeOrNull) + EntityType selectedTypeOrNull, + RealNumberFormatingParameters realNumberFormatingParameters) { List<PropertyType> propertyTypesOrNull = null; if (selectedTypeOrNull != null) { propertyTypesOrNull = PropertyTypesFilterUtil.extractPropertyTypes(selectedTypeOrNull); } - return createColumnsSchema(messageProvider, propertyTypesOrNull); + return createColumnsSchema(messageProvider, propertyTypesOrNull, + realNumberFormatingParameters); } public ColumnDefsAndConfigs<T> createColumnsSchema(IMessageProvider messageProvider, - List<PropertyType> propertyTypesOrNull) + List<PropertyType> propertyTypesOrNull, + RealNumberFormatingParameters realNumberFormatingParameters) { ColumnDefsAndConfigs<T> columns = createStaticColumnDefsAndConfigs(messageProvider); if (propertyTypesOrNull != null) { - List<IColumnDefinitionUI<T>> propertyColumnsSchema = - createPropertyColumnsSchema(propertyTypesOrNull); - columns.addColumns(propertyColumnsSchema); + createPropertyColumnsSchema(columns, propertyTypesOrNull, realNumberFormatingParameters); } return columns; } @@ -118,8 +122,7 @@ public class EntityGridModelFactory<T extends IEntityPropertiesHolder> { List<IColumnDefinitionUI<T>> commonColumnsSchema = createStaticColumnDefinitions(messageProvider); - ColumnDefsAndConfigs<T> columns = ColumnDefsAndConfigs.create(commonColumnsSchema); - return columns; + return ColumnDefsAndConfigs.create(commonColumnsSchema); } private List<IColumnDefinitionUI<T>> createStaticColumnDefinitions( @@ -128,19 +131,21 @@ public class EntityGridModelFactory<T extends IEntityPropertiesHolder> return BaseEntityModel.createColumnsDefinition(staticColumnDefinitions, msgProviderOrNull); } - private static <T extends IEntityPropertiesHolder> List<IColumnDefinitionUI<T>> createPropertyColumnsSchema( - List<PropertyType> propertyTypes) + public static <T extends IEntityPropertiesHolder> void createPropertyColumnsSchema( + ColumnDefsAndConfigs<T> columns, List<PropertyType> propertyTypes, + RealNumberFormatingParameters realNumberFormatingParameters) { - List<IColumnDefinitionUI<T>> list = createColDefList(); for (PropertyType propertyType : propertyTypes) { - list.add(new EntityPropertyColDef<T>(propertyType, true, propertyTypes)); + EntityPropertyColDef<T> def = + new EntityPropertyColDef<T>(propertyType, true, propertyTypes); + GridCellRenderer<BaseEntityModel<?>> renderer = null; + DataTypeCode dataTypeCode = propertyType.getDataType().getCode(); + if (dataTypeCode == DataTypeCode.REAL) + { + renderer = new RealNumberRenderer(realNumberFormatingParameters); + } + columns.addColumn(def, renderer); } - return list; - } - - private static <T> ArrayList<IColumnDefinitionUI<T>> createColDefList() - { - return new ArrayList<IColumnDefinitionUI<T>>(); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/AbstractPropertyColRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/AbstractPropertyColRenderer.java index 3cb68e71ebb..228535d98d1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/AbstractPropertyColRenderer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/AbstractPropertyColRenderer.java @@ -53,7 +53,7 @@ public abstract class AbstractPropertyColRenderer<T extends IEntityPropertiesHol switch (colDef.getDataTypeCode()) { case REAL: - return new RealPropertyColRenderer<S>(colDef, realNumberFormatingParameters); + return new RealPropertyColRenderer<S>(colDef); case HYPERLINK: return new HyperlinkPropertyColRenderer<S>(colDef); case MULTILINE_VARCHAR: diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/RealPropertyColRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/RealPropertyColRenderer.java index 8bcc6f02648..46ded536631 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/RealPropertyColRenderer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/renderer/RealPropertyColRenderer.java @@ -16,11 +16,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.RealNumberRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.EntityPropertyColDef; import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityPropertiesHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RealNumberFormatingParameters; /** * An {@link AbstractPropertyColRenderer} which renders Real values. @@ -31,20 +29,16 @@ public class RealPropertyColRenderer<T extends IEntityPropertiesHolder> extends AbstractPropertyColRenderer<T> { - private final RealNumberFormatingParameters realNumberFormatingParameters; - - public RealPropertyColRenderer(EntityPropertyColDef<T> colDef, - RealNumberFormatingParameters realNumberFormatingParameters) + public RealPropertyColRenderer(EntityPropertyColDef<T> colDef) { super(colDef); - this.realNumberFormatingParameters = realNumberFormatingParameters; } @Override protected String renderValue(GridRowModel<T> entity) { String value = colDef.getValue(entity); - return RealNumberRenderer.render(value, realNumberFormatingParameters); + return value; } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java index 2e7b56d5d25..9bc035a8094 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java @@ -334,7 +334,8 @@ public abstract class AbstractExternalDataGrid protected ColumnDefsAndConfigs<ExternalData> createColumnsSchema() { - return getColumnsFactory().createColumnsSchema(viewContext, criteria.tryGetPropertyTypes()); + return getColumnsFactory().createColumnsSchema(viewContext, criteria.tryGetPropertyTypes(), + viewContext.getDisplaySettingsManager().getRealNumberFormatingParameters()); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java index 73c4dda8e2f..cdab9fb0c9e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitGrid.java @@ -195,7 +195,8 @@ public class DataSetSearchHitGrid extends AbstractExternalDataGrid implements protected ColumnDefsAndConfigs<ExternalData> createColumnsSchema() { List<PropertyType> propertyTypes = criteria == null ? null : criteria.tryGetPropertyTypes(); - return DataSetSearchHitModel.createColumnsSchema(viewContext, propertyTypes); + return DataSetSearchHitModel.createColumnsSchema(viewContext, propertyTypes, viewContext + .getDisplaySettingsManager().getRealNumberFormatingParameters()); } /** @return this grid as a disposable component with a specified toolbar at the top. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java index 6fede3cefc0..82e41e60734 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetSearchHitModel.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.EntityGridModelFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PropertyTypeRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.data.CommonExternalDataColDefKind; @@ -31,6 +32,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RealNumberFormatingParameters; /** * @author Tomasz Pylak @@ -89,7 +91,8 @@ public class DataSetSearchHitModel extends BaseEntityModel<ExternalData> } public static ColumnDefsAndConfigs<ExternalData> createColumnsSchema( - IMessageProvider messageProvider, List<PropertyType> mergedPropertyTypesOrNull) + IMessageProvider messageProvider, List<PropertyType> mergedPropertyTypesOrNull, + RealNumberFormatingParameters realNumberFormatingParameters) { List<IColumnDefinitionUI<ExternalData>> commonColumnsSchema = createCommonColumnsSchema(messageProvider); @@ -100,7 +103,8 @@ public class DataSetSearchHitModel extends BaseEntityModel<ExternalData> { List<PropertyType> datasetProperties = PropertyTypesFilterUtil.filterDataSetPropertyTypes(mergedPropertyTypesOrNull); - columns.addColumns(createDatasetPropertyTypeColDefs(datasetProperties)); + EntityGridModelFactory.createPropertyColumnsSchema(columns, datasetProperties, + realNumberFormatingParameters); } return columns; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/RelatedDataSetGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/RelatedDataSetGrid.java index b42270620e6..c291544dfc0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/RelatedDataSetGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/RelatedDataSetGrid.java @@ -91,7 +91,8 @@ public class RelatedDataSetGrid extends AbstractExternalDataGrid protected ColumnDefsAndConfigs<ExternalData> createColumnsSchema() { List<PropertyType> propertyTypes = criteria == null ? null : criteria.tryGetPropertyTypes(); - return DataSetSearchHitModel.createColumnsSchema(viewContext, propertyTypes); + return DataSetSearchHitModel.createColumnsSchema(viewContext, propertyTypes, viewContext + .getDisplaySettingsManager().getRealNumberFormatingParameters()); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java index 25c90f7d0c0..e526cc577eb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java @@ -290,7 +290,8 @@ public class ExperimentBrowserGrid extends protected ColumnDefsAndConfigs<Experiment> createColumnsDefinition() { ColumnDefsAndConfigs<Experiment> schema = - getColumnsFactory().createColumnsSchema(viewContext, criteria.getExperimentType()); + getColumnsFactory().createColumnsSchema(viewContext, criteria.getExperimentType(), + viewContext.getDisplaySettingsManager().getRealNumberFormatingParameters()); schema.setGridCellRendererFor(CommonExperimentColDefKind.SHOW_DETAILS_LINK.id(), createShowDetailsLinkCellRenderer()); GridCellRenderer<BaseEntityModel<?>> linkCellRenderer = createInternalLinkCellRenderer(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java index b0058740514..b28d19015c9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnDefsAndConfigs.java @@ -30,6 +30,7 @@ import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.StringEscapeUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; /** @@ -59,11 +60,32 @@ public class ColumnDefsAndConfigs<T> { for (IColumnDefinitionUI<T> column : columnsSchema) { - columnConfigs.add(createColumn(column)); - columnDefs.add(column); + addColumn(column); } } + public void addColumn(IColumnDefinitionUI<T> column, + GridCellRenderer<BaseEntityModel<?>> rendererOrNull) + { + ColumnConfig columnConfig = createColumn(column); + if (rendererOrNull != null) + { + columnConfig.setRenderer(rendererOrNull); + } + addColumn(column, columnConfig); + } + + private void addColumn(IColumnDefinitionUI<T> column) + { + addColumn(column, createColumn(column)); + } + + private void addColumn(IColumnDefinitionUI<T> column, ColumnConfig columnConfig) + { + columnConfigs.add(columnConfig); + columnDefs.add(column); + } + public void setGridCellRendererFor(String columnID, GridCellRenderer<BaseEntityModel<?>> render) { for (ColumnConfig columnConfig : columnConfigs) @@ -93,7 +115,14 @@ public class ColumnDefsAndConfigs<T> columnConfig.setHidden(column.isHidden()); if (column.isEditable()) { - CellEditor editor = new CellEditor(new TextField<String>()); + CellEditor editor = new CellEditor(new TextField<String>() + { + @Override + public void setValue(String value) + { + super.setValue(StringEscapeUtils.unescapeHtml(value)); + } + }); columnConfig.setEditor(editor); } return columnConfig; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java index f57f7556fd6..1a5e0b861a6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java @@ -228,7 +228,8 @@ public class MaterialBrowserGrid extends { ColumnDefsAndConfigs<Material> schema = getColumnsFactory().createColumnsSchema(viewContext, - criteria.getListCriteria().tryGetMaterialType()); + criteria.getListCriteria().tryGetMaterialType(), + viewContext.getDisplaySettingsManager().getRealNumberFormatingParameters()); schema.setGridCellRendererFor(CommonMaterialColDefKind.CODE.id(), createInternalLinkCellRenderer()); return schema; 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 962594d2444..c9c02df7c3c 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 @@ -81,7 +81,7 @@ public class TableCellUtil case INTEGER: case VARCHAR: case BOOLEAN: - case CONTROLLEDVOCABULARY: +// case CONTROLLEDVOCABULARY: return true; default: return false; -- GitLab