From 4c676019483df341ca48203239da5d07dc9ec2c9 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 22 Dec 2010 10:26:13 +0000 Subject: [PATCH] SE-326 create column definitions only once SVN: 19209 --- .../application/model/BaseEntityModel.java | 11 +++ .../ProteinByExperimentBrowserGrid.java | 75 +++++++++++-------- 2 files changed, 53 insertions(+), 33 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java index a8dab5b4c07..2305cf9c537 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/BaseEntityModel.java @@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.CommonColumnDefinition; 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; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.GridCustomColumnDefinition; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.MultilineHTML; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; @@ -58,11 +59,21 @@ public class BaseEntityModel<T> extends SimplifiedBaseModelData /** NOTE: it's assumed that columnDefinitions do not contain custom columns */ public BaseEntityModel(final GridRowModel<T> entity, List<? extends IColumnDefinition<T>> columnDefinitions) + { + this(entity, columnDefinitions, false); + } + + public BaseEntityModel(final GridRowModel<T> entity, + List<? extends IColumnDefinition<T>> columnDefinitions, boolean ignoreCustomColumns) { set(ModelDataPropertyNames.OBJECT, entity.getOriginalObject()); for (IColumnDefinition<T> column : columnDefinitions) { + if (ignoreCustomColumns && column instanceof GridCustomColumnDefinition) + { + continue; + } String value = renderColumnValue(entity, column); set(column.getIdentifier(), value); if (column instanceof IColumnDefinitionUI<?>) diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinByExperimentBrowserGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinByExperimentBrowserGrid.java index e9696fd11fe..c03f9389143 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinByExperimentBrowserGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinByExperimentBrowserGrid.java @@ -87,6 +87,10 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn private List<AbundanceColumnDefinition> abundanceColumnDefinitions; + private boolean abundanceColumnDefinitionsChanged = true; + + private ColumnDefsAndConfigs<ProteinInfo> columnDefinitionsAndConfigs; + private IDataRefreshCallback postRefreshCallback = new IDataRefreshCallback() { public void postRefresh(boolean wasSuccessful) @@ -182,6 +186,7 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn criteria.setTreatmentTypeCode(treatmentTypeCode); criteria.setAggregateOriginal(aggregateOriginal); abundanceColumnDefinitions = definitions; + abundanceColumnDefinitionsChanged = true; refresh(postRefreshCallback, true); } @@ -195,49 +200,53 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn { return ProteinColDefKind.values(); } - + @Override protected ColumnDefsAndConfigs<ProteinInfo> createColumnsDefinition() { - ColumnDefsAndConfigs<ProteinInfo> definitions = super.createColumnsDefinition(); - List<IColumnDefinitionUI<ProteinInfo>> columns = - new ArrayList<IColumnDefinitionUI<ProteinInfo>>(); - List<String> abundanceColumnIDs = new ArrayList<String>(); - for (AbundanceColumnDefinition definition : abundanceColumnDefinitions) + if (columnDefinitionsAndConfigs == null || abundanceColumnDefinitionsChanged) { - String header = definition.getSampleCode(); - Map<String, String> properties = new HashMap<String, String>(); - properties.put(ABUNDANCE_PROPERTY_KEY, header); - List<Treatment> treatments = definition.getTreatments(); - if (treatments.isEmpty() == false) + columnDefinitionsAndConfigs = super.createColumnsDefinition(); + List<IColumnDefinitionUI<ProteinInfo>> columns = + new ArrayList<IColumnDefinitionUI<ProteinInfo>>(); + List<String> abundanceColumnIDs = new ArrayList<String>(); + for (AbundanceColumnDefinition definition : abundanceColumnDefinitions) { - header = ""; - String delim = ""; - for (Treatment treatment : treatments) + String header = definition.getSampleCode(); + Map<String, String> properties = new HashMap<String, String>(); + properties.put(ABUNDANCE_PROPERTY_KEY, header); + List<Treatment> treatments = definition.getTreatments(); + if (treatments.isEmpty() == false) { - header += delim + treatment; - delim = ", "; - properties.put(treatment.getTypeCode(), treatment.getValue()); + header = ""; + String delim = ""; + for (Treatment treatment : treatments) + { + header += delim + treatment; + delim = ", "; + properties.put(treatment.getTypeCode(), treatment.getValue()); + } } - } - final long sampleID = definition.getID(); - IColumnDefinitionUI<ProteinInfo> columnDefinition = + final long sampleID = definition.getID(); + IColumnDefinitionUI<ProteinInfo> columnDefinition = new InternalAbundanceColumnDefinition(header, properties, 100, false, sampleID); - abundanceColumnIDs.add(columnDefinition.getIdentifier()); - columns.add(columnDefinition); - } - definitions.addColumns(columns); - definitions.setGridCellRendererFor(ProteinColDefKind.ACCESSION_NUMBER.id(), - createInternalLinkCellRenderer()); - RealNumberRenderer renderer = + abundanceColumnIDs.add(columnDefinition.getIdentifier()); + columns.add(columnDefinition); + } + columnDefinitionsAndConfigs.addColumns(columns); + columnDefinitionsAndConfigs.setGridCellRendererFor(ProteinColDefKind.ACCESSION_NUMBER.id(), + createInternalLinkCellRenderer()); + RealNumberRenderer renderer = new RealNumberRenderer(viewContext.getDisplaySettingsManager() .getRealNumberFormatingParameters()); - for (String abundanceColumneID : abundanceColumnIDs) - { - definitions.setGridCellRendererFor(abundanceColumneID, renderer); + for (String abundanceColumneID : abundanceColumnIDs) + { + columnDefinitionsAndConfigs.setGridCellRendererFor(abundanceColumneID, renderer); + } + columnDefinitionsAndConfigs.setGridCellRendererFor(ProteinColDefKind.COVERAGE.id(), renderer); + abundanceColumnDefinitionsChanged = false; } - definitions.setGridCellRendererFor(ProteinColDefKind.COVERAGE.id(), renderer); - return definitions; + return columnDefinitionsAndConfigs; } @Override @@ -245,7 +254,7 @@ class ProteinByExperimentBrowserGrid extends AbstractSimpleBrowserGrid<ProteinIn { Set<IColumnDefinition<ProteinInfo>> columnDefs = createColumnsDefinition().getColumnDefs(); return new BaseEntityModel<ProteinInfo>(entity, - new ArrayList<IColumnDefinition<ProteinInfo>>(columnDefs)); + new ArrayList<IColumnDefinition<ProteinInfo>>(columnDefs), true); } @Override -- GitLab