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 cbfe66ff35edab514d89c101173fd9964c6de6f6..3407f15e98d68a2034725202a468ccd40729fb97 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 @@ -47,4 +47,10 @@ public class RealPropertyColRenderer<T extends IEntityPropertiesHolder> extends return RealNumberRenderer.render(value, realNumberFormatingParameters); } + @Override + public boolean isNumeric() + { + return true; + } + } 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 index a2c431f3e230e4a2b950cdf15fd7f220c0060f6c..0794c5f85d9a15649d655053372b6171a9d0a660 100644 --- 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 @@ -19,49 +19,11 @@ public final class RealNumberRenderer implements GridCellRenderer<BaseEntityMode { private static final String ZEROS = "00000000000000000000"; private static final int MAX_PRECISION = ZEROS.length(); - - private static final int MAX_DIGITAL_FORMAT_LENGTH = 10; - - private static final double MIN_DIGITAL_FORMAT_VALUE = 0.00005; - - private static final String SCIENTIFIC_FORMAT = "0.0000E0000"; - - private static final String DIGITAL_FORMAT = "0.0000"; - - private 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); - } - if (Math.abs(doubleValue) < MIN_DIGITAL_FORMAT_VALUE) - { - formattedValue += "..."; // show 0.0000... - } else - { - formattedValue += " "; // add ' ' to always have a correct alignment - } - return MultilineHTML.wrapUpInDivWithTooltip(formattedValue, Double.toString(doubleValue)); - } - - public Object render(BaseEntityModel<?> model, String property, ColumnData config, - int rowIndex, int colIndex, ListStore<BaseEntityModel<?>> store, - Grid<BaseEntityModel<?>> grid) - { - String value = String.valueOf(model.get(property)); - if (value == null) - { - return ""; - } - return render(value); - } - + public static String render(String value, RealNumberFormatingParameters realNumberFormatingParameters) { - if (realNumberFormatingParameters.isFormatingEnabled() == false) + if (realNumberFormatingParameters.isFormatingEnabled() == false || value.length() == 0) { return value; } @@ -76,4 +38,23 @@ public final class RealNumberRenderer implements GridCellRenderer<BaseEntityMode return MultilineHTML.wrapUpInDivWithTooltip(formattedValue, value); } + private final RealNumberFormatingParameters realNumberFormatingParameters; + + public RealNumberRenderer(RealNumberFormatingParameters realNumberFormatingParameters) + { + this.realNumberFormatingParameters = realNumberFormatingParameters; + } + + public Object render(BaseEntityModel<?> model, String property, ColumnData config, + int rowIndex, int colIndex, ListStore<BaseEntityModel<?>> store, + Grid<BaseEntityModel<?>> grid) + { + String value = String.valueOf(model.get(property)); + if (value == null) + { + return ""; + } + return render(value, realNumberFormatingParameters); + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java index 8c7cb1c65b9b3f61dd4e34eb13372da3aca02138..41b66a1ae0065052a16d5049635c1273c6ed1b3a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java @@ -31,20 +31,23 @@ public abstract class AbstractColumnDefinition<T> implements IColumnDefinitionUI private boolean isHidden; + private boolean numeric; + // GWT only protected AbstractColumnDefinition() { - this(null, 0, false); + this(null, 0, false, false); } /** * if headerTextOrNull is null, it means that we never want to call {@link #getHeader()} method */ - protected AbstractColumnDefinition(String headerTextOrNull, int width, boolean isHidden) + protected AbstractColumnDefinition(String headerTextOrNull, int width, boolean isHidden, boolean numeric) { this.headerText = headerTextOrNull; this.width = width; this.isHidden = isHidden; + this.numeric = numeric; } public int getWidth() @@ -76,7 +79,7 @@ public abstract class AbstractColumnDefinition<T> implements IColumnDefinitionUI public boolean isNumeric() { - return false; + return numeric; } public boolean isLink() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinitionKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinitionKind.java index 0d774d1e9e92b79ac164c002002b261135728c02..512701d1bf50fd011231c72f70d81f97b444ad63 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinitionKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinitionKind.java @@ -50,22 +50,31 @@ public abstract class AbstractColumnDefinitionKind<T> private boolean isHidden; + private boolean numeric; + public AbstractColumnDefinitionKind(final String headerMsgKey, final int width, final boolean isHidden) + { + this(headerMsgKey, width, isHidden, false); + } + + public AbstractColumnDefinitionKind(final String headerMsgKey, final int width, + final boolean isHidden, boolean numeric) { this.headerMsgKey = headerMsgKey; this.width = width; this.isHidden = isHidden; + this.numeric = numeric; } public AbstractColumnDefinitionKind(final String headerMsgKey, final boolean isHidden) { - this(headerMsgKey, DEFAULT_COLUMN_WIDTH, isHidden); + this(headerMsgKey, DEFAULT_COLUMN_WIDTH, isHidden, false); } public AbstractColumnDefinitionKind(final String headerMsgKey, final int width) { - this(headerMsgKey, width, false); + this(headerMsgKey, width, false, false); } public AbstractColumnDefinitionKind(final String headerMsgKey) @@ -90,6 +99,11 @@ public abstract class AbstractColumnDefinitionKind<T> { return headerMsgKey; } + + public boolean isNumeric() + { + return numeric; + } public Comparable<?> getComparableValue(GridRowModel<T> entity) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/CommonColumnDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/CommonColumnDefinition.java index 564e6863b91e4c13d097fe0e71e52bfd6531baef..cbbb2d34982ac34583c81f3a5aa0e350cc604ebc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/CommonColumnDefinition.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/CommonColumnDefinition.java @@ -41,7 +41,7 @@ public class CommonColumnDefinition<T> extends AbstractColumnDefinition<T> final String headerText) { super(headerText, columnDefinitionKind.getDescriptor().getWidth(), columnDefinitionKind - .getDescriptor().isHidden()); + .getDescriptor().isHidden(), columnDefinitionKind.getDescriptor().isNumeric()); this.columnDefinitionKind = columnDefinitionKind; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/EntityPropertyColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/EntityPropertyColDef.java index 4930b32f5e3a20423e874dde60605a859f5c05bc..b969a8a41f3f3d97fc2405bc41f0ed80a5f1c888 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/EntityPropertyColDef.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/EntityPropertyColDef.java @@ -91,7 +91,7 @@ public class EntityPropertyColDef<T extends IEntityPropertiesHolder> extends boolean isInternalNamespace, String propertyTypeLabel, String identifierPrefix, PropertyType propertyType) { - super(propertyTypeLabel, width, isDisplayedByDefault); + super(propertyTypeLabel, width, isDisplayedByDefault, false); this.isInternalNamespace = isInternalNamespace; this.simpleCode = propertyTypeCode; this.identifierPrefix = identifierPrefix; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/AbstractParentSampleColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/AbstractParentSampleColDef.java index 594e5253040b81ce4f231d2af947d3d45e37f25c..7caf1293b075e07c28e83b1431d71943f11d2be4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/AbstractParentSampleColDef.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/AbstractParentSampleColDef.java @@ -33,7 +33,7 @@ public abstract class AbstractParentSampleColDef extends AbstractColumnDefinitio AbstractParentSampleColDef(int level, String headerText) { - super(headerText, AbstractColumnDefinitionKind.DEFAULT_COLUMN_WIDTH, false); + super(headerText, AbstractColumnDefinitionKind.DEFAULT_COLUMN_WIDTH, false, false); this.level = level; } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/calculator/RowCalculatorTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/calculator/RowCalculatorTest.java index 8d17595dcf814648279d9ec215a8b9ee566bdf63..e0f22846cd4e55a170d8acaccc3f94e7816d1d95 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/calculator/RowCalculatorTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/calculator/RowCalculatorTest.java @@ -56,7 +56,7 @@ public class RowCalculatorTest extends AssertJUnit public void setUp() { availableColumns = new LinkedHashSet<IColumnDefinition<Data>>(); - availableColumns.add(new AbstractColumnDefinition<Data>("header", 100, true) + availableColumns.add(new AbstractColumnDefinition<Data>("header", 100, true, false) { public String getIdentifier() diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/FilterUtilsTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/FilterUtilsTest.java index 3f54c67daa15af12d3a12a8ab59e756e6d285e0f..7bd2ba4f5a7a1009888f1337b561c700f438f7e7 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/FilterUtilsTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/FilterUtilsTest.java @@ -63,7 +63,7 @@ public class FilterUtilsTest extends AssertJUnit filterInfo.setParameters(new LinkedHashSet<ParameterWithValue>(Arrays.asList(parameter))); Set<IColumnDefinition<Data>> availableColumns = new LinkedHashSet<IColumnDefinition<Data>>(); - availableColumns.add(new AbstractColumnDefinition<Data>("header", 100, true) + availableColumns.add(new AbstractColumnDefinition<Data>("header", 100, true, false) { public String getIdentifier()