]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/LockAction.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / LockAction.java
1 package org.simantics.modeling.ui.actions;\r
2 \r
3 import org.simantics.Simantics;\r
4 import org.simantics.db.Resource;\r
5 import org.simantics.db.WriteGraph;\r
6 import org.simantics.db.common.request.WriteRequest;\r
7 import org.simantics.db.common.utils.Logger;\r
8 import org.simantics.db.exception.DatabaseException;\r
9 import org.simantics.db.layer0.adapter.ActionFactory;\r
10 import org.simantics.structural.stubs.StructuralResource2;\r
11 \r
12 public class LockAction implements ActionFactory {\r
13 \r
14     @Override\r
15     public Runnable create(Object target) {\r
16 \r
17         if (!(target instanceof Resource))\r
18             return null;\r
19 \r
20         final Resource resource = (Resource)target;\r
21 \r
22         return new Runnable() {\r
23             @Override\r
24             public void run() {\r
25                 try {\r
26                     Simantics.getSession().markUndoPoint();\r
27                     Simantics.getSession().syncRequest(new WriteRequest() {\r
28                         @Override\r
29                         public void perform(WriteGraph graph) throws DatabaseException {\r
30                             StructuralResource2 STR = StructuralResource2.getInstance(graph);\r
31                             graph.claim(resource, STR.ComponentType_Locked, resource);\r
32                         }\r
33                     });\r
34                 } catch (DatabaseException e) {\r
35                     Logger.defaultLogError(e);\r
36                 }\r
37             }\r
38         };\r
39     }\r
40 \r
41 }\r