Author: joern Date: Thu Nov 10 09:51:09 2011 New Revision: 1200246 URL: http://svn.apache.org/viewvc?rev=1200246&view=rev Log: UIMA-2281 Now uses SafeRunner to broadcast events.
Modified: uima/uimaj/trunk/uimaj-ep-cas-editor/src/main/java/org/apache/uima/caseditor/editor/AbstractDocument.java Modified: uima/uimaj/trunk/uimaj-ep-cas-editor/src/main/java/org/apache/uima/caseditor/editor/AbstractDocument.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-ep-cas-editor/src/main/java/org/apache/uima/caseditor/editor/AbstractDocument.java?rev=1200246&r1=1200245&r2=1200246&view=diff ============================================================================== --- uima/uimaj/trunk/uimaj-ep-cas-editor/src/main/java/org/apache/uima/caseditor/editor/AbstractDocument.java (original) +++ uima/uimaj/trunk/uimaj-ep-cas-editor/src/main/java/org/apache/uima/caseditor/editor/AbstractDocument.java Thu Nov 10 09:51:09 2011 @@ -21,10 +21,11 @@ package org.apache.uima.caseditor.editor import java.util.Collection; import java.util.Collections; -import java.util.HashSet; -import java.util.Set; import org.apache.uima.cas.FeatureStructure; +import org.eclipse.core.runtime.ListenerList; +import org.eclipse.core.runtime.SafeRunner; +import org.eclipse.jface.util.SafeRunnable; /** * Abstract base class for document implementations. @@ -33,7 +34,7 @@ public abstract class AbstractDocument i /** * Contains the change listener objects. */ - private Set<ICasDocumentListener> mListener = new HashSet<ICasDocumentListener>(); + private ListenerList mListener = new ListenerList(); /** * Registers a change listener. @@ -58,9 +59,16 @@ public abstract class AbstractDocument i * * @param annotation */ - protected void fireAddedFeatureStructure(FeatureStructure annotation) { - for (ICasDocumentListener listener : mListener) { - listener.added(annotation); + protected void fireAddedFeatureStructure(final FeatureStructure annotation) { + + for (Object listener : mListener.getListeners()) { + final ICasDocumentListener documentListener = (ICasDocumentListener) listener; + + SafeRunner.run(new SafeRunnable() { + public void run() { + documentListener.added(annotation); + } + }); } } @@ -69,9 +77,16 @@ public abstract class AbstractDocument i * * @param annotations */ - protected void fireAddedFeatureStructure(Collection<? extends FeatureStructure> annotations) { - for (ICasDocumentListener listener : mListener) { - listener.added(Collections.unmodifiableCollection(annotations)); + protected void fireAddedFeatureStructure(final Collection<? extends FeatureStructure> annotations) { + for (Object listener : mListener.getListeners()) { + + final ICasDocumentListener documentListener = (ICasDocumentListener) listener; + + SafeRunner.run(new SafeRunnable() { + public void run() { + documentListener.added(Collections.unmodifiableCollection(annotations)); + } + }); } } @@ -80,9 +95,16 @@ public abstract class AbstractDocument i * * @param annotation */ - protected void fireRemovedFeatureStructure(FeatureStructure annotation) { - for (ICasDocumentListener listener : mListener) { - listener.removed(annotation); + protected void fireRemovedFeatureStructure(final FeatureStructure annotation) { + for (Object listener : mListener.getListeners()) { + + final ICasDocumentListener documentListener = (ICasDocumentListener) listener; + + SafeRunner.run(new SafeRunnable() { + public void run() { + documentListener.removed(annotation); + } + }); } } @@ -91,9 +113,16 @@ public abstract class AbstractDocument i * * @param annotations */ - protected void fireRemovedFeatureStructure(Collection<? extends FeatureStructure> annotations) { - for (ICasDocumentListener listener : mListener) { - listener.removed(Collections.unmodifiableCollection(annotations)); + protected void fireRemovedFeatureStructure(final Collection<? extends FeatureStructure> annotations) { + for (Object listener : mListener.getListeners()) { + + final ICasDocumentListener documentListener = (ICasDocumentListener) listener; + + SafeRunner.run(new SafeRunnable() { + public void run() { + documentListener.removed(Collections.unmodifiableCollection(annotations)); + } + }); } } @@ -102,9 +131,16 @@ public abstract class AbstractDocument i * * @param annotation */ - protected void fireUpdatedFeatureStructure(FeatureStructure annotation) { - for (ICasDocumentListener listener : mListener) { - listener.updated(annotation); + protected void fireUpdatedFeatureStructure(final FeatureStructure annotation) { + for (Object listener : mListener.getListeners()) { + + final ICasDocumentListener documentListener = (ICasDocumentListener) listener; + + SafeRunner.run(new SafeRunnable() { + public void run() { + documentListener.updated(annotation); + } + }); } } @@ -113,22 +149,42 @@ public abstract class AbstractDocument i * * @param annotations */ - protected void fireUpdatedFeatureStructure(Collection<? extends FeatureStructure> annotations) { - for (ICasDocumentListener listener : mListener) { - listener.updated(Collections.unmodifiableCollection(annotations)); + protected void fireUpdatedFeatureStructure(final Collection<? extends FeatureStructure> annotations) { + for (Object listener : mListener.getListeners()) { + + final ICasDocumentListener documentListener = (ICasDocumentListener) listener; + + SafeRunner.run(new SafeRunnable() { + public void run() { + documentListener.updated(Collections.unmodifiableCollection(annotations)); + } + }); } } protected void fireChanged() { - for (ICasDocumentListener listener : mListener) { - listener.changed(); + for (Object listener : mListener.getListeners()) { + + final ICasDocumentListener documentListener = (ICasDocumentListener) listener; + + SafeRunner.run(new SafeRunnable() { + public void run() { + documentListener.changed(); + } + }); } } - protected void fireViewChanged(String oldViewName, String newViewName) { - for (ICasDocumentListener listener : mListener) { - listener.viewChanged(oldViewName, newViewName); + protected void fireViewChanged(final String oldViewName, final String newViewName) { + for (Object listener : mListener.getListeners()) { + + final ICasDocumentListener documentListener = (ICasDocumentListener) listener; + + SafeRunner.run(new SafeRunnable() { + public void run() { + documentListener.viewChanged(oldViewName, newViewName); + } + }); } } - }