From 16f79e2e9f0a69e0cbe9da7706b4fb81357f5b7c Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Sun, 25 Jan 2009 17:04:30 +0000 Subject: [PATCH] Test case and fix for #2478 - Label wrapping inconsistency in IOrderedLayout svn changeset:6637/svn branch:trunk --- .../gwt/client/ui/IOrderedLayout.java | 3 ++ .../ui/layout/ChildComponentContainer.java | 8 +++- .../tests/components/label/LabelWrapping.java | 46 +++++++++++++++++++ 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 src/com/itmill/toolkit/tests/components/label/LabelWrapping.java diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java index f875fee465..c7ad11f7f8 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java @@ -730,6 +730,9 @@ public class IOrderedLayout extends CellBasedLayout { ChildComponentContainer componentContainer = getComponentContainer((Widget) p); if (isDynamicWidth()) { componentContainer.setUnlimitedContainerWidth(); + } else { + componentContainer.setLimitedContainerWidth(activeLayoutSize + .getWidth()); } componentContainer.updateWidgetSize(); diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java index 6367c03a3e..fe8ba6497e 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java @@ -172,7 +172,7 @@ public class ChildComponentContainer extends Panel { * is automatically calculated correctly (e.g. for Labels). */ if (fixedWidth > 0) { - containerDIV.getStyle().setProperty("width", fixedWidth + "px"); + setLimitedContainerWidth(fixedWidth); } else { setUnlimitedContainerWidth(); } @@ -181,7 +181,11 @@ public class ChildComponentContainer extends Panel { } public void setUnlimitedContainerWidth() { - containerDIV.getStyle().setProperty("width", "1000000px"); + setLimitedContainerWidth(1000000); + } + + public void setLimitedContainerWidth(int width) { + containerDIV.getStyle().setProperty("width", width + "px"); } public void updateWidgetSize() { diff --git a/src/com/itmill/toolkit/tests/components/label/LabelWrapping.java b/src/com/itmill/toolkit/tests/components/label/LabelWrapping.java new file mode 100644 index 0000000000..0ced6cc22c --- /dev/null +++ b/src/com/itmill/toolkit/tests/components/label/LabelWrapping.java @@ -0,0 +1,46 @@ +package com.itmill.toolkit.tests.components.label; + +import com.itmill.toolkit.tests.components.TestBase; +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.HorizontalLayout; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Button.ClickEvent; + +public class LabelWrapping extends TestBase { + + @Override + protected String getDescription() { + return "A label inside a limited HorizontalLayout should strive to be as wide as possible and only wrap when the size of the layout is reached. The label should look the same if it is rendered initially with the layout or updated later on."; + } + + @Override + protected Integer getTicketNumber() { + return 2478; + } + + @Override + protected void setup() { + HorizontalLayout hl = new HorizontalLayout(); + hl.setWidth("250px"); + + final String longString = "this is a somewhat long string."; + final Label longLabel = new Label(longString); + + Button changeLength = new Button("Change length"); + changeLength.addListener(new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + if (longLabel.getValue().equals(longString)) { + longLabel.setValue(""); + } else { + longLabel.setValue(longString); + } + } + }); + + hl.addComponent(longLabel); + hl.addComponent(changeLength); + + addComponent(hl); + } + +} -- 2.39.5