/**
* Copyright (c) 2004-2006 Regents of the University of California.
* See "license-prefuse.txt" for licensing terms.
*/
package prefuse.visual;
import java.util.Iterator;
import prefuse.data.expression.Predicate;
/**
* VisualItem that represents an aggregation of one or more other VisualItems.
* AggregateItems include methods adding and removing items from the aggregate
* collection, and are backed by an {@link AggregateTable} instance.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public interface AggregateItem extends VisualItem {
/**
* Get the size of this AggregateItem, the number of visual items
* contained in the aggregation.
* @return the aggregate size
*/
public int getAggregateSize();
/**
* Indicates is a given VisualItem is contained in the aggregation.
* @param item the VisualItem to check for containment
* @return true if the given item is contained in this aggregate,
* false otherwise.
*/
public boolean containsItem(VisualItem item);
/**
* Add a VisualItem to this aggregate.
* @param item the item to add
*/
public void addItem(VisualItem item);
/**
* Remove a VisualItem from this aggregate.
* @param item the item to remove
*/
public void removeItem(VisualItem item);
/**
* Remove all items contained in this aggregate.
*/
public void removeAllItems();
/**
* Get an iterator over all the items contained in this aggregate.
* @return an iterator over the items in this aggregate
*/
public Iterator items();
/**
* Get a filtered iterator over all the items contained in this aggregate.
* @param filter a Predicate instance indicating the filter criteria
* @return an iterator over the items in this aggregate
*/
public Iterator items(Predicate filter);
} // end of interface AggregateItem