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.jcrbrowser.app.action;
35
36 import info.magnolia.jcr.util.NodeNameHelper;
37 import info.magnolia.jcr.util.NodeTypes;
38 import info.magnolia.ui.CloseHandler;
39 import info.magnolia.ui.ValueContext;
40 import info.magnolia.ui.api.action.AbstractAction;
41 import info.magnolia.ui.contentapp.action.AddNodeAction;
42 import info.magnolia.ui.contentapp.action.AddNodeActionDefinition;
43 import info.magnolia.ui.datasource.jcr.JcrDatasource;
44 import info.magnolia.ui.editor.FormView;
45
46 import javax.inject.Inject;
47 import javax.jcr.Node;
48
49
50
51
52 public class CreateNodeAction extends AbstractAction<CreateNodeActionDefinition> {
53
54 static final String NAME_PID = "name";
55 static final String TYPE_PID = "type";
56
57 private final CloseHandler closeHandler;
58 private final ValueContext<Node> valueContext;
59 private final NodeNameHelper nodeNameHelper;
60 private final JcrDatasource jcrDatasource;
61 private final FormView<Node> form;
62
63 @Inject
64 public CreateNodeAction(CreateNodeActionDefinition definition, CloseHandler closeHandler, ValueContext<Node> valueContext,
65 NodeNameHelper nodeNameHelper, JcrDatasource jcrDatasource, FormView<Node> form) {
66 super(definition);
67 this.closeHandler = closeHandler;
68 this.valueContext = valueContext;
69 this.nodeNameHelper = nodeNameHelper;
70 this.jcrDatasource = jcrDatasource;
71 this.form = form;
72 }
73
74 @Override
75 public void execute() {
76 String name = (String) form.getPropertyValue(NAME_PID).orElse(nodeNameHelper.getValidatedName(null));
77 String type = (String) form.getPropertyValue(TYPE_PID).orElse(NodeTypes.Content.NAME);
78
79 AddNodeActionDefinition addNodeActionDefinition = new AddNodeActionDefinition();
80 addNodeActionDefinition.setBaseName(name);
81 addNodeActionDefinition.setNodeType(type);
82
83 new AddNodeAction(addNodeActionDefinition, valueContext, nodeNameHelper, jcrDatasource).execute();
84
85 closeHandler.close();
86 }
87 }