samples/javabeans/src/org/apidesign/javabeans/with/AbstractHighlightsContainer.java
1 package org.apidesign.javabeans.with;
3 import java.util.ArrayList;
6 public abstract class AbstractHighlightsContainer implements HighlightsContainer {
7 private List<HighlightsChangeListener> listeners = new ArrayList<HighlightsChangeListener>();
9 protected AbstractHighlightsContainer() {
12 public abstract HighlightsSequence getHighlights(int startOffset, int endOffset);
14 public final void addHighlightsChangeListener(HighlightsChangeListener listener) {
15 synchronized (listeners) {
16 listeners.add(listener);
20 public final void removeHighlightsChangeListener(HighlightsChangeListener listener) {
21 synchronized (listeners) {
22 listeners.remove(listener);
26 protected final void fireHighlightsChange(int changeStartOffset, int changeEndOffset) {
27 List<HighlightsChangeListener> targets;
29 synchronized (listeners) {
30 targets = new ArrayList<HighlightsChangeListener>(listeners);
33 if (targets.size() > 0) {
34 HighlightsChangeEvent evt = new HighlightsChangeEvent(this, changeStartOffset, changeEndOffset);
36 for (HighlightsChangeListener l : targets) {
37 l.highlightChanged(evt);