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.admincentral;
35
36 import info.magnolia.config.source.ConfigurationSourceFactory;
37 import info.magnolia.jcr.predicate.AbstractPredicate;
38 import info.magnolia.jcr.wrapper.ExtendingNodeWrapper;
39 import info.magnolia.module.ModuleLifecycle;
40 import info.magnolia.module.ModuleLifecycleContext;
41 import info.magnolia.ui.admincentral.shellapp.pulse.PulseDefinition;
42 import info.magnolia.ui.admincentral.shellapp.pulse.item.registry.ItemViewDefinitionRegistry;
43 import info.magnolia.ui.admincentral.usermenu.definition.UserMenuDefinition;
44 import info.magnolia.ui.api.app.launcherlayout.AppLauncherLayoutDefinition;
45 import info.magnolia.ui.api.app.launcherlayout.AppLauncherLayoutManager;
46 import info.magnolia.ui.dialog.definition.ConfiguredFormDialogDefinition;
47
48 import javax.inject.Inject;
49 import javax.jcr.Node;
50 import javax.jcr.RepositoryException;
51
52
53
54
55
56 public class AdmincentralModule implements ModuleLifecycle {
57
58 private UserMenuDefinition userControl;
59
60 private ItemViewDefinitionRegistry itemViewDefinitionRegistry;
61
62 private AppLauncherLayoutManager appLauncherLayoutManager;
63 private ConfigurationSourceFactory configurationSourceFactory;
64 private AppLauncherLayoutDefinition appLauncherLayout;
65 private PulseDefinition pulse;
66
67 @Inject
68 public AdmincentralModule(ItemViewDefinitionRegistry itemViewDefinitionRegistry, AppLauncherLayoutManager appLauncherLayoutManager,
69 ConfigurationSourceFactory configurationSourceFactory) {
70 this.itemViewDefinitionRegistry = itemViewDefinitionRegistry;
71 this.appLauncherLayoutManager = appLauncherLayoutManager;
72 this.configurationSourceFactory = configurationSourceFactory;
73 }
74
75 @Override
76 public void start(ModuleLifecycleContext context) {
77 if (context.getPhase() == ModuleLifecycleContext.PHASE_SYSTEM_STARTUP) {
78 configurationSourceFactory.jcr().withFilter(new IsViewType()).withModulePath("messageViews").bindTo(itemViewDefinitionRegistry);
79 configurationSourceFactory.yaml().bindWithDefaults(itemViewDefinitionRegistry);
80 }
81 appLauncherLayoutManager.setLayout(getAppLauncherLayout());
82 }
83
84
85
86
87 public AdmincentralModule() {
88 }
89
90 @Override
91 public void stop(ModuleLifecycleContext context) {
92 }
93
94 public UserMenuDefinition getUserMenu() {
95 return userControl;
96 }
97
98 public void setUserMenu(UserMenuDefinition userControl) {
99 this.userControl = userControl;
100 }
101
102 public AppLauncherLayoutDefinition getAppLauncherLayout() {
103 return appLauncherLayout;
104 }
105
106 public void setAppLauncherLayout(AppLauncherLayoutDefinition appLauncherLayout) {
107 this.appLauncherLayout = appLauncherLayout;
108 }
109
110 public PulseDefinition getPulse() {
111 return pulse;
112 }
113
114 public void setPulse(PulseDefinition pulse) {
115 this.pulse = pulse;
116 }
117
118
119
120
121 private class IsViewType extends AbstractPredicate<Node> {
122
123 public static final String MESSAGE_VIEW_CONFIG_NODE_NAME = "messageViews";
124
125 @Override
126 public boolean evaluateTyped(Node node) {
127 try {
128 if (node.hasProperty(ConfiguredFormDialogDefinition.EXTEND_PROPERTY_NAME)) {
129 node = new ExtendingNodeWrapper(node);
130 }
131 return MESSAGE_VIEW_CONFIG_NODE_NAME.equals(node.getParent().getName());
132 } catch (RepositoryException e) {
133 throw new RuntimeException(e);
134 }
135 }
136 }
137 }