summaryrefslogtreecommitdiffstats
path: root/uitest/src
diff options
context:
space:
mode:
authorDmitrii Rogozin <dmitrii@vaadin.com>2014-05-22 14:04:48 +0300
committerVaadin Code Review <review@vaadin.com>2014-06-11 11:17:29 +0000
commit3e5c5bc10752ae011ee74c82530452ba26521833 (patch)
treeee9bdad7558822525b853c331c6091e98e6e30a2 /uitest/src
parentede8fbaad050c98682df9da935caf59a3a3787c6 (diff)
downloadvaadin-framework-3e5c5bc10752ae011ee74c82530452ba26521833.tar.gz
vaadin-framework-3e5c5bc10752ae011ee74c82530452ba26521833.zip
Removes double spacing from gridLayout which has empty rows or columns (#8855)
If row has no elements or only invisible elements, its size will be set to zero. When row expand ratio was set, its size will be assigned to the value according to an expand ratio. If component takes several rows of the gridLayout, these rows are considered as non-empty and won't be removed. Change-Id: I10ddd22a6c9535b9978769bab7b496e11a28b78a
Diffstat (limited to 'uitest/src')
-rw-r--r--uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExpandRatio.java108
-rw-r--r--uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExpandRatioTest.java53
-rw-r--r--uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutHideMiddleCells.java146
-rw-r--r--uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutHideMiddleCellsTest.java57
4 files changed, 364 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExpandRatio.java b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExpandRatio.java
new file mode 100644
index 0000000000..c20148743a
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExpandRatio.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2000-2013 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.gridlayout;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+
+public class GridLayoutExpandRatio extends AbstractTestUI {
+ HorizontalLayout layout;
+ GridLayout gridLayout;
+ GridLayout gridLayout2;
+ private static final int ROWS = 5;
+ private static final int COLS = 5;
+ private Label[][] labels;
+
+ @Override
+ protected void setup(VaadinRequest request) {
+
+ labels = new Label[ROWS][COLS];
+ layout = new HorizontalLayout();
+ gridLayout = new GridLayout(ROWS, COLS);
+ layout.setImmediate(true);
+ gridLayout.setImmediate(true);
+ gridLayout2 = new GridLayout(4, 4);
+ for (int i = 0; i < ROWS; i++) {
+ for (int j = 0; j < COLS; j++) {
+ Label label = new Label("Slot " + i + " " + j);
+ label.setImmediate(true);
+ labels[i][j] = label;
+ gridLayout.addComponent(label, j, i);
+ if (!(i == 2 || j == 2)) {
+ Label label2 = new Label("Slot " + i + " " + j);
+ gridLayout2.addComponent(label2);
+ }
+ }
+ }
+ gridLayout.setHeight("500px");
+ gridLayout.setWidth("500px");
+ gridLayout.setSpacing(true);
+
+ gridLayout2.setHeight("500px");
+ gridLayout2.setWidth("500px");
+ gridLayout2.setSpacing(true);
+ addComponent(layout);
+ HorizontalLayout space = new HorizontalLayout();
+ space.setWidth("100px");
+ layout.addComponent(gridLayout);
+ layout.addComponent(space);
+ layout.addComponent(gridLayout2);
+
+ setExpandRatio();
+ addComponent(new Button("Hide/show both middle Column and row",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ hideComponetns();
+ }
+ }));
+ }
+
+ private void hideComponetns() {
+ for (int i = 0; i < ROWS; i++) {
+ for (int j = 0; j < COLS; j++) {
+ if (i == 2 || j == 2) {
+ if (labels[i][j].isVisible()) {
+ labels[i][j].setVisible(false);
+ } else {
+ labels[i][j].setVisible(true);
+ }
+ }
+ }
+ }
+ }
+
+ private void setExpandRatio() {
+ gridLayout.setRowExpandRatio(2, 5);
+ gridLayout2.setRowExpandRatio(1, 5);
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 8855;
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "If row/column doesn't have elements but have an expand ratio set, it should be shown as a empty row/column";
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExpandRatioTest.java b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExpandRatioTest.java
new file mode 100644
index 0000000000..7d5ad1fbc4
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExpandRatioTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2000-2013 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.gridlayout;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.GridLayoutElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class GridLayoutExpandRatioTest extends MultiBrowserTest {
+ @Test
+ public void gridLayoutExpandRatioTest() {
+ openTestURL();
+ GridLayoutElement gridLayout5x5 = $(GridLayoutElement.class).get(0);
+ GridLayoutElement gridLayout4x4 = $(GridLayoutElement.class).get(1);
+ ButtonElement hidingButton = $(ButtonElement.class).get(0);
+ hidingButton.click();
+ List<WebElement> slots5x5 = gridLayout5x5.findElements(By
+ .className("v-gridlayout-slot"));
+ List<WebElement> slots4x4 = gridLayout4x4.findElements(By
+ .className("v-gridlayout-slot"));
+ assertEquals("Different amount of slots", slots5x5.size(),
+ slots4x4.size());
+ for (int i = 0; i < slots5x5.size(); i++) {
+ WebElement compared = slots5x5.get(i);
+ WebElement actual = slots4x4.get(i);
+ assertEquals("Different top coordinate for element " + i,
+ compared.getCssValue("top"), actual.getCssValue("top"));
+ assertEquals("Different left coordinate for element " + i,
+ compared.getCssValue("left"), actual.getCssValue("left"));
+ }
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutHideMiddleCells.java b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutHideMiddleCells.java
new file mode 100644
index 0000000000..16b3742c64
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutHideMiddleCells.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2000-2013 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.gridlayout;
+
+import java.util.Random;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.VerticalLayout;
+
+public class GridLayoutHideMiddleCells extends AbstractTestUI {
+ GridLayout gridLayout;
+ GridLayout gridLayout2;
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ final int ROWS = 5;
+ final int COLS = 5;
+
+ final Label[][] labels = new Label[ROWS][COLS];
+ VerticalLayout mainLayout = new VerticalLayout();
+ HorizontalLayout horLayout = new HorizontalLayout();
+ gridLayout = new GridLayout(ROWS, COLS);
+ gridLayout2 = new GridLayout(4, 4);
+ for (int i = 0; i < 5; i++) {
+ for (int j = 0; j < 5; j++) {
+ Label label = new Label("Slot " + i + " " + j);
+ labels[i][j] = label;
+ gridLayout.addComponent(label);
+ if (!(i == 2 || j == 2)) {
+ Label label2 = new Label("Slot " + i + " " + j);
+ gridLayout2.addComponent(label2);
+ }
+ }
+ }
+ setContent(mainLayout);
+ gridLayout.setHeight("500px");
+ gridLayout.setWidth("500px");
+ gridLayout.setSpacing(true);
+
+ addComponent(gridLayout);
+ addComponent(gridLayout2);
+ mainLayout.addComponent(horLayout);
+ gridLayout2.setHeight("500px");
+ gridLayout2.setWidth("500px");
+ gridLayout2.setSpacing(true);
+ horLayout.addComponent(gridLayout);
+ horLayout.addComponent(gridLayout2);
+
+ mainLayout.addComponent(new Button(
+ "Hide/show both middle Column and row",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ for (int i = 0; i < ROWS; i++) {
+ for (int j = 0; j < COLS; j++) {
+ if (j == 2 || i == 2) {
+ if (labels[i][j].isVisible()) {
+ labels[i][j].setVisible(false);
+ } else {
+ labels[i][j].setVisible(true);
+ }
+ }
+ }
+ }
+ }
+ }));
+ mainLayout.addComponent(new Button("Hide/show middle Column",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ for (int i = 0; i < ROWS; i++) {
+ if (labels[i][2].isVisible()) {
+ labels[i][2].setVisible(false);
+ } else {
+ labels[i][2].setVisible(true);
+ }
+ }
+ }
+ }));
+ mainLayout.addComponent(new Button("Hide/show middle Row",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ for (int j = 0; j < COLS; j++) {
+ if (labels[2][j].isVisible()) {
+ labels[2][j].setVisible(false);
+ } else {
+ labels[2][j].setVisible(true);
+ }
+ }
+ }
+
+ }));
+ mainLayout.addComponent(new Button("Hide Random button",
+ new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ // TODO Auto-generated method stub
+ Random rand = new Random();
+ int i = rand.nextInt(ROWS);
+ int j = rand.nextInt(COLS);
+ if (labels[i][j].isVisible()) {
+ labels[i][j].setVisible(false);
+ } else {
+ labels[i][j].setVisible(true);
+ }
+ }
+ }));
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 8855;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription()
+ */
+ @Override
+ protected String getTestDescription() {
+ return "Changing the number of visible fields a GridLayout with spacing should not cause additional empty space on the place of invisible fields";
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutHideMiddleCellsTest.java b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutHideMiddleCellsTest.java
new file mode 100644
index 0000000000..d0225275f7
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutHideMiddleCellsTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2000-2013 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.gridlayout;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.GridLayoutElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class GridLayoutHideMiddleCellsTest extends MultiBrowserTest {
+ @Test
+ public void gridLayoutInvisibleElementsTest() {
+ openTestURL();
+ GridLayoutElement gridLayout5x5 = $(GridLayoutElement.class).get(0);
+ GridLayoutElement gridLayout4x4 = $(GridLayoutElement.class).get(1);
+ ButtonElement hidingButton = $(ButtonElement.class).get(0);
+ hidingButton.click();
+ List<WebElement> slots5x5 = gridLayout5x5.findElements(By
+ .className("v-gridlayout-slot"));
+ List<WebElement> slots4x4 = gridLayout4x4.findElements(By
+ .className("v-gridlayout-slot"));
+ assertEquals("Different amount of slots", slots5x5.size(),
+ slots4x4.size());
+
+ for (int i = 0; i < slots5x5.size(); i++) {
+ assertEquals("Different left coordinate for element " + i, slots5x5
+ .get(i).getCssValue("left"),
+ slots4x4.get(i).getCssValue("left"));
+ }
+ for (int i = 0; i < slots5x5.size(); i++) {
+ assertEquals("Different top coordinate for element " + i, slots5x5
+ .get(i).getCssValue("top"),
+ slots4x4.get(i).getCssValue("top"));
+ }
+ }
+
+}