aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/main/java/com/vaadin/tests/widgetset/client/WidgetUtilTestWidget.java
blob: c3472d4549729948c5d45144ae4718f28fb824be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package com.vaadin.tests.widgetset.client;

import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.BorderStyle;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.WidgetUtil;

public class WidgetUtilTestWidget extends Widget {

    private Element noBorderPadding;
    private Element border;
    private Element padding;
    private Element borderPadding;
    private DivElement result;
    private boolean inline;
    private DivElement root;

    public WidgetUtilTestWidget() {
        Document doc = Document.get();

        root = doc.createDivElement();
        root.addClassName("v-widget-util-test");
        setElement(root);

        addDomHandler(event -> showSizes(), ClickEvent.getType());
    }

    public void construct(boolean inline) {
        this.inline = inline;

        noBorderPadding = createElement();

        border = createElement();
        setBorder(border);

        padding = createElement();
        setPadding(padding);

        borderPadding = createElement();
        setBorder(borderPadding);
        setPadding(borderPadding);

        root.appendChild(noBorderPadding);
        root.appendChild(border);
        root.appendChild(padding);
        root.appendChild(borderPadding);

        result = Document.get().createDivElement();
        result.addClassName("result");
        result.getStyle().setWidth(500, Unit.PX);
        root.appendChild(result);
    }

    private void setBorder(Element e) {
        Style borderStyle = e.getStyle();
        borderStyle.setBorderStyle(BorderStyle.SOLID);
        borderStyle.setBorderWidth(1.8, Unit.PX);
    }

    private void setPadding(Element e) {
        Style borderStyle = e.getStyle();
        borderStyle.setPaddingLeft(2.4, Unit.PX);
        borderStyle.setPaddingRight(3.5, Unit.PX);
        borderStyle.setPaddingTop(2.4, Unit.PX);
        borderStyle.setPaddingBottom(3.5, Unit.PX);
    }

    private Element createElement() {
        Element e;
        if (inline) {
            e = Document.get().createSpanElement();
            e.getStyle().setBackgroundColor("green");
        } else {
            e = Document.get().createDivElement();
            e.getStyle().setWidth(300, Unit.PX);
            e.getStyle().setHeight(50, Unit.PX);
            e.getStyle().setBackgroundColor("blue");
        }
        e.getStyle().setMargin(3.7, Unit.PX);
        return e;
    }

    public void showSizes() {
        String sizes = "Measured required width x height<br/>";

        sizes += "<div id='noBorderPadding'>noBorderPadding: "
                + WidgetUtil.getRequiredWidthComputedStyle(noBorderPadding);
        sizes += "x"
                + WidgetUtil.getRequiredHeightComputedStyle(noBorderPadding)
                + "</div>";
        sizes += "<div id='border'>border: "
                + WidgetUtil.getRequiredWidthComputedStyle(border);
        sizes += "x" + WidgetUtil.getRequiredHeightComputedStyle(border);
        sizes += "</div>";

        sizes += "<div id='padding'>padding: "
                + WidgetUtil.getRequiredWidthComputedStyle(padding);
        sizes += "x" + WidgetUtil.getRequiredHeightComputedStyle(padding);
        sizes += "</div>";

        sizes += "<div id='borderPadding'>borderPadding: "
                + WidgetUtil.getRequiredWidthComputedStyle(borderPadding);
        sizes += "x" + WidgetUtil.getRequiredHeightComputedStyle(borderPadding)
                + "</div>";

        result.setInnerHTML(sizes);

        if (inline) {
            result.getStyle().setPaddingTop(200, Unit.PX);
        }

    }

}