diff options
author | Teemu Pöntelin <teemu@vaadin.com> | 2015-04-29 22:57:02 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-05-06 08:17:44 +0000 |
commit | bfb616f28efe70f50dcac40730d6eb5cb30d9958 (patch) | |
tree | 2f9b72f3a11b09b072090d6d80dfc08bdb039886 | |
parent | f9dc7d3370feb6207cadad7fb5067fbb8c4a8ae5 (diff) | |
download | vaadin-framework-bfb616f28efe70f50dcac40730d6eb5cb30d9958.tar.gz vaadin-framework-bfb616f28efe70f50dcac40730d6eb5cb30d9958.zip |
Fix caption position calculation in GridLayout (#17619)
Change-Id: I5af773fbc03bc3d44e1aaa06ae974517583fdf4d
3 files changed, 101 insertions, 14 deletions
diff --git a/client/src/com/vaadin/client/ui/layout/VLayoutSlot.java b/client/src/com/vaadin/client/ui/layout/VLayoutSlot.java index 5d463712df..f308d07673 100644 --- a/client/src/com/vaadin/client/ui/layout/VLayoutSlot.java +++ b/client/src/com/vaadin/client/ui/layout/VLayoutSlot.java @@ -126,7 +126,6 @@ public abstract class VLayoutSlot { } style.setLeft(Math.round(currentLocation), Unit.PX); - double padding = 0; AlignmentInfo alignment = getAlignment(); if (!alignment.isLeft()) { double usedWidth; @@ -135,21 +134,17 @@ public abstract class VLayoutSlot { } else { usedWidth = getWidgetWidth(); } + + double padding = (allocatedSpace - usedWidth); if (alignment.isHorizontalCenter()) { - padding = (allocatedSpace - usedWidth) / 2d; - if (captionAboveCompnent) { - captionStyle.setLeft( - Math.round(usedWidth - captionWidth) / 2, Unit.PX); - } - } else { - padding = (allocatedSpace - usedWidth); - if (captionAboveCompnent) { - captionStyle.setLeft(Math.round(usedWidth - captionWidth), - Unit.PX); - } + padding = padding / 2; + } + + long roundedPadding = Math.round(padding); + if (captionAboveCompnent) { + captionStyle.setLeft(roundedPadding, Unit.PX); } - widget.getElement().getStyle() - .setLeft(Math.round(padding), Unit.PX); + widget.getElement().getStyle().setLeft(roundedPadding, Unit.PX); } else { if (captionAboveCompnent) { captionStyle.setLeft(0, Unit.PX); diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutCaptionAlignment.java b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutCaptionAlignment.java new file mode 100644 index 0000000000..063a36ca04 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutCaptionAlignment.java @@ -0,0 +1,60 @@ +/* + * 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.gridlayout; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.TextField; + +public class GridLayoutCaptionAlignment extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + addComponent(createLayout(Alignment.BOTTOM_CENTER)); + addComponent(createLayout(Alignment.BOTTOM_LEFT)); + addComponent(createLayout(Alignment.BOTTOM_RIGHT)); + addComponent(createLayout(Alignment.MIDDLE_CENTER)); + addComponent(createLayout(Alignment.MIDDLE_LEFT)); + addComponent(createLayout(Alignment.MIDDLE_RIGHT)); + addComponent(createLayout(Alignment.TOP_CENTER)); + addComponent(createLayout(Alignment.TOP_LEFT)); + addComponent(createLayout(Alignment.TOP_RIGHT)); + } + + private GridLayout createLayout(Alignment align) { + TextField field = new TextField("Some caption"); + + GridLayout layout = new GridLayout(3, 3); + layout.setSizeFull(); + layout.addComponent(field); + layout.setComponentAlignment(field, align); + return layout; + } + + @Override + protected Integer getTicketNumber() { + return 17619; + } + + @Override + protected String getTestDescription() { + return "Test alignment of component captions inside GridLayout – " + + "all captions should be aligned directly above the TextField components."; + } + +} diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutCaptionAlignmentTest.java b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutCaptionAlignmentTest.java new file mode 100644 index 0000000000..240ea4ce6f --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutCaptionAlignmentTest.java @@ -0,0 +1,32 @@ +/* + * 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.gridlayout; + +import java.io.IOException; + +import org.junit.Test; + +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class GridLayoutCaptionAlignmentTest extends MultiBrowserTest { + + @Test + public void testCaptionAlignments() throws IOException { + openTestURL(); + compareScreen("gridlayout-caption-alignment"); + } + +} |