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.dialog.formdialog;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.ui.api.ioc.UiContextScoped;
38 import info.magnolia.ui.dialog.DialogDefinition;
39 import info.magnolia.ui.dialog.definition.FormDialogDefinition;
40 import info.magnolia.ui.dialog.registry.DialogDefinitionRegistry;
41
42 import javax.inject.Inject;
43
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47
48
49
50 @UiContextScoped
51 public class FormDialogPresenterFactoryImpl implements FormDialogPresenterFactory {
52
53 private Logger log = LoggerFactory.getLogger(getClass());
54
55 private DialogDefinitionRegistry registry;
56
57 private ComponentProvider componentProvider;
58
59 @Inject
60 public FormDialogPresenterFactoryImpl(DialogDefinitionRegistry registry, ComponentProvider componentProvider) {
61 this.registry = registry;
62 this.componentProvider = componentProvider;
63 }
64
65 @Override
66 public FormDialogPresenter createFormDialogPresenter(String dialogId) {
67 DialogDefinition dialogDefinition = registry.getProvider(dialogId).get();
68 if (dialogDefinition instanceof FormDialogDefinition) {
69 return createFormDialogPresenter((FormDialogDefinition) dialogDefinition);
70 } else if (dialogDefinition == null) {
71 log.error("Could not create FormDialogPresenter: dialogId {{}} was not found in registry.", dialogId);
72 } else {
73 log.error("Could not create FormDialogPresenter: dialog's presenterClass was not a FormDialogPresenter.");
74 }
75 return null;
76 }
77
78 @Override
79 public FormDialogPresenter createFormDialogPresenter(FormDialogDefinition definition) {
80 return componentProvider.newInstance(definition.getPresenterClass(), definition);
81 }
82 }