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.mediaeditor;
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.dialog.definition.ConfiguredFormDialogDefinition;
42 import info.magnolia.ui.mediaeditor.definition.MediaEditorDefinition;
43 import info.magnolia.ui.mediaeditor.registry.ConfiguredMediaEditorDefinitionManager;
44 import info.magnolia.ui.mediaeditor.registry.MediaEditorRegistry;
45
46 import javax.inject.Inject;
47 import javax.jcr.Node;
48 import javax.jcr.RepositoryException;
49
50
51
52
53 public class MediaEditorModule implements ModuleLifecycle {
54
55 private ConfigurationSourceFactory configSourceFactory;
56
57 private MediaEditorRegistry registry;
58
59 @Inject
60 public MediaEditorModule(ConfigurationSourceFactory configSourceFactory, MediaEditorRegistry registry) {
61 this.configSourceFactory = configSourceFactory;
62 this.registry = registry;
63 }
64
65 @Override
66 public void start(ModuleLifecycleContext context) {
67 if (context.getPhase() == ModuleLifecycleContext.PHASE_SYSTEM_STARTUP) {
68
69 configSourceFactory.jcr().withFilter(new IsMediaEditor()).withModulePath("mediaEditors").bindTo(registry);
70 configSourceFactory.yaml().bindWithDefaults(registry);
71 }
72 }
73
74 @Override
75 public void stop(ModuleLifecycleContext moduleLifecycleContext) {
76 }
77
78
79
80
81
82 private static class IsMediaEditor extends AbstractPredicate<Node> {
83
84 @Override
85 public boolean evaluateTyped(Node node) {
86 try {
87 if (node.hasProperty(ConfiguredFormDialogDefinition.EXTEND_PROPERTY_NAME)) {
88 node = new ExtendingNodeWrapper(node);
89 }
90 return "mediaEditors".equalsIgnoreCase(node.getParent().getName());
91 } catch (RepositoryException e) {
92 throw new RuntimeException(e);
93 }
94 }
95 }
96 }