diff -r 000000000000 -r 461397695234 samples/javabeans/src/org/apidesign/javabeans/with/AbstractHighlightsContainer.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/javabeans/src/org/apidesign/javabeans/with/AbstractHighlightsContainer.java Sat Jun 14 09:54:22 2008 +0200 @@ -0,0 +1,41 @@ +package org.apidesign.javabeans.with; + +import java.util.ArrayList; +import java.util.List; + +public abstract class AbstractHighlightsContainer implements HighlightsContainer { + private List listeners = new ArrayList(); + + protected AbstractHighlightsContainer() { + } + + public abstract HighlightsSequence getHighlights(int startOffset, int endOffset); + + public final void addHighlightsChangeListener(HighlightsChangeListener listener) { + synchronized (listeners) { + listeners.add(listener); + } + } + + public final void removeHighlightsChangeListener(HighlightsChangeListener listener) { + synchronized (listeners) { + listeners.remove(listener); + } + } + + protected final void fireHighlightsChange(int changeStartOffset, int changeEndOffset) { + List targets; + + synchronized (listeners) { + targets = new ArrayList(listeners); + } + + if (targets.size() > 0) { + HighlightsChangeEvent evt = new HighlightsChangeEvent(this, changeStartOffset, changeEndOffset); + + for (HighlightsChangeListener l : targets) { + l.highlightChanged(evt); + } + } + } +}