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
jtulach@102
     1
package org.apidesign.javabeans.with;
jtulach@102
     2
jtulach@102
     3
import java.util.ArrayList;
jtulach@102
     4
import java.util.List;
jtulach@102
     5
jtulach@102
     6
public abstract class AbstractHighlightsContainer implements HighlightsContainer {
jtulach@102
     7
    private List<HighlightsChangeListener> listeners = new ArrayList<HighlightsChangeListener>();
jtulach@102
     8
jtulach@102
     9
    protected AbstractHighlightsContainer() {
jtulach@102
    10
    }
jtulach@102
    11
jtulach@102
    12
    public abstract HighlightsSequence getHighlights(int startOffset, int endOffset);
jtulach@102
    13
jtulach@102
    14
    public final void addHighlightsChangeListener(HighlightsChangeListener listener) {
jtulach@102
    15
        synchronized (listeners) {
jtulach@102
    16
            listeners.add(listener);
jtulach@102
    17
        }
jtulach@102
    18
    }
jtulach@102
    19
jtulach@102
    20
    public final void removeHighlightsChangeListener(HighlightsChangeListener listener) {
jtulach@102
    21
        synchronized (listeners) {
jtulach@102
    22
            listeners.remove(listener);
jtulach@102
    23
        }
jtulach@102
    24
    }
jtulach@102
    25
jtulach@102
    26
    protected final void fireHighlightsChange(int changeStartOffset, int changeEndOffset) {
jtulach@102
    27
        List<HighlightsChangeListener> targets;
jtulach@102
    28
jtulach@102
    29
        synchronized (listeners) {
jtulach@102
    30
            targets = new ArrayList<HighlightsChangeListener>(listeners);
jtulach@102
    31
        }
jtulach@102
    32
jtulach@102
    33
        if (targets.size() > 0) {
jtulach@102
    34
            HighlightsChangeEvent evt = new HighlightsChangeEvent(this, changeStartOffset, changeEndOffset);
jtulach@102
    35
jtulach@102
    36
            for (HighlightsChangeListener l : targets) {
jtulach@102
    37
                l.highlightChanged(evt);
jtulach@102
    38
            }
jtulach@102
    39
        }
jtulach@102
    40
    }
jtulach@102
    41
}