From 5dcb12292119ae21ffb98e10f9eee7aa20cf2bf7 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Wed, 2 Sep 2009 08:05:37 +0000 Subject: [PATCH] [LMS-1121] sample search - added related data sets button; refactorings: extracted common code SVN: 12358 --- .../application/MatchingEntitiesPanel.java | 20 +---------- .../ui/grid/AbstractBrowserGrid.java | 36 ++++++++++++++++++- .../ui/sample/SampleBrowserGrid.java | 7 ++-- .../ui/sample/SampleSearchHitGrid.java | 26 ++++++++++++++ 4 files changed, 67 insertions(+), 22 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java index b66e07b1caf..39244e3f9cc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java @@ -44,7 +44,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IC import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RelatedDataSetCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; @@ -106,30 +105,13 @@ final class MatchingEntitiesPanel extends AbstractBrowserGrid<MatchingEntity, Ma addEntityOperationsLabel(); String showRelatedDatasetsTitle = viewContext.getMessage(Dict.BUTTON_SHOW_RELATED_DATASETS); - Button showRelatedDatasetsButton = new Button(showRelatedDatasetsTitle, new SelectionListener<ButtonEvent>() { @Override public void componentSelected(ButtonEvent ce) { - final List<MatchingEntity> selectedEntities = getSelectedBaseObjects(); - final TableExportCriteria<MatchingEntity> displayedEntities = - createTableExportCriteria(); - if (selectedEntities.isEmpty()) - { - // no entity selected - show datasets related to all displayed - RelatedDataSetCriteria criteria = - RelatedDataSetCriteria - .createDisplayedEntities(displayedEntities); - ShowRelatedDatasetsDialog.showRelatedDatasetsTab(viewContext, - criteria); - } else - { - // > 0 entity selected - show dialog with all/selected radio - new ShowRelatedDatasetsDialog(viewContext, selectedEntities, - displayedEntities).show(); - } + showRelatedDataSets(viewContext, MatchingEntitiesPanel.this); } }); showRelatedDatasetsButton.setId(SHOW_RELATED_DATASETS_BUTTON_ID); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java index 9367d0f1075..d225eb13c73 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java @@ -69,6 +69,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs 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.ShowRelatedDatasetsDialog; import ch.systemsx.cisd.openbis.generic.client.web.client.application.VoidAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplaySettingsGetter; @@ -84,10 +85,12 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMess import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IResultUpdater; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WindowUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RelatedDataSetCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; +import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridFilterInfo; @@ -257,7 +260,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod } } - + /** * Registers the specified listener for clicks on links in the specified column. * @@ -1404,4 +1407,35 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod protected abstract Dialog createDialog(List<T> data, IBrowserGridActionInvoker invoker); } + /** + * If user selected some entities in given browser first a dialog is shown where he can select + * between showing data sets related to selected/displayed entities. Then a tab is displayed + * where these related data sets are listed.<br> + * <br> + * If no entities were selected in given browser the tab is displayed where data sets related to + * all entities displayed in the grid are listed. + */ + // NOTE: This method cannot be externalized from AbstractBrowserGrid because it uses some + // AbstractBrowserGrid's protected methods + protected static final <E extends IEntityInformationHolder> void showRelatedDataSets( + final IViewContext<ICommonClientServiceAsync> viewContext, + final AbstractBrowserGrid<E, ? extends BaseEntityModel<E>> browser) + { + final List<? extends IEntityInformationHolder> selectedEntities = + browser.getSelectedBaseObjects(); + final TableExportCriteria<? extends IEntityInformationHolder> displayedEntities = + browser.createTableExportCriteria(); + if (selectedEntities.isEmpty()) + { + // no entity selected - show datasets related to all displayed + RelatedDataSetCriteria relatedCriteria = + RelatedDataSetCriteria.createDisplayedEntities(displayedEntities); + ShowRelatedDatasetsDialog.showRelatedDatasetsTab(viewContext, relatedCriteria); + } else + { + // > 0 entity selected - show dialog with all/selected radio + new ShowRelatedDatasetsDialog(viewContext, selectedEntities, displayedEntities).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 850302f0cde..b5d41af57a0 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 @@ -315,7 +315,12 @@ public class SampleBrowserGrid extends protected void extendBottomToolbar() { addEntityOperationsLabel(); + addEntityOperationButtons(); + addEntityOperationsSeparator(); + } + protected void addEntityOperationButtons() + { final Button addButton = new Button(viewContext.getMessage(Dict.BUTTON_ADD, "Sample"), new SelectionListener<ComponentEvent>() @@ -352,8 +357,6 @@ public class SampleBrowserGrid extends } })); allowMultipleSelection(); // we allow deletion of multiple samples - - addEntityOperationsSeparator(); } private void addGridRefreshListener(SampleBrowserToolbar topToolbar) 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 01b68a365a8..c87363ff18a 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 @@ -19,6 +19,10 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample import java.util.List; +import com.extjs.gxt.ui.client.event.ButtonEvent; +import com.extjs.gxt.ui.client.event.SelectionListener; +import com.extjs.gxt.ui.client.widget.button.Button; + import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; @@ -46,6 +50,9 @@ public class SampleSearchHitGrid extends SampleBrowserGrid implements IDetailedS public static final String SEARCH_GRID_ID = SEARCH_BROWSER_ID + "-grid"; + public static final String SHOW_RELATED_DATASETS_BUTTON_ID = + SEARCH_GRID_ID + "_show-related-datasets-button"; + public static IDisposableComponent create( final IViewContext<ICommonClientServiceAsync> viewContext) { @@ -70,6 +77,25 @@ public class SampleSearchHitGrid extends SampleBrowserGrid implements IDetailedS extendBottomToolbar(); } + @Override + protected void addEntityOperationButtons() + { + String showRelatedDatasetsTitle = viewContext.getMessage(Dict.BUTTON_SHOW_RELATED_DATASETS); + Button showRelatedDatasetsButton = + new Button(showRelatedDatasetsTitle, new SelectionListener<ButtonEvent>() + { + @Override + public void componentSelected(ButtonEvent ce) + { + showRelatedDataSets(viewContext, SampleSearchHitGrid.this); + } + }); + showRelatedDatasetsButton.setId(SHOW_RELATED_DATASETS_BUTTON_ID); + addButton(showRelatedDatasetsButton); + + super.addEntityOperationButtons(); + } + public void refresh(DetailedSearchCriteria newCriteria, List<PropertyType> propertyTypes) { ListSampleDisplayCriteria criteriaOrNull = tryGetDisplayCriteria(); -- GitLab