samples/javabeans/src/org/apidesign/javabeans/with/AbstractHighlightsContainer.java
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/javabeans/src/org/apidesign/javabeans/with/AbstractHighlightsContainer.java Sat Jun 14 09:54:22 2008 +0200
1.3 @@ -0,0 +1,41 @@
1.4 +package org.apidesign.javabeans.with;
1.5 +
1.6 +import java.util.ArrayList;
1.7 +import java.util.List;
1.8 +
1.9 +public abstract class AbstractHighlightsContainer implements HighlightsContainer {
1.10 + private List<HighlightsChangeListener> listeners = new ArrayList<HighlightsChangeListener>();
1.11 +
1.12 + protected AbstractHighlightsContainer() {
1.13 + }
1.14 +
1.15 + public abstract HighlightsSequence getHighlights(int startOffset, int endOffset);
1.16 +
1.17 + public final void addHighlightsChangeListener(HighlightsChangeListener listener) {
1.18 + synchronized (listeners) {
1.19 + listeners.add(listener);
1.20 + }
1.21 + }
1.22 +
1.23 + public final void removeHighlightsChangeListener(HighlightsChangeListener listener) {
1.24 + synchronized (listeners) {
1.25 + listeners.remove(listener);
1.26 + }
1.27 + }
1.28 +
1.29 + protected final void fireHighlightsChange(int changeStartOffset, int changeEndOffset) {
1.30 + List<HighlightsChangeListener> targets;
1.31 +
1.32 + synchronized (listeners) {
1.33 + targets = new ArrayList<HighlightsChangeListener>(listeners);
1.34 + }
1.35 +
1.36 + if (targets.size() > 0) {
1.37 + HighlightsChangeEvent evt = new HighlightsChangeEvent(this, changeStartOffset, changeEndOffset);
1.38 +
1.39 + for (HighlightsChangeListener l : targets) {
1.40 + l.highlightChanged(evt);
1.41 + }
1.42 + }
1.43 + }
1.44 +}