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.poc;
35
36 import static com.vaadin.server.Sizeable.Unit.*;
37
38 import info.magnolia.ui.incub.CompositeField;
39 import info.magnolia.ui.incub.DamUploadField;
40 import info.magnolia.ui.incub.LinkField;
41 import info.magnolia.ui.incub.LinkFieldPreviewComponent;
42 import info.magnolia.ui.incub.MultiField;
43 import info.magnolia.ui.incub.UploadField;
44
45 import java.time.LocalDate;
46 import java.time.LocalDateTime;
47
48 import javax.servlet.annotation.WebServlet;
49
50 import com.vaadin.annotations.Theme;
51 import com.vaadin.annotations.Title;
52 import com.vaadin.annotations.VaadinServletConfiguration;
53 import com.vaadin.annotations.Widgetset;
54 import com.vaadin.server.VaadinRequest;
55 import com.vaadin.server.VaadinServlet;
56 import com.vaadin.ui.Component;
57 import com.vaadin.ui.DateField;
58 import com.vaadin.ui.DateTimeField;
59 import com.vaadin.ui.FormLayout;
60 import com.vaadin.ui.TextField;
61 import com.vaadin.ui.UI;
62
63 @Theme("poctheme")
64 @Title("Magnolia 6 Resurface - Complex Fields Components")
65 @Widgetset("info.magnolia.poc.Widgetset")
66 public class ComplexFieldsComponentUI extends UI {
67
68 @Override
69 protected void init(VaadinRequest vaadinRequest) {
70 FormLayout layout = new FormLayout();
71 layout.setMargin(true);
72 layout.setWidth(926, PIXELS);
73
74 LinkField emptyLinkField = new LinkField();
75 emptyLinkField.setButtonCaptionNew("Select new");
76 emptyLinkField.setCaption("Link empty field");
77 emptyLinkField.setWidth(100, PERCENTAGE);
78
79 LinkField linkField = new LinkField();
80 linkField.setCaption("Link field");
81 linkField.setWidth(100, PERCENTAGE);
82
83
84 linkField.setButtonCaptionNew("Select new");
85 linkField.setButtonCaptionOther("Select another");
86 linkField.getSelectButton().setDisableOnClick(true);
87 linkField.setFieldEditable(true);
88
89
90 final LinkFieldPreviewComponent contentPreviewComponent = new LinkFieldPreviewComponent();
91 linkField.setContentPreview(contentPreviewComponent);
92 linkField.getTextField().setValue("/travel-demo/asiamarket.jpg");
93 contentPreviewComponent.onValueChange();
94 contentPreviewComponent.setVisible(true);
95
96 DateField dateField = new DateField();
97 dateField.setDateFormat("yyyy-MM-dd");
98 dateField.setCaption("Date field");
99 dateField.setWidthUndefined();
100 dateField.setValue(LocalDate.now());
101
102 DateTimeField dateTimeField = new DateTimeField();
103 dateTimeField.setDateFormat("yyyy-MM-dd hh:mm:ss");
104 dateTimeField.setCaption("Date time field");
105 dateTimeField.setWidthUndefined();
106 dateTimeField.setValue(LocalDateTime.now());
107
108 DateTimeField disabledDateTimeField = new DateTimeField();
109 disabledDateTimeField.setDateFormat("yyyy-MM-dd hh:mm:ss");
110 disabledDateTimeField.setCaption("Date time field");
111 disabledDateTimeField.setWidthUndefined();
112 disabledDateTimeField.setValue(LocalDateTime.now());
113 disabledDateTimeField.setEnabled(false);
114
115 final UploadField assetBasicUploadField = new UploadField();
116 assetBasicUploadField.setCaption("Upload field");
117 assetBasicUploadField.setWidth(100, PERCENTAGE);
118
119 final DamUploadField damUploadField = new DamUploadField();
120 damUploadField.setCaption("DAM upload field");
121 damUploadField.setWidth(100, PERCENTAGE);
122
123 MultiField multiField = new MultiField();
124 multiField.setCaption("Multivalue field");
125 multiField.setWidth(100, PERCENTAGE);
126
127 layout.addComponents(
128 emptyLinkField,
129 linkField,
130 dateField,
131 dateTimeField,
132 disabledDateTimeField,
133 assetBasicUploadField,
134 damUploadField,
135 createCompositeFieldVertical(),
136 createCompositeFieldHorizontal(2),
137 createCompositeFieldHorizontal(4),
138 multiField
139 );
140
141 setContent(layout);
142 }
143
144 private Component createCompositeFieldVertical() {
145 TextField title = new TextField("Title");
146 title.setValue("Independence day");
147 TextField subtitle = new TextField("Subtitle");
148 subtitle.setValue("Movie review");
149 DateField dateField = new DateField();
150 dateField.setDateFormat("yyyy-MM-dd");
151 dateField.setCaption("Date");
152 dateField.setValue(LocalDate.now());
153 Component compositeField = new CompositeField(false, title, subtitle, dateField);
154 compositeField.setCaption("Composite field vertical");
155 return compositeField;
156 }
157
158 private Component createCompositeFieldHorizontal(int numberOfFields) {
159 Component[] components = new Component[numberOfFields];
160 for (int i = 0; i < numberOfFields; i++) {
161 String field = "Field " + (i + 1);
162 TextField textField = new TextField(field);
163 textField.setValue(field);
164 components[i] = textField;
165 }
166 Component compositeField = new CompositeField(true, components);
167 compositeField.setCaption("Composite field horizontal");
168 return compositeField;
169 }
170
171 @WebServlet(value = "/complex/*", asyncSupported = true)
172 @VaadinServletConfiguration(productionMode = false, ui = ComplexFieldsComponentUI.class)
173 public static class Servlet extends VaadinServlet {
174 }
175 }