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.detail.action;
35
36 import info.magnolia.i18nsystem.SimpleTranslator;
37 import info.magnolia.ui.ValueContext;
38 import info.magnolia.ui.api.action.AbstractAction;
39 import info.magnolia.ui.framework.ContentClipboard;
40 import info.magnolia.ui.observation.DatasourceObservation;
41
42 import java.util.List;
43
44 import javax.inject.Inject;
45
46 import com.vaadin.ui.Notification;
47
48
49
50
51
52
53 public class PasteComponentsAction<T> extends AbstractAction<PasteComponentsActionDefinition> {
54
55 private final ContentClipboard<T> contentClipboard;
56 private final ValueContext<T> valueContext;
57 private final SimpleTranslator simpleTranslator;
58 private final DatasourceObservation.Manual datasourceObservation;
59
60 @Inject
61 public PasteComponentsAction(PasteComponentsActionDefinition definition, ContentClipboard<T> contentClipboard, ValueContext<T> valueContext, SimpleTranslator simpleTranslator, DatasourceObservation.Manual datasourceObservation) {
62 super(definition);
63 this.contentClipboard = contentClipboard;
64 this.valueContext = valueContext;
65 this.simpleTranslator = simpleTranslator;
66 this.datasourceObservation = datasourceObservation;
67 }
68
69 @Override
70 public void execute() {
71 final T destination = valueContext.getSingleOrThrow();
72 List<T> pastedItems = contentClipboard.paste(destination);
73 Notification.show(simpleTranslator.translate("ui-framework.actions.pasteItem.success", pastedItems.size(), destination), Notification.Type.HUMANIZED_MESSAGE);
74 datasourceObservation.trigger();
75 }
76 }