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