From f73eb44160ad1806747fb3d9333ef365f17d153a Mon Sep 17 00:00:00 2001 From: anttil <anttil> Date: Thu, 20 Sep 2012 14:24:18 +0000 Subject: [PATCH] SWE-2 / SP-263: Filter control added to all pages with browsing SVN: 26708 --- .../client/application/ui/TypedTableGrid.java | 2 +- .../ui/grid/BrowserGridPagingToolBar.java | 1 + .../ui/grid/ListColumnFilterWidget.java | 8 +++- .../ui/grid/TextColumnFilterWidget.java | 8 +++- .../expressions/filter/FilterToolbar.java | 21 +++++++--- .../uitest/infra/ApplicationRunner.java | 30 ++++++++------ .../cisd/openbis/uitest/infra/Browser.java | 7 +++- .../cisd/openbis/uitest/infra/Filterable.java | 27 ------------ .../matcher/BrowserListsElementMatcher.java | 4 +- .../uitest/page/tab/ExperimentBrowser.java | 16 +++++++- .../page/tab/ExperimentTypeBrowser.java | 39 ++++++++++++++++-- .../uitest/page/tab/ProjectBrowser.java | 38 +++++++++++++++-- .../tab/PropertyTypeAssignmentBrowser.java | 38 +++++++++++++++-- .../uitest/page/tab/PropertyTypeBrowser.java | 38 +++++++++++++++-- .../page/tab/RoleAssignmentBrowser.java | 16 +++++++- .../uitest/page/tab/SampleBrowser.java | 39 ++++++++++++++++-- .../uitest/page/tab/SampleTypeBrowser.java | 41 +++++++++++++++++-- .../openbis/uitest/page/tab/SpaceBrowser.java | 20 ++++----- .../uitest/page/tab/VocabularyBrowser.java | 39 ++++++++++++++++-- .../openbis/uitest/suite/SeleniumTest.java | 2 +- .../cisd/openbis/uitest/widget/Grid.java | 23 ++--------- 21 files changed, 346 insertions(+), 111 deletions(-) delete mode 100644 ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Filterable.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java index 82b3fdcbf27..d7c8f82f99a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java @@ -446,7 +446,7 @@ public abstract class TypedTableGrid<T extends Serializable> extends LayoutConta removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.REFRESH); } setId(browserId); - + pagingToolbar.setId(gridId + "-paging-toolbar"); } public void removeButtons(PagingToolBarButtonKind... buttonKinds) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java index 72274baba03..c38a10d7e76 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java @@ -129,6 +129,7 @@ public final class BrowserGridPagingToolBar extends PagingToolBar insertTableButton(createTableOperationsLabel()); this.showFiltersButton = createShowFiltersButton(viewContext, invoker); + this.showFiltersButton.setId(gridId + "-show-filters"); insertTableButton(showFiltersButton); this.configButton = createConfigButton(viewContext, invoker, gridId); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java index 4dc420e6b6f..7bf0e7859f2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ListColumnFilterWidget.java @@ -70,8 +70,10 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements private boolean comboBoxValueSelected = false; + private String gridId; + public ListColumnFilterWidget(IColumnDefinition<T> filteredField, - final IDelegatedAction onFilterAction, List<String> distinctValues) + final IDelegatedAction onFilterAction, List<String> distinctValues, String gridId) { this.filteredField = filteredField; this.onFilterAction = onFilterAction; @@ -102,6 +104,8 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements ModelDataPropertyNames.TOOLTIP)); GWTUtils.setupAutoWidth(this); + this.setId(gridId + "-" + label); + this.gridId = gridId; } private static DelayedTask createFilterApplierTask(final IDelegatedAction onFilterAction) @@ -172,7 +176,7 @@ public class ListColumnFilterWidget<T> extends ComboBox<ModelData> implements { if (distinctValuesOrNull == null) { - return new TextColumnFilterWidget<T>(filteredField, onFilterAction); + return new TextColumnFilterWidget<T>(filteredField, onFilterAction, gridId); } else { if (distinctValuesOrNull.equals(getCurrentStoreValues()) == false) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java index ff8c539dc3b..c05c978d703 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/TextColumnFilterWidget.java @@ -42,9 +42,11 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode private boolean disableApply = false; + private String gridId; + /** @param onFilterAction callback executed when data are about to be filtered. */ public TextColumnFilterWidget(IColumnDefinition<T> filteredField, - IDelegatedAction onFilterAction) + IDelegatedAction onFilterAction, String gridId) { this.filteredField = filteredField; this.onFilterAction = onFilterAction; @@ -53,6 +55,8 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode setEmptyText(label); setToolTip(label); setValidationDelay(ListColumnFilterWidget.FILTER_APPLICATION_TIMEOUT_MS); + this.setId(gridId + "-" + label); + this.gridId = gridId; } @Override @@ -112,7 +116,7 @@ public class TextColumnFilterWidget<T/* entity */> extends StoreFilterField<Mode } else { return new ListColumnFilterWidget<T>(filteredField, onFilterAction, - distinctValuesOrNull); + distinctValuesOrNull, gridId); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java index 61e81dd6695..45eed4407d2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java @@ -79,6 +79,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb public final static int MAX_FILTER_FIELDS = MAX_FILTER_FIELDS_COLUMNS * MAX_FILTER_FIELDS_ROWS; + private String gridId; + public FilterToolbar(IViewContext<ICommonClientServiceAsync> viewContext, String gridId, IDisplayTypeIDProvider displayTypeIDProvider, IDelegatedAction applyFiltersAction) { @@ -151,6 +153,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb } }); viewContext.logStop(logID); + this.gridId = gridId; + setId(gridId + "-filter-toolbar"); } public static String createId(String prefix, String gridId) @@ -445,7 +449,7 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb { List<IColumnFilterWidget<T>> newColumnFilters = createColumnFilterWidgets(pruneIfNecessary(filteredColumns), - this.columnFilters, applyFiltersAction); + this.columnFilters, applyFiltersAction, gridId); updateColumnFilters(newColumnFilters); return true; } else @@ -490,10 +494,13 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb { return true; } - if (filter1 instanceof TypedTableGridColumnDefinition && filter2 instanceof TypedTableGridColumnDefinition) + if (filter1 instanceof TypedTableGridColumnDefinition + && filter2 instanceof TypedTableGridColumnDefinition) { - TypedTableGridColumnDefinition<?> coldef1 = (TypedTableGridColumnDefinition<?>) filter1; - TypedTableGridColumnDefinition<?> coldef2 = (TypedTableGridColumnDefinition<?>) filter2; + TypedTableGridColumnDefinition<?> coldef1 = + (TypedTableGridColumnDefinition<?>) filter1; + TypedTableGridColumnDefinition<?> coldef2 = + (TypedTableGridColumnDefinition<?>) filter2; if (coldef1.getIndex() != coldef2.getIndex()) { return true; @@ -505,7 +512,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb private static <T> List<IColumnFilterWidget<T>> createColumnFilterWidgets( List<IColumnDefinition<T>> availableFilters, - List<IColumnFilterWidget<T>> previousColumnFilters, IDelegatedAction onFilterAction) + List<IColumnFilterWidget<T>> previousColumnFilters, IDelegatedAction onFilterAction, + String gridId) { List<IColumnFilterWidget<T>> filterWidgets = new ArrayList<IColumnFilterWidget<T>>(); for (IColumnDefinition<T> columnDefinition : availableFilters) @@ -516,7 +524,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb { // we do not have distinct values in the columns at this moment, so plain filter // widget is always created - filterWidget = new TextColumnFilterWidget<T>(columnDefinition, onFilterAction); + filterWidget = + new TextColumnFilterWidget<T>(columnDefinition, onFilterAction, gridId); } else { filterWidget.setFilteredField(columnDefinition); diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java index 6eca934070d..61bcc47f409 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/ApplicationRunner.java @@ -90,7 +90,7 @@ public class ApplicationRunner public void delete(Space space) { SpaceBrowser browser = browseToSpaceBrowser(); - browser.filter(space.getCode()); + browser.filter(space); browser.select(space); browser.delete(); } @@ -192,7 +192,7 @@ public class ApplicationRunner getMenus().admin(); load(AdminMenu.class).types(); load(TypesMenu.class).sampleTypes(); - return load(SampleTypeBrowser.class); + return getBrowser(SampleTypeBrowser.class); } public ExperimentTypeBrowser browseToExperimentTypeBrowser() @@ -200,7 +200,7 @@ public class ApplicationRunner getMenus().admin(); load(AdminMenu.class).types(); load(TypesMenu.class).experimentTypes(); - return load(ExperimentTypeBrowser.class); + return getBrowser(ExperimentTypeBrowser.class); } public Trash browseToTrash() @@ -225,16 +225,14 @@ public class ApplicationRunner { getMenus().admin(); load(AdminMenu.class).spaces(); - SpaceBrowser browser = load(SpaceBrowser.class); - browser.resetFilters(); - return browser; + return getBrowser(SpaceBrowser.class); } public ProjectBrowser browseToProjectBrowser() { getMenus().browse(); load(BrowseMenu.class).projects(); - return load(ProjectBrowser.class); + return getBrowser(ProjectBrowser.class); } public AddSpaceDialog browseToAddSpaceDialog() @@ -247,7 +245,8 @@ public class ApplicationRunner { getMenus().browse(); load(BrowseMenu.class).samples(); - return load(SampleBrowser.class); + load(SampleBrowser.class).allSpaces(); + return getBrowser(SampleBrowser.class); } public ExperimentBrowser browseToExperimentBrowser() @@ -262,14 +261,14 @@ public class ApplicationRunner getMenus().admin(); load(AdminMenu.class).authorization(); load(AuthorizationMenu.class).roles(); - return load(RoleAssignmentBrowser.class); + return getBrowser(RoleAssignmentBrowser.class); } public VocabularyBrowser browseToVocabularyBrowser() { getMenus().admin(); load(AdminMenu.class).vocabularies(); - return load(VocabularyBrowser.class); + return getBrowser(VocabularyBrowser.class); } public AddVocabularyDialog browseToAddVocabularyDialog() @@ -283,7 +282,7 @@ public class ApplicationRunner getMenus().admin(); load(AdminMenu.class).metadata(); load(MetadataMenu.class).propertyTypes(); - return load(PropertyTypeBrowser.class); + return getBrowser(PropertyTypeBrowser.class); } public AddPropertyType browseToAddPropertyType() @@ -307,7 +306,7 @@ public class ApplicationRunner getMenus().admin(); load(AdminMenu.class).metadata(); load(MetadataMenu.class).propertyTypeAssignments(); - return load(PropertyTypeAssignmentBrowser.class); + return getBrowser(PropertyTypeAssignmentBrowser.class); } public RegisterSample browseToRegisterSample() @@ -336,6 +335,13 @@ public class ApplicationRunner return proxy.get(TopBar.class); } + private <T extends Browser<?>> T getBrowser(Class<T> clazz) + { + T browser = load(clazz); + browser.resetFilters(); + return browser; + } + private <T> T load(Class<T> clazz) { return proxy.get(clazz); diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browser.java index 06d7a15e7b7..8b6214f3843 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Browser.java @@ -16,13 +16,16 @@ package ch.systemsx.cisd.openbis.uitest.infra; - /** * @author anttil */ public interface Browser<T extends Browsable> { - public Row row(T browsable); + public Row select(T browsable); public Cell cell(T browsable, String column); + + public void filter(T browsable); + + public void resetFilters(); } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Filterable.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Filterable.java deleted file mode 100644 index 5a4de0c1c82..00000000000 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/Filterable.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2012 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.uitest.infra; - -/** - * @author anttil - */ -public interface Filterable -{ - public void filter(String code); - - public void resetFilters(); -} diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/BrowserListsElementMatcher.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/BrowserListsElementMatcher.java index be8a3875e19..1e4f848854f 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/BrowserListsElementMatcher.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/matcher/BrowserListsElementMatcher.java @@ -45,7 +45,9 @@ public class BrowserListsElementMatcher<T extends Browsable, U extends Browser<T @Override public boolean matchesSafely(U browser) { - Row row = browser.row(expected); + browser.filter(expected); + Row row = browser.select(expected); + if (row.exists()) { return expected.isRepresentedBy(row); diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentBrowser.java index 5ebf219f997..eea9958db74 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentBrowser.java @@ -50,7 +50,7 @@ public class ExperimentBrowser implements Browser<Experiment> } @Override - public Row row(Experiment browsable) + public Row select(Experiment browsable) { // TODO Auto-generated method stub return null; @@ -63,4 +63,18 @@ public class ExperimentBrowser implements Browser<Experiment> return null; } + @Override + public void filter(Experiment browsable) + { + // TODO Auto-generated method stub + + } + + @Override + public void resetFilters() + { + // TODO Auto-generated method stub + + } + } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentTypeBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentTypeBrowser.java index 1b15fc476c3..a9fa491a79e 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentTypeBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ExperimentTypeBrowser.java @@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab; import ch.systemsx.cisd.openbis.uitest.infra.Browser; import ch.systemsx.cisd.openbis.uitest.infra.Cell; import ch.systemsx.cisd.openbis.uitest.infra.Row; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf; import ch.systemsx.cisd.openbis.uitest.type.ExperimentType; import ch.systemsx.cisd.openbis.uitest.widget.Button; +import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar; import ch.systemsx.cisd.openbis.uitest.widget.Grid; +import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar; public class ExperimentTypeBrowser implements Browser<ExperimentType> { @@ -41,21 +45,50 @@ public class ExperimentTypeBrowser implements Browser<ExperimentType> @Locate("openbis_experiment-type-browser-grid") private Grid grid; + @Locate("openbis_experiment-type-browser-grid-paging-toolbar") + private PagingToolBar paging; + + @Lazy + @Locate("openbis_experiment-type-browser-grid-filter-toolbar") + private FilterToolBar filters; + public void add() { add.click(); } @Override - public Row row(ExperimentType experimentType) + public Row select(ExperimentType experimentType) { - return grid.getRow("Code", experimentType.getCode()); + return grid.select("Code", experimentType.getCode()); } @Override public Cell cell(ExperimentType experimentType, String column) { - return row(experimentType).get(column); + return select(experimentType).get(column); + } + + @Override + public void filter(ExperimentType type) + { + paging.filters(); + filters.setCode(type.getCode()); + new WaitForRefreshOf(grid).withTimeoutOf(10); + } + + @Override + public void resetFilters() + { + paging.filters(); + filters.reset(); + } + + @Override + public String toString() + { + String s = "ExperimentTypeBrowser\n==========\n"; + return s + grid.toString(); } } \ No newline at end of file diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ProjectBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ProjectBrowser.java index d3fd5b13a59..b64deb40ac1 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ProjectBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/ProjectBrowser.java @@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab; import ch.systemsx.cisd.openbis.uitest.infra.Browser; import ch.systemsx.cisd.openbis.uitest.infra.Cell; import ch.systemsx.cisd.openbis.uitest.infra.Row; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf; import ch.systemsx.cisd.openbis.uitest.type.Project; import ch.systemsx.cisd.openbis.uitest.widget.Button; +import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar; import ch.systemsx.cisd.openbis.uitest.widget.Grid; +import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar; public class ProjectBrowser implements Browser<Project> { @@ -34,16 +38,44 @@ public class ProjectBrowser implements Browser<Project> @Locate("openbis_project-browser-delete") private Button delete; + @Locate("openbis_project-browser-grid-paging-toolbar") + private PagingToolBar paging; + + @Lazy + @Locate("openbis_project-browser-grid-filter-toolbar") + private FilterToolBar filters; + @Override - public Row row(Project project) + public Row select(Project project) { - return grid.getRow("Code", project.getCode()); + return grid.select("Code", project.getCode()); } @Override public Cell cell(Project project, String column) { - return row(project).get(column); + return select(project).get(column); } + @Override + public void filter(Project project) + { + paging.filters(); + filters.setCode(project.getCode()); + new WaitForRefreshOf(grid).withTimeoutOf(10); + } + + @Override + public void resetFilters() + { + paging.filters(); + filters.reset(); + } + + @Override + public String toString() + { + String s = "ProjectBrowser\n==========\n"; + return s + grid.toString(); + } } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeAssignmentBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeAssignmentBrowser.java index 1f64e2f1055..aea639ab129 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeAssignmentBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeAssignmentBrowser.java @@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab; import ch.systemsx.cisd.openbis.uitest.infra.Browser; import ch.systemsx.cisd.openbis.uitest.infra.Cell; import ch.systemsx.cisd.openbis.uitest.infra.Row; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf; import ch.systemsx.cisd.openbis.uitest.type.PropertyTypeAssignment; import ch.systemsx.cisd.openbis.uitest.widget.Button; +import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar; import ch.systemsx.cisd.openbis.uitest.widget.Grid; +import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar; public class PropertyTypeAssignmentBrowser implements Browser<PropertyTypeAssignment> { @@ -37,16 +41,44 @@ public class PropertyTypeAssignmentBrowser implements Browser<PropertyTypeAssign @Locate("openbis_property-type-assignment-browser-grid-release") private Button release; + @Locate("openbis_property-type-assignment-browser-grid-paging-toolbar") + private PagingToolBar paging; + + @Lazy + @Locate("openbis_property-type-assignment-browser-grid-filter-toolbar") + private FilterToolBar filters; + @Override - public Row row(PropertyTypeAssignment assignment) + public Row select(PropertyTypeAssignment assignment) { - return grid.getRow("Property Type Code", assignment.getPropertyType().getCode()); + return grid.select("Property Type Code", assignment.getPropertyType().getCode()); } @Override public Cell cell(PropertyTypeAssignment assignment, String column) { - return row(assignment).get(column); + return select(assignment).get(column); } + @Override + public void filter(PropertyTypeAssignment assignment) + { + paging.filters(); + filters.setCode(assignment.getPropertyType().getCode()); + new WaitForRefreshOf(grid).withTimeoutOf(10); + } + + @Override + public void resetFilters() + { + paging.filters(); + filters.reset(); + } + + @Override + public String toString() + { + String s = "PropertyTypeAssignmentBrowser\n==========\n"; + return s + grid.toString(); + } } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeBrowser.java index 728586cc953..d9138986c35 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/PropertyTypeBrowser.java @@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab; import ch.systemsx.cisd.openbis.uitest.infra.Browser; import ch.systemsx.cisd.openbis.uitest.infra.Cell; import ch.systemsx.cisd.openbis.uitest.infra.Row; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf; import ch.systemsx.cisd.openbis.uitest.type.PropertyType; import ch.systemsx.cisd.openbis.uitest.widget.Button; +import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar; import ch.systemsx.cisd.openbis.uitest.widget.Grid; +import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar; public class PropertyTypeBrowser implements Browser<PropertyType> { @@ -38,16 +42,44 @@ public class PropertyTypeBrowser implements Browser<PropertyType> @Locate("openbis_property-type-browser-grid-delete-button") private Button delete; + @Locate("openbis_property-type-browser-grid-paging-toolbar") + private PagingToolBar paging; + + @Lazy + @Locate("openbis_property-type-browser-grid-filter-toolbar") + private FilterToolBar filters; + @Override - public Row row(PropertyType type) + public Row select(PropertyType type) { - return grid.getRow("Code", type.getCode()); + return grid.select("Code", type.getCode()); } @Override public Cell cell(PropertyType type, String column) { - return row(type).get(column); + return select(type).get(column); } + @Override + public void filter(PropertyType propertyType) + { + paging.filters(); + filters.setCode(propertyType.getCode()); + new WaitForRefreshOf(grid).withTimeoutOf(10); + } + + @Override + public void resetFilters() + { + paging.filters(); + filters.reset(); + } + + @Override + public String toString() + { + String s = "PropertyTypeBrowser\n==========\n"; + return s + grid.toString(); + } } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RoleAssignmentBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RoleAssignmentBrowser.java index 81e9bd32f92..91cf3717906 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RoleAssignmentBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RoleAssignmentBrowser.java @@ -31,7 +31,7 @@ public class RoleAssignmentBrowser implements Browser<Experiment> private Button assignRoleButton; @Override - public Row row(Experiment browsable) + public Row select(Experiment browsable) { // TODO Auto-generated method stub return null; @@ -44,4 +44,18 @@ public class RoleAssignmentBrowser implements Browser<Experiment> return null; } + @Override + public void filter(Experiment browsable) + { + // TODO Auto-generated method stub + + } + + @Override + public void resetFilters() + { + // TODO Auto-generated method stub + + } + } \ No newline at end of file diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleBrowser.java index 79f0d8982be..6d1ff127180 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleBrowser.java @@ -21,12 +21,16 @@ import java.util.List; import ch.systemsx.cisd.openbis.uitest.infra.Browser; import ch.systemsx.cisd.openbis.uitest.infra.Cell; import ch.systemsx.cisd.openbis.uitest.infra.Row; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf; import ch.systemsx.cisd.openbis.uitest.type.Sample; import ch.systemsx.cisd.openbis.uitest.type.SampleType; import ch.systemsx.cisd.openbis.uitest.widget.Button; import ch.systemsx.cisd.openbis.uitest.widget.DropDown; +import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar; import ch.systemsx.cisd.openbis.uitest.widget.Grid; +import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar; public class SampleBrowser implements Browser<Sample> { @@ -43,6 +47,13 @@ public class SampleBrowser implements Browser<Sample> @Locate("openbis_select_group-selectsample-browser-toolbar") private DropDown spaceList; + @Locate("openbis_sample-browser_main-grid-paging-toolbar") + private PagingToolBar paging; + + @Lazy + @Locate("openbis_sample-browser_main-grid-filter-toolbar") + private FilterToolBar filters; + public void addSample() { addSample.click(); @@ -64,15 +75,37 @@ public class SampleBrowser implements Browser<Sample> } @Override - public Row row(Sample sample) + public Row select(Sample sample) { - return grid.getRow("Code", sample.getCode()); + return grid.select("Code", sample.getCode()); } @Override public Cell cell(Sample sample, String column) { - return row(sample).get(column); + return select(sample).get(column); + } + + @Override + public void filter(Sample sample) + { + paging.filters(); + filters.setCode(sample.getCode()); + new WaitForRefreshOf(grid).withTimeoutOf(10); + } + + @Override + public void resetFilters() + { + paging.filters(); + filters.reset(); + } + + @Override + public String toString() + { + String s = "SampleBrowser\n==========\n"; + return s + grid.toString(); } } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleTypeBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleTypeBrowser.java index e4be935b1e3..1f36c16e274 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleTypeBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SampleTypeBrowser.java @@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab; import ch.systemsx.cisd.openbis.uitest.infra.Browser; import ch.systemsx.cisd.openbis.uitest.infra.Cell; import ch.systemsx.cisd.openbis.uitest.infra.Row; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf; import ch.systemsx.cisd.openbis.uitest.type.SampleType; import ch.systemsx.cisd.openbis.uitest.widget.Button; +import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar; import ch.systemsx.cisd.openbis.uitest.widget.Grid; +import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar; public class SampleTypeBrowser implements Browser<SampleType> { @@ -39,6 +43,13 @@ public class SampleTypeBrowser implements Browser<SampleType> @Locate("openbis_sample-type-browser-grid") private Grid grid; + @Locate("openbis_sample-type-browser-grid-paging-toolbar") + private PagingToolBar paging; + + @Lazy + @Locate("openbis_sample-type-browser-grid-filter-toolbar") + private FilterToolBar filters; + public void add() { add.click(); @@ -46,20 +57,42 @@ public class SampleTypeBrowser implements Browser<SampleType> public void editSampleType(SampleType type) { - grid.select(type.getCode()); + grid.select("Code", type.getCode()); edit.click(); } @Override - public Row row(SampleType type) + public Row select(SampleType type) { - return grid.getRow("Code", type.getCode()); + return grid.select("Code", type.getCode()); } @Override public Cell cell(SampleType type, String column) { - return row(type).get(column); + return select(type).get(column); + } + + @Override + public void filter(SampleType type) + { + paging.filters(); + filters.setCode(type.getCode()); + new WaitForRefreshOf(grid).withTimeoutOf(10); + } + + @Override + public void resetFilters() + { + paging.filters(); + filters.reset(); + } + + @Override + public String toString() + { + String s = "SampleTypeBrowser\n==========\n"; + return s + grid.toString(); } } \ No newline at end of file diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SpaceBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SpaceBrowser.java index 04132c0a9d6..2040e2cab28 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SpaceBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/SpaceBrowser.java @@ -18,7 +18,6 @@ package ch.systemsx.cisd.openbis.uitest.page.tab; import ch.systemsx.cisd.openbis.uitest.infra.Browser; import ch.systemsx.cisd.openbis.uitest.infra.Cell; -import ch.systemsx.cisd.openbis.uitest.infra.Filterable; import ch.systemsx.cisd.openbis.uitest.infra.Row; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate; @@ -30,7 +29,7 @@ import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar; import ch.systemsx.cisd.openbis.uitest.widget.Grid; import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar; -public class SpaceBrowser implements Browser<Space>, Filterable +public class SpaceBrowser implements Browser<Space> { @Locate("openbis_space-browser-grid") @@ -58,9 +57,10 @@ public class SpaceBrowser implements Browser<Space>, Filterable addSpace.click(); } - public void select(Space space) + @Override + public Row select(Space space) { - grid.select(space.getCode()); + return grid.select("Code", space.getCode()); } public void delete() @@ -69,23 +69,17 @@ public class SpaceBrowser implements Browser<Space>, Filterable confimDeletion.confirm("WebDriver"); } - @Override - public Row row(Space space) - { - return grid.getRow("Code", space.getCode()); - } - @Override public Cell cell(Space space, String column) { - return row(space).get(column); + return select(space).get(column); } @Override - public void filter(String filter) + public void filter(Space space) { paging.filters(); - filters.setCode(filter); + filters.setCode(space.getCode()); new WaitForRefreshOf(grid).withTimeoutOf(10); } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/VocabularyBrowser.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/VocabularyBrowser.java index 702169a6100..98997c80516 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/VocabularyBrowser.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/VocabularyBrowser.java @@ -19,10 +19,14 @@ package ch.systemsx.cisd.openbis.uitest.page.tab; import ch.systemsx.cisd.openbis.uitest.infra.Browser; import ch.systemsx.cisd.openbis.uitest.infra.Cell; import ch.systemsx.cisd.openbis.uitest.infra.Row; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy; import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate; +import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WaitForRefreshOf; import ch.systemsx.cisd.openbis.uitest.type.Vocabulary; import ch.systemsx.cisd.openbis.uitest.widget.Button; +import ch.systemsx.cisd.openbis.uitest.widget.FilterToolBar; import ch.systemsx.cisd.openbis.uitest.widget.Grid; +import ch.systemsx.cisd.openbis.uitest.widget.PagingToolBar; public class VocabularyBrowser implements Browser<Vocabulary> { @@ -36,20 +40,49 @@ public class VocabularyBrowser implements Browser<Vocabulary> @Locate("openbis_vocabulary-browser_delete-button") private Button delete; + @Locate("openbis_vocabulary-browser-grid-paging-toolbar") + private PagingToolBar paging; + + @Lazy + @Locate("openbis_vocabulary-browser-grid-filter-toolbar") + private FilterToolBar filters; + public void add() { add.click(); } @Override - public Row row(Vocabulary vocabulary) + public Row select(Vocabulary vocabulary) { - return grid.getRow("Code", vocabulary.getCode()); + return grid.select("Code", vocabulary.getCode()); } @Override public Cell cell(Vocabulary vocabulary, String column) { - return row(vocabulary).get(column); + return select(vocabulary).get(column); + } + + @Override + public void filter(Vocabulary vocabulary) + { + paging.filters(); + filters.setCode(vocabulary.getCode()); + new WaitForRefreshOf(grid).withTimeoutOf(10); + } + + @Override + public void resetFilters() + { + paging.filters(); + filters.reset(); + } + + @Override + public String toString() + { + String s = "VocabularyBrowser\n==========\n"; + return s + grid.toString(); } } diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java index 4405576f088..cc8fdc45ea6 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java @@ -135,7 +135,7 @@ public abstract class SeleniumTest openbis.login(User.ADMIN); // this is because of BIS-184 - sampleBrowser().allSpaces(); + sampleBrowser(); } @AfterGroups(groups = "login-admin") diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java index df20a668641..5209e75cbd4 100644 --- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java +++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java @@ -16,12 +16,11 @@ package ch.systemsx.cisd.openbis.uitest.widget; -import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import ch.systemsx.cisd.openbis.uitest.infra.Cell; @@ -34,7 +33,7 @@ import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Refreshing; public class Grid extends Widget implements Refreshing { - public Row getRow(String column, String value) + public Row select(String column, String value) { List<WebElement> columns = this.getColumns(); @@ -64,6 +63,7 @@ public class Grid extends Widget implements Refreshing { if (cells.get(index).getText().equalsIgnoreCase(value)) { + cells.get(index).findElement(By.xpath("./..")).click(); found = true; break; } @@ -96,23 +96,6 @@ public class Grid extends Widget implements Refreshing return findAll(".//td[not(ancestor::div[contains(@style,'display:none')]) and contains(@class, 'x-grid') and contains(@class, '-col ')]//*[not(*)]"); } - public void select(String string) - { - Collection<String> found = new ArrayList<String>(); - for (WebElement element : getCells()) - { - if (string.equalsIgnoreCase(element.getText())) - { - element.click(); - return; - } - found.add(element.getText()); - } - - throw new IllegalArgumentException("Grid does not contain element with text " + string - + ", found " + found); - } - @Override public String toString() { -- GitLab