1 package org.simantics.interop.issues;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collections;
\r
5 import java.util.List;
\r
7 import org.eclipse.swt.widgets.Display;
\r
10 * IssueReporter is singleton class that handles collecting issues.
\r
12 * TODO: how to store issues when the application is closed? Memento-based?
\r
14 * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
\r
17 public class IssueReporter implements IssueListener{
\r
19 private static IssueReporter INSTANCE;
\r
21 private List<Issue> issues = new ArrayList<Issue>();
\r
22 private List<IssueReporterListener> listeners = new ArrayList<IssueReporterListener>();
\r
25 private IssueReporter() {
\r
29 public static IssueReporter getInstance() {
\r
30 if (INSTANCE == null)
\r
31 INSTANCE = new IssueReporter();
\r
36 * Retuns list of issues.
\r
39 public List<Issue> getIssues() {
\r
40 return Collections.unmodifiableList(issues);
\r
43 public void addIssue(Issue issue) {
\r
45 issue.addListener(this);
\r
49 public void removeIssue(Issue issue) {
\r
50 issue.removeListener(this);
\r
51 issues.remove(issue);
\r
56 public void updated(Issue issue) {
\r
61 public void disposed(Issue issue) {
\r
62 issue.removeListener(this);
\r
63 issues.remove(issue);
\r
68 public void addListener(IssueReporterListener listener) {
\r
69 listeners.add(listener);
\r
72 public void removeListener(IssueReporterListener listener) {
\r
73 listeners.remove(listener);
\r
76 protected void fireAdded(final Issue issue) {
\r
77 Display.getDefault().asyncExec(new Runnable() {
\r
80 for (IssueReporterListener l : listeners)
\r
86 protected void fireRemoved(final Issue issue) {
\r
87 Display.getDefault().asyncExec(new Runnable() {
\r
90 for (IssueReporterListener l : listeners)
\r
96 protected void fireUpdated(final Issue issue) {
\r
97 Display.getDefault().asyncExec(new Runnable() {
\r
100 for (IssueReporterListener l : listeners)
\r