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.framework.action;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.i18nsystem.SimpleTranslator;
38 import info.magnolia.objectfactory.Components;
39 import info.magnolia.ui.api.action.AbstractAction;
40 import info.magnolia.ui.api.action.ActionExecutionException;
41 import info.magnolia.ui.api.context.UiContext;
42 import info.magnolia.ui.api.event.AdmincentralEventBus;
43 import info.magnolia.ui.api.event.ContentChangedEvent;
44 import info.magnolia.ui.dialog.formdialog.FormDialogPresenter;
45 import info.magnolia.ui.dialog.formdialog.FormDialogPresenterFactory;
46 import info.magnolia.ui.form.EditorCallback;
47 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
48 import info.magnolia.ui.vaadin.overlay.MessageStyleTypeEnum;
49
50 import javax.inject.Inject;
51 import javax.inject.Named;
52
53 import org.apache.commons.lang.StringUtils;
54
55
56
57
58
59
60 public class OpenEditDialogAction extends AbstractAction<OpenEditDialogActionDefinition> {
61
62 private final JcrItemAdapter itemToEdit;
63 private final FormDialogPresenterFactory formDialogPresenterFactory;
64 private final UiContext uiContext;
65 private final EventBus eventBus;
66 private final SimpleTranslator i18n;
67
68 @Inject
69 public OpenEditDialogAction(OpenEditDialogActionDefinition definition, JcrItemAdapter itemToEdit, FormDialogPresenterFactory formDialogPresenterFactory, UiContext uiContext, @Named(AdmincentralEventBus.NAME) final EventBus eventBus, SimpleTranslator i18n) {
70 super(definition);
71 this.itemToEdit = itemToEdit;
72 this.formDialogPresenterFactory = formDialogPresenterFactory;
73 this.uiContext = uiContext;
74 this.eventBus = eventBus;
75 this.i18n = i18n;
76 }
77
78
79
80
81 public OpenEditDialogAction(OpenEditDialogActionDefinition definition, JcrItemAdapter itemToEdit, FormDialogPresenterFactory formDialogPresenterFactory, UiContext uiContext, @Named(AdmincentralEventBus.NAME) final EventBus eventBus) {
82 this(definition, itemToEdit, formDialogPresenterFactory, uiContext, eventBus, Components.getComponent(SimpleTranslator.class));
83 }
84
85 @Override
86 public void execute() throws ActionExecutionException {
87 final String dialogName = getDefinition().getDialogName();
88 if(StringUtils.isBlank(dialogName)){
89 uiContext.openNotification(MessageStyleTypeEnum.ERROR, false, i18n.translate("ui-framework.actions.no.dialog.definition", getDefinition().getName()));
90 return;
91
92 }
93 final FormDialogPresenter formDialogPresenter = formDialogPresenterFactory.createFormDialogPresenter(dialogName);
94 if(formDialogPresenter == null){
95 uiContext.openNotification(MessageStyleTypeEnum.ERROR, false, i18n.translate("ui-framework.actions.dialog.not.registered", dialogName));
96 return;
97 }
98 formDialogPresenter.start(itemToEdit, dialogName, uiContext, new EditorCallback() {
99
100 @Override
101 public void onSuccess(String actionName) {
102 eventBus.fireEvent(new ContentChangedEvent(itemToEdit.getWorkspace(), itemToEdit.getItemId()));
103 formDialogPresenter.closeDialog();
104 }
105
106 @Override
107 public void onCancel() {
108 formDialogPresenter.closeDialog();
109 }
110 });
111 }
112 }