diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java index 38579bf7d210ba6d0815ffbc6a1022ddfca05527..cee5c73a47125284994aae58734cbee831d4c7d9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java @@ -241,14 +241,7 @@ public interface ICommonClientService extends IClientService * Returns a key which can be used be the export servlet (and eventually * {@link #getExportTable(String, String)}) to reference the export criteria in an easy way. */ - public String prepareExportSamples(final TableExportCriteria<Sample> criteria) - throws UserFailureException; - - /** - * Returns a key which can be used be the export servlet (and eventually - * {@link #getExportTable(String, String)}) to reference the export criteria in an easy way. - */ - public String prepareExportSamples2( + public String prepareExportSamples( final TableExportCriteria<TableModelRowWithObject<Sample>> criteria) throws UserFailureException; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java index c2e752a83a9776337ab6f8decde47c8b689c7bbc..1f50260354dce10a9ce169849e6d40c7279f02f9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java @@ -198,14 +198,8 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync public void listSamples2(final ListSampleDisplayCriteria2 criteria, AsyncCallback<TypedTableResultSet<Sample>> asyncCallback); - /** - * @see ICommonClientService#prepareExportSamples(TableExportCriteria) - */ - public void prepareExportSamples(final TableExportCriteria<Sample> criteria, - AsyncCallback<String> asyncCallback); - - /** @see ICommonClientService#prepareExportSamples2(TableExportCriteria) */ - public void prepareExportSamples2( + /** @see ICommonClientService#prepareExportSamples(TableExportCriteria) */ + public void prepareExportSamples( TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, AsyncCallback<String> callback); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java index 14115e901586de9ce11fea37979c8df9e6d07ef4..d1f76d659809ce7bf5f71d926f0b7e4cc854058e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java @@ -50,7 +50,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.propert import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type.PropertyTypeRegistrationForm; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBatchRegisterUpdatePanel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleRegistrationPanel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleSearchHitGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleTypeGrid; @@ -116,7 +116,7 @@ public final class ComponentProvider public ITabItem create() { IDisposableComponent browser = - SampleBrowserGrid2.create(viewContext, initialGroupOrNull, + SampleBrowserGrid.create(viewContext, initialGroupOrNull, initialSampleTypeOrNull); return createTab(getTabTitle(), browser); } @@ -124,7 +124,7 @@ public final class ComponentProvider @Override public String getId() { - return SampleBrowserGrid2.MAIN_BROWSER_ID; + return SampleBrowserGrid.MAIN_BROWSER_ID; } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleModelFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleModelFactory.java deleted file mode 100644 index 6c631de947cf63da2d31b0d83252d57924aa68c4..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/model/SampleModelFactory.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2008 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -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.data.ModelData; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -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.sample.AbstractParentSampleColDef; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.ParentContainerSampleColDef; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.ParentGeneratedFromSampleColDef; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; -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.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RealNumberFormatingParameters; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; - -/** - * {@link ModelData} for {@link Sample}. Allows to display static columns, properties and sample - * parents/containers. - * - * @author Izabela Adamczyk - * @author Tomasz Pylak - * @author Piotr Buczek - */ -public final class SampleModelFactory -{ - public static ColumnDefsAndConfigs<Sample> createColumnsSchema( - final IViewContext<?> viewContext, List<PropertyType> propertyTypes, - List<AbstractParentSampleColDef> parentColumnsSchema) - { - return new SampleModelFactory(viewContext).doCreateColumnsSchema(viewContext, - propertyTypes, parentColumnsSchema); - } - - public static BaseEntityModel<Sample> createModel(final IViewContext<?> viewContext, - GridRowModel<Sample> sampleModel, SampleType sampleType, - RealNumberFormatingParameters realNumberFormatingParameters) - { - List<? extends IColumnDefinitionUI<Sample>> allColumnsDefinition = - new SampleModelFactory(viewContext).createColumnsSchemaForRendering(sampleModel, - sampleType, realNumberFormatingParameters); - BaseEntityModel<Sample> model = - new BaseEntityModel<Sample>(sampleModel, allColumnsDefinition); - return model; - } - - private final EntityGridModelFactory<Sample> entityGridModelFactory; - - private SampleModelFactory(final IViewContext<?> viewContext) - { - this.entityGridModelFactory = - new EntityGridModelFactory<Sample>(viewContext, CommonSampleColDefKind.values()); - } - - private List<IColumnDefinitionUI<Sample>> createColumnsSchemaForRendering( - GridRowModel<Sample> sampleModel, SampleType sampleType, - RealNumberFormatingParameters realNumberFormatingParameters) - { - List<IColumnDefinitionUI<Sample>> columns = - entityGridModelFactory.createColumnsSchemaForRendering(sampleModel, - realNumberFormatingParameters); - List<AbstractParentSampleColDef> parentColumns = - createParentColumnsSchema(null, sampleType); - columns.addAll(parentColumns); - return columns; - } - - private ColumnDefsAndConfigs<Sample> doCreateColumnsSchema(IMessageProvider messageProvider, - List<PropertyType> propertyTypes, - List<? extends IColumnDefinitionUI<Sample>> parentColumnsSchema) - { - assert messageProvider != null : "message provider needed to create table headers"; - - ColumnDefsAndConfigs<Sample> columns = - entityGridModelFactory.createColumnsSchema(messageProvider, propertyTypes); - columns.addColumns(parentColumnsSchema); - return columns; - } - - public static List<AbstractParentSampleColDef> createParentColumnsSchema( - IMessageProvider msgProviderOrNull, SampleType sampleTypeOrNull) - { - List<AbstractParentSampleColDef> list = createColDefList(); - if (sampleTypeOrNull != null) - { - if (sampleTypeOrNull.isShowParents()) - { - String headerText = tryGetMessage(msgProviderOrNull, Dict.PARENTS); - list.add(new ParentGeneratedFromSampleColDef(headerText)); - } - if (sampleTypeOrNull.isShowContainer()) - { - String headerText = tryGetMessage(msgProviderOrNull, Dict.PART_OF); - list.add(new ParentContainerSampleColDef(headerText)); - } - } - return list; - } - - private static List<AbstractParentSampleColDef> createColDefList() - { - return new ArrayList<AbstractParentSampleColDef>(); - } - - private static String tryGetMessage(IMessageProvider msgProviderOrNull, String messageKey) - { - return msgProviderOrNull == null ? null : msgProviderOrNull.getMessage(messageKey); - } - -} 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 deleted file mode 100644 index 7d4787f7e6cd809f129788a82934c14961510849..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/AbstractParentSampleColDef.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2008 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample; - -import com.google.gwt.user.client.rpc.IsSerializable; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinition; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; - -public abstract class AbstractParentSampleColDef extends AbstractColumnDefinition<Sample> implements - IsSerializable -{ - abstract public Sample tryGetParent(Sample sample); - - AbstractParentSampleColDef(String headerText) - { - super(headerText, AbstractColumnDefinitionKind.DEFAULT_COLUMN_WIDTH, false, false); - } - - @Override - protected String tryGetValue(Sample sample) - { - Sample parent = tryGetParent(sample); - if (parent != null) - { - return getAsValue(parent); - } else - { - return null; - } - } - - protected final String getAsValue(Sample sample) - { - return sample.getIdentifier(); - } - - @Override - public String tryGetLink(Sample sample) - { - return LinkExtractor.tryExtract(tryGetParent(sample)); - } -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/CommonSampleColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/CommonSampleColDefKind.java deleted file mode 100644 index 2cafe198083262efb595019c97ae6aaaf5029b70..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/CommonSampleColDefKind.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright 2008 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample; - -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind; -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.LinkExtractor; -import ch.systemsx.cisd.openbis.generic.shared.basic.SimpleYesNoRenderer; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; - -public enum CommonSampleColDefKind implements IColumnDefinitionKind<Sample> -{ - DATABASE_INSTANCE(new AbstractColumnDefinitionKind<Sample>(Dict.DATABASE_INSTANCE, true) - { - @Override - public String tryGetValue(Sample entity) - { - DatabaseInstance databaseInstance = entity.getDatabaseInstance(); - if (databaseInstance == null) - { - databaseInstance = entity.getSpace().getInstance(); - } - return databaseInstance.getCode(); - } - }), - - GROUP(new AbstractColumnDefinitionKind<Sample>(Dict.GROUP, true) - { - @Override - public String tryGetValue(Sample entity) - { - final Space space = entity.getSpace(); - return space == null ? "" : space.getCode(); - } - }), - - CODE(new AbstractColumnDefinitionKind<Sample>(Dict.CODE) - { - @Override - public String tryGetValue(Sample entity) - { - return entity.getCode(); - } - - @Override - public String tryGetLink(Sample entity) - { - return LinkExtractor.tryExtract(entity); - } - }), - - SUBCODE(new AbstractColumnDefinitionKind<Sample>(Dict.SUBCODE, true) - { - @Override - public String tryGetValue(Sample entity) - { - return entity.getSubCode(); - } - - @Override - public String tryGetLink(Sample entity) - { - return LinkExtractor.tryExtract(entity); - } - }), - - SAMPLE_IDENTIFIER(new AbstractColumnDefinitionKind<Sample>(Dict.SAMPLE_IDENTIFIER, 150, true) - { - @Override - public String tryGetValue(Sample entity) - { - return entity.getIdentifier(); - } - - @Override - public String tryGetLink(Sample entity) - { - return LinkExtractor.tryExtract(entity); - } - }), - - SAMPLE_TYPE(new AbstractColumnDefinitionKind<Sample>(Dict.SAMPLE_TYPE, 150, true) - { - @Override - public String tryGetValue(Sample entity) - { - return entity.getSampleType().getCode(); - } - }), - - IS_INSTANCE_SAMPLE(new AbstractColumnDefinitionKind<Sample>(Dict.IS_INSTANCE_SAMPLE, true) - { - @Override - public String tryGetValue(Sample entity) - { - return SimpleYesNoRenderer.render(entity.getDatabaseInstance() != null); - } - }), - - IS_INVALID(new AbstractColumnDefinitionKind<Sample>(Dict.IS_INVALID, true) - { - @Override - public String tryGetValue(Sample entity) - { - return renderInvalidationFlag(entity); - } - }), - - EXPERIMENT(new AbstractColumnDefinitionKind<Sample>(Dict.EXPERIMENT) - { - @Override - public String tryGetValue(Sample entity) - { - final Experiment exp = entity.getExperiment(); - return exp == null ? null : exp.getCode(); - } - - @Override - public String tryGetLink(Sample entity) - { - return LinkExtractor.tryExtract(entity.getExperiment()); - } - }), - - EXPERIMENT_IDENTIFIER(new AbstractColumnDefinitionKind<Sample>(Dict.EXPERIMENT_IDENTIFIER, 200, - true) - { - @Override - public String tryGetValue(Sample entity) - { - final Experiment exp = entity.getExperiment(); - return exp == null ? null : exp.getIdentifier(); - } - - @Override - public String tryGetLink(Sample entity) - { - return LinkExtractor.tryExtract(entity.getExperiment()); - } - }), - - PROJECT(new AbstractColumnDefinitionKind<Sample>(Dict.PROJECT) - { - @Override - public String tryGetValue(Sample entity) - { - final Experiment exp = entity.getExperiment(); - return exp == null ? null : exp.getProject().getCode(); - } - - @Override - public String tryGetLink(Sample entity) - { - final Experiment exp = entity.getExperiment(); - return exp == null ? null : LinkExtractor.tryExtract(exp.getProject()); - } - }), - - REGISTRATOR(new AbstractColumnDefinitionKind<Sample>(Dict.REGISTRATOR) - { - @Override - public String tryGetValue(Sample entity) - { - return renderRegistrator(entity); - } - }), - - REGISTRATION_DATE(new AbstractColumnDefinitionKind<Sample>(Dict.REGISTRATION_DATE, - AbstractColumnDefinitionKind.DATE_COLUMN_WIDTH) - { - @Override - public String tryGetValue(Sample entity) - { - return renderRegistrationDate(entity); - } - }), - - PERM_ID(new AbstractColumnDefinitionKind<Sample>(Dict.PERM_ID, true) - { - @Override - public String tryGetValue(Sample entity) - { - return entity.getPermId(); - } - }), - - SHOW_DETAILS_LINK(new AbstractColumnDefinitionKind<Sample>(Dict.SHOW_DETAILS_LINK, true) - { - @Override - public String tryGetValue(Sample entity) - { - return entity.getPermlink(); - } - }); - - private final AbstractColumnDefinitionKind<Sample> columnDefinitionKind; - - private CommonSampleColDefKind(AbstractColumnDefinitionKind<Sample> columnDefinitionKind) - { - this.columnDefinitionKind = columnDefinitionKind; - } - - public String id() - { - return name(); - } - - public AbstractColumnDefinitionKind<Sample> getDescriptor() - { - return columnDefinitionKind; - } - -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/ParentContainerSampleColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/ParentContainerSampleColDef.java deleted file mode 100644 index e10873e432a0283642afab1b243882ad16bd881b..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/ParentContainerSampleColDef.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2008 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; - -/** - * @author Izabela Adamczyk - */ -public class ParentContainerSampleColDef extends AbstractParentSampleColDef -{ - private static final String IDENTIFIER = "containerParent"; - - // GWT only - public ParentContainerSampleColDef() - { - this(null); - } - - public ParentContainerSampleColDef(String headerText) - { - super(headerText); - } - - public String getIdentifier() - { - return IDENTIFIER; - } - - @Override - public Sample tryGetParent(Sample sample) - { - return sample.getContainer(); - } - -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/ParentGeneratedFromSampleColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/ParentGeneratedFromSampleColDef.java deleted file mode 100644 index 549ca83249d864f6403b29ed6f881865cc05d469..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/specific/sample/ParentGeneratedFromSampleColDef.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2008 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample; - -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; - -public class ParentGeneratedFromSampleColDef extends AbstractParentSampleColDef -{ - private static final String IDENTIFIER = "generatedFromParent"; - - private static final int MAX_PARENTS = 4; - - // GWT only - public ParentGeneratedFromSampleColDef() - { - this(null); - } - - public ParentGeneratedFromSampleColDef(String headerText) - { - super(headerText); - } - - public String getIdentifier() - { - return IDENTIFIER; - } - - @Override - public Sample tryGetParent(Sample sample) - { - if (sample.getParents().size() == 1) - { - return sample.getGeneratedFrom(); - } else - { - return null; - } - } - - @Override - protected String tryGetValue(Sample sample) - { - int parentsSize = sample.getParents().size(); - if (parentsSize == 0) - { - return null; - } else if (parentsSize == 1) - { - return super.tryGetValue(sample); - } else - { - StringBuilder sb = new StringBuilder(); - int counter = 0; - for (Sample parent : sample.getParents()) - { - if (counter == MAX_PARENTS) - { - sb.append("... (").append(parentsSize - MAX_PARENTS).append(" more)"); - break; - } - sb.append(getAsValue(parent)).append("\n"); - counter++; - } - return sb.toString(); - } - } - -} 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 0c7b50938e03697470ca26c5d3a496ec27fd9046..559220334f6a3933d9a58ab3776e771f40de1ade 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 @@ -41,7 +41,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Display 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.LinkExtractor; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.experiment.CommonExperimentColDefKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind; 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; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; @@ -145,9 +144,9 @@ public class ExperimentBrowserGrid extends { super(viewContext, GRID_ID, DisplayTypeIDGenerator.ENTITY_BROWSER_GRID); this.criteriaProvider = criteriaProvider; - registerLinkClickListenerFor(CommonSampleColDefKind.EXPERIMENT_IDENTIFIER.id(), + registerLinkClickListenerFor(CommonExperimentColDefKind.EXPERIMENT_IDENTIFIER.id(), showEntityViewerLinkClickListener); - registerLinkClickListenerFor(CommonSampleColDefKind.PROJECT.id(), + registerLinkClickListenerFor(CommonExperimentColDefKind.PROJECT.id(), new ICellListener<Experiment>() { public void handle(Experiment rowItem, boolean keyPressed) @@ -265,12 +264,12 @@ public class ExperimentBrowserGrid extends { ColumnDefsAndConfigs<Experiment> schema = getColumnsFactory().createColumnsSchema(viewContext, criteria.getExperimentType()); - schema.setGridCellRendererFor(CommonSampleColDefKind.SHOW_DETAILS_LINK.id(), + schema.setGridCellRendererFor(CommonExperimentColDefKind.SHOW_DETAILS_LINK.id(), createShowDetailsLinkCellRenderer()); GridCellRenderer<BaseEntityModel<?>> linkCellRenderer = createInternalLinkCellRenderer(); - schema.setGridCellRendererFor(CommonSampleColDefKind.EXPERIMENT_IDENTIFIER.id(), + schema.setGridCellRendererFor(CommonExperimentColDefKind.EXPERIMENT_IDENTIFIER.id(), linkCellRenderer); - schema.setGridCellRendererFor(CommonSampleColDefKind.PROJECT.id(), linkCellRenderer); + schema.setGridCellRendererFor(CommonExperimentColDefKind.PROJECT.id(), linkCellRenderer); return schema; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/SampleChooserButton.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/SampleChooserButton.java index 6c06eb8521d1ea9ac179266e2db3f9275b82d04d..e093bd674d9c9af9dfc1b30e6340c8e3e9617696 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/SampleChooserButton.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/SampleChooserButton.java @@ -30,7 +30,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.SampleTypeDisplayID; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; @@ -127,7 +127,7 @@ public class SampleChooserButton extends Button implements IChosenEntitySetter<T SampleTypeDisplayID sampleTypeDisplayID) { DisposableEntityChooser<TableModelRowWithObject<Sample>> browser = - SampleBrowserGrid2.createChooser(viewContext, addShared, addAll, + SampleBrowserGrid.createChooser(viewContext, addShared, addAll, excludeWithoutExperiment, sampleTypeDisplayID); String title = viewContext.getMessage(Dict.TITLE_CHOOSE_SAMPLE); new EntityChooserDialog<TableModelRowWithObject<Sample>>(browser, chooserSampleSetter, title, viewContext).show(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/SampleChooserField.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/SampleChooserField.java index be142ff7e08a0b9b6223ac56d1bf849d4228ef6b..aad5c9e76a97fc46c940a26dbc435606041d7355 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/SampleChooserField.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/SampleChooserField.java @@ -24,7 +24,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.SampleTypeDisplayID; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; @@ -130,7 +130,7 @@ public class SampleChooserField extends ChosenEntitySetter<TableModelRowWithObje SampleTypeDisplayID sampleTypeDisplayID) { DisposableEntityChooser<TableModelRowWithObject<Sample>> browser = - SampleBrowserGrid2.createChooser(viewContext, addShared, addAll, + SampleBrowserGrid.createChooser(viewContext, addShared, addAll, excludeWithoutExperiment, sampleTypeDisplayID); String title = viewContext.getMessage(Dict.TITLE_CHOOSE_SAMPLE); new EntityChooserDialog<TableModelRowWithObject<Sample>>(browser, chosenSampleField, title, viewContext).show(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java index 1c2378b57e7dfdb51190f5b4906517372bf2591c..46723308627c0db170ed3cc98613a82147420b2b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java @@ -1,5 +1,5 @@ /* - * Copyright 2008 ETH Zuerich, CISD + * Copyright 2010 ETH Zuerich, CISD * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,11 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample; +import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete; import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit; +import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -25,9 +28,9 @@ import java.util.Set; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.Dialog; -import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; +import com.google.gwt.user.client.rpc.AsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; @@ -41,18 +44,16 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.SampleTypeDisplayID; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SampleModelFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.PersonRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.DisplayedAndSelectedEntities; -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.TypedTableGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.AbstractParentSampleColDef; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind; -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.AbstractEntityBrowserGrid.ICriteriaProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListener; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListenerAndLinkGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesCriteriaProvider; @@ -60,16 +61,16 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.en import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedActionWithResult; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.SetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListEntityDisplayCriteriaKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleDisplayCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleDisplayCriteria2; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGridColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -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.IEntityInformationHolderWithPermId; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; @@ -77,20 +78,20 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; /** - * A {@link LayoutContainer} which contains the grid where the samples are displayed. - * - * @author Christian Ribeaud - * @author Tomasz Pylak + * Grid showing {@link Sample} instances. + * + * @author Franz-Josef Elmer */ -public class SampleBrowserGrid extends - AbstractEntityBrowserGrid<Sample, BaseEntityModel<Sample>, ListSampleDisplayCriteria> +public class SampleBrowserGrid extends TypedTableGrid<Sample> { private static final String PREFIX = GenericConstants.ID_PREFIX + "sample-browser"; @@ -99,14 +100,17 @@ public class SampleBrowserGrid extends public static final String MAIN_GRID_ID = createGridId(MAIN_BROWSER_ID); - public static final String GRID_ID_SUFFIX = "_grid"; - public static final String EDIT_BUTTON_ID_SUFFIX = "_edit-button"; public static final String SHOW_DETAILS_BUTTON_ID_SUFFIX = "_show-details-button"; + public static final String createGridId(final String browserId) + { + return browserId + GRID_POSTFIX; + } + /** Creates a grid without additional toolbar buttons. It can serve as a entity chooser. */ - public static DisposableEntityChooser<Sample> createChooser( + public static DisposableEntityChooser<TableModelRowWithObject<Sample>> createChooser( final IViewContext<ICommonClientServiceAsync> viewContext, final boolean addShared, boolean addAll, final boolean excludeWithoutExperiment, SampleTypeDisplayID sampleTypeID) { @@ -119,7 +123,7 @@ public class SampleBrowserGrid extends DisplayTypeIDGenerator.ENTITY_BROWSER_GRID) { @Override - protected void showEntityViewer(Sample sample, boolean editMode, + protected void showEntityViewer(TableModelRowWithObject<Sample> row, boolean editMode, boolean active) { // do nothing - avoid showing the details after double click @@ -309,9 +313,6 @@ public class SampleBrowserGrid extends } - // property types used in the previous refresh operation or null if it has not occurred yet - private List<PropertyType> previousPropertyTypes; - // provides property types which will be used to build property columns in the grid and // criteria to filter samples private final ISampleCriteriaProvider propertyTypesAndCriteriaProvider; @@ -322,69 +323,293 @@ public class SampleBrowserGrid extends ISampleCriteriaProvider criteriaProvider, String browserId, boolean refreshAutomatically, IDisplayTypeIDGenerator displayTypeIDGenerator) { - super(viewContext, createGridId(browserId), refreshAutomatically, displayTypeIDGenerator); - this.propertyTypesAndCriteriaProvider = criteriaProvider; - this.previousPropertyTypes = null; + super(viewContext, browserId, displayTypeIDGenerator); + propertyTypesAndCriteriaProvider = criteriaProvider; + linkSample(); + linkExperiment(); + linkProject(); + linkParent(); + linkContainer(); + } - registerLinkClickListenerFor(CommonSampleColDefKind.SUBCODE.id(), - showEntityViewerLinkClickListener); - registerLinkClickListenerFor(CommonSampleColDefKind.SAMPLE_IDENTIFIER.id(), - showEntityViewerLinkClickListener); - ICellListener<Sample> experimentClickListener = new OpenEntityDetailsTabCellClickListener() - { - @Override - protected IEntityInformationHolderWithPermId getEntity(Sample rowItem) - { - return rowItem.getExperiment(); - } - }; - registerLinkClickListenerFor(CommonSampleColDefKind.EXPERIMENT.id(), - experimentClickListener); - registerLinkClickListenerFor(CommonSampleColDefKind.EXPERIMENT_IDENTIFIER.id(), - experimentClickListener); - registerLinkClickListenerFor(CommonSampleColDefKind.PROJECT.id(), - new ICellListener<Sample>() + @Override + public String getGridDisplayTypeID() + { + ListSampleDisplayCriteria criteria = getCriteriaProvider().tryGetCriteria(); + String suffix = createDisplayIdSuffix(EntityKind.SAMPLE, criteria == null ? null : criteria.tryGetSampleType()); + return createGridDisplayTypeID(suffix); + } + + private static String createDisplayIdSuffix(EntityKind entityKindOrNull, + EntityType entityTypeOrNull) + { + String suffix = ""; + if (entityKindOrNull != null) + { + suffix += "-" + entityKindOrNull.toString(); + } + if (entityTypeOrNull != null) + { + suffix += "-" + entityTypeOrNull.getCode(); + } + return suffix; + } + + private void linkSample() + { + ICellListenerAndLinkGenerator<Sample> listenerLinkGenerator = + new ICellListenerAndLinkGenerator<Sample>() + { + public void handle(TableModelRowWithObject<Sample> rowItem, + boolean specialKeyPressed) + { + showEntityInformationHolderViewer(rowItem.getObjectOrNull(), false, specialKeyPressed); + } + + public String tryGetLink(Sample entity, + ISerializableComparable comparableValue) + { + return LinkExtractor.tryExtract(entity); + } + }; + registerListenerAndLinkGenerator(SampleGridColumnIDs.CODE, listenerLinkGenerator); + registerListenerAndLinkGenerator(SampleGridColumnIDs.SUBCODE, listenerLinkGenerator); + registerListenerAndLinkGenerator(SampleGridColumnIDs.SAMPLE_IDENTIFIER, + listenerLinkGenerator); + } + + private void linkExperiment() + { + ICellListenerAndLinkGenerator<Sample> listenerLinkGenerator = + new ICellListenerAndLinkGenerator<Sample>() + { + public void handle(TableModelRowWithObject<Sample> rowItem, + boolean specialKeyPressed) + { + Experiment experiment = rowItem.getObjectOrNull().getExperiment(); + new OpenEntityDetailsTabAction(experiment, viewContext, + specialKeyPressed).execute(); + } + + public String tryGetLink(Sample entity, + ISerializableComparable comparableValue) + { + return LinkExtractor.tryExtract(entity.getExperiment()); + } + }; + registerListenerAndLinkGenerator(SampleGridColumnIDs.EXPERIMENT, listenerLinkGenerator); + registerListenerAndLinkGenerator(SampleGridColumnIDs.EXPERIMENT_IDENTIFIER, + listenerLinkGenerator); + } + + private void linkProject() + { + registerListenerAndLinkGenerator(SampleGridColumnIDs.PROJECT, + new ICellListenerAndLinkGenerator<Sample>() { - public void handle(Sample rowItem, boolean keyPressed) + public void handle(TableModelRowWithObject<Sample> rowItem, + boolean specialKeyPressed) { - final Project project = rowItem.getExperiment().getProject(); + final Project project = + rowItem.getObjectOrNull().getExperiment().getProject(); final String href = LinkExtractor.tryExtract(project); - OpenEntityDetailsTabHelper.open(viewContext, project, keyPressed, href); + OpenEntityDetailsTabHelper.open(viewContext, project, + specialKeyPressed, href); + } + + public String tryGetLink(Sample entity, + ISerializableComparable comparableValue) + { + final Experiment exp = entity.getExperiment(); + return exp == null ? null : LinkExtractor.tryExtract(exp.getProject()); } }); - setId(browserId); } - public static final String createGridId(final String browserId) + private void linkParent() { - return browserId + GRID_ID_SUFFIX; + registerListenerAndLinkGenerator(SampleGridColumnIDs.PARENTS, + new ICellListenerAndLinkGenerator<Sample>() + { + public void handle(TableModelRowWithObject<Sample> rowItem, + boolean specialKeyPressed) + { + Sample parent = getParentOrNull(rowItem.getObjectOrNull()); + if (parent != null) + { + showEntityInformationHolderViewer(parent, false, specialKeyPressed); + } + } + + public String tryGetLink(Sample entity, + ISerializableComparable comparableValue) + { + Sample parent = getParentOrNull(entity); + return LinkExtractor.tryExtract(parent); + } + + private Sample getParentOrNull(Sample entity) + { + if (entity.getParents().size() == 1) + { + return entity.getGeneratedFrom(); + } + return null; + } + }); } - public static final String createChildComponentId(final String browserId, - final String childSuffix) + private void linkContainer() { - return browserId + childSuffix; + registerListenerAndLinkGenerator(SampleGridColumnIDs.CONTAINER_SAMPLE, + new ICellListenerAndLinkGenerator<Sample>() + { + public void handle(TableModelRowWithObject<Sample> rowItem, + boolean specialKeyPressed) + { + showEntityInformationHolderViewer(rowItem.getObjectOrNull().getContainer(), false, + specialKeyPressed); + } + + public String tryGetLink(Sample entity, + ISerializableComparable comparableValue) + { + Sample container = entity.getContainer(); + return LinkExtractor.tryExtract(container); + } + }); } - private final String createChildComponentId(final String childSuffix) + + + @Override + protected GridCellRenderer<BaseEntityModel<?>> createInternalLinkCellRenderer() { - return createChildComponentId(getId(), childSuffix); + return LinkRenderer.createLinkRenderer(true); + } + + @Override + protected String translateColumnIdToDictionaryKey(String columnID) + { + return columnID.toLowerCase(); + } + + @Override + protected ColumnDefsAndConfigs<TableModelRowWithObject<Sample>> createColumnsDefinition() + { + ColumnDefsAndConfigs<TableModelRowWithObject<Sample>> definitions = + super.createColumnsDefinition(); + definitions.setGridCellRendererFor(SampleGridColumnIDs.REGISTRATOR, + PersonRenderer.REGISTRATOR_RENDERER); + definitions.setGridCellRendererFor(SampleGridColumnIDs.SHOW_DETAILS_LINK_COLUMN_NAME, + createShowDetailsLinkCellRenderer()); + return definitions; + } + + protected final GridCellRenderer<BaseEntityModel<?>> createShowDetailsLinkCellRenderer() + { + return LinkRenderer.createExternalLinkRenderer(viewContext + .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE)); + } - private abstract class OpenEntityDetailsTabCellClickListener implements ICellListener<Sample> + @Override + protected List<String> getColumnIdsOfFilters() { - protected abstract IEntityInformationHolderWithPermId getEntity(Sample rowItem); + return Arrays.asList(SampleGridColumnIDs.CODE, SampleGridColumnIDs.EXPERIMENT, SampleGridColumnIDs.PROJECT); + } - public final void handle(Sample rowItem, boolean keyPressed) + @Override + protected void listTableRows( + DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig, + AsyncCallback<TypedTableResultSet<Sample>> callback) + { + ListSampleDisplayCriteria c1 = getCriteriaProvider().tryGetCriteria(); + ListSampleDisplayCriteria2 criteria; + if (c1.getCriteriaKind() == ListEntityDisplayCriteriaKind.BROWSE) { - // don't need to check whether the value is null - // because there will not be a link for null value - final IEntityInformationHolderWithPermId entity = getEntity(rowItem); - new OpenEntityDetailsTabAction(entity, viewContext, keyPressed).execute(); + criteria = new ListSampleDisplayCriteria2(c1.getBrowseCriteria()); + } else + { + criteria = new ListSampleDisplayCriteria2(c1.getSearchCriteria()); } + criteria.copyPagingConfig(resultSetConfig); + viewContext.getService().listSamples2(criteria, callback); + } + + @Override + protected void prepareExportEntities( + TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, + AbstractAsyncCallback<String> callback) + { + viewContext.getService().prepareExportSamples(exportCriteria, callback); + } + + @Override + public DatabaseModificationKind[] getRelevantModifications() + { + List<DatabaseModificationKind> relevantModifications = + new ArrayList<DatabaseModificationKind>(); + SetUtils.addAll(relevantModifications, getCriteriaProvider().getRelevantModifications()); + relevantModifications.addAll(getGridRelevantModifications()); + return relevantModifications.toArray(DatabaseModificationKind.EMPTY_ARRAY); + } + + protected Set<DatabaseModificationKind> getGridRelevantModifications() + { + Set<DatabaseModificationKind> result = getGridRelevantModifications(ObjectKind.SAMPLE); + result.add(edit(ObjectKind.PROJECT)); + return result; + } + + protected final static Set<DatabaseModificationKind> getGridRelevantModifications( + ObjectKind entity) + { + Set<DatabaseModificationKind> result = new HashSet<DatabaseModificationKind>(); + result.add(createOrDelete(entity)); + result.add(edit(entity)); + result.add(createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT)); + result.add(edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT)); + result.add(edit(ObjectKind.VOCABULARY_TERM)); + return result; } @Override + public void update(Set<DatabaseModificationKind> observedModifications) + { + getCriteriaProvider().update(observedModifications, new IDataRefreshCallback() + { + public void postRefresh(boolean wasSuccessful) + { + } + }); + super.update(observedModifications); + } + + /** + * Initializes criteria and refreshes the grid when criteria are fetched. <br> + * Note that in this way we do not refresh the grid automatically, but we wait until all the + * property types will be fetched from the server (criteria provider will be updated), to set + * the available grid columns. + */ + protected void updateCriteriaProviderAndRefresh() + { + HashSet<DatabaseModificationKind> observedModifications = + new HashSet<DatabaseModificationKind>(); + getCriteriaProvider().update(observedModifications, new IDataRefreshCallback() + { + public void postRefresh(boolean wasSuccessful) + { + refresh(); + } + }); + } + + private void addGridRefreshListener(SampleBrowserToolbar topToolbar) + { + topToolbar.setCriteriaChangedListeners(createGridRefreshDelegatedAction()); + } + protected ICriteriaProvider<ListSampleDisplayCriteria> getCriteriaProvider() { return propertyTypesAndCriteriaProvider; @@ -433,12 +658,14 @@ public class SampleBrowserGrid extends final Button deleteButton = new Button(deleteAllTitle, new AbstractCreateDialogListener() { @Override - protected Dialog createDialog(List<Sample> samples, + protected Dialog createDialog(List<TableModelRowWithObject<Sample>> samples, IBrowserGridActionInvoker invoker) { - return new SampleListDeletionConfirmationDialog<Sample>(viewContext, samples, - createDeletionCallback(invoker), getDisplayedAndSelectedItemsAction() - .execute()); + AsyncCallback<Void> callback = createDeletionCallback(invoker); + DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>> s = + getDisplayedAndSelectedItemsAction().execute(); + return new SampleListDeletionConfirmationDialog<TableModelRowWithObject<Sample>>( + viewContext, samples, callback, s); } }); changeButtonTitleOnSelectedItems(deleteButton, deleteAllTitle, deleteTitle); @@ -446,6 +673,31 @@ public class SampleBrowserGrid extends allowMultipleSelection(); // we allow deletion of multiple samples } + protected final IDelegatedActionWithResult<DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>>> getDisplayedAndSelectedItemsAction() + { + return new IDelegatedActionWithResult<DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>>>() + { + public DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>> execute() + { + TableExportCriteria<TableModelRowWithObject<Sample>> tableExportCriteria = + createTableExportCriteria(); + List<TableModelRowWithObject<Sample>> selectedBaseObjects = getSelectedBaseObjects(); + return new DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>>(selectedBaseObjects, + tableExportCriteria, getTotalCount()); + } + }; + } + public static final String createChildComponentId(final String browserId, + final String childSuffix) + { + return browserId + childSuffix; + } + + private final String createChildComponentId(final String childSuffix) + { + return createChildComponentId(getId(), childSuffix); + } + private void openSampleRegistrationTab() { if (experimentIdOrNull != null) @@ -488,206 +740,22 @@ public class SampleBrowserGrid extends } } - private void addGridRefreshListener(SampleBrowserToolbar topToolbar) - { - topToolbar.setCriteriaChangedListeners(createGridRefreshDelegatedAction()); - } - - @Override - protected EntityType tryToGetEntityType() - { - return criteria == null ? null : criteria.tryGetSampleType(); - } - - @Override - protected void refresh() - { - super.refresh(); - previousPropertyTypes = propertyTypesAndCriteriaProvider.tryGetPropertyTypes(); - } - - @Override - protected void listEntities(DefaultResultSetConfig<String, Sample> resultSetConfig, - final AbstractAsyncCallback<ResultSet<Sample>> callback) - { - AbstractAsyncCallback<ResultSetWithEntityTypes<Sample>> extendedCallback = - new AbstractAsyncCallback<ResultSetWithEntityTypes<Sample>>(viewContext) - { - @Override - protected void process(ResultSetWithEntityTypes<Sample> result) - { - propertyTypesAndCriteriaProvider - .setEntityTypes(extractAvailableSampleTypes(result)); - callback.onSuccess(result.getResultSet()); - refreshColumnsSettingsIfNecessary(); - previousPropertyTypes = - propertyTypesAndCriteriaProvider.tryGetPropertyTypes(); - } - - private Set<SampleType> extractAvailableSampleTypes( - ResultSetWithEntityTypes<Sample> result) - { - Set<SampleType> sampleTypes = new HashSet<SampleType>(); - for (BasicEntityType basicType : result.getAvailableEntityTypes()) - { - assert basicType instanceof SampleType; - sampleTypes.add((SampleType) basicType); - } - return sampleTypes; - } - - @Override - public void finishOnFailure(Throwable caught) - { - callback.finishOnFailure(caught); - } - - }; - criteria.copyPagingConfig(resultSetConfig); - viewContext.getService().listSamples(criteria, extendedCallback); - } - @Override - protected BaseEntityModel<Sample> createModel(GridRowModel<Sample> entity) + protected void showEntityViewer(TableModelRowWithObject<Sample> row, boolean editMode, boolean inBackground) { - return SampleModelFactory.createModel(viewContext, entity, criteria.tryGetSampleType(), - viewContext.getDisplaySettingsManager().getRealNumberFormatingParameters()); + showEntityInformationHolderViewer(row.getObjectOrNull(), editMode, inBackground); } - - @Override - protected List<IColumnDefinition<Sample>> getInitialFilters() + + protected final IDelegatedAction createGridRefreshDelegatedAction() { - return asColumnFilters(new CommonSampleColDefKind[] - { CommonSampleColDefKind.CODE, CommonSampleColDefKind.EXPERIMENT, - CommonSampleColDefKind.PROJECT }); - } - - @Override - protected void showEntityViewer(Sample sample, boolean editMode, boolean inBackground) - { - showEntityInformationHolderViewer(sample, editMode, inBackground); - } - - @Override - protected void prepareExportEntities(TableExportCriteria<Sample> exportCriteria, - AbstractAsyncCallback<String> callback) - { - viewContext.getService().prepareExportSamples(exportCriteria, callback); - } - - @Override - protected ColumnDefsAndConfigs<Sample> createColumnsDefinition() - { - assert criteria != null : "criteria not set!"; - final List<PropertyType> propertyTypes = - propertyTypesAndCriteriaProvider.tryGetPropertyTypes(); - assert propertyTypes != null : "propertyTypes not set!"; - - final List<AbstractParentSampleColDef> parentColumnsSchema = - SampleModelFactory.createParentColumnsSchema(viewContext, - criteria.tryGetSampleType()); - assert parentColumnsSchema != null : "parentColumnsSchema not set!"; - - ColumnDefsAndConfigs<Sample> schema = - SampleModelFactory.createColumnsSchema(viewContext, propertyTypes, - parentColumnsSchema); - - schema.setGridCellRendererFor(CommonSampleColDefKind.SHOW_DETAILS_LINK.id(), - createShowDetailsLinkCellRenderer()); - - GridCellRenderer<BaseEntityModel<?>> linkCellRenderer = createInternalLinkCellRenderer(); - schema.setGridCellRendererFor(CommonSampleColDefKind.SUBCODE.id(), linkCellRenderer); - schema.setGridCellRendererFor(CommonSampleColDefKind.SAMPLE_IDENTIFIER.id(), - linkCellRenderer); - schema.setGridCellRendererFor(CommonSampleColDefKind.EXPERIMENT.id(), linkCellRenderer); - schema.setGridCellRendererFor(CommonSampleColDefKind.EXPERIMENT_IDENTIFIER.id(), - linkCellRenderer); - schema.setGridCellRendererFor(CommonSampleColDefKind.PROJECT.id(), linkCellRenderer); - // setup link renderers and listeners on parent columns - GridCellRenderer<BaseEntityModel<?>> parentLinkCellRenderer = - createParentLinkCellRenderer(); - for (final AbstractParentSampleColDef parentColDef : parentColumnsSchema) - { - schema.setGridCellRendererFor(parentColDef.getIdentifier(), parentLinkCellRenderer); - registerLinkClickListenerFor(parentColDef.getIdentifier(), - new OpenEntityDetailsTabCellClickListener() - { - @Override - protected IEntityInformationHolderWithPermId getEntity(Sample rowItem) - { - return parentColDef.tryGetParent(rowItem); - } - }); - } - - return schema; - } - - protected final GridCellRenderer<BaseEntityModel<?>> createParentLinkCellRenderer() - { - return LinkRenderer.createLinkRenderer(true); - } - - @Override - protected boolean hasColumnsDefinitionChanged(ListSampleDisplayCriteria newCriteria) - { - List<PropertyType> newPropertyTypes = - propertyTypesAndCriteriaProvider.tryGetPropertyTypes(); - if (newPropertyTypes == null) - { - return false; // we are before the first auto-refresh - } - if (previousPropertyTypes == null) - { - return true; // first refresh - } - if (previousPropertyTypes.equals(newPropertyTypes) == false) - { - return true; - } - EntityType newEntityType = newCriteria.tryGetSampleType(); - EntityType prevEntityType = (criteria == null ? null : criteria.tryGetSampleType()); - return hasColumnsDefinitionChanged(newEntityType, prevEntityType); - } - - @Override - protected Set<DatabaseModificationKind> getGridRelevantModifications() - { - Set<DatabaseModificationKind> result = getGridRelevantModifications(ObjectKind.SAMPLE); - result.add(edit(ObjectKind.PROJECT)); - return result; - } - - @Override - protected IColumnDefinitionKind<Sample>[] getStaticColumnsDefinition() - { - return CommonSampleColDefKind.values(); - } - - @Override - protected EntityKind getEntityKind() - { - return EntityKind.SAMPLE; - } - - public final class DisplayedAndSelectedSamples extends DisplayedAndSelectedEntities<Sample> - { - public DisplayedAndSelectedSamples(List<Sample> selectedItems, - TableExportCriteria<Sample> displayedItemsConfig, int displayedItemsCount) - { - super(selectedItems, displayedItemsConfig, displayedItemsCount); - } - - } - - protected final IDelegatedActionWithResult<DisplayedAndSelectedSamples> getDisplayedAndSelectedItemsAction() - { - return new IDelegatedActionWithResult<DisplayedAndSelectedSamples>() + return new IDelegatedAction() { - public DisplayedAndSelectedSamples execute() + public void execute() { - return new DisplayedAndSelectedSamples(getSelectedBaseObjects(), - createTableExportCriteria(), getTotalCount()); + if (getCriteriaProvider().tryGetCriteria() != null) + { + refreshGridWithFilters(); + } } }; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid2.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid2.java deleted file mode 100644 index 3d495dafbd69b5f7ba29602068289dfa44a5fa48..0000000000000000000000000000000000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid2.java +++ /dev/null @@ -1,763 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample; - -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete; -import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import com.extjs.gxt.ui.client.event.ButtonEvent; -import com.extjs.gxt.ui.client.event.SelectionListener; -import com.extjs.gxt.ui.client.widget.Dialog; -import com.extjs.gxt.ui.client.widget.button.Button; -import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; -import com.google.gwt.user.client.rpc.AsyncCallback; - -import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ComponentProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.SampleTypeDisplayID; -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.renderer.PersonRenderer; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.DisplayedAndSelectedEntities; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractEntityBrowserGrid.ICriteriaProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListenerAndLinkGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesCriteriaProvider; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesFilterUtil; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabAction; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabHelper; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedActionWithResult; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.SetUtils; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListEntityDisplayCriteriaKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleDisplayCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleDisplayCriteria2; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGridColumnIDs; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; - -/** - * - * - * @author Franz-Josef Elmer - */ -public class SampleBrowserGrid2 extends TypedTableGrid<Sample> -{ - private static final String PREFIX = GenericConstants.ID_PREFIX + "sample-browser"; - - // browser consists of the grid and additional toolbars (paging, filtering) - public static final String MAIN_BROWSER_ID = PREFIX + "_main"; - - public static final String MAIN_GRID_ID = createGridId(MAIN_BROWSER_ID); - - public static final String EDIT_BUTTON_ID_SUFFIX = "_edit-button"; - - public static final String SHOW_DETAILS_BUTTON_ID_SUFFIX = "_show-details-button"; - - public static final String createGridId(final String browserId) - { - return browserId + GRID_POSTFIX; - } - - /** Creates a grid without additional toolbar buttons. It can serve as a entity chooser. */ - public static DisposableEntityChooser<TableModelRowWithObject<Sample>> createChooser( - final IViewContext<ICommonClientServiceAsync> viewContext, final boolean addShared, - boolean addAll, final boolean excludeWithoutExperiment, SampleTypeDisplayID sampleTypeID) - { - final SampleBrowserToolbar toolbar = - new SampleBrowserToolbar(viewContext, addShared, addAll, excludeWithoutExperiment, - sampleTypeID); - ISampleCriteriaProvider criteriaProvider = toolbar; - final SampleBrowserGrid2 browserGrid = - new SampleBrowserGrid2(viewContext, criteriaProvider, MAIN_BROWSER_ID, false, - DisplayTypeIDGenerator.ENTITY_BROWSER_GRID) - { - @Override - protected void showEntityViewer(TableModelRowWithObject<Sample> row, boolean editMode, - boolean active) - { - // do nothing - avoid showing the details after double click - } - }; - browserGrid.addGridRefreshListener(toolbar); - return browserGrid.asDisposableWithToolbar(toolbar); - } - - /** - * Create a grid with a toolbar with no initial selection and optional initial selection of - * sample type and group. - */ - public static IDisposableComponent create(IViewContext<ICommonClientServiceAsync> viewContext, - String initialGroupOrNull, String initialSampleTypeOrNull) - { - final SampleBrowserToolbar toolbar = - new SampleBrowserToolbar(viewContext, true, true, false, initialGroupOrNull, - initialSampleTypeOrNull, SampleTypeDisplayID.MAIN_SAMPLE_BROWSER); - ISampleCriteriaProvider criteriaProvider = toolbar; - final SampleBrowserGrid2 browserGrid = - new SampleBrowserGrid2(viewContext, criteriaProvider, MAIN_BROWSER_ID, false, - DisplayTypeIDGenerator.ENTITY_BROWSER_GRID); - browserGrid.addGridRefreshListener(toolbar); - browserGrid.extendBottomToolbar(); - return browserGrid.asDisposableWithToolbar(toolbar); - } - - public static IDisposableComponent createGridForContainerSamples( - final IViewContext<ICommonClientServiceAsync> viewContext, - final TechId containerSampleId, final String browserId, final SampleType sampleType) - { - final ListSampleDisplayCriteria criteria = - ListSampleDisplayCriteria.createForContainer(containerSampleId); - return createGridForRelatedSamples(viewContext, criteria, browserId, sampleType); - } - - public static IDisposableComponent createGridForDerivedSamples( - final IViewContext<ICommonClientServiceAsync> viewContext, final TechId parentSampleId, - final String browserId, final SampleType sampleType) - { - final ListSampleDisplayCriteria criteria = - ListSampleDisplayCriteria.createForParent(parentSampleId); - return createGridForRelatedSamples(viewContext, criteria, browserId, sampleType); - } - - public static IDisposableComponent createGridForParentSamples( - final IViewContext<ICommonClientServiceAsync> viewContext, final TechId childSampleId, - final String browserId, final SampleType sampleType) - { - final ListSampleDisplayCriteria criteria = - ListSampleDisplayCriteria.createForChild(childSampleId); - return createGridForRelatedSamples(viewContext, criteria, browserId, sampleType); - } - - private static IDisposableComponent createGridForRelatedSamples( - final IViewContext<ICommonClientServiceAsync> viewContext, - final ListSampleDisplayCriteria criteria, final String browserId, - final SampleType sampleType) - { - final String entityTypeCode = sampleType.getCode(); - final SampleBrowserGrid2 browserGrid = - createGridAsComponent(viewContext, browserId, criteria, entityTypeCode, - DisplayTypeIDGenerator.SAMPLE_DETAILS_GRID); - browserGrid.updateCriteriaProviderAndRefresh(); - browserGrid.extendBottomToolbar(); - return browserGrid.asDisposableWithoutToolbar(); - } - - public static IDisposableComponent createGridForExperimentSamples( - final IViewContext<ICommonClientServiceAsync> viewContext, final TechId experimentId, - final String browserId, final BasicEntityType experimentType) - { - final ListSampleDisplayCriteria criteria = - ListSampleDisplayCriteria.createForExperiment(experimentId); - final String entityTypeCode = experimentType.getCode(); - - final SampleBrowserGrid2 browserGrid = - createGridAsComponent(viewContext, browserId, criteria, entityTypeCode, - DisplayTypeIDGenerator.EXPERIMENT_DETAILS_GRID); - browserGrid.experimentIdOrNull = experimentId; - browserGrid.updateCriteriaProviderAndRefresh(); - browserGrid.extendBottomToolbar(); - return browserGrid.asDisposableWithoutToolbar(); - } - - private static SampleBrowserGrid2 createGridAsComponent( - final IViewContext<ICommonClientServiceAsync> viewContext, final String browserId, - final ListSampleDisplayCriteria criteria, final String entityTypeCode, - DisplayTypeIDGenerator displayTypeIDGenerator) - { - ISampleCriteriaProvider criteriaProvider = - new SampleCriteriaProvider(viewContext, criteria); - // we do not refresh the grid, the criteria provider will do this when property types will - // be loaded - boolean refreshAutomatically = false; - final SampleBrowserGrid2 browserGrid = - new SampleBrowserGrid2(viewContext, criteriaProvider, browserId, - refreshAutomatically, displayTypeIDGenerator) - { - @Override - public String getGridDisplayTypeID() - { - return super.getGridDisplayTypeID() + "-" + entityTypeCode; - } - }; - return browserGrid; - } - - /** - * Besides providing the static {@link ListSampleCriteria} this class provides all property - * types which should be used to build the grid property columns. It is also able to refresh - * these properties from the server. - */ - protected static class SampleCriteriaProvider implements ISampleCriteriaProvider - { - private final ICriteriaProvider<PropertyTypesCriteria> propertyTypeProvider; - - private final ListSampleDisplayCriteria criteria; - - // Set of entity types which are currently shown in this grid. - // Used to decide which property columns should be shown. - // Note: content depends on the current grid content. - private Set<SampleType> shownEntityTypesOrNull; - - public SampleCriteriaProvider(IViewContext<?> viewContext, - ListSampleDisplayCriteria criteria) - { - this.propertyTypeProvider = - createPropertyTypesCriteriaProvider(viewContext, EntityKind.SAMPLE); - this.criteria = criteria; - } - - /* - * Provides property types which should be shown as the grid columns. Takes into account - * what types of entities are displayed and does not show property types which are not - * assigned to any of those types. - */ - private ICriteriaProvider<PropertyTypesCriteria> createPropertyTypesCriteriaProvider( - IViewContext<?> viewContext, final EntityKind entityKind) - { - return new PropertyTypesCriteriaProvider(viewContext, entityKind) - { - @Override - public PropertyTypesCriteria tryGetCriteria() - { - PropertyTypesCriteria propertyTypesCriteria = super.tryGetCriteria(); - return PropertyTypesFilterUtil.filterPropertyTypesForEntityTypes( - propertyTypesCriteria, entityKind, shownEntityTypesOrNull); - } - }; - } - - public List<PropertyType> tryGetPropertyTypes() - { - PropertyTypesCriteria propertyTypesCriteria = propertyTypeProvider.tryGetCriteria(); - if (propertyTypesCriteria != null) - { - return propertyTypesCriteria.tryGetPropertyTypes(); - } else - { - return null; - } - } - - public ListSampleDisplayCriteria tryGetCriteria() - { - return criteria; - } - - public void update(Set<DatabaseModificationKind> observedModifications, - IDataRefreshCallback dataRefreshCallback) - { - propertyTypeProvider.update(observedModifications, dataRefreshCallback); - } - - public DatabaseModificationKind[] getRelevantModifications() - { - return propertyTypeProvider.getRelevantModifications(); - } - - public void setEntityTypes(Set<SampleType> entityTypes) - { - criteria.setAllSampleType(SampleType.createAllSampleType(entityTypes, false)); - this.shownEntityTypesOrNull = entityTypes; - } - - } - - // provides property types which will be used to build property columns in the grid and - // criteria to filter samples - private final ISampleCriteriaProvider propertyTypesAndCriteriaProvider; - - private TechId experimentIdOrNull; - - protected SampleBrowserGrid2(final IViewContext<ICommonClientServiceAsync> viewContext, - ISampleCriteriaProvider criteriaProvider, String browserId, - boolean refreshAutomatically, IDisplayTypeIDGenerator displayTypeIDGenerator) - { - super(viewContext, browserId, displayTypeIDGenerator); - propertyTypesAndCriteriaProvider = criteriaProvider; - linkSample(); - linkExperiment(); - linkProject(); - linkParent(); - linkContainer(); - } - - @Override - public String getGridDisplayTypeID() - { - ListSampleDisplayCriteria criteria = getCriteriaProvider().tryGetCriteria(); - String suffix = createDisplayIdSuffix(EntityKind.SAMPLE, criteria == null ? null : criteria.tryGetSampleType()); - return createGridDisplayTypeID(suffix); - } - - private static String createDisplayIdSuffix(EntityKind entityKindOrNull, - EntityType entityTypeOrNull) - { - String suffix = ""; - if (entityKindOrNull != null) - { - suffix += "-" + entityKindOrNull.toString(); - } - if (entityTypeOrNull != null) - { - suffix += "-" + entityTypeOrNull.getCode(); - } - return suffix; - } - - private void linkSample() - { - ICellListenerAndLinkGenerator<Sample> listenerLinkGenerator = - new ICellListenerAndLinkGenerator<Sample>() - { - public void handle(TableModelRowWithObject<Sample> rowItem, - boolean specialKeyPressed) - { - showEntityInformationHolderViewer(rowItem.getObjectOrNull(), false, specialKeyPressed); - } - - public String tryGetLink(Sample entity, - ISerializableComparable comparableValue) - { - return LinkExtractor.tryExtract(entity); - } - }; - registerListenerAndLinkGenerator(SampleGridColumnIDs.CODE, listenerLinkGenerator); - registerListenerAndLinkGenerator(SampleGridColumnIDs.SUBCODE, listenerLinkGenerator); - registerListenerAndLinkGenerator(SampleGridColumnIDs.SAMPLE_IDENTIFIER, - listenerLinkGenerator); - } - - private void linkExperiment() - { - ICellListenerAndLinkGenerator<Sample> listenerLinkGenerator = - new ICellListenerAndLinkGenerator<Sample>() - { - public void handle(TableModelRowWithObject<Sample> rowItem, - boolean specialKeyPressed) - { - Experiment experiment = rowItem.getObjectOrNull().getExperiment(); - new OpenEntityDetailsTabAction(experiment, viewContext, - specialKeyPressed).execute(); - } - - public String tryGetLink(Sample entity, - ISerializableComparable comparableValue) - { - return LinkExtractor.tryExtract(entity.getExperiment()); - } - }; - registerListenerAndLinkGenerator(SampleGridColumnIDs.EXPERIMENT, listenerLinkGenerator); - registerListenerAndLinkGenerator(SampleGridColumnIDs.EXPERIMENT_IDENTIFIER, - listenerLinkGenerator); - } - - private void linkProject() - { - registerListenerAndLinkGenerator(SampleGridColumnIDs.PROJECT, - new ICellListenerAndLinkGenerator<Sample>() - { - public void handle(TableModelRowWithObject<Sample> rowItem, - boolean specialKeyPressed) - { - final Project project = - rowItem.getObjectOrNull().getExperiment().getProject(); - final String href = LinkExtractor.tryExtract(project); - OpenEntityDetailsTabHelper.open(viewContext, project, - specialKeyPressed, href); - } - - public String tryGetLink(Sample entity, - ISerializableComparable comparableValue) - { - final Experiment exp = entity.getExperiment(); - return exp == null ? null : LinkExtractor.tryExtract(exp.getProject()); - } - }); - } - - private void linkParent() - { - registerListenerAndLinkGenerator(SampleGridColumnIDs.PARENTS, - new ICellListenerAndLinkGenerator<Sample>() - { - public void handle(TableModelRowWithObject<Sample> rowItem, - boolean specialKeyPressed) - { - Sample parent = getParentOrNull(rowItem.getObjectOrNull()); - if (parent != null) - { - showEntityInformationHolderViewer(parent, false, specialKeyPressed); - } - } - - public String tryGetLink(Sample entity, - ISerializableComparable comparableValue) - { - Sample parent = getParentOrNull(entity); - return LinkExtractor.tryExtract(parent); - } - - private Sample getParentOrNull(Sample entity) - { - if (entity.getParents().size() == 1) - { - return entity.getGeneratedFrom(); - } - return null; - } - }); - } - - private void linkContainer() - { - registerListenerAndLinkGenerator(SampleGridColumnIDs.CONTAINER_SAMPLE, - new ICellListenerAndLinkGenerator<Sample>() - { - public void handle(TableModelRowWithObject<Sample> rowItem, - boolean specialKeyPressed) - { - showEntityInformationHolderViewer(rowItem.getObjectOrNull().getContainer(), false, - specialKeyPressed); - } - - public String tryGetLink(Sample entity, - ISerializableComparable comparableValue) - { - Sample container = entity.getContainer(); - return LinkExtractor.tryExtract(container); - } - }); - } - - - - @Override - protected GridCellRenderer<BaseEntityModel<?>> createInternalLinkCellRenderer() - { - return LinkRenderer.createLinkRenderer(true); - } - - @Override - protected String translateColumnIdToDictionaryKey(String columnID) - { - return columnID.toLowerCase(); - } - - @Override - protected ColumnDefsAndConfigs<TableModelRowWithObject<Sample>> createColumnsDefinition() - { - ColumnDefsAndConfigs<TableModelRowWithObject<Sample>> definitions = - super.createColumnsDefinition(); - definitions.setGridCellRendererFor(SampleGridColumnIDs.REGISTRATOR, - PersonRenderer.REGISTRATOR_RENDERER); - definitions.setGridCellRendererFor(SampleGridColumnIDs.SHOW_DETAILS_LINK_COLUMN_NAME, - createShowDetailsLinkCellRenderer()); - return definitions; - } - - protected final GridCellRenderer<BaseEntityModel<?>> createShowDetailsLinkCellRenderer() - { - return LinkRenderer.createExternalLinkRenderer(viewContext - .getMessage(Dict.SHOW_DETAILS_LINK_TEXT_VALUE)); - - } - - @Override - protected List<String> getColumnIdsOfFilters() - { - return Arrays.asList(SampleGridColumnIDs.CODE, SampleGridColumnIDs.EXPERIMENT, SampleGridColumnIDs.PROJECT); - } - - @Override - protected void listTableRows( - DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig, - AsyncCallback<TypedTableResultSet<Sample>> callback) - { - ListSampleDisplayCriteria c1 = getCriteriaProvider().tryGetCriteria(); - ListSampleDisplayCriteria2 criteria; - if (c1.getCriteriaKind() == ListEntityDisplayCriteriaKind.BROWSE) - { - criteria = new ListSampleDisplayCriteria2(c1.getBrowseCriteria()); - } else - { - criteria = new ListSampleDisplayCriteria2(c1.getSearchCriteria()); - } - criteria.copyPagingConfig(resultSetConfig); - viewContext.getService().listSamples2(criteria, callback); - } - - @Override - protected void prepareExportEntities( - TableExportCriteria<TableModelRowWithObject<Sample>> exportCriteria, - AbstractAsyncCallback<String> callback) - { - viewContext.getService().prepareExportSamples2(exportCriteria, callback); - } - - @Override - public DatabaseModificationKind[] getRelevantModifications() - { - List<DatabaseModificationKind> relevantModifications = - new ArrayList<DatabaseModificationKind>(); - SetUtils.addAll(relevantModifications, getCriteriaProvider().getRelevantModifications()); - relevantModifications.addAll(getGridRelevantModifications()); - return relevantModifications.toArray(DatabaseModificationKind.EMPTY_ARRAY); - } - - protected Set<DatabaseModificationKind> getGridRelevantModifications() - { - Set<DatabaseModificationKind> result = getGridRelevantModifications(ObjectKind.SAMPLE); - result.add(edit(ObjectKind.PROJECT)); - return result; - } - - protected final static Set<DatabaseModificationKind> getGridRelevantModifications( - ObjectKind entity) - { - Set<DatabaseModificationKind> result = new HashSet<DatabaseModificationKind>(); - result.add(createOrDelete(entity)); - result.add(edit(entity)); - result.add(createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT)); - result.add(edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT)); - result.add(edit(ObjectKind.VOCABULARY_TERM)); - return result; - } - - @Override - public void update(Set<DatabaseModificationKind> observedModifications) - { - getCriteriaProvider().update(observedModifications, new IDataRefreshCallback() - { - public void postRefresh(boolean wasSuccessful) - { - } - }); - super.update(observedModifications); - } - - /** - * Initializes criteria and refreshes the grid when criteria are fetched. <br> - * Note that in this way we do not refresh the grid automatically, but we wait until all the - * property types will be fetched from the server (criteria provider will be updated), to set - * the available grid columns. - */ - protected void updateCriteriaProviderAndRefresh() - { - HashSet<DatabaseModificationKind> observedModifications = - new HashSet<DatabaseModificationKind>(); - getCriteriaProvider().update(observedModifications, new IDataRefreshCallback() - { - public void postRefresh(boolean wasSuccessful) - { - refresh(); - } - }); - } - - private void addGridRefreshListener(SampleBrowserToolbar topToolbar) - { - topToolbar.setCriteriaChangedListeners(createGridRefreshDelegatedAction()); - } - - protected ICriteriaProvider<ListSampleDisplayCriteria> getCriteriaProvider() - { - return propertyTypesAndCriteriaProvider; - } - - // adds show, show-details and invalidate buttons - protected void extendBottomToolbar() - { - if (viewContext.isSimpleMode()) - { - return; - } - addEntityOperationsLabel(); - addEntityOperationButtons(); - addEntityOperationsSeparator(); - } - - protected void addEntityOperationButtons() - { - - final Button addButton = - new Button(viewContext.getMessage(Dict.BUTTON_ADD, "Sample"), - new SelectionListener<ButtonEvent>() - { - @Override - public void componentSelected(ButtonEvent ce) - { - openSampleRegistrationTab(); - } - }); - addButton(addButton); - - String showDetailsTitle = viewContext.getMessage(Dict.BUTTON_SHOW_DETAILS); - Button showDetailsButton = - createSelectedItemButton(showDetailsTitle, asShowEntityInvoker(false)); - showDetailsButton.setId(createChildComponentId(SHOW_DETAILS_BUTTON_ID_SUFFIX)); - addButton(showDetailsButton); - - String editTitle = viewContext.getMessage(Dict.BUTTON_EDIT); - Button editButton = createSelectedItemButton(editTitle, asShowEntityInvoker(true)); - editButton.setId(createChildComponentId(EDIT_BUTTON_ID_SUFFIX)); - addButton(editButton); - - final String deleteTitle = viewContext.getMessage(Dict.BUTTON_DELETE); - final String deleteAllTitle = deleteTitle + " All"; - final Button deleteButton = new Button(deleteAllTitle, new AbstractCreateDialogListener() - { - @Override - protected Dialog createDialog(List<TableModelRowWithObject<Sample>> samples, - IBrowserGridActionInvoker invoker) - { - AsyncCallback<Void> callback = createDeletionCallback(invoker); - DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>> s = - getDisplayedAndSelectedItemsAction().execute(); - return new SampleListDeletionConfirmationDialog<TableModelRowWithObject<Sample>>( - viewContext, samples, callback, s); - } - }); - changeButtonTitleOnSelectedItems(deleteButton, deleteAllTitle, deleteTitle); - addButton(deleteButton); - allowMultipleSelection(); // we allow deletion of multiple samples - } - - protected final IDelegatedActionWithResult<DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>>> getDisplayedAndSelectedItemsAction() - { - return new IDelegatedActionWithResult<DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>>>() - { - public DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>> execute() - { - TableExportCriteria<TableModelRowWithObject<Sample>> tableExportCriteria = - createTableExportCriteria(); - List<TableModelRowWithObject<Sample>> selectedBaseObjects = getSelectedBaseObjects(); - return new DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>>(selectedBaseObjects, - tableExportCriteria, getTotalCount()); - } - }; - } - public static final String createChildComponentId(final String browserId, - final String childSuffix) - { - return browserId + childSuffix; - } - - private final String createChildComponentId(final String childSuffix) - { - return createChildComponentId(getId(), childSuffix); - } - - private void openSampleRegistrationTab() - { - if (experimentIdOrNull != null) - { - viewContext.getService().getExperimentInfo(experimentIdOrNull, - new SampleRegistrationWithExperimentInfoCallback(viewContext)); - } else - { - final ActionContext context = new ActionContext(); - final ListSampleDisplayCriteria criteriaOrNull = getCriteriaProvider().tryGetCriteria(); - if (criteriaOrNull != null - && criteriaOrNull.getCriteriaKind() == ListEntityDisplayCriteriaKind.BROWSE) - { - final ListSampleCriteria browseCriteria = criteriaOrNull.getBrowseCriteria(); - final SampleType sampleType = browseCriteria.getSampleType(); - context.setSampleType(sampleType); - final String spaceCode = browseCriteria.getSpaceCode(); - context.setSpaceCode(spaceCode); - } - DispatcherHelper.dispatchNaviEvent(new ComponentProvider(viewContext) - .getSampleRegistration(context)); - } - } - - private final class SampleRegistrationWithExperimentInfoCallback extends - AbstractAsyncCallback<Experiment> - { - public SampleRegistrationWithExperimentInfoCallback( - IViewContext<ICommonClientServiceAsync> viewContext) - { - super(viewContext); - } - - @Override - protected void process(Experiment result) - { - ActionContext experimentContext = new ActionContext(result); - DispatcherHelper.dispatchNaviEvent(new ComponentProvider(viewContext - .getCommonViewContext()).getSampleRegistration(experimentContext)); - } - } - - @Override - protected void showEntityViewer(TableModelRowWithObject<Sample> row, boolean editMode, boolean inBackground) - { - showEntityInformationHolderViewer(row.getObjectOrNull(), editMode, inBackground); - } - - protected final IDelegatedAction createGridRefreshDelegatedAction() - { - return new IDelegatedAction() - { - public void execute() - { - if (getCriteriaProvider().tryGetCriteria() != null) - { - refreshGridWithFilters(); - } - } - }; - } - -} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java index 593244e3cbb8e183f6237a5262be24e20c3932d9..c27ce2994f2c561a6fce1fefe71acd0b57909364 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java @@ -49,7 +49,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject * * @author Piotr Buczek */ -public class SampleSearchHitGrid extends SampleBrowserGrid2 implements IDetailedSearchHitGrid +public class SampleSearchHitGrid extends SampleBrowserGrid implements IDetailedSearchHitGrid { // browser consists of the grid and the paging toolbar public static final String SEARCH_BROWSER_ID = GenericConstants.ID_PREFIX diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleGridColumnIDs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleGridColumnIDs.java index 7519883774a28820e36420d8c7845f810e38f5ab..198b0e3190582ae846566e409a41a1e8908075db 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleGridColumnIDs.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SampleGridColumnIDs.java @@ -16,11 +16,11 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.dto; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; /** - * IDs of static columns of {@link SampleBrowserGrid2}. + * IDs of static columns of {@link SampleBrowserGrid}. * * @author Franz-Josef Elmer */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java index b7bd39ef9b6458fd5296ef7fa6d674e285268d56..ae4ff68fb429019f1ea8bd39f1142bc1217b62d6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java @@ -414,12 +414,7 @@ public final class CommonClientService extends AbstractClientService implements // --------- methods preparing exported content. Note: GWT does not support // generic methods :( - public final String prepareExportSamples(final TableExportCriteria<Sample> criteria) - { - return prepareExportEntities(criteria); - } - - public String prepareExportSamples2( + public String prepareExportSamples( TableExportCriteria<TableModelRowWithObject<Sample>> criteria) { return prepareExportEntities(criteria); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentSamplesSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentSamplesSection.java index 548aaa6972237aa9deac4451c0dfdda419c831de..5f9aa3cacbb0c6e9fda5b5fac3de282245d6ed0d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentSamplesSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/ExperimentSamplesSection.java @@ -23,7 +23,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; @@ -56,7 +56,7 @@ public class ExperimentSamplesSection extends DisposableTabContent // @Private static String createGridId(TechId experimentId) { - return SampleBrowserGrid2.createGridId(createBrowserId(experimentId)); + return SampleBrowserGrid.createGridId(createBrowserId(experimentId)); } private static String createBrowserId(TechId experimentId) @@ -67,7 +67,7 @@ public class ExperimentSamplesSection extends DisposableTabContent @Override protected IDisposableComponent createDisposableContent() { - return SampleBrowserGrid2.createGridForExperimentSamples(viewContext.getCommonViewContext(), + return SampleBrowserGrid.createGridForExperimentSamples(viewContext.getCommonViewContext(), experimentId, createBrowserId(experimentId), experimentType); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ContainerSamplesSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ContainerSamplesSection.java index 02698655b61baa0f2c1e4a128f3653e90da7b87f..d73d8f032ef56459a75d93d3fa61ba47fdca18af 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ContainerSamplesSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ContainerSamplesSection.java @@ -23,7 +23,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; @@ -50,7 +50,7 @@ public class ContainerSamplesSection extends DisposableTabContent // @Private static String createGridId(TechId containerId) { - return SampleBrowserGrid2.createGridId(createBrowserId(containerId)); + return SampleBrowserGrid.createGridId(createBrowserId(containerId)); } private static String createBrowserId(TechId containerId) @@ -62,7 +62,7 @@ public class ContainerSamplesSection extends DisposableTabContent protected IDisposableComponent createDisposableContent() { TechId containerId = TechId.create(container); - return SampleBrowserGrid2.createGridForContainerSamples(viewContext.getCommonViewContext(), + return SampleBrowserGrid.createGridForContainerSamples(viewContext.getCommonViewContext(), containerId, createBrowserId(containerId), container.getSampleType()); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/DerivedSamplesSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/DerivedSamplesSection.java index 8bdb39d96ab78972b78acd43664244f9a6a09368..78d61ed098ae2c74aa14650533aa779b39d99738 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/DerivedSamplesSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/DerivedSamplesSection.java @@ -23,7 +23,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; @@ -50,7 +50,7 @@ public class DerivedSamplesSection extends DisposableTabContent // @Private static String createGridId(TechId parentId) { - return SampleBrowserGrid2.createGridId(createBrowserId(parentId)); + return SampleBrowserGrid.createGridId(createBrowserId(parentId)); } private static String createBrowserId(TechId parentId) @@ -62,7 +62,7 @@ public class DerivedSamplesSection extends DisposableTabContent protected IDisposableComponent createDisposableContent() { TechId parentId = TechId.create(parent); - return SampleBrowserGrid2.createGridForDerivedSamples(viewContext.getCommonViewContext(), + return SampleBrowserGrid.createGridForDerivedSamples(viewContext.getCommonViewContext(), parentId, createBrowserId(parentId), parent.getSampleType()); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ParentSamplesSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ParentSamplesSection.java index 2af6d897104d815b182848ca721a1d12788ce059..f78f6233896cc77473e001ef3349814a1ec929cc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ParentSamplesSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ParentSamplesSection.java @@ -23,7 +23,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; @@ -50,7 +50,7 @@ public class ParentSamplesSection extends DisposableTabContent // @Private static String createGridId(TechId childId) { - return SampleBrowserGrid2.createGridId(createBrowserId(childId)); + return SampleBrowserGrid.createGridId(createBrowserId(childId)); } private static String createBrowserId(TechId childId) @@ -62,7 +62,7 @@ public class ParentSamplesSection extends DisposableTabContent protected IDisposableComponent createDisposableContent() { TechId childId = TechId.create(child); - return SampleBrowserGrid2.createGridForParentSamples(viewContext.getCommonViewContext(), + return SampleBrowserGrid.createGridForParentSamples(viewContext.getCommonViewContext(), childId, createBrowserId(childId), child.getSampleType()); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SampleBrowserTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SampleBrowserTest.java index 2a277586664c910fed3669ba29b1c7fdf1e64095..72b0623fbd8ddcfbfd5427325a5dd3f0a7200635 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SampleBrowserTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SampleBrowserTest.java @@ -23,12 +23,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.GroupSe import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.InvokeActionMenu; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Login; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Logout; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.CheckSampleTable; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ExportSamplesTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ListSamples; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid2; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.SampleRow; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGridColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.ChangeTableColumnSettingsCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.Row; @@ -48,9 +48,9 @@ public class SampleBrowserTest extends AbstractGWTTestCase loginAndGotoListSamplesTab(); remoteConsole.prepare(new ListSamples("CISD", "MASTER_PLATE")); ChangeTableColumnSettingsCommand settingsCommand = - new ChangeTableColumnSettingsCommand(SampleBrowserGrid2.MAIN_GRID_ID); - settingsCommand.hiddenChangeEvent(CommonSampleColDefKind.CODE.name(), true); - settingsCommand.widthChangeEvent(CommonSampleColDefKind.REGISTRATOR.name(), + new ChangeTableColumnSettingsCommand(SampleBrowserGrid.MAIN_GRID_ID); + settingsCommand.hiddenChangeEvent(SampleGridColumnIDs.CODE, true); + settingsCommand.widthChangeEvent(SampleGridColumnIDs.REGISTRATOR, 2 * DEFAULT_COLUMN_WIDTH); remoteConsole.prepare(settingsCommand); remoteConsole.prepare(new Logout()); @@ -59,8 +59,8 @@ public class SampleBrowserTest extends AbstractGWTTestCase remoteConsole.prepare(new InvokeActionMenu(ActionMenuKind.SAMPLE_MENU_BROWSE)); remoteConsole.prepare(new ListSamples("CISD", "MASTER_PLATE")); CheckSampleTable checkCommand = new CheckSampleTable(); - checkCommand.expectedColumnHidden(CommonSampleColDefKind.CODE.name(), true); - checkCommand.expectedColumnWidth(CommonSampleColDefKind.REGISTRATOR.name(), + checkCommand.expectedColumnHidden(SampleGridColumnIDs.CODE, true); + checkCommand.expectedColumnWidth(SampleGridColumnIDs.REGISTRATOR, 2 * DEFAULT_COLUMN_WIDTH); checkCommand.expectedColumnsNumber(17); remoteConsole.prepare(checkCommand); @@ -73,8 +73,8 @@ public class SampleBrowserTest extends AbstractGWTTestCase loginAndGotoListSamplesTab(); remoteConsole.prepare(new ListSamples("CISD", "MASTER_PLATE")); CheckSampleTable table = new CheckSampleTable(); - table.expectedColumnHidden(CommonSampleColDefKind.CODE.name(), false); - table.expectedColumnWidth(CommonSampleColDefKind.REGISTRATOR.name(), DEFAULT_COLUMN_WIDTH); + table.expectedColumnHidden(SampleGridColumnIDs.CODE, false); + table.expectedColumnWidth(SampleGridColumnIDs.REGISTRATOR, DEFAULT_COLUMN_WIDTH); table.expectedRow(new SampleRow("MP001-1").identifier("CISD", "CISD").invalid() .noExperiment().withInternalPropertyCell("PLATE_GEOMETRY", DEFAULT_PLATE_GEOMETRY_VALUE)); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/CheckSampleTable.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/CheckSampleTable.java index a83a952baa2e77254af2e2bd411feb63ebffea10..f29e1357346554e87ac21d90e1140711ecdcca29 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/CheckSampleTable.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/CheckSampleTable.java @@ -28,7 +28,7 @@ public class CheckSampleTable extends CheckTableCommand { public CheckSampleTable() { - super(SampleBrowserGrid2.MAIN_GRID_ID); + super(SampleBrowserGrid.MAIN_GRID_ID); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ExportSamplesTestCommand.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ExportSamplesTestCommand.java index 28e5c95d6a9730a17c21cd4dcff9110b20047914..6b004bc010002907963cfe487a7e66212b13a405 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ExportSamplesTestCommand.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ExportSamplesTestCommand.java @@ -51,8 +51,8 @@ public class ExportSamplesTestCommand extends AbstractDefaultTestCommand public void execute() { - SampleBrowserGrid2 sampleBrowserGrid = - (SampleBrowserGrid2) GWTTestUtil.getWidgetWithID(SampleBrowserGrid2.MAIN_BROWSER_ID); + SampleBrowserGrid sampleBrowserGrid = + (SampleBrowserGrid) GWTTestUtil.getWidgetWithID(SampleBrowserGrid.MAIN_BROWSER_ID); // we do not create view context earlier (e.g. in the class constructor), because we have to // wait until client is loaded and viewContext is available. IViewContext<ICommonClientServiceAsync> viewContext = getViewContext(); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ShowSample.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ShowSample.java index 1bd8a502eb5e6b6fb11d274db3643a2021c5d866..df6128a93f82ed1014ad4cef3e45ca0f8f71596f 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ShowSample.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/ShowSample.java @@ -20,8 +20,8 @@ import com.extjs.gxt.ui.client.widget.grid.Grid; import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.util.GridTestUtils; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGridColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.GWTTestUtil; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; @@ -44,13 +44,13 @@ public final class ShowSample extends AbstractDefaultTestCommand @SuppressWarnings("unchecked") public void execute() { - final Widget widget = GWTTestUtil.getWidgetWithID(SampleBrowserGrid2.MAIN_GRID_ID); + final Widget widget = GWTTestUtil.getWidgetWithID(SampleBrowserGrid.MAIN_GRID_ID); assertTrue(widget instanceof Grid); final Grid<BaseEntityModel<Sample>> table = (Grid<BaseEntityModel<Sample>>) widget; - GridTestUtils.fireSelectRow(table, CommonSampleColDefKind.CODE.id(), code); + GridTestUtils.fireSelectRow(table, SampleGridColumnIDs.CODE, code); GWTTestUtil - .clickButtonWithID(SampleBrowserGrid2.createChildComponentId( - SampleBrowserGrid2.MAIN_BROWSER_ID, - SampleBrowserGrid2.SHOW_DETAILS_BUTTON_ID_SUFFIX)); + .clickButtonWithID(SampleBrowserGrid.createChildComponentId( + SampleBrowserGrid.MAIN_BROWSER_ID, + SampleBrowserGrid.SHOW_DETAILS_BUTTON_ID_SUFFIX)); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java index bd208f839494ca5cc071e6789f9a5a7c490c387d..3d9976fd243ba5d2d859e8e40c19cc2b8ef01eff 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java @@ -63,6 +63,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; @@ -354,8 +355,10 @@ public final class CommonClientServiceTest extends AbstractClientServiceTest @Test public final void testPrepareExportSamples() { - final TableExportCriteria<Sample> criteria = new TableExportCriteria<Sample>(); - final CacheManager<String, TableExportCriteria<Sample>> manager = createCacheManager(); + final TableExportCriteria<TableModelRowWithObject<Sample>> criteria = + new TableExportCriteria<TableModelRowWithObject<Sample>>(); + final CacheManager<String, TableExportCriteria<TableModelRowWithObject<Sample>>> manager = + createCacheManager(); context.checking(new Expectations() { { @@ -370,7 +373,7 @@ public final class CommonClientServiceTest extends AbstractClientServiceTest } private void prepareGetCacheManager(final Expectations exp, - final CacheManager<String, TableExportCriteria<Sample>> manager) + final CacheManager<String, TableExportCriteria<TableModelRowWithObject<Sample>>> manager) { prepareGetHttpSession(exp); exp.allowing(httpSession).getAttribute(SessionConstants.OPENBIS_EXPORT_MANAGER); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewerTest.java index 426d069e72e81f8849efffa60fd5e2c834ec0bcd..7eb3cd646d907da3522384796d338ca82c51c8fc 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewerTest.java @@ -20,13 +20,13 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TopMenu.ActionMenuKind; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.sample.CommonSampleColDefKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.columns.DataSetRow; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ListSamples; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.ShowSample; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.columns.SampleRow; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.util.GridTestUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.SectionsPanel; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGridColumnIDs; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractDefaultTestCommand; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.AbstractGWTTestCase; import ch.systemsx.cisd.openbis.generic.client.web.client.testframework.CheckTableCommand; @@ -97,7 +97,7 @@ public class GenericSampleViewerTest extends AbstractGWTTestCase createSectionId(DisplayTypeIDGenerator.CONTAINER_SAMPLES_SECTION)); final CheckTableCommand checkComponentsTable = checkSample.createComponentsTableCheck().expectedSize(2); - final String sampleSubcodeFieldIdent = CommonSampleColDefKind.SUBCODE.id(); + final String sampleSubcodeFieldIdent = SampleGridColumnIDs.SUBCODE; checkComponentsTable.expectedRow(new SampleRow(CONTROL_LAYOUT_EXAMPLE + ":A01", "WELL") .identifier("CISD", "CISD").partOfContainer(CONTROL_LAYOUT_EXAMPLE_ID).withCell( sampleSubcodeFieldIdent, "A01"));