diff options
author | Pekka Hyvönen <pekka@vaadin.com> | 2016-11-11 09:41:43 +0200 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2016-11-29 10:18:11 +0000 |
commit | f2d8f812efa067b4baa7e27c0ea76f7596b291e6 (patch) | |
tree | 8e35e6c4eef4ffc5f8006d30989914da1deeab1b /uitest | |
parent | 13443562ccbd633ceb561bb87893014f65437ad1 (diff) | |
download | vaadin-framework-f2d8f812efa067b4baa7e27c0ea76f7596b291e6.tar.gz vaadin-framework-f2d8f812efa067b4baa7e27c0ea76f7596b291e6.zip |
Add MultiSelect support for Grid
Still missing following things coming in next patches:
- select all checkbox
- firing an event when data provider is changed in grid
- read only selection models for grid
Part 1 for vaadin/framework8-issues#232
Change-Id: Ib2c7c81a838f43cb7c521a56d50139c91961f54a
Diffstat (limited to 'uitest')
25 files changed, 469 insertions, 513 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridCustomSelectionModel.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridCustomSelectionModel.java new file mode 100644 index 0000000000..220f059f52 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridCustomSelectionModel.java @@ -0,0 +1,65 @@ +/* + * Copyright 2000-2016 Vaadin Ltd. + * + * 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 com.vaadin.tests.components.grid; + +import java.util.List; + +import com.vaadin.annotations.Widgetset; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.tests.components.grid.basics.DataObject; +import com.vaadin.tests.components.grid.basics.GridBasics; +import com.vaadin.tests.widgetset.TestingWidgetSet; +import com.vaadin.ui.Grid; +import com.vaadin.ui.components.grid.MultiSelectionModelImpl; + +@Widgetset(TestingWidgetSet.NAME) +public class GridCustomSelectionModel extends AbstractTestUI { + + public static class MySelectionModel + extends MultiSelectionModelImpl<DataObject> { + + public MySelectionModel(Grid<DataObject> grid) { + super(grid); + } + } + + private Grid<DataObject> grid; + private List<DataObject> data; + + @Override + protected void setup(VaadinRequest request) { + data = DataObject.generateObjects(); + + // Create grid + grid = new Grid<DataObject>() { + { + MySelectionModel model = new MySelectionModel(this); + setSelectionModel(model); + model.extend(this); + } + }; + grid.setItems(data); + grid.addColumn(dataObj -> "(" + dataObj.getRowNumber() + ", 0)") + .setCaption(GridBasics.COLUMN_CAPTIONS[0]); + grid.addColumn(dataObj -> "(" + dataObj.getRowNumber() + ", 1)") + .setCaption(GridBasics.COLUMN_CAPTIONS[1]); + grid.addColumn(dataObj -> "(" + dataObj.getRowNumber() + ", 2)") + .setCaption(GridBasics.COLUMN_CAPTIONS[2]); + addComponent(grid); + } + +} diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridDefaultSelectionMode.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridDefaultSelectionMode.java index 43ddb184d8..625f94d426 100644 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridDefaultSelectionMode.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridDefaultSelectionMode.java @@ -13,20 +13,19 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import java.util.ArrayList; import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.components.AbstractReindeerTestUI; +import com.vaadin.tests.components.AbstractTestUI; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; +import com.vaadin.ui.Grid; import com.vaadin.ui.VerticalLayout; -import com.vaadin.v7.data.util.BeanItemContainer; -import com.vaadin.v7.ui.Grid; -public class GridDefaultSelectionMode extends AbstractReindeerTestUI { +public class GridDefaultSelectionMode extends AbstractTestUI { @Override protected void setup(VaadinRequest request) { @@ -42,11 +41,11 @@ public class GridDefaultSelectionMode extends AbstractReindeerTestUI { items.add(person1); items.add(person2); - final BeanItemContainer<Person> container = new BeanItemContainer<>( - Person.class, items); - - final Grid grid = new Grid(); - grid.setContainerDataSource(container); + final Grid<Person> grid = new Grid<>(); + grid.setItems(items); + grid.addColumn(person -> person.getFirstName()) + .setCaption("First Name"); + grid.addColumn(person -> person.getLastName()).setCaption("Last Name"); VerticalLayout v = new VerticalLayout(); @@ -54,7 +53,7 @@ public class GridDefaultSelectionMode extends AbstractReindeerTestUI { @Override public void buttonClick(ClickEvent event) { - grid.select(null); + grid.getSelectionModel().deselectAll(); } })); @@ -62,7 +61,7 @@ public class GridDefaultSelectionMode extends AbstractReindeerTestUI { @Override public void buttonClick(ClickEvent event) { - grid.select(person1); + grid.getSelectionModel().select(person1); } })); v.addComponent(grid); diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridDisabledMultiselect.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridDisabledMultiselect.java index c58de99db7..46ac8ec260 100644 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridDisabledMultiselect.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridDisabledMultiselect.java @@ -1,24 +1,24 @@ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.Button; -import com.vaadin.v7.ui.Grid; +import com.vaadin.ui.Grid; +import com.vaadin.ui.components.grid.MultiSelectionModelImpl; public class GridDisabledMultiselect extends AbstractReindeerTestUI { @Override protected void setup(VaadinRequest request) { - final Grid grid = new Grid(); - grid.addColumn("foo", String.class); - grid.addRow("bar"); - grid.setSelectionMode(Grid.SelectionMode.SINGLE); + final Grid<String> grid = new Grid<>(); + grid.addColumn(string -> string); + grid.setItems("bar"); addComponent(grid); addButton("Multi", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { - grid.setSelectionMode(Grid.SelectionMode.MULTI); + grid.setSelectionModel(new MultiSelectionModelImpl<>(grid)); } }); diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridDragSelectionWhileScrolled.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridDragSelectionWhileScrolled.java new file mode 100644 index 0000000000..2875e18119 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridDragSelectionWhileScrolled.java @@ -0,0 +1,75 @@ +/* + * Copyright 2000-2016 Vaadin Ltd. + * + * 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 com.vaadin.tests.components.grid; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.tests.components.grid.basics.DataObject; +import com.vaadin.tests.components.grid.basics.GridBasics; +import com.vaadin.ui.Grid; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Layout; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.components.grid.MultiSelectionModelImpl; +import com.vaadin.ui.renderers.DateRenderer; +import com.vaadin.ui.renderers.HtmlRenderer; +import com.vaadin.ui.renderers.NumberRenderer; + +public class GridDragSelectionWhileScrolled extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + Layout layout = new VerticalLayout(); + + HorizontalLayout spacer = new HorizontalLayout(); + spacer.setHeight("1000px"); + layout.addComponent(spacer); + + Grid<DataObject> grid = new Grid<>(); + grid.setItems(DataObject.generateObjects()); + grid.addColumn(dataObj -> "(" + dataObj.getRowNumber() + ", 0)") + .setCaption(GridBasics.COLUMN_CAPTIONS[0]); + grid.addColumn(dataObj -> "(" + dataObj.getRowNumber() + ", 1)") + .setCaption(GridBasics.COLUMN_CAPTIONS[1]); + grid.addColumn(dataObj -> "(" + dataObj.getRowNumber() + ", 2)") + .setCaption(GridBasics.COLUMN_CAPTIONS[2]); + + grid.addColumn(DataObject::getRowNumber, new NumberRenderer()) + .setCaption(GridBasics.COLUMN_CAPTIONS[3]); + grid.addColumn(DataObject::getDate, new DateRenderer()) + .setCaption(GridBasics.COLUMN_CAPTIONS[4]); + grid.addColumn(DataObject::getHtmlString, new HtmlRenderer()) + .setCaption(GridBasics.COLUMN_CAPTIONS[5]); + grid.addColumn(DataObject::getBigRandom, new NumberRenderer()) + .setCaption(GridBasics.COLUMN_CAPTIONS[6]); + + grid.setSelectionModel(new MultiSelectionModelImpl<>(grid)); + + layout.addComponent(grid); + + addComponent(layout); + } + + @Override + protected Integer getTicketNumber() { + return 17895; + } + + @Override + protected String getTestDescription() { + return "Drag selecting rows in Grid malfunctions if page is scrolled"; + } +} diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridCustomSelectionModel.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridMultiSelectionOnInit.java index 89029a36fe..2b1e78d323 100644 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridCustomSelectionModel.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridMultiSelectionOnInit.java @@ -13,25 +13,28 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; -import com.vaadin.annotations.Widgetset; import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.components.AbstractReindeerTestUI; -import com.vaadin.tests.widgetset.TestingWidgetSet; -import com.vaadin.v7.ui.Grid.MultiSelectionModel; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Grid; +import com.vaadin.ui.components.grid.MultiSelectionModelImpl; -@Widgetset(TestingWidgetSet.NAME) -public class GridCustomSelectionModel extends AbstractReindeerTestUI { - - public static class MySelectionModel extends MultiSelectionModel { - } +public class GridMultiSelectionOnInit extends AbstractTestUI { @Override protected void setup(VaadinRequest request) { - PersonTestGrid grid = new PersonTestGrid(500); - grid.setSelectionModel(new MySelectionModel()); + final Grid<String> grid = new Grid<>(); + grid.setItems("Foo 1", "Foo 2"); + grid.addColumn(item -> item); + grid.setSelectionModel(new MultiSelectionModelImpl<>(grid)); addComponent(grid); - } + addComponent(new Button("Select rows", + event -> grid.getSelectionModel().select("Foo 1"))); + if (request.getParameter("initialSelection") != null) { + grid.getSelectionModel().select("Foo 2"); + } + } } diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionScrollBar.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridMultiSelectionScrollBar.java index 3d89f32831..22fdf64e5c 100644 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionScrollBar.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridMultiSelectionScrollBar.java @@ -13,20 +13,20 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.components.AbstractReindeerTestUI; -import com.vaadin.v7.ui.Grid; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Grid; -public class GridMultiSelectionScrollBar extends AbstractReindeerTestUI { +public class GridMultiSelectionScrollBar extends AbstractTestUI { @Override protected void setup(VaadinRequest request) { - Grid grid = new Grid(); - grid.addColumn("X").setWidth(39.25d); - grid.addColumn("Hello"); - grid.addColumn("World"); + Grid<String> grid = new Grid<>(); + grid.addColumn(string -> "X:" + string).setWidth(39.25d); + grid.addColumn(string -> "Hello:" + string); + grid.addColumn(string -> "World:" + string); grid.setFrozenColumnCount(1); addComponent(grid); } diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/basics/DataObject.java b/uitest/src/main/java/com/vaadin/tests/components/grid/basics/DataObject.java index ff27268991..54dc8d74b2 100644 --- a/uitest/src/main/java/com/vaadin/tests/components/grid/basics/DataObject.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/basics/DataObject.java @@ -5,7 +5,7 @@ import java.util.Date; import java.util.List; import java.util.Random; -class DataObject { +public class DataObject { private static final int ROWS = 1000; @@ -69,7 +69,7 @@ class DataObject { return "DataObject[" + rowNumber + "]"; } - static List<DataObject> generateObjects() { + public static List<DataObject> generateObjects() { List<DataObject> data = new ArrayList<>(); { diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java b/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java index 8917ce0241..4f36eb6207 100644 --- a/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java @@ -9,6 +9,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.Optional; import java.util.function.Consumer; import java.util.stream.Stream; @@ -16,6 +17,8 @@ import com.vaadin.annotations.Theme; import com.vaadin.annotations.Widgetset; import com.vaadin.data.Binder; import com.vaadin.data.util.converter.StringToIntegerConverter; +import com.vaadin.event.selection.MultiSelectionEvent; +import com.vaadin.event.selection.SingleSelectionEvent; import com.vaadin.server.VaadinRequest; import com.vaadin.shared.Registration; import com.vaadin.shared.ui.grid.HeightMode; @@ -36,7 +39,8 @@ import com.vaadin.ui.Panel; import com.vaadin.ui.StyleGenerator; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; -import com.vaadin.ui.components.grid.SingleSelectionModel; +import com.vaadin.ui.components.grid.MultiSelectionModelImpl; +import com.vaadin.ui.components.grid.SingleSelectionModelImpl; import com.vaadin.ui.renderers.DateRenderer; import com.vaadin.ui.renderers.HtmlRenderer; import com.vaadin.ui.renderers.NumberRenderer; @@ -149,6 +153,8 @@ public class GridBasics extends AbstractTestUIWithLog { private List<DataObject> data; private int watchingCount = 0; private PersistingDetailsGenerator persistingDetails; + private List<Column<DataObject, ?>> initialColumnOrder; + private Registration selectionListenerRegistration; public GridBasics() { generators.put("NULL", null); @@ -215,15 +221,33 @@ public class GridBasics extends AbstractTestUIWithLog { new ProgressBarRenderer()).setCaption(COLUMN_CAPTIONS[7]) .setEditorComponent(smallRandom); - ((SingleSelectionModel<DataObject>) grid.getSelectionModel()) - .addSelectionChangeListener( - e -> log("Selected: " + e.getValue())); + selectionListenerRegistration = ((SingleSelectionModelImpl<DataObject>) grid + .getSelectionModel()) + .addSelectionListener(this::onSingleSelect); layout.addComponent(createMenu()); layout.addComponent(grid); addComponent(layout); } + private void onSingleSelect(SingleSelectionEvent<DataObject> event) { + log("SingleSelectionEvent: Selected: " + + (event.getSelectedItem().isPresent() + ? event.getSelectedItem().get().toString() : "none")); + } + + private void onMultiSelect(MultiSelectionEvent<DataObject> event) { + Optional<DataObject> firstAdded = event.getNewSelection().stream() + .findFirst(); + Optional<DataObject> firstRemoved = event.getOldSelection().stream() + .findFirst(); + String addedRow = firstAdded.isPresent() ? firstAdded.toString() + : "none"; + String removedRow = firstRemoved.isPresent() ? firstRemoved.toString() + : "none"; + log("SelectionEvent: Added " + addedRow + ", Removed " + removedRow); + } + private Component createMenu() { MenuBar menu = new MenuBar(); menu.setErrorHandler(error -> log("Exception occured, " @@ -388,6 +412,8 @@ public class GridBasics extends AbstractTestUIWithLog { e -> grid.setEnabled(e.isChecked())); enableItem.setCheckable(true); enableItem.setChecked(true); + + createSelectionMenu(stateMenu); } private void createRowStyleMenu(MenuItem rowStyleMenu) { @@ -449,6 +475,28 @@ public class GridBasics extends AbstractTestUIWithLog { grid.getSelectionModel().select(item); } }); + rowMenu.addItem("Deselect all", menuItem -> { + grid.getSelectionModel().deselectAll(); + }); + } + + private void createSelectionMenu(MenuItem stateItem) { + MenuItem selectionModelItem = stateItem.addItem("Selection model", + null); + selectionModelItem.addItem("single", menuItem -> { + selectionListenerRegistration.remove(); + grid.setSelectionModel(new SingleSelectionModelImpl<>(grid)); + selectionListenerRegistration = ((SingleSelectionModelImpl<DataObject>) grid + .getSelectionModel()) + .addSelectionListener(this::onSingleSelect); + }); + selectionModelItem.addItem("multi", menuItem -> { + selectionListenerRegistration.remove(); + grid.setSelectionModel(new MultiSelectionModelImpl<>(grid)); + selectionListenerRegistration = ((MultiSelectionModelImpl<DataObject>) grid + .getSelectionModel()) + .addSelectionListener(this::onMultiSelect); + }); } private void createHeaderMenu(MenuItem headerMenu) { diff --git a/uitest/src/main/java/com/vaadin/tests/widgetset/client/v7/grid/MySelectionModelConnector.java b/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/MySelectionModelConnector.java index b5b1e688eb..78851dd7ef 100644 --- a/uitest/src/main/java/com/vaadin/tests/widgetset/client/v7/grid/MySelectionModelConnector.java +++ b/uitest/src/main/java/com/vaadin/tests/widgetset/client/grid/MySelectionModelConnector.java @@ -13,28 +13,32 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.tests.widgetset.client.v7.grid; +package com.vaadin.tests.widgetset.client.grid; import com.vaadin.client.ServerConnector; +import com.vaadin.client.connectors.grid.MultiSelectionModelConnector; +import com.vaadin.client.renderers.Renderer; +import com.vaadin.client.widget.grid.selection.ClickSelectHandler; import com.vaadin.shared.ui.Connect; -import com.vaadin.v7.client.connectors.MultiSelectionModelConnector; -import com.vaadin.v7.client.renderers.ComplexRenderer; -import com.vaadin.v7.client.widget.grid.selection.ClickSelectHandler; -import com.vaadin.v7.client.widget.grid.selection.SelectionModel.Multi; -import com.vaadin.v7.client.widgets.Grid; -import com.vaadin.v7.tests.components.grid.GridCustomSelectionModel.MySelectionModel; import elemental.json.JsonObject; -@Connect(MySelectionModel.class) +@Connect(com.vaadin.tests.components.grid.GridCustomSelectionModel.MySelectionModel.class) public class MySelectionModelConnector extends MultiSelectionModelConnector { + protected class MyMultiSelectionModel extends MultiSelectionModel { + @Override + public Renderer<Boolean> getRenderer() { + return null; + } + } + private ClickSelectHandler<JsonObject> handler; @Override protected void extend(ServerConnector target) { - super.extend(target); handler = new ClickSelectHandler<>(getGrid()); + getGrid().setSelectionModel(new MyMultiSelectionModel()); } @Override @@ -44,18 +48,4 @@ public class MySelectionModelConnector extends MultiSelectionModelConnector { handler = null; } - @Override - protected Multi<JsonObject> createSelectionModel() { - return new MySelectionModel(); - } - - public class MySelectionModel extends MultiSelectionModel { - - @Override - protected ComplexRenderer<Boolean> createSelectionColumnRenderer( - Grid<JsonObject> grid) { - // No Selection Column. - return null; - } - } } diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridDragSelectionWhileScrolled.java b/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridDragSelectionWhileScrolled.java deleted file mode 100644 index 33da0feb9d..0000000000 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridDragSelectionWhileScrolled.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2000-2016 Vaadin Ltd. - * - * 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 com.vaadin.v7.tests.components.grid; - -import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.components.AbstractReindeerTestUI; -import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Layout; -import com.vaadin.ui.VerticalLayout; -import com.vaadin.v7.ui.Grid.SelectionMode; - -public class GridDragSelectionWhileScrolled extends AbstractReindeerTestUI { - - @Override - protected void setup(VaadinRequest request) { - Layout layout = new VerticalLayout(); - - HorizontalLayout spacer = new HorizontalLayout(); - spacer.setHeight("1000px"); - layout.addComponent(spacer); - - PersonTestGrid grid = new PersonTestGrid(100); - grid.setSelectionMode(SelectionMode.MULTI); - layout.addComponent(grid); - - addComponent(layout); - } - - @Override - protected Integer getTicketNumber() { - return 17895; - } - - @Override - protected String getTestDescription() { - return "Drag selecting rows in Grid malfunctions if page is scrolled"; - } -} diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionOnInit.java b/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionOnInit.java deleted file mode 100644 index 8f6022846d..0000000000 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionOnInit.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2000-2016 Vaadin Ltd. - * - * 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 com.vaadin.v7.tests.components.grid; - -import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.components.AbstractReindeerTestUI; -import com.vaadin.ui.Button; -import com.vaadin.ui.Button.ClickEvent; -import com.vaadin.v7.ui.Grid; -import com.vaadin.v7.ui.Grid.MultiSelectionModel; -import com.vaadin.v7.ui.Grid.SelectionMode; - -public class GridMultiSelectionOnInit extends AbstractReindeerTestUI { - - @Override - protected void setup(VaadinRequest request) { - final Grid grid = new Grid(); - grid.addColumn("foo", String.class); - grid.addRow("Foo 1"); - grid.addRow("Foo 2"); - grid.setSelectionMode(SelectionMode.MULTI); - addComponent(grid); - - addComponent(new Button("Select rows", new Button.ClickListener() { - - @Override - public void buttonClick(ClickEvent event) { - ((MultiSelectionModel) grid.getSelectionModel()).setSelected( - grid.getContainerDataSource().getItemIds()); - } - })); - } -} diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridSelectAllCell.java b/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridSelectAllCell.java deleted file mode 100644 index 98913f037b..0000000000 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridSelectAllCell.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.vaadin.v7.tests.components.grid; - -import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.components.AbstractTestUI; -import com.vaadin.v7.ui.Grid; - -public class GridSelectAllCell extends AbstractTestUI { - @Override - protected void setup(VaadinRequest request) { - Grid grid = new Grid(); - - grid.addColumn("foo", String.class); - grid.addRow("bar"); - - grid.setSelectionMode(Grid.SelectionMode.MULTI); - - addComponent(grid); - } -} diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/SelectDuringInit.java b/uitest/src/main/java/com/vaadin/v7/tests/components/grid/SelectDuringInit.java deleted file mode 100644 index c32f52a627..0000000000 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/SelectDuringInit.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2000-2016 Vaadin Ltd. - * - * 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 com.vaadin.v7.tests.components.grid; - -import com.vaadin.server.VaadinRequest; -import com.vaadin.tests.components.AbstractReindeerTestUI; -import com.vaadin.v7.ui.Grid; -import com.vaadin.v7.ui.Grid.SelectionMode; - -public class SelectDuringInit extends AbstractReindeerTestUI { - - @Override - protected void setup(VaadinRequest request) { - Grid grid = new Grid(); - grid.setSelectionMode(SelectionMode.MULTI); - - grid.addColumn("value"); - grid.addRow("row 1"); - grid.addRow("row 2"); - grid.addRow("row 3"); - - grid.select(Integer.valueOf(2)); - - addComponent(grid); - } - -} diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridCustomSelectionModelTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridCustomSelectionModelTest.java index 31c90c401d..d6a4c0b33c 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridCustomSelectionModelTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridCustomSelectionModelTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -22,10 +22,10 @@ import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.Keys; +import com.vaadin.testbench.customelements.GridElement; import com.vaadin.testbench.elements.GridElement.GridCellElement; import com.vaadin.testbench.parallel.TestCategory; import com.vaadin.tests.tb3.MultiBrowserTest; -import com.vaadin.testbench.customelements.GridElement; @TestCategory("grid") public class GridCustomSelectionModelTest extends MultiBrowserTest { @@ -38,7 +38,7 @@ public class GridCustomSelectionModelTest extends MultiBrowserTest { GridElement grid = $(GridElement.class).first(); GridCellElement cell = grid.getCell(0, 0); assertTrue("First column of Grid should not have an input element", - cell.findElements(By.className("input")).isEmpty()); + cell.findElements(By.tagName("input")).isEmpty()); assertFalse("Row should not be selected initially", grid.getRow(0).isSelected()); diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridDefaultSelectionModeTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridDefaultSelectionModeTest.java index 01d8e890f3..3dbe8b5426 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridDefaultSelectionModeTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridDefaultSelectionModeTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridDisabledMultiselectTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridDisabledMultiselectTest.java index d822051992..8bc58450c8 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridDisabledMultiselectTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridDisabledMultiselectTest.java @@ -1,4 +1,4 @@ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @@ -39,7 +39,7 @@ public class GridDisabledMultiselectTest extends MultiBrowserTest { } private WebElement getFirstSelectCheckBox() { - return findCheckBoxes().get(1); + return findCheckBoxes().get(0); } @Test @@ -48,20 +48,22 @@ public class GridDisabledMultiselectTest extends MultiBrowserTest { setMultiselect(); - assertThat(getSelectAllCheckBox().isEnabled(), is(false)); + // TODO enable once select all is added back + // assertThat(getSelectAllCheckBox().isEnabled(), is(false)); assertThat(getFirstSelectCheckBox().isEnabled(), is(false)); } @Test public void checkBoxesAreDisabledAfterDisabled() { setMultiselect(); - - assertThat(getSelectAllCheckBox().isEnabled(), is(true)); + // TODO enable once select all is added back + // assertThat(getSelectAllCheckBox().isEnabled(), is(true)); assertThat(getFirstSelectCheckBox().isEnabled(), is(true)); disable(); - assertThat(getSelectAllCheckBox().isEnabled(), is(false)); + // TODO enable once select all is added back + // assertThat(getSelectAllCheckBox().isEnabled(), is(false)); assertThat(getFirstSelectCheckBox().isEnabled(), is(false)); } diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridDragSelectionWhileScrolledTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridDragSelectionWhileScrolledTest.java index af5d77adce..5690263336 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridDragSelectionWhileScrolledTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridDragSelectionWhileScrolledTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -24,11 +24,9 @@ import org.junit.Test; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.interactions.Actions; -import com.vaadin.testbench.parallel.TestCategory; -import com.vaadin.tests.tb3.MultiBrowserTest; import com.vaadin.testbench.customelements.GridElement; +import com.vaadin.tests.tb3.MultiBrowserTest; -@TestCategory("grid") public class GridDragSelectionWhileScrolledTest extends MultiBrowserTest { @Override diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionOnInitTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridMultiSelectionOnInitTest.java index 79f6aecb02..6abcb71e8c 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionOnInitTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridMultiSelectionOnInitTest.java @@ -13,23 +13,30 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.io.IOException; + import org.junit.Test; import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import com.vaadin.testbench.customelements.GridElement; import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.testbench.parallel.TestCategory; import com.vaadin.tests.tb3.MultiBrowserTest; -import com.vaadin.testbench.customelements.GridElement; @TestCategory("grid") public class GridMultiSelectionOnInitTest extends MultiBrowserTest { - @Test + // TODO enable when select all is added back + // @Test public void testSelectAllCheckBoxExists() { openTestURL(); assertTrue("The select all checkbox was missing.", @@ -37,6 +44,20 @@ public class GridMultiSelectionOnInitTest extends MultiBrowserTest { .isElementPresent(By.tagName("input"))); } + // TODO enable when select all is added back + // @Test + public void selectAllCellCanBeClicked() throws IOException { + GridElement.GridCellElement selectAllCell = $(GridElement.class).first() + .getHeaderCell(0, 0); + + new Actions(getDriver()).moveToElement(selectAllCell, 2, 2).click() + .perform(); + + WebElement selectAllCheckbox = selectAllCell + .findElement(By.cssSelector("input")); + assertThat(selectAllCheckbox.isSelected(), is(true)); + } + @Test public void testSetSelectedUpdatesClient() { openTestURL(); @@ -46,4 +67,13 @@ public class GridMultiSelectionOnInitTest extends MultiBrowserTest { assertTrue("Rows should be selected after button click.", $(GridElement.class).first().getRow(0).isSelected()); } + + @Test + public void testInitialSelection() { + openTestURL("initialSelection=yes"); + + assertTrue("Initial selection should be visible", + $(GridElement.class).first().getRow(1).isSelected()); + } + } diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionScrollBarTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridMultiSelectionScrollBarTest.java index eff1a69b3c..4363737746 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridMultiSelectionScrollBarTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridMultiSelectionScrollBarTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.v7.tests.components.grid; +package com.vaadin.tests.components.grid; import static org.junit.Assert.assertTrue; diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectAllTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectAllTest.java new file mode 100644 index 0000000000..26fdeedd7b --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectAllTest.java @@ -0,0 +1,108 @@ +package com.vaadin.tests.components.grid; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.openqa.selenium.WebElement; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.elements.GridElement.GridCellElement; +import com.vaadin.tests.components.grid.basics.GridBasicsTest; + +public class GridSelectAllTest extends GridBasicsTest { + + // TODO remove once select all is added + @Test + public void testSelectAllCheckBoxNotVisble() { + setSelectionModelMulti(); + GridCellElement header = getGridElement().getHeaderCell(0, 0); + + assertFalse("Checkbox visible", + header.isElementPresent(By.tagName("input"))); + } + + // TODO enable once select all is added + // @Test + public void testSelectAllCheckbox() { + setSelectionModelMulti(); + GridCellElement header = getGridElement().getHeaderCell(0, 0); + + assertTrue("No checkbox", header.isElementPresent(By.tagName("input"))); + header.findElement(By.tagName("input")).click(); + + for (int i = 0; i < GridBasicsTest.ROWS; i += 100) { + assertTrue("Row " + i + " was not selected.", + getGridElement().getRow(i).isSelected()); + } + + header.findElement(By.tagName("input")).click(); + assertFalse("Row 100 was still selected", + getGridElement().getRow(100).isSelected()); + } + + // TODO enable once select all is added + // @Test + public void testSelectAllAndSort() { + setSelectionModelMulti(); + GridCellElement header = getGridElement().getHeaderCell(0, 0); + + header.findElement(By.tagName("input")).click(); + + getGridElement().getHeaderCell(0, 1).click(); + + WebElement selectionBox = getGridElement().getCell(4, 0) + .findElement(By.tagName("input")); + selectionBox.click(); + selectionBox.click(); + + assertFalse("Exception occured on row reselection.", logContainsText( + "Exception occured, java.lang.IllegalStateException: No item id for key 101 found.")); + } + + // TODO enable once select all is added + // @Test + public void testSelectAllCheckboxWhenChangingModels() { + GridCellElement header; + header = getGridElement().getHeaderCell(0, 0); + assertFalse( + "Check box shouldn't have been in header for None Selection Model", + header.isElementPresent(By.tagName("input"))); + + setSelectionModelMulti(); + header = getGridElement().getHeaderCell(0, 0); + assertTrue("Multi Selection Model should have select all checkbox", + header.isElementPresent(By.tagName("input"))); + + setSelectionModelSingle(); + header = getGridElement().getHeaderCell(0, 0); + assertFalse( + "Check box shouldn't have been in header for Single Selection Model", + header.isElementPresent(By.tagName("input"))); + + // Single selection model shouldn't have selection column to begin with + assertFalse( + "Selection columnn shouldn't have been in grid for Single Selection Model", + getGridElement().getCell(0, 1) + .isElementPresent(By.tagName("input"))); + + setSelectionModelSingle(); + header = getGridElement().getHeaderCell(0, 0); + assertFalse( + "Check box shouldn't have been in header for None Selection Model", + header.isElementPresent(By.tagName("input"))); + } + + // TODO enable once select all is added + // @Test + public void testSelectAllCheckboxWithHeaderOperations() { + setSelectionModelMulti(); + selectMenuPath("Component", "Header", "Prepend row"); + selectMenuPath("Component", "Header", "Append row"); + + GridCellElement header = getGridElement().getHeaderCell(1, 0); + assertTrue("Multi Selection Model should have select all checkbox", + header.isElementPresent(By.tagName("input"))); + } + +} diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/basicfeatures/server/GridSelectionTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectionTest.java index 1bb989be1d..f7bd514e7b 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/basicfeatures/server/GridSelectionTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridSelectionTest.java @@ -1,19 +1,4 @@ -/* - * Copyright 2000-2016 Vaadin Ltd. - * - * 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 com.vaadin.v7.tests.components.grid.basicfeatures.server; +package com.vaadin.tests.components.grid; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -29,11 +14,9 @@ import com.vaadin.testbench.By; import com.vaadin.testbench.customelements.GridElement; import com.vaadin.testbench.elements.GridElement.GridCellElement; import com.vaadin.testbench.elements.GridElement.GridRowElement; -import com.vaadin.v7.tests.components.grid.basicfeatures.GridBasicFeatures; -import com.vaadin.v7.tests.components.grid.basicfeatures.GridBasicFeaturesTest; - -public class GridSelectionTest extends GridBasicFeaturesTest { +import com.vaadin.tests.components.grid.basics.GridBasicsTest; +public class GridSelectionTest extends GridBasicsTest { @Test public void testSelectOnOff() throws Exception { openTestURL(); @@ -95,11 +78,12 @@ public class GridSelectionTest extends GridBasicFeaturesTest { assertFalse("row shouldn't start out as selected", getRow(0).isSelected()); - scrollGridVerticallyTo(10000); // make sure the row is out of cache toggleFirstRowSelection(); + assertTrue("row should be selected", getRow(0).isSelected()); + scrollGridVerticallyTo(10000); // make sure the row is out of cache toggleFirstRowSelection(); - scrollGridVerticallyTo(0); // make sure the row is out of cache + scrollGridVerticallyTo(0); assertFalse( "row shouldn't be selected when scrolling " + "back into view", getRow(0).isSelected()); @@ -115,35 +99,36 @@ public class GridSelectionTest extends GridBasicFeaturesTest { grid.getRow(0).isSelected()); toggleFirstRowSelection(); assertTrue("First row was not selected.", getRow(0).isSelected()); - assertTrue("Selection event was not correct", - logContainsText("Added 0, Removed none")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[0]")); grid.getCell(5, 0).click(); assertTrue("Fifth row was not selected.", getRow(5).isSelected()); assertFalse("First row was still selected.", getRow(0).isSelected()); - assertTrue("Selection event was not correct", - logContainsText("Added 5, Removed 0")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[5]")); grid.getCell(0, 6).click(); - assertTrue("Selection event was not correct", - logContainsText("Added 0, Removed 5")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[0]")); toggleFirstRowSelection(); assertTrue("Selection event was not correct", - logContainsText("Added none, Removed 0")); + logContainsText("SingleSelectionEvent: Selected: none")); assertFalse("First row was still selected.", getRow(0).isSelected()); assertFalse("Fifth row was still selected.", getRow(5).isSelected()); grid.scrollToRow(600); - grid.getCell(595, 3).click(); + grid.getCell(595, 4).click(); assertTrue("Row 595 was not selected.", getRow(595).isSelected()); - assertTrue("Selection event was not correct", - logContainsText("Added 595, Removed none")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[595]")); toggleFirstRowSelection(); assertFalse("Row 595 was still selected.", getRow(595).isSelected()); assertTrue("First row was not selected.", getRow(0).isSelected()); - assertTrue("Selection event was not correct", - logContainsText("Added 0, Removed 595")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[0]")); } - @Test + // TODO enable once select with space key is added + // @Test public void testKeyboardSelection() { openTestURL(); setSelectionModelMulti(); @@ -168,7 +153,8 @@ public class GridSelectionTest extends GridBasicFeaturesTest { grid.getRow(3).isSelected()); } - @Test + // TODO enable once select with space key is added + // @Test public void testKeyboardWithSingleSelection() { openTestURL(); setSelectionModelSingle(); @@ -198,140 +184,16 @@ public class GridSelectionTest extends GridBasicFeaturesTest { } @Test - public void testSelectAllCheckbox() { - openTestURL(); - - setSelectionModelMulti(); - GridCellElement header = getGridElement().getHeaderCell(0, 0); - - assertTrue("No checkbox", header.isElementPresent(By.tagName("input"))); - header.findElement(By.tagName("input")).click(); - - for (int i = 0; i < GridBasicFeatures.ROWS; i += 100) { - assertTrue("Row " + i + " was not selected.", - getGridElement().getRow(i).isSelected()); - } - - header.findElement(By.tagName("input")).click(); - assertFalse("Row 100 was still selected", - getGridElement().getRow(100).isSelected()); - } - - @Test - public void testSelectAllAndSort() { - openTestURL(); - - setSelectionModelMulti(); - GridCellElement header = getGridElement().getHeaderCell(0, 0); - - header.findElement(By.tagName("input")).click(); - - getGridElement().getHeaderCell(0, 1).click(); - - WebElement selectionBox = getGridElement().getCell(4, 0) - .findElement(By.tagName("input")); - selectionBox.click(); - selectionBox.click(); - - assertFalse("Exception occured on row reselection.", logContainsText( - "Exception occured, java.lang.IllegalStateException: No item id for key 101 found.")); - } - - @Test - public void testSelectAllCheckboxWhenChangingModels() { - openTestURL(); - - GridCellElement header; - header = getGridElement().getHeaderCell(0, 0); - assertFalse( - "Check box shouldn't have been in header for None Selection Model", - header.isElementPresent(By.tagName("input"))); - - setSelectionModelMulti(); - header = getGridElement().getHeaderCell(0, 0); - assertTrue("Multi Selection Model should have select all checkbox", - header.isElementPresent(By.tagName("input"))); - - setSelectionModelSingle(); - header = getGridElement().getHeaderCell(0, 0); - assertFalse( - "Check box shouldn't have been in header for Single Selection Model", - header.isElementPresent(By.tagName("input"))); - - // Single selection model shouldn't have selection column to begin with - assertFalse( - "Selection columnn shouldn't have been in grid for Single Selection Model", - getGridElement().getCell(0, 1) - .isElementPresent(By.tagName("input"))); - - setSelectionModelNone(); - header = getGridElement().getHeaderCell(0, 0); - assertFalse( - "Check box shouldn't have been in header for None Selection Model", - header.isElementPresent(By.tagName("input"))); - - } - - @Test - public void testSelectAllCheckboxWithHeaderOperations() { - openTestURL(); - - setSelectionModelMulti(); - selectMenuPath("Component", "Header", "Prepend row"); - selectMenuPath("Component", "Header", "Append row"); - - GridCellElement header = getGridElement().getHeaderCell(1, 0); - assertTrue("Multi Selection Model should have select all checkbox", - header.isElementPresent(By.tagName("input"))); - - } - - @Test - public void testToggleDeselectAllowed() { - openTestURL(); - - setSelectionModelSingle(); - // Deselect allowed already enabled - - getGridElement().getCell(5, 1).click(); - getGridElement().getCell(5, 1).click(); - assertFalse("Row should be not selected after two clicks", - getRow(5).isSelected()); - - selectMenuPath("Component", "State", "Single select allow deselect"); - getGridElement().getCell(5, 1).click(); - getGridElement().getCell(5, 1).click(); - assertTrue("Row should be selected after two clicks", - getRow(5).isSelected()); - - selectMenuPath("Component", "State", "Single select allow deselect"); - getGridElement().getCell(5, 1).click(); - assertFalse("Row should be not selected after another click", - getRow(5).isSelected()); - - // Also verify that state is updated together with the model - setSelectionModelNone(); - selectMenuPath("Component", "State", "Single select allow deselect"); - setSelectionModelSingle(); - - getGridElement().getCell(5, 1).click(); - getGridElement().getCell(5, 1).click(); - - assertTrue("Row should stay selected after two clicks", - getRow(5).isSelected()); - } - - @Test public void testChangeSelectionModelUpdatesUI() { openTestURL(); - setSelectionModelSingle(); + setSelectionModelMulti(); getGridElement().getCell(5, 1).click(); assertTrue("Row should be selected after clicking", getRow(5).isSelected()); - setSelectionModelNone(); + setSelectionModelSingle(); assertFalse("Row should not be selected after changing selection model", getRow(5).isSelected()); } @@ -348,13 +210,16 @@ public class GridSelectionTest extends GridBasicFeaturesTest { .getAttribute("class") .contains("v-grid-selection-checkbox")); - GridCellElement header = getGridElement().getHeaderCell(0, 0); - assertTrue("Select all CheckBox should have the proper style name set", - header.findElement(By.tagName("span")).getAttribute("class") - .contains("v-grid-select-all-checkbox")); + // TODO enable once select all is added + // GridCellElement header = getGridElement().getHeaderCell(0, 0); + // assertTrue("Select all CheckBox should have the proper style name + // set", + // header.findElement(By.tagName("span")).getAttribute("class") + // .contains("v-grid-select-all-checkbox")); } - @Test + // TODO enable once select all is added + // @Test public void testServerSideSelectTogglesSelectAllCheckBox() { openTestURL(); @@ -388,7 +253,7 @@ public class GridSelectionTest extends GridBasicFeaturesTest { setSelectionModelSingle(); getGridElement().getCell(0, 0).click(); - selectMenuPath("Component", "Body rows", "Remove selected rows"); + selectMenuPath("Component", "Body rows", "Deselect all"); assertFalse( "Unexpected NullPointerException when removing selected rows", @@ -407,23 +272,12 @@ public class GridSelectionTest extends GridBasicFeaturesTest { }, 5); } - private void setSelectionModelMulti() { - selectMenuPath("Component", "State", "Selection mode", "multi"); - } - - private void setSelectionModelSingle() { - selectMenuPath("Component", "State", "Selection mode", "single"); - } - - private void setSelectionModelNone() { - selectMenuPath("Component", "State", "Selection mode", "none"); - } - private void toggleFirstRowSelection() { - selectMenuPath("Component", "Body rows", "Select first row"); + selectMenuPath("Component", "Body rows", "Toggle first row selection"); } private GridRowElement getRow(int i) { return getGridElement().getRow(i); } + } diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicSelectionTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicSelectionTest.java index 2c329ca01c..82de23a90b 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicSelectionTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicSelectionTest.java @@ -46,32 +46,32 @@ public class GridBasicSelectionTest extends GridBasicsTest { grid.getRow(0).isSelected()); toggleFirstRowSelection(); assertTrue("First row was not selected.", getRow(0).isSelected()); - assertTrue("Selection event was not correct", - logContainsText("Selected: DataObject[0]")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[0]")); grid.getCell(5, 0).click(); assertTrue("Fifth row was not selected.", getRow(5).isSelected()); assertFalse("First row was still selected.", getRow(0).isSelected()); - assertTrue("Selection event was not correct", - logContainsText("Selected: DataObject[5]")); - grid.getCell(0, 6).click(); - assertTrue("Selection event was not correct", - logContainsText("Selected: DataObject[0]")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[5]")); + grid.getCell(0, 3).click(); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[0]")); toggleFirstRowSelection(); assertTrue("Selection event was not correct", - logContainsText("Selected: null")); + logContainsText("SingleSelectionEvent: Selected: none")); assertFalse("First row was still selected.", getRow(0).isSelected()); assertFalse("Fifth row was still selected.", getRow(5).isSelected()); grid.scrollToRow(600); grid.getCell(595, 3).click(); assertTrue("Row 595 was not selected.", getRow(595).isSelected()); - assertTrue("Selection event was not correct", - logContainsText("Selected: DataObject[595]")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[595]")); toggleFirstRowSelection(); assertFalse("Row 595 was still selected.", getRow(595).isSelected()); assertTrue("First row was not selected.", getRow(0).isSelected()); - assertTrue("Selection event was not correct", - logContainsText("Selected: DataObject[0]")); + assertTrue("Selection event was not correct", logContainsText( + "SingleSelectionEvent: Selected: DataObject[0]")); } private void toggleFirstRowSelection() { diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicsTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicsTest.java index 55098eb768..ff6789f600 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicsTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicsTest.java @@ -26,6 +26,8 @@ import com.vaadin.v7.tests.components.grid.basicfeatures.GridBasicFeaturesTest.C */ public abstract class GridBasicsTest extends MultiBrowserTest { + public static final int ROWS = 1000; + /* Identical List of test data */ private List<DataObject> testData; @@ -131,7 +133,7 @@ public abstract class GridBasicsTest extends MultiBrowserTest { return 5; } else { int half = columnHeader.getSize().getWidth() / 2; - return half + (half / 2); + return half + half / 2; } } @@ -197,8 +199,7 @@ public abstract class GridBasicsTest extends MultiBrowserTest { List<WebElement> elements = sidebar .findElements(By.className("column-hiding-toggle")); for (WebElement e : elements) { - if ((e.getText().toLowerCase()) - .startsWith("column " + columnIndex)) { + if (e.getText().toLowerCase().startsWith("column " + columnIndex)) { return e; } } @@ -214,4 +215,17 @@ public abstract class GridBasicsTest extends MultiBrowserTest { getGridVerticalScrollbar())).intValue(); } + protected void setSelectionModelMulti() { + selectMenuPath("Component", "State", "Selection model", "multi"); + } + + protected void setSelectionModelSingle() { + selectMenuPath("Component", "State", "Selection model", "single"); + } + + // TODO enable once select all is added + // protected void setSelectionModelNone() { + // selectMenuPath("Component", "State", "Selection model", "none"); + // } + } diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridSelectAllCellTest.java b/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridSelectAllCellTest.java deleted file mode 100644 index 6b1feed7c1..0000000000 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridSelectAllCellTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.vaadin.v7.tests.components.grid; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; - -import java.io.IOException; - -import org.junit.Test; -import org.openqa.selenium.By; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.interactions.Actions; - -import com.vaadin.tests.tb3.MultiBrowserTest; -import com.vaadin.testbench.customelements.GridElement; - -public class GridSelectAllCellTest extends MultiBrowserTest { - - @Override - public void setup() throws Exception { - super.setup(); - - openTestURL(); - } - - @Test - public void selectAllCellCanBeClicked() throws IOException { - GridElement.GridCellElement selectAllCell = $(GridElement.class).first() - .getHeaderCell(0, 0); - - new Actions(getDriver()).moveToElement(selectAllCell, 2, 2).click() - .perform(); - - WebElement selectAllCheckbox = selectAllCell - .findElement(By.cssSelector("input")); - assertThat(selectAllCheckbox.isSelected(), is(true)); - } -} diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/SelectDuringInitTest.java b/uitest/src/test/java/com/vaadin/v7/tests/components/grid/SelectDuringInitTest.java deleted file mode 100644 index 052aae5a60..0000000000 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/SelectDuringInitTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2000-2016 Vaadin Ltd. - * - * 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 com.vaadin.v7.tests.components.grid; - -import org.junit.Assert; -import org.junit.Test; - -import com.vaadin.testbench.parallel.TestCategory; -import com.vaadin.tests.tb3.SingleBrowserTest; -import com.vaadin.testbench.customelements.GridElement; - -@TestCategory("grid") -public class SelectDuringInitTest extends SingleBrowserTest { - - @Test - public void testSelectDuringInit() { - openTestURL(); - - GridElement grid = $(GridElement.class).first(); - - Assert.assertTrue(grid.getRow(1).isSelected()); - } - -} |