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.contentapp.browser.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.framework.ContentClipboard;
44 import info.magnolia.ui.framework.ContentClipboardException;
45 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
46 import info.magnolia.ui.vaadin.integration.jcr.JcrItemId;
47 import info.magnolia.ui.vaadin.integration.jcr.JcrItemUtil;
48 import info.magnolia.ui.vaadin.overlay.MessageStyleTypeEnum;
49
50 import java.util.List;
51
52 import javax.inject.Inject;
53 import javax.inject.Named;
54 import javax.jcr.RepositoryException;
55
56
57
58
59 public class PasteContentAction extends AbstractAction<PasteContentActionDefinition> {
60 private final JcrItemAdapter destination;
61 private final ContentClipboard contentClipboard;
62 private final UiContext uiContext;
63 private final EventBus eventBus;
64 private final SimpleTranslator i18n;
65
66 @Inject
67 public PasteContentAction(PasteContentActionDefinition definition, JcrItemAdapter destination,
68 ContentClipboard contentClipboard,
69 UiContext uiContext,
70 @Named(AdmincentralEventBus.NAME) EventBus eventBus,
71 SimpleTranslator i18n) {
72 super(definition);
73 this.destination = destination;
74 this.contentClipboard = contentClipboard;
75 this.uiContext = uiContext;
76 this.eventBus = eventBus;
77 this.i18n = i18n;
78 }
79
80 @Override
81 public void execute() throws ActionExecutionException {
82 try {
83 List<JcrItemId> pastedItemIds = contentClipboard.paste(JcrItemUtil.getItemId(destination.getJcrItem()));
84
85 uiContext.openNotification(MessageStyleTypeEnum.INFO, true, i18n.translate("ui-framework.actions.pasteItem.success", pastedItemIds.size(), destination.getJcrItem().getPath()));
86 eventBus.fireEvent(new ContentChangedEvent(pastedItemIds));
87 } catch (RepositoryException | ContentClipboardException e) {
88 throw new ActionExecutionException(i18n.translate("ui-framework.actions.pasteItem.failure"), e);
89 }
90 }
91
92 protected JcrItemAdapter getDestination() {
93 return destination;
94 }
95
96 protected ContentClipboard getContentClipboard() {
97 return contentClipboard;
98 }
99
100 protected UiContext getUiContext() {
101 return uiContext;
102 }
103
104 protected EventBus getEventBus() {
105 return eventBus;
106 }
107
108 protected SimpleTranslator getI18n() {
109 return i18n;
110 }
111
112 }