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.pages.app.action;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.i18nsystem.SimpleTranslator;
38 import info.magnolia.objectfactory.Components;
39 import info.magnolia.pages.app.editor.ComponentContentClipboard;
40 import info.magnolia.ui.api.action.ActionExecutionException;
41 import info.magnolia.ui.api.app.SubAppEventBus;
42 import info.magnolia.ui.api.context.UiContext;
43 import info.magnolia.ui.api.event.ContentChangedEvent;
44 import info.magnolia.ui.contentapp.browser.action.PasteContentAction;
45 import info.magnolia.ui.framework.ContentClipboard;
46 import info.magnolia.ui.framework.ContentClipboardException;
47 import info.magnolia.ui.vaadin.gwt.client.shared.AbstractElement;
48 import info.magnolia.ui.vaadin.gwt.client.shared.AreaElement;
49 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
50 import info.magnolia.ui.vaadin.overlay.MessageStyleTypeEnum;
51
52 import java.util.List;
53
54 import javax.inject.Inject;
55 import javax.inject.Named;
56 import javax.jcr.RepositoryException;
57
58
59
60
61 public class PasteComponentAction extends PasteContentAction {
62
63 @Inject
64 public PasteComponentAction(PasteComponentActionDefinition definition, JcrItemAdapter destination,
65 @Named(SubAppEventBus.NAME) EventBus eventBus, UiContext uiContext, ComponentContentClipboard componentContentClipboard, SimpleTranslator i18n) {
66 super(definition, destination, componentContentClipboard, uiContext, eventBus, i18n);
67 }
68
69
70
71
72 public PasteComponentAction(PasteComponentActionDefinition definition, JcrItemAdapter destination,
73 @Named(SubAppEventBus.NAME) EventBus eventBus, UiContext uiContext, ContentClipboard contentClipboard, SimpleTranslator i18n) {
74 this(definition, destination, eventBus, uiContext, Components.getComponent(ComponentContentClipboard.class), i18n);
75 }
76
77 @Override
78 public void execute() throws ActionExecutionException {
79 try {
80 List<AbstractElement> pastedItems = getContentClipboard().paste(new AreaElement(getDestination().getWorkspace(), getDestination().getJcrItem().getPath(), null, null));
81
82 getUiContext().openNotification(MessageStyleTypeEnum.INFO, true, getI18n().translate("actions.pasteComponent.success", pastedItems.size()));
83 getEventBus().fireEvent(new ContentChangedEvent(getDestination().getItemId()));
84 } catch (RepositoryException | ContentClipboardException e) {
85 throw new ActionExecutionException(getI18n().translate("actions.pasteComponent.failure"));
86 }
87 }
88 }