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.resources.app.action;
35
36 import info.magnolia.commands.CommandsManager;
37 import info.magnolia.commands.impl.MarkNodeAsDeletedCommand;
38 import info.magnolia.context.Context;
39 import info.magnolia.resourceloader.Resource;
40 import info.magnolia.ui.ValueContext;
41 import info.magnolia.ui.contentapp.async.AsyncActionExecutor;
42 import info.magnolia.ui.observation.DatasourceObservation;
43
44 import java.util.Map;
45
46 import javax.inject.Inject;
47
48 import com.vaadin.ui.Notification;
49
50
51
52
53 public class DeleteResourceCommandAction extends ResourceCommandAction {
54
55 @Inject
56 public DeleteResourceCommandAction(ResourceCommandActionDefinition definition, CommandsManager commandsManager, ValueContext<Resource> valueContext, Context context,
57 AsyncActionExecutor asyncActionExecutor, DatasourceObservation.Manual datasourceObservation
58 ) {
59 super(definition, commandsManager, valueContext, context, asyncActionExecutor, datasourceObservation);
60 }
61
62 @Override
63 public void execute() {
64 super.execute();
65 Notification.show(getDefinition().getSuccessMessage());
66 }
67
68 @Override
69 protected Map<String, Object> buildParams(Resource resource) {
70 Resource parent = getFirstResource(resource).orElse(resource).getParent();
71 Resource child = resource;
72
73 while (parent != null && !"/".equals(parent.getPath()) && parent.listChildren().size() <= 1) {
74 child = parent;
75 parent = child.getParent();
76 }
77
78 Map<String, Object> params = super.buildParams(parent);
79 params.put(MarkNodeAsDeletedCommand.DELETED_NODE_PROP_NAME, child.getName());
80 return params;
81 }
82 }