net.sf.javagimmicks.collections.event.ObservableEventSortedMap Maven / Gradle / Ivy
package net.sf.javagimmicks.collections.event;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedMap;
import net.sf.javagimmicks.collections.event.SortedMapEvent.Type;
public class ObservableEventSortedMap extends AbstractEventSortedMap
{
private static final long serialVersionUID = -4377528012758388630L;
protected transient List> _listeners;
public ObservableEventSortedMap(SortedMap decorated)
{
super(decorated);
}
public void addEventSortedMapListener(EventSortedMapListener listener)
{
if(_listeners == null)
{
_listeners = new ArrayList>();
}
_listeners.add(listener);
}
public void removeEventSortedMapListener(EventSortedMapListener listener)
{
if(_listeners != null)
{
_listeners.remove(listener);
}
}
@Override
public ObservableEventSortedMap headMap(K toKey)
{
return new ObservableEventSubSortedMap(this, getDecorated().headMap(toKey));
}
@Override
public ObservableEventSortedMap subMap(K fromKey, K toKey)
{
return new ObservableEventSubSortedMap(this, getDecorated().subMap(fromKey, toKey));
}
@Override
public ObservableEventSortedMap tailMap(K fromKey)
{
return new ObservableEventSubSortedMap(this, getDecorated().tailMap(fromKey));
}
@Override
protected void fireEntryAdded(K key, V value)
{
fireEvent(new SortedMapEvent(this, Type.ADDED, key, value));
}
@Override
protected void fireEntryRemoved(K key, V value)
{
fireEvent(new SortedMapEvent(this, Type.REMOVED, key, value));
}
@Override
protected void fireEntryUpdated(K key, V oldValue, V newValue)
{
fireEvent(new SortedMapEvent(this, Type.UPDATED, key, oldValue, newValue));
}
private void fireEvent(SortedMapEvent event)
{
if(_listeners == null)
{
return;
}
for(EventSortedMapListener listener : _listeners)
{
listener.eventOccured(event);
}
}
protected static class ObservableEventSubSortedMap extends ObservableEventSortedMap
{
private static final long serialVersionUID = 8431554623263356463L;
protected final ObservableEventSortedMap _parent;
protected ObservableEventSubSortedMap(ObservableEventSortedMap parent, SortedMap decorated)
{
super(decorated);
_parent = parent;
}
@Override
protected void fireEntryAdded(K key, V value)
{
super.fireEntryAdded(key, value);
_parent.fireEntryAdded(key, value);
}
@Override
protected void fireEntryRemoved(K key, V value)
{
super.fireEntryRemoved(key, value);
_parent.fireEntryRemoved(key, value);
}
@Override
protected void fireEntryUpdated(K key, V oldValue, V newValue)
{
super.fireEntryUpdated(key, oldValue, newValue);
_parent.fireEntryUpdated(key, oldValue, newValue);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy