/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.ui.common.viewsupport;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
/**
* A <code>ViewerFilter</code> that can contain other filters.
* @since 8.0
*/
public class CompositeViewerFilter extends ViewerFilter {
///////////////////////////////////////////////////////////////////////////////////////////////
// FIELDS
///////////////////////////////////////////////////////////////////////////////////////////////
private Set<ViewerFilter> filters = new HashSet<ViewerFilter>(5);
///////////////////////////////////////////////////////////////////////////////////////////////
// METHODS
///////////////////////////////////////////////////////////////////////////////////////////////
/**
* Adds the specified filter.
* @param theFilter the filter being added
* @since 5.0.2
*/
public void addFilter(ViewerFilter theFilter) {
this.filters.add(theFilter);
}
/**
* Removes the specified filter.
* @param theFilter the filter being removed
* @return <code>true</code> if the filter was successfully removed; <code>false</code> otherwise.
* @since 5.0.2
*/
public boolean removeFilter(ViewerFilter theFilter) {
return this.filters.remove(theFilter);
}
/**
* @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
* @since 5.0.2
*/
@Override
public boolean select(Viewer theViewer,
Object theParentElement,
Object theElement) {
boolean result = true;
Iterator<ViewerFilter> itr = this.filters.iterator();
while (itr.hasNext()) {
ViewerFilter filter = itr.next();
if (!filter.select(theViewer, theParentElement, theElement)) {
result = false;
break;
}
}
return result;
}
}