]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.interop/src/org/simantics/interop/issues/GraphIssue.java
refs #3138
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / issues / GraphIssue.java
1 package org.simantics.interop.issues;\r
2 \r
3 import org.simantics.db.AsyncReadGraph;\r
4 import org.simantics.db.ReadGraph;\r
5 import org.simantics.db.procedure.AsyncListener;\r
6 import org.simantics.db.request.Read;\r
7 import org.simantics.utils.ui.ErrorLogger;\r
8 \r
9 /**\r
10  * An issue whose state can be updated with an query\r
11  * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
12  *\r
13  */\r
14 public class GraphIssue extends AbstractIssue {\r
15         \r
16         private boolean disposed = false;\r
17         \r
18         /**\r
19          * Creates an new Graph Issue\r
20          * @param g access to graph\r
21          * @param request Request that returns true if issue is still valid. If the request returns false, the issue is disposed.\r
22          * @param description\r
23          */\r
24         public GraphIssue(ReadGraph g, Read<Boolean> request, String description) {\r
25                 setDescription(description);\r
26                 IssueReporter.getInstance().addIssue(this);\r
27                 setRequest(g, request);\r
28         }\r
29         \r
30         public GraphIssue(String description) {\r
31                 setDescription(description);\r
32                 IssueReporter.getInstance().addIssue(this);\r
33         }\r
34         \r
35         public void setRequest(ReadGraph g, Read<Boolean> request) {\r
36                 g.asyncRequest(request,new AsyncListener<Boolean>() {\r
37                         @Override\r
38                         public void execute(AsyncReadGraph graph, Boolean result) {\r
39                                 if (result == null)\r
40                                         return;\r
41                                 \r
42                                 if (!result) {\r
43                                         dispose();\r
44                                 }\r
45                         }\r
46                         \r
47                         @Override\r
48                         public void exception(AsyncReadGraph graph, Throwable throwable) {\r
49                                 ErrorLogger.defaultLogError("Error in GraphIssue handling, disposing issue \"" + getDescription()+"\"", throwable);\r
50                                 dispose();      \r
51                         }\r
52                         \r
53                         @Override\r
54                         public boolean isDisposed() {\r
55                                 return disposed;\r
56                         }\r
57                 });\r
58         }\r
59         \r
60         @Override\r
61         public void showInEditor() {\r
62         \r
63         }\r
64         \r
65         @Override\r
66         public boolean supportsEditor() {\r
67                 return false;\r
68         }\r
69         \r
70         @Override\r
71         public void dispose() {\r
72                 this.disposed = true;\r
73                 super.dispose();\r
74         }\r
75 \r
76 }\r