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 package info.magnolia.ui.vaadin.gwt.client.form.formsection.widget;
35
36 import org.vaadin.gwtgraphics.client.DrawingArea;
37 import org.vaadin.gwtgraphics.client.shape.Path;
38
39 import com.google.gwt.user.client.DOM;
40 import com.google.gwt.user.client.Element;
41 import com.google.gwt.user.client.ui.FlowPanel;
42 import com.google.gwt.user.client.ui.Widget;
43
44
45
46
47 public abstract class InlineMessageWidget extends FlowPanel {
48
49 protected Widget triangleSVG = createErrorDecoration();
50
51 protected Element icon = DOM.createElement("i");
52
53 protected Element messageWrapper = DOM.createDiv();
54
55 protected Element messageEl = DOM.createSpan();
56
57 protected InlineMessageWidget() {
58 construct();
59 }
60
61 private void construct() {
62 applyStyles();
63 add(triangleSVG);
64 getElement().appendChild(messageWrapper);
65 messageWrapper.appendChild(icon);
66 messageWrapper.appendChild(messageEl);
67 }
68
69 protected abstract void applyStyles();
70
71 private static Widget createErrorDecoration() {
72 final DrawingArea canvas = new DrawingArea(20, 10);
73 canvas.clear();
74 final Path path = new Path(0, 10);
75 path.setStrokeColor(null);
76 path.lineTo(10, 0);
77 path.lineTo(20, 10);
78 path.close();
79 canvas.add(path);
80 canvas.getElement().getStyle().setProperty("width", "");
81 return canvas;
82 }
83
84 public void setMessage(final String message) {
85 messageEl.setInnerHTML(message);
86 }
87
88 public static InlineMessageWidget createErrorMessage() {
89 final InlineMessageWidgett/client/form/formsection/widget/InlineMessageWidget.html#InlineMessageWidget">InlineMessageWidget result = new InlineMessageWidget() {
90 @Override
91 protected void applyStyles() {
92 addStyleName("validation-message-inline");
93 icon.addClassName("icon-error-white");
94 messageWrapper.addClassName("validation-message");
95 triangleSVG.addStyleName("triangle red");
96 }
97 };
98 return result;
99 }
100
101 public static InlineMessageWidget createHelpMessage() {
102 final InlineMessageWidgett/client/form/formsection/widget/InlineMessageWidget.html#InlineMessageWidget">InlineMessageWidget result = new InlineMessageWidget() {
103 @Override
104 protected void applyStyles() {
105 addStyleName("help-message-inline");
106 icon.addClassName("action-dialog-help");
107 messageWrapper.addClassName("help-message");
108 triangleSVG.addStyleName("triangle blue");
109 }
110 };
111 return result;
112 }
113
114 public void addMessage(String newMessage) {
115 final String message = messageEl.getInnerHTML();
116 final StringBuilder sb = new StringBuilder(message);
117 if (!message.isEmpty()) {
118 sb.append("<br/>");
119 }
120 sb.append(newMessage);
121 messageEl.setInnerHTML(sb.toString());
122 }
123 }