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.detail.action;
35
36 import info.magnolia.ui.api.action.AbstractAction;
37 import info.magnolia.ui.api.action.ActionExecutionException;
38 import info.magnolia.ui.api.location.LocationController;
39 import info.magnolia.ui.contentapp.detail.DetailLocation;
40 import info.magnolia.ui.contentapp.detail.DetailView;
41 import info.magnolia.ui.vaadin.integration.contentconnector.ContentConnector;
42 import info.magnolia.ui.vaadin.integration.contentconnector.SupportsCreation;
43
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47 import com.vaadin.v7.data.Item;
48
49
50
51
52
53
54
55
56
57
58
59 @Deprecated
60 public class CreateItemAction extends AbstractAction<CreateItemActionDefinition> {
61
62 private static final Logger log = LoggerFactory.getLogger(CreateItemAction.class);
63
64 private final LocationController locationController;
65 private final Item parentItem;
66 private final ContentConnector contentConnector;
67
68 public CreateItemAction(CreateItemActionDefinition definition, LocationController locationController, Item parentItem, ContentConnector contentConnector) {
69 super(definition);
70 this.locationController = locationController;
71 this.parentItem = parentItem;
72 this.contentConnector = contentConnector;
73 }
74
75 @Override
76 public void execute() throws ActionExecutionException {
77
78 Object parentId = contentConnector.getItemId(parentItem);
79 if (!contentConnector.canHandleItem(parentId)) {
80 log.warn("ContentConnector {{}} cannot handle parent itemId {{}}. No action will be performed.", contentConnector, String.valueOf(parentId));
81 return;
82 }
83 if (!(contentConnector instanceof SupportsCreation)) {
84 log.warn("ContentConnector {{}} doesn't support creation of new items. No action will be performed.", contentConnector);
85 return;
86 }
87
88 String path = contentConnector.getItemUrlFragment(((SupportsCreation)contentConnector).getNewItemId(parentId, getDefinition().getNodeType()));
89 DetailLocation location = new DetailLocation(getDefinition().getAppName(), getDefinition().getSubAppId(), DetailView.ViewType.EDIT, path, null);
90 locationController.goTo(location);
91 }
92 }