/** * Copyright (c) 2004-2006 Regents of the University of California. * See "license-prefuse.txt" for licensing terms. */ package prefuse.visual.tuple; import java.util.Iterator; import prefuse.data.Graph; import prefuse.data.Table; import prefuse.data.expression.Predicate; import prefuse.data.util.FilterIterator; import prefuse.visual.AggregateItem; import prefuse.visual.AggregateTable; import prefuse.visual.VisualItem; /** * AggregateItem implementation that uses data values from a backing * AggregateTable. * * @author <a href="http://jheer.org">jeffrey heer</a> */ public class TableAggregateItem extends TableVisualItem implements AggregateItem { /** * Initialize a new TableAggregateItem for the given table and row. This * method is used by the appropriate TupleManager instance, and should not * be called directly by client code, unless by a client-supplied custom * TupleManager. * @param table the data Table * @param graph ignored by this class * @param row the table row index */ protected void init(Table table, Graph graph, int row) { m_table = table; m_row = m_table.isValidRow(row) ? row : -1; } /** * @see prefuse.visual.AggregateItem#getAggregateSize() */ public int getAggregateSize() { return ((AggregateTable)m_table).getAggregateSize(m_row); } /** * @see prefuse.visual.AggregateItem#containsItem(prefuse.visual.VisualItem) */ public boolean containsItem(VisualItem item) { return ((AggregateTable)m_table).aggregateContains(m_row, item); } /** * @see prefuse.visual.AggregateItem#addItem(prefuse.visual.VisualItem) */ public void addItem(VisualItem item) { ((AggregateTable)m_table).addToAggregate(m_row, item); } /** * @see prefuse.visual.AggregateItem#removeItem(prefuse.visual.VisualItem) */ public void removeItem(VisualItem item) { ((AggregateTable)m_table).removeFromAggregate(m_row, item); } /** * @see prefuse.visual.AggregateItem#removeAllItems() */ public void removeAllItems() { ((AggregateTable)m_table).removeAllFromAggregate(m_row); } /** * @see prefuse.visual.AggregateItem#items() */ public Iterator items() { return ((AggregateTable)m_table).aggregatedTuples(m_row); } /** * @see prefuse.visual.AggregateItem#items() */ public Iterator items(Predicate filter) { return new FilterIterator( ((AggregateTable)m_table).aggregatedTuples(m_row), filter); } } // end of class TableAggregateItem