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 82b3fdcbf27b6a80bfeb3548f7ba8295f8e95620..d7c8f82f99aac7cb04828123b4ee59767f351d43 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 72274baba03f8222fa2d1a020b5d33c491d5cf99..c38a10d7e76b6a2f4cfb80c6219e59defaa1b635 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 4dc420e6b6ff693f8951c89e45a34e8973294b66..7bf0e7859f24eacbd405db701e67b8967abd5c6f 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 ff8c539dc3b74dc66fa387b66ce7c33805d2549f..c05c978d7037aa1c937a70a93c2737a0396a0161 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 61e81dd6695f7b4b3d0f2e2e7ffd6cd2c49e24d5..45eed4407d2ac1be4cf48cbbcc8888c5679beb75 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 6eca934070ddcb4c228a6f6ebf5630e317824bb6..61bcc47f409ec79031d7d187c62224072b235cd6 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 06d7a15e7b72be5137332dfe99a4c919261d2f40..8b6214f38434707503196403d0c24e8a53651352 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 5a4de0c1c825b560dbf40fe55cdd5ea0e3c2084e..0000000000000000000000000000000000000000 --- 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 be8a3875e1943d9e9b74c1239f294bd0c8fadc86..1e4f848854f76ca3981e1824101d9e2cbf863ad4 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 5ebf219f9977cb8832ba4ee77ccc97fb8c3e2f82..eea9958db745a07479d81fe33aa4198691578351 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 1b15fc476c3cbb824040ee4c62ec6f0ed502ffda..a9fa491a79e7e10a34374055facec5d6700bf8c5 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 d3fd5b13a597ffb42c9db48a128dcb603ed07f59..b64deb40ac1a2d5be486211810080f38bec38c28 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 1f64e2f1055fc833bd5209bd97db09f6f8878f45..aea639ab12923a4f912af55db959c7468bcb2a23 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 728586cc9534284e7af39b127f1a6b64a53803ff..d9138986c35bb09d92d39546c74ec7a5cc03c124 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 81e9bd32f92fbc6bb00af055e8d8d46807914425..91cf37179065f74173c851c9d77fd1d28d41db99 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 79f0d8982bef157e4d0368e92e3073d0907c76c2..6d1ff1271805c84903996685e61d89de2d3359e1 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 e4be935b1e367c55f534a29de9eb31e1d6e7944d..1f36c16e274fbea2d3bf5a78e4ab427941646817 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 04132c0a9d6d2d09327b6e6cf2c826523015b4e4..2040e2cab2822b72dea7af103261c1149fe319b3 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 702169a6100e9009429501913745e80f1245dcd3..98997c80516a47c8f1f62cbed2e0729f9e92f9c7 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 4405576f088e4ba5dcec99d8b823cebf4e74ecc2..cc8fdc45ea6e73a6e4e9210ae1469206dbdbcfe4 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 df20a66864149f1d91ed57264f0cc6f7b2e5cb2e..5209e75cbd4458b5b9a562a3744f2280f8a403b3 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() {