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.form;
35
36 import info.magnolia.cms.i18n.Messages;
37 import info.magnolia.cms.i18n.MessagesUtil;
38
39 import java.util.ArrayList;
40 import java.util.List;
41
42 import org.apache.commons.lang.StringUtils;
43
44
45
46
47
48
49
50 public abstract class AbstractFormItem implements FormItem {
51
52 private FormItem parent;
53
54 private static String[] UI_BASENAMES;
55
56 static {
57 String uiPackagePrefix = "info.magnolia.ui.";
58 String[] uiModules = {"model", "framework", "widget.actionbar", "widget.dialog", "widget.editor", "widget.magnoliashell", "widget.tabsheet", "vaadin.integration"};
59 List<String> basenames = new ArrayList<String>();
60 for (String module : uiModules) {
61 basenames.add(uiPackagePrefix + module + ".messages");
62 }
63 UI_BASENAMES = basenames.toArray(new String[]{});
64 }
65
66 @Override
67 public void setParent(FormItem parent) {
68 this.parent = parent;
69 }
70
71 @Override
72 public FormItem getParent() {
73 return parent;
74 }
75
76 @Override
77 public Messages getMessages() {
78 Messages messages = null;
79 if (getParent() != null) {
80 messages = getParent().getMessages();
81 } else {
82 messages = MessagesUtil.chain(UI_BASENAMES);
83 }
84 if (StringUtils.isNotBlank(getI18nBasename())) {
85 messages = MessagesUtil.chain(getI18nBasename(), messages);
86 }
87 return messages;
88 }
89
90 protected abstract String getI18nBasename();
91
92 public String getMessage(String key) {
93 return getMessages().getWithDefault(key, key);
94 }
95 }