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