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