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