]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix caption position calculation in GridLayout (#17619)
authorTeemu Pöntelin <teemu@vaadin.com>
Wed, 29 Apr 2015 19:57:02 +0000 (22:57 +0300)
committerVaadin Code Review <review@vaadin.com>
Wed, 6 May 2015 08:17:44 +0000 (08:17 +0000)
Change-Id: I5af773fbc03bc3d44e1aaa06ae974517583fdf4d

client/src/com/vaadin/client/ui/layout/VLayoutSlot.java
uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutCaptionAlignment.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutCaptionAlignmentTest.java [new file with mode: 0644]

index 5d463712dfc595ebb1b039e6c1abc2abd48d4de4..f308d07673cee7b41f64bb92c84e8f49a4dab5e7 100644 (file)
@@ -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 (file)
index 0000000..063a36c
--- /dev/null
@@ -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 (file)
index 0000000..240ea4c
--- /dev/null
@@ -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");
+    }
+
+}