samples/javabeans/src/org/apidesign/javabeans/with/AbstractHighlightsContainer.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:54:22 +0200
changeset 102 461397695234
permissions -rw-r--r--
Examples from JavaBeans specification moved out of the XML text
     1 package org.apidesign.javabeans.with;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public abstract class AbstractHighlightsContainer implements HighlightsContainer {
     7     private List<HighlightsChangeListener> listeners = new ArrayList<HighlightsChangeListener>();
     8 
     9     protected AbstractHighlightsContainer() {
    10     }
    11 
    12     public abstract HighlightsSequence getHighlights(int startOffset, int endOffset);
    13 
    14     public final void addHighlightsChangeListener(HighlightsChangeListener listener) {
    15         synchronized (listeners) {
    16             listeners.add(listener);
    17         }
    18     }
    19 
    20     public final void removeHighlightsChangeListener(HighlightsChangeListener listener) {
    21         synchronized (listeners) {
    22             listeners.remove(listener);
    23         }
    24     }
    25 
    26     protected final void fireHighlightsChange(int changeStartOffset, int changeEndOffset) {
    27         List<HighlightsChangeListener> targets;
    28 
    29         synchronized (listeners) {
    30             targets = new ArrayList<HighlightsChangeListener>(listeners);
    31         }
    32 
    33         if (targets.size() > 0) {
    34             HighlightsChangeEvent evt = new HighlightsChangeEvent(this, changeStartOffset, changeEndOffset);
    35 
    36             for (HighlightsChangeListener l : targets) {
    37                 l.highlightChanged(evt);
    38             }
    39         }
    40     }
    41 }