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 3d6d009d21969ec92ea1f709852bd11e63851455..f463655ff5f9b9ba5fce21ee394b222971adb69b 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,8 +16,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.model.renderer; -import com.google.gwt.i18n.client.NumberFormat; - +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; @@ -27,14 +26,10 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityPropertiesHolder * * @author Izabela Adamczyk */ -class RealPropertyColRenderer<T extends IEntityPropertiesHolder> extends +public class RealPropertyColRenderer<T extends IEntityPropertiesHolder> extends AbstractPropertyColRenderer<T> { - private static final int MAX_DIGITAL_FORMAT_LENGTH = 10; - private static final String SCIENTIFIC_FORMAT = "0.0000E00"; - private static final String DIGITAL_FORMAT = "0.0000"; - public RealPropertyColRenderer(EntityPropertyColDef<T> colDef) { super(colDef); @@ -44,13 +39,7 @@ class RealPropertyColRenderer<T extends IEntityPropertiesHolder> extends protected String renderValue(GridRowModel<T> entity) { String value = colDef.getValue(entity); - double doubleValue = Double.parseDouble(value); - String formattedValue = NumberFormat.getFormat(DIGITAL_FORMAT).format(doubleValue); - if (formattedValue.length() > MAX_DIGITAL_FORMAT_LENGTH) - { - formattedValue = NumberFormat.getFormat(SCIENTIFIC_FORMAT).format(doubleValue); - } - return formattedValue; + return RealNumberRenderer.render(value); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/RealNumberRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/RealNumberRenderer.java new file mode 100644 index 0000000000000000000000000000000000000000..f2d1c6eeac449e5174813e844025b428f742f341 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/RealNumberRenderer.java @@ -0,0 +1,45 @@ +package ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer; + +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.widget.grid.ColumnData; +import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; +import com.google.gwt.i18n.client.NumberFormat; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; + +/** + * Renderer of {@link Double} value. + * + * @author Izabela Adamczyk + */ +public final class RealNumberRenderer implements GridCellRenderer<BaseEntityModel<?>> +{ + private static final int MAX_DIGITAL_FORMAT_LENGTH = 10; + + private static final String SCIENTIFIC_FORMAT = "0.0000E00"; + + private static final String DIGITAL_FORMAT = "0.0000"; + + public String render(BaseEntityModel<?> model, String property, ColumnData config, + int rowIndex, int colIndex, ListStore<BaseEntityModel<?>> store) + { + String value = String.valueOf(model.get(property)); + if (value == null) + { + return ""; + } + return render(value); + } + + public static String render(String value) + { + double doubleValue = Double.parseDouble(value); + String formattedValue = NumberFormat.getFormat(DIGITAL_FORMAT).format(doubleValue); + if (formattedValue.length() > MAX_DIGITAL_FORMAT_LENGTH) + { + formattedValue = NumberFormat.getFormat(SCIENTIFIC_FORMAT).format(doubleValue); + } + return formattedValue; + } + +} diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java index b2d85d14d696159b06393cd88f59dba6a5984b6b..e87a5f2a789215c0ab6700d76c9650c6a04703e1 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java @@ -35,6 +35,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.Base import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; +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.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractEntityBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; @@ -169,7 +170,7 @@ public class SampleAbundanceBrowserGrid } // property types used in the previous refresh operation or null if it has not occurred yet - private List<PropertyType> previousPropertyTypes; + private final List<PropertyType> previousPropertyTypes; // provides property types which will be used to build property columns in the grid and // criteria to filter samples @@ -334,6 +335,8 @@ public class SampleAbundanceBrowserGrid SampleAbundanceModelFactory.createColumnsSchema(viewContext, propertyTypes); schema.setGridCellRendererFor(SampleAbundanceColDefKind.CODE.id(), LinkRenderer .createLinkRenderer()); + schema.setGridCellRendererFor(SampleAbundanceColDefKind.ABUNDANCE.id(), + new RealNumberRenderer()); return schema; }