From 95d0495225c395e16081578c0d45e675aa2b751e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Leif=20=C3=85strand?= Date: Thu, 3 Jan 2013 16:03:07 +0200 Subject: [PATCH] Remember old splitter position when adjusting for out of bounds (#10596) Change-Id: I7d37ead068b00f75d0ee70666cdc0c5fdb17b623 --- .../vaadin/client/ui/VAbstractSplitPanel.java | 12 +++- ...RetainSplitterPositionWhenOutOfBounds.html | 27 ++++++++ ...RetainSplitterPositionWhenOutOfBounds.java | 67 +++++++++++++++++++ 3 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/components/splitpanel/RetainSplitterPositionWhenOutOfBounds.html create mode 100644 uitest/src/com/vaadin/tests/components/splitpanel/RetainSplitterPositionWhenOutOfBounds.java diff --git a/client/src/com/vaadin/client/ui/VAbstractSplitPanel.java b/client/src/com/vaadin/client/ui/VAbstractSplitPanel.java index 90f3e49ffb..e8732a4ca0 100644 --- a/client/src/com/vaadin/client/ui/VAbstractSplitPanel.java +++ b/client/src/com/vaadin/client/ui/VAbstractSplitPanel.java @@ -341,12 +341,16 @@ public class VAbstractSplitPanel extends ComplexPanel { } public void setSplitPosition(String pos) { + setSplitPosition(pos, true); + } + + private void setSplitPosition(String pos, boolean rememberPosition) { if (pos == null) { return; } pos = checkSplitPositionLimits(pos); - if (!pos.equals(position)) { + if (rememberPosition && !pos.equals(position)) { position = convertToPositionUnits(pos); } @@ -402,7 +406,8 @@ public class VAbstractSplitPanel extends ComplexPanel { if (pixelPosition < 0) { pixelPosition = 0; } - setSplitPosition(pixelPosition + "px"); + // Move splitter within bounds, but don't remember the new value + setSplitPosition(pixelPosition + "px", false); return; } @@ -450,7 +455,8 @@ public class VAbstractSplitPanel extends ComplexPanel { if (pixelPosition < 0) { pixelPosition = 0; } - setSplitPosition(pixelPosition + "px"); + // Move splitter within bounds, but don't remember the new value + setSplitPosition(pixelPosition + "px", false); return; } diff --git a/uitest/src/com/vaadin/tests/components/splitpanel/RetainSplitterPositionWhenOutOfBounds.html b/uitest/src/com/vaadin/tests/components/splitpanel/RetainSplitterPositionWhenOutOfBounds.html new file mode 100644 index 0000000000..dff4dbb996 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/splitpanel/RetainSplitterPositionWhenOutOfBounds.html @@ -0,0 +1,27 @@ + + + + + + +New Test + + + + + + + + + + + + + + + + + +
New Test
open/run/com.vaadin.tests.components.splitpanel.RetainSplitterPositionWhenOutOfBounds?restartApplication
screenCapturemiddle-visible
+ + diff --git a/uitest/src/com/vaadin/tests/components/splitpanel/RetainSplitterPositionWhenOutOfBounds.java b/uitest/src/com/vaadin/tests/components/splitpanel/RetainSplitterPositionWhenOutOfBounds.java new file mode 100644 index 0000000000..ee5a1a62e7 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/splitpanel/RetainSplitterPositionWhenOutOfBounds.java @@ -0,0 +1,67 @@ +/* + * Copyright 2012 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.splitpanel; + +import com.vaadin.server.Sizeable; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.VerticalSplitPanel; + +public class RetainSplitterPositionWhenOutOfBounds extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + // Replacing default content to get the intended expansions + setContent(new MainLayout()); + } + + public class MainLayout extends GridLayout { + + public MainLayout() { + super(1, 3); + setSizeFull(); + + VerticalSplitPanel splitPanel = new VerticalSplitPanel(); + splitPanel.setFirstComponent(new Label("Top")); + splitPanel.setSecondComponent(new Label("Middle")); + splitPanel.setSplitPosition(50, Sizeable.Unit.PERCENTAGE); + + HorizontalLayout bottom = new HorizontalLayout(); + bottom.setWidth("100%"); + bottom.addComponent(new Label("Bottom")); + + addComponent(new Label(getTestDescription())); + addComponent(splitPanel); + addComponent(bottom); + } + + } + + @Override + protected String getTestDescription() { + return "The original splitter position value should be respected even if it's recalculated because it's of out bounds."; + } + + @Override + protected Integer getTicketNumber() { + return Integer.valueOf(10596); + } + +} -- 2.39.5