]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/NewLibrary.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / NewLibrary.java
1 package org.simantics.modeling.ui.actions;\r
2 \r
3 import org.simantics.Simantics;\r
4 import org.simantics.databoard.Bindings;\r
5 import org.simantics.db.Resource;\r
6 import org.simantics.db.WriteGraph;\r
7 import org.simantics.db.common.request.WriteRequest;\r
8 import org.simantics.db.common.request.WriteResultRequest;\r
9 import org.simantics.db.common.utils.NameUtils;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.db.layer0.adapter.ActionFactory;\r
12 import org.simantics.db.layer0.util.Layer0Utils;\r
13 import org.simantics.layer0.Layer0;\r
14 import org.simantics.ui.SimanticsUI;\r
15 \r
16 public class NewLibrary implements ActionFactory {\r
17 \r
18     @Override\r
19     public Runnable create(Object target) {\r
20         if (!(target instanceof Resource))\r
21             return null;\r
22         final Resource parent = (Resource)target;\r
23         return new Runnable() {\r
24             @Override\r
25             public void run() {\r
26                 SimanticsUI.getSession().asyncRequest(new WriteRequest() {\r
27                     @Override\r
28                     public void perform(WriteGraph graph) throws DatabaseException {\r
29                         graph.markUndoPoint();\r
30                         createLibrary(graph, parent);\r
31                     }\r
32                 });\r
33             }\r
34         };\r
35     }\r
36 \r
37     public static Resource createLibrary(WriteGraph graph, Resource parent) throws DatabaseException {\r
38         graph.markUndoPoint();\r
39         Layer0 l0 = Layer0.getInstance(graph);\r
40 \r
41         Resource library = graph.newResource();\r
42         String name = NameUtils.findFreshName(graph, "Library", parent, l0.ConsistsOf);\r
43         graph.claim(library, l0.InstanceOf, null, l0.Library);\r
44         graph.addLiteral(library, l0.HasName, l0.NameOf, l0.String, name, Bindings.STRING);\r
45         graph.claim(library, l0.PartOf, parent);\r
46 \r
47         Layer0Utils.addCommentMetadata(graph, "Created new Library named " + name + ", resource " + library);\r
48 \r
49         return library;\r
50     }\r
51     \r
52     public Resource newLibrary(final Resource parent) throws DatabaseException {\r
53         Resource library = Simantics.getSession().syncRequest(new WriteResultRequest<Resource>() {\r
54 \r
55                         @Override\r
56                         public Resource perform(WriteGraph graph) throws DatabaseException {\r
57                                 Resource library = createLibrary(graph, parent);\r
58                                 return library;\r
59                         }\r
60                 });\r
61         return library;\r
62     }\r
63 }\r