package com.traxel.lumbermill.filter;
import com.traxel.lumbermill.event.Event;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;
public class FilterSet implements Filter, FilterListener {
private final Set FILTERS = Collections.synchronizedSet(new LinkedHashSet());
private final Set LISTENERS = Collections.synchronizedSet(new HashSet());
private boolean active = true;
return new Vector(FILTERS);
}
@Override
public boolean isVisible(
final Event event) {
synchronized (FILTERS) {
final Iterator it;
Filter filter;
it = FILTERS.iterator();
while (it.hasNext()) {
filter = (Filter)it.next();
if (filter.isActive() && !filter.isVisible(event)) {
return false;
}
}
}
return true;
}
@Override
synchronized (LISTENERS) {
LISTENERS.add(listener);
}
}
@Override
synchronized (LISTENERS) {
LISTENERS.remove(listener);
}
}
@Override
return "Filter Set";
}
@Override
fireFilterEvent(event);
}
public void add(
final Filter filter) {
synchronized (FILTERS) {
filter.addFilterListener(this);
FILTERS.add(filter);
fireFilterAdded(filter);
}
}
public void remove(
final Filter filter) {
synchronized (FILTERS) {
filter.removeFilterListener(this);
FILTERS.remove(filter);
fireFilterRemoved(filter);
}
}
final Set clone = new HashSet(FILTERS);
for (final Object f : clone) {
remove((Filter)f);
}
}
final FilterEvent event;
event = new FilterEvent(source);
fireFilterEvent(event);
}
final FilterEvent event;
event = new FilterEvent(source);
fireFilterEvent(event);
}
synchronized (LISTENERS) {
final Iterator it;
FilterListener listener;
it = LISTENERS.iterator();
while (it.hasNext()) {
listener = (FilterListener)it.next();
listener.filterChange(event);
}
}
}
@Override
return active;
}
@Override
public void setActive(
final boolean active) {
this.active = active;
}
}