![JAR search and dependency download from the Maven repository](/logo.png)
net.sf.javagimmicks.collections.event.ObservableEventNavigableSet Maven / Gradle / Ivy
package net.sf.javagimmicks.collections.event;
import java.util.ArrayList;
import java.util.List;
import java.util.NavigableSet;
import java.util.SortedSet;
import net.sf.javagimmicks.collections.event.NavigableSetEvent.Type;
public class ObservableEventNavigableSet extends AbstractEventNavigableSet
{
private static final long serialVersionUID = -6812183248508925850L;
protected transient List> _listeners;
public ObservableEventNavigableSet(NavigableSet decorated)
{
super(decorated);
}
public void addEventNavigableSetListener(EventNavigableSetListener listener)
{
if(_listeners == null)
{
_listeners = new ArrayList>();
}
_listeners.add(listener);
}
public void removeEventNavigableSetListener(EventNavigableSetListener listener)
{
if(_listeners != null)
{
_listeners.remove(listener);
}
}
@Override
public ObservableEventNavigableSet descendingSet()
{
return new ObservableEventSubNavigableSet(this, getDecorated().descendingSet());
}
@Override
public ObservableEventNavigableSet headSet(E toElement, boolean inclusive)
{
return new ObservableEventSubNavigableSet(this, getDecorated().headSet(toElement, inclusive));
}
@Override
public ObservableEventNavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
{
return new ObservableEventSubNavigableSet(this, getDecorated().subSet(fromElement, fromInclusive, toElement, toInclusive));
}
@Override
public ObservableEventNavigableSet tailSet(E fromElement, boolean inclusive)
{
return new ObservableEventSubNavigableSet(this, getDecorated().tailSet(fromElement, inclusive));
}
@Override
public ObservableEventSortedSet headSet(E toElement)
{
return new ObservableEventSubSortedSet(this, getDecorated().headSet(toElement));
}
@Override
public ObservableEventSortedSet subSet(E fromElement, E toElement)
{
return new ObservableEventSubSortedSet(this, getDecorated().subSet(fromElement, toElement));
}
@Override
public ObservableEventSortedSet tailSet(E fromElement)
{
return new ObservableEventSubSortedSet(this, getDecorated().tailSet(fromElement));
}
@Override
protected void fireElementAdded(E element)
{
fireEvent(new NavigableSetEvent(this, Type.ADDED, element));
}
@Override
protected void fireElementReadded(E element)
{
fireEvent(new NavigableSetEvent(this, Type.READDED, element));
}
@Override
protected void fireElementRemoved(E element)
{
fireEvent(new NavigableSetEvent(this, Type.REMOVED, element));
}
private void fireEvent(NavigableSetEvent event)
{
if(_listeners == null)
{
return;
}
for(EventNavigableSetListener listener : _listeners)
{
listener.eventOccured(event);
}
}
protected static class ObservableEventSubNavigableSet extends ObservableEventNavigableSet
{
private static final long serialVersionUID = -4787480179100005627L;
protected final ObservableEventNavigableSet _parent;
protected ObservableEventSubNavigableSet(ObservableEventNavigableSet parent, NavigableSet decorated)
{
super(decorated);
_parent = parent;
}
@Override
protected void fireElementAdded(E element)
{
super.fireElementAdded(element);
_parent.fireElementAdded(element);
}
@Override
protected void fireElementReadded(E element)
{
super.fireElementReadded(element);
_parent.fireElementReadded(element);
}
@Override
protected void fireElementRemoved(E element)
{
super.fireElementRemoved(element);
_parent.fireElementRemoved(element);
}
}
protected static class ObservableEventSubSortedSet extends ObservableEventSortedSet
{
private static final long serialVersionUID = -4787480179100005627L;
protected final ObservableEventNavigableSet _parent;
protected ObservableEventSubSortedSet(ObservableEventNavigableSet parent, SortedSet decorated)
{
super(decorated);
_parent = parent;
}
@Override
protected void fireElementAdded(E element)
{
super.fireElementAdded(element);
_parent.fireElementAdded(element);
}
@Override
protected void fireElementReadded(E element)
{
super.fireElementReadded(element);
_parent.fireElementReadded(element);
}
@Override
protected void fireElementRemoved(E element)
{
super.fireElementRemoved(element);
_parent.fireElementRemoved(element);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy