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.googlesitemap.app.subapp.sitemapdetail.actions;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.module.googlesitemap.bean.SiteMapEntry;
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.formdialog.FormDialogPresenter;
44 import info.magnolia.ui.dialog.formdialog.FormDialogPresenterFactory;
45 import info.magnolia.ui.form.EditorCallback;
46
47 import javax.inject.Inject;
48 import javax.inject.Named;
49
50 import com.vaadin.v7.data.Item;
51 import com.vaadin.v7.data.util.BeanItem;
52
53
54
55
56
57 public class EditSiteMapEntryAction extends AbstractAction<EditSiteMapEntryActionDefinition> {
58
59 private final FormDialogPresenterFactory formDialogPresenterFactory;
60 private final UiContext uiContext;
61 private final EventBus eventBus;
62 private final SiteMapEntry entry;
63
64 @Inject
65 protected EditSiteMapEntryAction(EditSiteMapEntryActionDefinition definition, BeanItem<SiteMapEntry> entry, FormDialogPresenterFactory formDialogPresenterFactory, UiContext uiContext, @Named(AdmincentralEventBus.NAME) EventBus eventBus) {
66 super(definition);
67 this.entry = entry.getBean();
68 this.formDialogPresenterFactory = formDialogPresenterFactory;
69 this.uiContext = uiContext;
70 this.eventBus = eventBus;
71 }
72
73 @Override
74 public void execute() throws ActionExecutionException {
75 final FormDialogPresenter formDialogPresenter = formDialogPresenterFactory.createFormDialogPresenter(getDefinition().getDialogName());
76
77 Item item = new BeanItem<SiteMapEntry>(entry);
78
79 formDialogPresenter.start(item, getDefinition().getDialogName(), uiContext, new EditorCallback() {
80
81 @Override
82 public void onSuccess(String actionName) {
83 eventBus.fireEvent(new ContentChangedEvent(entry));
84 formDialogPresenter.closeDialog();
85 }
86
87 @Override
88 public void onCancel() {
89 formDialogPresenter.closeDialog();
90 }
91 });
92 }
93
94 }