--- /dev/null
+package org.simantics.issues.ui;\r
+\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.swt.widgets.TreeItem;\r
+import org.simantics.browsing.ui.NodeContext;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.request.PossibleActiveModel;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.db.service.VirtualGraphSupport;\r
+import org.simantics.issues.ontology.IssueResource;\r
+import org.simantics.scenegraph.loader.ScenegraphLoaderUtils;\r
+import org.simantics.scl.reflection.annotations.SCLValue;\r
+import org.simantics.scl.runtime.function.FunctionImpl1;\r
+import org.simantics.ui.SimanticsUI;\r
+import org.simantics.ui.utils.ResourceAdaptionUtils;\r
+import org.simantics.utils.ui.ErrorLogger;\r
+\r
+public class All {\r
+ \r
+ @SCLValue(type = "ReadGraph -> Resource -> Variable -> b")\r
+ public static Object issueSourceSelected(ReadGraph graph, Resource resource, Variable context) throws DatabaseException {\r
+ \r
+ return new FunctionImpl1<Object, Boolean>() {\r
+ \r
+ @Override\r
+ public Boolean apply(Object _event) {\r
+ \r
+ Event event = (Event)_event;\r
+ \r
+ final TreeItem item = (TreeItem)event.item;\r
+ if (item == null)\r
+ return null\r
+;\r
+ NodeContext context = (NodeContext)item.getData();\r
+ \r
+ final boolean checked = item.getChecked();\r
+ final Resource issueSource = ResourceAdaptionUtils.toSingleResource(context);\r
+ try {\r
+ VirtualGraphSupport support = SimanticsUI.getSession().getService(VirtualGraphSupport.class);\r
+ SimanticsUI.getSession().syncRequest(new WriteRequest(support.getWorkspacePersistent("preferences")) {\r
+ @Override\r
+ public void perform(WriteGraph graph) throws DatabaseException {\r
+ IssueResource ISSUE = IssueResource.getInstance(graph);\r
+ if (checked) {\r
+ graph.claim(issueSource, ISSUE.IssueSource_Selected, issueSource);\r
+ } else {\r
+ graph.deny(issueSource, ISSUE.IssueSource_Selected);\r
+ }\r
+ }\r
+ });\r
+ } catch (DatabaseException e) {\r
+ ErrorLogger.defaultLogError(e);\r
+ }\r
+ \r
+ return null;\r
+ \r
+ }\r
+ \r
+ };\r
+ \r
+ }\r
+\r
+ @SCLValue(type = "ReadGraph -> Resource -> Variable -> Resource")\r
+ public static Resource activeModel(ReadGraph graph, Resource resource, Variable context) throws DatabaseException {\r
+ Resource project = ScenegraphLoaderUtils.getPossibleResourceSelection(graph, context);\r
+ return graph.sync(new PossibleActiveModel(project));\r
+ }\r
+ \r
+}\r