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.resourceloader.Resource;
37 import info.magnolia.resourceloader.ResourceOrigin;
38 import info.magnolia.resourceloader.layered.LayeredResource;
39 import info.magnolia.ui.api.action.ActionExecutionException;
40 import info.magnolia.ui.api.location.LocationController;
41 import info.magnolia.ui.contentapp.detail.DetailLocation;
42 import info.magnolia.ui.contentapp.detail.DetailView.ViewType;
43 import info.magnolia.ui.contentapp.detail.action.EditItemActionDefinition;
44
45 import com.vaadin.data.Item;
46
47
48
49
50
51
52
53 public class OpenResourceAction extends AbstractResourceAction<EditItemActionDefinition> {
54
55 static final String DETAIL_SUBAPP_NAME = "detail";
56 static final String HOTFIX_SUBAPP_NAME = "hotfix";
57
58 private final Item resourceItem;
59 private final LocationController locationController;
60
61 public OpenResourceAction(EditItemActionDefinition definition, Item resourceItem, LocationController locationController, ResourceOrigin resourceOrigin) {
62 super(definition, resourceOrigin);
63 this.resourceItem = resourceItem;
64 this.locationController = locationController;
65 }
66
67 @Override
68 public void execute() throws ActionExecutionException {
69
70 Resource resource = unwrapResource(resourceItem);
71 String originName = resource instanceof LayeredResource ?
72 ((LayeredResource) resource).getFirst().getOrigin().getName() :
73 resource.getOrigin().getName();
74
75 final String path = resource.getPath();
76 final String appName = getDefinition().getAppName();
77 final String subAppId;
78 final ViewType viewType;
79 if (originName.equals("jcr")) {
80 subAppId = HOTFIX_SUBAPP_NAME;
81 viewType = ViewType.EDIT;
82 } else {
83 subAppId = DETAIL_SUBAPP_NAME;
84 viewType = ViewType.VIEW;
85 }
86
87 DetailLocation location = new DetailLocation(appName, subAppId, viewType, path, null);
88 locationController.goTo(location);
89 }
90
91 }