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.movedialog.action;
35
36 import com.vaadin.data.Item;
37 import info.magnolia.objectfactory.ComponentProvider;
38 import info.magnolia.ui.api.action.AbstractAction;
39 import info.magnolia.ui.api.action.ActionExecutionException;
40 import info.magnolia.ui.api.app.AppContext;
41 import info.magnolia.ui.api.overlay.OverlayCloser;
42 import info.magnolia.ui.contentapp.browser.BrowserSubAppDescriptor;
43 import info.magnolia.ui.contentapp.movedialog.MoveActionCallback;
44 import info.magnolia.ui.contentapp.movedialog.MoveDialogPresenter;
45 import info.magnolia.ui.dialog.DialogView;
46 import info.magnolia.ui.framework.action.MoveLocation;
47 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
48
49 import java.util.Arrays;
50 import java.util.List;
51
52
53
54
55 public class OpenMoveDialogAction extends AbstractAction<OpenMoveDialogActionDefinition> {
56
57 private AppContext appContext;
58
59 private ComponentProvider componentProvider;
60
61 private JcrNodeAdapter sourceNodeAdapter;
62
63 private List<JcrNodeAdapter> sourceNodeAdapters;
64
65 private MoveDialogPresenter moveDialogPresenter;
66
67 private OverlayCloser closeHandle;
68
69 public OpenMoveDialogAction(
70 OpenMoveDialogActionDefinition definition,
71 AppContext appContext,
72 ComponentProvider componentProvider,
73 JcrNodeAdapter sourceNodeAdapter,
74 MoveDialogPresenter moveDialogPresenter) {
75 this(definition, appContext, componentProvider, moveDialogPresenter, Arrays.asList(sourceNodeAdapter));
76 }
77
78 public OpenMoveDialogAction(
79 OpenMoveDialogActionDefinition definition,
80 AppContext appContext,
81 ComponentProvider componentProvider,
82 MoveDialogPresenter moveDialogPresenter,
83 List<JcrNodeAdapter> sourceNodeAdapters) {
84 super(definition);
85 this.appContext = appContext;
86 this.componentProvider = componentProvider;
87 this.sourceNodeAdapters = sourceNodeAdapters;
88 this.moveDialogPresenter = moveDialogPresenter;
89 }
90
91 @Override
92 public void execute() throws ActionExecutionException {
93 if (appContext.getActiveSubAppContext().getSubAppDescriptor() instanceof BrowserSubAppDescriptor) {
94 BrowserSubAppDescriptor descriptor = (BrowserSubAppDescriptor) appContext.getActiveSubAppContext().getSubAppDescriptor();
95 DialogView moveDialog = moveDialogPresenter.start(descriptor, sourceNodeAdapters, new MoveActionCallback() {
96 @Override
97 public void onMoveCancelled() {
98 closeHandle.close();
99 }
100
101 @Override
102 public void onMovePerformed(Item newHost, MoveLocation moveLocation) {
103 closeHandle.close();
104 }
105 });
106
107 this.closeHandle = appContext.openOverlay(moveDialog);
108 }
109 }
110 }