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