diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-05-26 11:47:39 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-05-26 12:26:55 +0000 |
commit | 90b6f7dcab2758b1f026af60a58982bc0cfaff22 (patch) | |
tree | c8339ebe8e405f7ea43d9e463eeedd49d57effc9 /uitest/src | |
parent | ac92875a94262e0801052a35b964213f5ee37148 (diff) | |
download | vaadin-framework-90b6f7dcab2758b1f026af60a58982bc0cfaff22.tar.gz vaadin-framework-90b6f7dcab2758b1f026af60a58982bc0cfaff22.zip |
Split AbstractGridExtension from AbstractRenderer (#18003)
Change-Id: Ibe5766cde606091ce2bd58055472fa7cf3f21374
Diffstat (limited to 'uitest/src')
3 files changed, 181 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridExtensionCommunication.java b/uitest/src/com/vaadin/tests/components/grid/GridExtensionCommunication.java new file mode 100644 index 0000000000..181c9cae8d --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/GridExtensionCommunication.java @@ -0,0 +1,69 @@ +/* + * Copyright 2000-2014 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.annotations.Widgetset; +import com.vaadin.data.Item; +import com.vaadin.server.VaadinRequest; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.tests.components.AbstractTestUIWithLog; +import com.vaadin.tests.widgetset.TestingWidgetSet; +import com.vaadin.tests.widgetset.client.grid.GridClickExtensionConnector.GridClickServerRpc; +import com.vaadin.ui.Grid; +import com.vaadin.ui.Grid.AbstractGridExtension; +import com.vaadin.ui.Grid.Column; +import com.vaadin.ui.Grid.SelectionMode; + +@Widgetset(TestingWidgetSet.NAME) +public class GridExtensionCommunication extends AbstractTestUIWithLog { + + public class GridClickExtension extends AbstractGridExtension { + + public GridClickExtension(Grid grid) { + super(grid); + registerRpc(new GridClickServerRpc() { + + @Override + public void click(String row, String column, + MouseEventDetails click) { + Object itemId = getItemId(row); + Column col = getColumn(column); + + Item person = getParentGrid().getContainerDataSource() + .getItem(itemId); + + log("Click on Person " + + person.getItemProperty("firstName").getValue() + + " " + + person.getItemProperty("lastName").getValue() + + " on column " + col.toString()); + log("MouseEventDetails: " + click.getButtonName() + " (" + + click.getClientX() + ", " + click.getClientY() + + ")"); + } + }); + } + } + + @Override + protected void setup(VaadinRequest request) { + Grid grid = new PersonTestGrid(50); + grid.setSelectionMode(SelectionMode.NONE); + new GridClickExtension(grid); + addComponent(grid); + } + +} diff --git a/uitest/src/com/vaadin/tests/components/grid/GridExtensionCommunicationTest.java b/uitest/src/com/vaadin/tests/components/grid/GridExtensionCommunicationTest.java new file mode 100644 index 0000000000..9fd35fe3e9 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/GridExtensionCommunicationTest.java @@ -0,0 +1,45 @@ +/* + * Copyright 2000-2014 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 static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import com.vaadin.testbench.elements.GridElement; +import com.vaadin.testbench.elements.GridElement.GridCellElement; +import com.vaadin.tests.tb3.SingleBrowserTest; + +public class GridExtensionCommunicationTest extends SingleBrowserTest { + + @Test + public void testMouseClickIsSentToExtension() { + openTestURL(); + + GridCellElement cell = $(GridElement.class).first().getCell(0, 4); + cell.click(5, 5); + + int expectedX = cell.getLocation().getX() + 5; + int expectedY = cell.getLocation().getY() + 5; + + assertEquals( + "1. Click on Person Nina Brown on column Column[propertyId:gender]", + getLogRow(1)); + assertEquals("2. MouseEventDetails: left (" + expectedX + ", " + + expectedY + ")", getLogRow(0)); + + } +} diff --git a/uitest/src/com/vaadin/tests/widgetset/client/grid/GridClickExtensionConnector.java b/uitest/src/com/vaadin/tests/widgetset/client/grid/GridClickExtensionConnector.java new file mode 100644 index 0000000000..64020683f6 --- /dev/null +++ b/uitest/src/com/vaadin/tests/widgetset/client/grid/GridClickExtensionConnector.java @@ -0,0 +1,67 @@ +/* + * Copyright 2000-2014 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.widgetset.client.grid; + +import com.vaadin.client.MouseEventDetailsBuilder; +import com.vaadin.client.ServerConnector; +import com.vaadin.client.connectors.GridConnector; +import com.vaadin.client.extensions.AbstractExtensionConnector; +import com.vaadin.client.widget.grid.CellReference; +import com.vaadin.client.widget.grid.events.BodyClickHandler; +import com.vaadin.client.widget.grid.events.GridClickEvent; +import com.vaadin.client.widgets.Grid; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.communication.ServerRpc; +import com.vaadin.shared.ui.Connect; +import com.vaadin.tests.components.grid.GridExtensionCommunication.GridClickExtension; + +import elemental.json.JsonObject; + +@Connect(GridClickExtension.class) +public class GridClickExtensionConnector extends AbstractExtensionConnector { + public interface GridClickServerRpc extends ServerRpc { + + public void click(String row, String column, MouseEventDetails click); + } + + @Override + protected void extend(ServerConnector target) { + Grid<JsonObject> grid = getParent().getWidget(); + grid.addBodyClickHandler(new BodyClickHandler() { + + @Override + public void onClick(GridClickEvent event) { + CellReference<?> cellRef = event.getTargetCell(); + + // Gather needed information. + String rowKey = getParent().getRowKey( + (JsonObject) cellRef.getRow()); + String columnId = getParent().getColumnId(cellRef.getColumn()); + MouseEventDetails clickDetails = MouseEventDetailsBuilder + .buildMouseEventDetails(event.getNativeEvent()); + + getRpcProxy(GridClickServerRpc.class).click(rowKey, columnId, + clickDetails); + } + }); + } + + @Override + public GridConnector getParent() { + return (GridConnector) super.getParent(); + } + +} |