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.module.blossom.dialog;
35
36 import info.magnolia.context.MgnlContext;
37 import info.magnolia.i18nsystem.I18nizer;
38 import info.magnolia.i18nsystem.SimpleTranslator;
39 import info.magnolia.objectfactory.ComponentProvider;
40 import info.magnolia.ui.api.availability.AvailabilityChecker;
41 import info.magnolia.ui.api.context.UiContext;
42 import info.magnolia.ui.dialog.DialogView;
43 import info.magnolia.ui.dialog.actionarea.DialogActionExecutor;
44 import info.magnolia.ui.dialog.definition.FormDialogDefinition;
45 import info.magnolia.ui.dialog.formdialog.FormBuilder;
46 import info.magnolia.ui.dialog.formdialog.FormDialogPresenterImpl;
47 import info.magnolia.ui.dialog.formdialog.FormView;
48 import info.magnolia.ui.dialog.registry.DialogDefinitionRegistry;
49 import info.magnolia.ui.form.EditorCallback;
50 import info.magnolia.ui.form.FormPresenter;
51 import info.magnolia.ui.vaadin.integration.contentconnector.ContentConnector;
52 import info.magnolia.ui.vaadin.integration.jcr.AbstractJcrNodeAdapter;
53
54 import javax.inject.Inject;
55 import javax.jcr.Node;
56 import javax.jcr.RepositoryException;
57
58 import com.vaadin.v7.data.Item;
59
60
61
62
63
64
65 public class BlossomFormDialogPresenter extends FormDialogPresenterImpl {
66
67 private final DialogDefinitionRegistry dialogDefinitionRegistry;
68
69 @Inject
70 public BlossomFormDialogPresenter(DialogDefinitionRegistry dialogDefinitionRegistry, ComponentProvider componentProvider, DialogActionExecutor executor, FormView view, I18nizer i18nizer, SimpleTranslator i18n, AvailabilityChecker checker, ContentConnector contentConnector, FormPresenter formPresenter) {
71 super(dialogDefinitionRegistry, componentProvider, executor, view, i18nizer, i18n, checker, contentConnector, formPresenter);
72 this.dialogDefinitionRegistry = dialogDefinitionRegistry;
73 }
74
75
76
77
78 @Deprecated
79 public BlossomFormDialogPresenter(DialogDefinitionRegistry dialogDefinitionRegistry, FormBuilder formBuilder, ComponentProvider componentProvider, DialogActionExecutor executor, FormView view, I18nizer i18nizer, SimpleTranslator i18n) {
80 this(dialogDefinitionRegistry, componentProvider, executor, view, i18nizer, i18n, componentProvider.getComponent(AvailabilityChecker.class), componentProvider.getComponent(ContentConnector.class), componentProvider.getComponent(FormPresenter.class));
81 }
82
83 @Override
84 public DialogView start(Item item, String dialogId, UiContext uiContext, EditorCallback callback) {
85 try {
86
87 DialogCreationContextgCreationContext.html#DialogCreationContext">DialogCreationContext context = new DialogCreationContext();
88 context.setRequest(MgnlContext.getWebContext().getRequest());
89 context.setResponse(MgnlContext.getWebContext().getResponse());
90 context.setItem(item);
91 if (item instanceof AbstractJcrNodeAdapter) {
92 Node node = ((AbstractJcrNodeAdapter) item).getJcrItem();
93 if (node != null) {
94 context.setContentNode(node);
95 context.setContentPath(node.getPath());
96 }
97 }
98
99 DialogCreationContextHolder.set(context);
100 FormDialogDefinition dialogDefinition = (FormDialogDefinition) dialogDefinitionRegistry.getProvider(dialogId).get();
101
102 return start(item, dialogDefinition, uiContext, callback);
103
104 } catch (RepositoryException e) {
105 throw new RuntimeException("Failed to access repository", e);
106 } finally {
107 DialogCreationContextHolder.remove();
108 }
109 }
110 }