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.actionbar.definition;
35
36 import info.magnolia.i18nsystem.AbstractI18nKeyGenerator;
37 import info.magnolia.ui.api.app.AppDescriptor;
38 import info.magnolia.ui.api.app.SubAppDescriptor;
39
40 import java.lang.reflect.AnnotatedElement;
41 import java.lang.reflect.InvocationTargetException;
42 import java.lang.reflect.Method;
43 import java.util.List;
44
45
46
47
48 public class ActionbarSectionDefinitionKeyGenerator extends AbstractI18nKeyGenerator<ActionbarSectionDefinition> {
49
50
51
52
53 @Override
54 protected void keysFor(List<String> keys, ActionbarSectionDefinition sectionDefinition, AnnotatedElement el) {
55 Object root = getRoot(sectionDefinition);
56 if (!(root instanceof AppDescriptor)) {
57
58 try {
59 final Method getId = root.getClass().getMethod("getId");
60 String messageViewId = (String) getId.invoke(root);
61 addKey(keys, messageViewId.replace(':', '.').replace('/', '.'), "actionbar", "sections", sectionDefinition.getName(), fieldOrGetterName(el));
62 } catch (NoSuchMethodException e) {
63
64 } catch (InvocationTargetException e) {
65 throw new RuntimeException(e);
66 } catch (IllegalAccessException e) {
67 throw new RuntimeException(e);
68 }
69
70 return;
71 }
72 AppDescriptor appDescriptor = (AppDescriptor) root;
73 SubAppDescriptor subAppDescriptor = null;
74 List<?> ancestors = getAncestors(sectionDefinition);
75 for (Object ancestor : ancestors) {
76 if (ancestor instanceof SubAppDescriptor) {
77 subAppDescriptor = (SubAppDescriptor) ancestor;
78 break;
79 }
80 }
81 final String appName = appDescriptor.getName();
82 final String sectionName = sectionDefinition.getName();
83 final String subappName = subAppDescriptor != null ? subAppDescriptor.getName() : "";
84 addKey(keys, appName, subappName, "actionbar", "sections", sectionName, fieldOrGetterName(el));
85 }
86
87
88 }