]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.issues.ui/src/org/simantics/issues/ui/All.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.issues.ui / src / org / simantics / issues / ui / All.java
1 package org.simantics.issues.ui;\r
2 \r
3 import org.eclipse.swt.widgets.Event;\r
4 import org.eclipse.swt.widgets.TreeItem;\r
5 import org.simantics.browsing.ui.NodeContext;\r
6 import org.simantics.db.ReadGraph;\r
7 import org.simantics.db.Resource;\r
8 import org.simantics.db.WriteGraph;\r
9 import org.simantics.db.common.request.WriteRequest;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.db.layer0.request.PossibleActiveModel;\r
12 import org.simantics.db.layer0.variable.Variable;\r
13 import org.simantics.db.service.VirtualGraphSupport;\r
14 import org.simantics.issues.ontology.IssueResource;\r
15 import org.simantics.scenegraph.loader.ScenegraphLoaderUtils;\r
16 import org.simantics.scl.reflection.annotations.SCLValue;\r
17 import org.simantics.scl.runtime.function.FunctionImpl1;\r
18 import org.simantics.ui.SimanticsUI;\r
19 import org.simantics.ui.utils.ResourceAdaptionUtils;\r
20 import org.simantics.utils.ui.ErrorLogger;\r
21 \r
22 public class All {\r
23         \r
24     @SCLValue(type = "ReadGraph -> Resource -> Variable -> b")\r
25     public static Object issueSourceSelected(ReadGraph graph, Resource resource, Variable context) throws DatabaseException {\r
26         \r
27         return new FunctionImpl1<Object, Boolean>() {\r
28                 \r
29             @Override\r
30             public Boolean apply(Object _event) {\r
31                 \r
32                 Event event = (Event)_event;\r
33                 \r
34                 final TreeItem item = (TreeItem)event.item;\r
35                 if (item == null)\r
36                         return null\r
37 ;\r
38                 NodeContext context = (NodeContext)item.getData();\r
39                 \r
40                 final boolean checked = item.getChecked();\r
41                 final Resource issueSource = ResourceAdaptionUtils.toSingleResource(context);\r
42                 try {\r
43                     VirtualGraphSupport support = SimanticsUI.getSession().getService(VirtualGraphSupport.class);\r
44                     SimanticsUI.getSession().syncRequest(new WriteRequest(support.getWorkspacePersistent("preferences")) {\r
45                         @Override\r
46                         public void perform(WriteGraph graph) throws DatabaseException {\r
47                                 IssueResource ISSUE = IssueResource.getInstance(graph);\r
48                             if (checked) {\r
49                                 graph.claim(issueSource, ISSUE.IssueSource_Selected, issueSource);\r
50                             } else {\r
51                                 graph.deny(issueSource, ISSUE.IssueSource_Selected);\r
52                             }\r
53                         }\r
54                     });\r
55                 } catch (DatabaseException e) {\r
56                     ErrorLogger.defaultLogError(e);\r
57                 }\r
58                 \r
59                 return null;\r
60                 \r
61             }\r
62                 \r
63         };\r
64         \r
65     }\r
66 \r
67     @SCLValue(type = "ReadGraph -> Resource -> Variable -> Resource")\r
68     public static Resource activeModel(ReadGraph graph, Resource resource, Variable context) throws DatabaseException {\r
69         Resource project = ScenegraphLoaderUtils.getPossibleResourceSelection(graph, context);\r
70         return graph.sync(new PossibleActiveModel(project));\r
71     }\r
72     \r
73 }\r