]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.interop/src/org/simantics/interop/issues/AbstractIssue.java
Issues implementation
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / issues / AbstractIssue.java
1 package org.simantics.interop.issues;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 \r
6 import org.eclipse.swt.widgets.Display;\r
7 \r
8 public abstract class AbstractIssue implements Issue{\r
9         \r
10         private String description;\r
11         private List<IssueListener> listeners =  new ArrayList<IssueListener>();\r
12         \r
13         @Override\r
14         public String getDescription() {\r
15                 return description;\r
16         }\r
17         \r
18         public void setDescription(String description) {\r
19                 this.description = description;\r
20                 fireUpdated();\r
21         }\r
22         \r
23         protected void fireUpdated() {\r
24                 Display.getDefault().asyncExec(new Runnable() {\r
25                         @Override\r
26                         public void run() {\r
27                                 for (IssueListener l : listeners) {\r
28                                         l.updated(AbstractIssue.this);\r
29                                 }\r
30                         }\r
31                 });\r
32         }\r
33         \r
34         protected void fireDisposed() {\r
35                 Display.getDefault().asyncExec(new Runnable() {\r
36                         @Override\r
37                         public void run() {\r
38                                 List<IssueListener> list = new ArrayList<IssueListener>();\r
39                                 list.addAll(listeners);\r
40                                 for (IssueListener l : list) {\r
41                                         l.disposed(AbstractIssue.this);\r
42                                 }\r
43                         }\r
44                 });\r
45         }\r
46         \r
47         @Override\r
48         public void addListener(IssueListener listener) {\r
49                 listeners.add(listener);\r
50         }\r
51         \r
52         @Override\r
53         public void removeListener(IssueListener listener) {\r
54                 listeners.remove(listener);\r
55         }\r
56         \r
57         @Override\r
58         public void dispose() {\r
59                 fireDisposed();\r
60         }\r
61 \r
62 }\r