From 3deceaa2c18bdf4978edb7978ba95c7c979863bf Mon Sep 17 00:00:00 2001 From: Teppo Kurki Date: Thu, 4 Jun 2015 23:06:01 +0300 Subject: [PATCH] Forget GridLayout column expand ratios when removing columns (#18068) Change-Id: I49e3e54a3e408a2c82ff5d2a0d51c037f60397c5 --- server/src/com/vaadin/ui/GridLayout.java | 9 +- .../vaadin/ui/GridLayoutExpandRatioTest.java | 82 +++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 server/tests/src/com/vaadin/ui/GridLayoutExpandRatioTest.java diff --git a/server/src/com/vaadin/ui/GridLayout.java b/server/src/com/vaadin/ui/GridLayout.java index 35110b39ab..e510fa09fb 100644 --- a/server/src/com/vaadin/ui/GridLayout.java +++ b/server/src/com/vaadin/ui/GridLayout.java @@ -782,7 +782,14 @@ public class GridLayout extends AbstractLayout implements } } } - // TODO forget expands for removed columns + + // Forget expands for removed columns + if (columns < getColumns()) { + for (int i = columns - 1; i < getColumns(); i++) { + columnExpandRatio.remove(i); + getState().explicitColRatios.remove(i); + } + } getState().columns = columns; } diff --git a/server/tests/src/com/vaadin/ui/GridLayoutExpandRatioTest.java b/server/tests/src/com/vaadin/ui/GridLayoutExpandRatioTest.java new file mode 100644 index 0000000000..685befaab4 --- /dev/null +++ b/server/tests/src/com/vaadin/ui/GridLayoutExpandRatioTest.java @@ -0,0 +1,82 @@ +/* + * 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.ui; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import com.vaadin.server.Sizeable.Unit; + +public class GridLayoutExpandRatioTest { + + private GridLayout gridLayout; + + @Test + public void testColExpandRatioIsForgotten() { + gridLayout = new GridLayout(4, 1); + gridLayout.setWidth(100, Unit.PERCENTAGE); + gridLayout.setSpacing(true); + + addComponents(true); + + gridLayout.setColumnExpandRatio(1, 1); + gridLayout.setColumnExpandRatio(3, 1); + + assertTrue(gridLayout.getColumnExpandRatio(0) == 0); + assertTrue(gridLayout.getColumnExpandRatio(1) == 1); + assertTrue(gridLayout.getColumnExpandRatio(2) == 0); + assertTrue(gridLayout.getColumnExpandRatio(3) == 1); + assertFalse(gridLayout.getState().explicitColRatios.contains(0)); + assertTrue(gridLayout.getState().explicitColRatios.contains(1)); + assertFalse(gridLayout.getState().explicitColRatios.contains(2)); + assertTrue(gridLayout.getState().explicitColRatios.contains(3)); + + remove(); + + assertTrue(gridLayout.getColumnExpandRatio(0) == 0); + assertTrue(gridLayout.getColumnExpandRatio(1) == 1); + assertTrue(gridLayout.getColumnExpandRatio(2) == 0); + assertTrue(gridLayout.getColumnExpandRatio(3) == 0); + assertFalse(gridLayout.getState().explicitColRatios.contains(0)); + assertTrue(gridLayout.getState().explicitColRatios.contains(1)); + assertFalse(gridLayout.getState().explicitColRatios.contains(2)); + assertFalse(gridLayout.getState().explicitColRatios.contains(3)); + + } + + private void remove() { + gridLayout.removeAllComponents(); + gridLayout.setColumns(3); + addComponents(false); + } + + private void addComponents(boolean includeLastOne) { + gridLayout.addComponent(label("{1}")); + gridLayout.addComponent(label("{2}")); + gridLayout.addComponent(label("{3}")); + if (includeLastOne) { + gridLayout.addComponent(label("{4}")); + } + } + + private Label label(String content) { + Label label = new Label(content); + label.setSizeUndefined(); + return label; + } +} -- 2.39.5