package prefuse.visual.tuple;
import java.awt.BasicStroke;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import prefuse.Visualization;
import prefuse.data.Graph;
import prefuse.data.Table;
import prefuse.data.Tuple;
import prefuse.data.tuple.TableTuple;
import prefuse.data.tuple.TupleSet;
import prefuse.render.Renderer;
import prefuse.visual.VisualItem;
import prefuse.visual.VisualTable;
/**
* VisualItem implementation that uses data values from a backing VisualTable.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public class TableVisualItem extends TableTuple implements VisualItem {
/**
* Initialize a new TableVisualItem 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.VisualItem#getVisualization()
*/
public Visualization getVisualization() {
return ((VisualTable)m_table).getVisualization();
}
/**
* @see prefuse.visual.VisualItem#getGroup()
*/
public String getGroup() {
return ((VisualTable)m_table).getGroup();
}
/**
* @see prefuse.visual.VisualItem#isInGroup(java.lang.String)
*/
public boolean isInGroup(String group) {
return getVisualization().isInGroup(this, group);
}
/**
* @see prefuse.visual.VisualItem#getSourceData()
*/
public TupleSet getSourceData() {
VisualTable vt = (VisualTable)m_table;
return vt.getVisualization().getSourceData(vt.getGroup());
}
/**
* @see prefuse.visual.VisualItem#getSourceTuple()
*/
public Tuple getSourceTuple() {
VisualTable vt = (VisualTable)m_table;
return vt.getVisualization().getSourceTuple(this);
}
/**
* @see java.lang.Object#toString()
*/
public String toString() {
StringBuffer sbuf = new StringBuffer();
sbuf.append("VisualItem[").append(getGroup());
sbuf.append(",").append(m_row).append(',');
VisualTable vt = (VisualTable)m_table;
int local = vt.getLocalColumnCount();
int inherited = vt.getColumnCount()-local;
for ( int i=0; i<inherited; ++i ) {
if ( i > 0 ) sbuf.append(',');
String name = vt.getColumnName(local+i);
sbuf.append(name);
sbuf.append('=');
if ( vt.canGetString(name) )
sbuf.append(vt.getString(m_row, name));
else
sbuf.append(vt.get(m_row, name).toString());
}
sbuf.append(']');
return sbuf.toString();
}
// ------------------------------------------------------------------------
// VisualItem Methods
/**
* @see prefuse.visual.VisualItem#render(java.awt.Graphics2D)
*/
public void render(Graphics2D g) {
getRenderer().render(g, this);
}
/**
* @see prefuse.visual.VisualItem#getRenderer()
*/
public Renderer getRenderer() {
return getVisualization().getRenderer(this);
}
/**
* @see prefuse.visual.VisualItem#validateBounds()
*/
public Rectangle2D validateBounds() {
if ( isValidated() ) return getBounds();
Visualization v = getVisualization();
// set the new bounds from the renderer and validate
getRenderer().setBounds(this);
setValidated(true);
// report damage from the new bounds and return
Rectangle2D bounds = getBounds();
v.damageReport(this, bounds);
return bounds;
}
// -- Boolean Flags -------------------------------------------------------
/**
* @see prefuse.visual.VisualItem#isValidated()
*/
public boolean isValidated() {
return ((VisualTable)m_table).isValidated(m_row);
}
/**
* @see prefuse.visual.VisualItem#setValidated(boolean)
*/
public void setValidated(boolean value) {
((VisualTable)m_table).setValidated(m_row, value);
}
/**
* @see prefuse.visual.VisualItem#isVisible()
*/
public boolean isVisible() {
return ((VisualTable)m_table).isVisible(m_row);
}
/**
* @see prefuse.visual.VisualItem#setVisible(boolean)
*/
public void setVisible(boolean value) {
((VisualTable)m_table).setVisible(m_row, value);
}
/**
* @see prefuse.visual.VisualItem#isStartVisible()
*/
public boolean isStartVisible() {
return ((VisualTable)m_table).isStartVisible(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStartVisible(boolean)
*/
public void setStartVisible(boolean value) {
((VisualTable)m_table).setStartVisible(m_row, value);
}
/**
* @see prefuse.visual.VisualItem#isEndVisible()
*/
public boolean isEndVisible() {
return ((VisualTable)m_table).isEndVisible(m_row);
}
/**
* @see prefuse.visual.VisualItem#setEndVisible(boolean)
*/
public void setEndVisible(boolean value) {
((VisualTable)m_table).setEndVisible(m_row, value);
}
/**
* @see prefuse.visual.VisualItem#isInteractive()
*/
public boolean isInteractive() {
return ((VisualTable)m_table).isInteractive(m_row);
}
/**
* @see prefuse.visual.VisualItem#setInteractive(boolean)
*/
public void setInteractive(boolean value) {
((VisualTable)m_table).setInteractive(m_row, value);
}
/**
* @see prefuse.visual.VisualItem#isExpanded()
*/
public boolean isExpanded() {
return ((VisualTable)m_table).isExpanded(m_row);
}
/**
* @see prefuse.visual.VisualItem#setExpanded(boolean)
*/
public void setExpanded(boolean value) {
((VisualTable)m_table).setExpanded(m_row, value);
}
/**
* @see prefuse.visual.VisualItem#isFixed()
*/
public boolean isFixed() {
return ((VisualTable)m_table).isFixed(m_row);
}
/**
* @see prefuse.visual.VisualItem#setFixed(boolean)
*/
public void setFixed(boolean value) {
((VisualTable)m_table).setFixed(m_row, value);
}
/**
* @see prefuse.visual.VisualItem#isHighlighted()
*/
public boolean isHighlighted() {
return ((VisualTable)m_table).isHighlighted(m_row);
}
/**
* @see prefuse.visual.VisualItem#setHighlighted(boolean)
*/
public void setHighlighted(boolean value) {
((VisualTable)m_table).setHighlighted(m_row, value);
}
/**
* @see prefuse.visual.VisualItem#isHover()
*/
public boolean isHover() {
return ((VisualTable)m_table).isHover(m_row);
}
/**
* @see prefuse.visual.VisualItem#setHover(boolean)
*/
public void setHover(boolean value) {
((VisualTable)m_table).setHover(m_row, value);
}
// ------------------------------------------------------------------------
/**
* @see prefuse.visual.VisualItem#getX()
*/
public double getX() {
return ((VisualTable)m_table).getX(m_row);
}
/**
* @see prefuse.visual.VisualItem#setX(double)
*/
public void setX(double x) {
((VisualTable)m_table).setX(m_row, x);
}
/**
* @see prefuse.visual.VisualItem#getY()
*/
public double getY() {
return ((VisualTable)m_table).getY(m_row);
}
/**
* @see prefuse.visual.VisualItem#setY(double)
*/
public void setY(double y) {
((VisualTable)m_table).setY(m_row, y);
}
/**
* @see prefuse.visual.VisualItem#getStartX()
*/
public double getStartX() {
return ((VisualTable)m_table).getStartX(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStartX(double)
*/
public void setStartX(double x) {
((VisualTable)m_table).setStartX(m_row, x);
}
/**
* @see prefuse.visual.VisualItem#getStartY()
*/
public double getStartY() {
return ((VisualTable)m_table).getStartY(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStartY(double)
*/
public void setStartY(double y) {
((VisualTable)m_table).setStartY(m_row, y);
}
/**
* @see prefuse.visual.VisualItem#getEndX()
*/
public double getEndX() {
return ((VisualTable)m_table).getEndX(m_row);
}
/**
* @see prefuse.visual.VisualItem#setEndX(double)
*/
public void setEndX(double x) {
((VisualTable)m_table).setEndX(m_row, x);
}
/**
* @see prefuse.visual.VisualItem#getEndY()
*/
public double getEndY() {
return ((VisualTable)m_table).getEndY(m_row);
}
/**
* @see prefuse.visual.VisualItem#setEndY(double)
*/
public void setEndY(double y) {
((VisualTable)m_table).setEndY(m_row, y);
}
/**
* @see prefuse.visual.VisualItem#getBounds()
*/
public Rectangle2D getBounds() {
if ( !isValidated() ) {
return validateBounds();
}
return ((VisualTable)m_table).getBounds(m_row);
}
/**
* @see prefuse.visual.VisualItem#setBounds(double, double, double, double)
*/
public void setBounds(double x, double y, double w, double h) {
((VisualTable)m_table).setBounds(m_row, x, y, w, h);
}
// ------------------------------------------------------------------------
/**
* @see prefuse.visual.VisualItem#getStrokeColor()
*/
public int getStrokeColor() {
return ((VisualTable)m_table).getStrokeColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStrokeColor(int)
*/
public void setStrokeColor(int color) {
((VisualTable)m_table).setStrokeColor(m_row, color);
}
/**
* @see prefuse.visual.VisualItem#getStartStrokeColor()
*/
public int getStartStrokeColor() {
return ((VisualTable)m_table).getStartStrokeColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStartStrokeColor(int)
*/
public void setStartStrokeColor(int color) {
((VisualTable)m_table).setStartStrokeColor(m_row, color);
}
/**
* @see prefuse.visual.VisualItem#getEndStrokeColor()
*/
public int getEndStrokeColor() {
return ((VisualTable)m_table).getEndStrokeColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setEndStrokeColor(int)
*/
public void setEndStrokeColor(int color) {
((VisualTable)m_table).setEndStrokeColor(m_row, color);
}
/**
* @see prefuse.visual.VisualItem#getFillColor()
*/
public int getFillColor() {
return ((VisualTable)m_table).getFillColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setFillColor(int)
*/
public void setFillColor(int color) {
((VisualTable)m_table).setFillColor(m_row, color);
}
/**
* @see prefuse.visual.VisualItem#getStartFillColor()
*/
public int getStartFillColor() {
return ((VisualTable)m_table).getStartFillColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStartFillColor(int)
*/
public void setStartFillColor(int color) {
((VisualTable)m_table).setStartFillColor(m_row, color);
}
/**
* @see prefuse.visual.VisualItem#getEndFillColor()
*/
public int getEndFillColor() {
return ((VisualTable)m_table).getEndFillColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setEndFillColor(int)
*/
public void setEndFillColor(int color) {
((VisualTable)m_table).setEndFillColor(m_row, color);
}
/**
* @see prefuse.visual.VisualItem#getTextColor()
*/
public int getTextColor() {
return ((VisualTable)m_table).getTextColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setTextColor(int)
*/
public void setTextColor(int color) {
((VisualTable)m_table).setTextColor(m_row, color);
}
/**
* @see prefuse.visual.VisualItem#getStartTextColor()
*/
public int getStartTextColor() {
return ((VisualTable)m_table).getStartTextColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStartTextColor(int)
*/
public void setStartTextColor(int color) {
((VisualTable)m_table).setStartTextColor(m_row, color);
}
/**
* @see prefuse.visual.VisualItem#getEndTextColor()
*/
public int getEndTextColor() {
return ((VisualTable)m_table).getEndTextColor(m_row);
}
/**
* @see prefuse.visual.VisualItem#setEndTextColor(int)
*/
public void setEndTextColor(int color) {
((VisualTable)m_table).setEndTextColor(m_row, color);
}
// ------------------------------------------------------------------------
/**
* @see prefuse.visual.VisualItem#getSize()
*/
public double getSize() {
return ((VisualTable)m_table).getSize(m_row);
}
/**
* @see prefuse.visual.VisualItem#setSize(double)
*/
public void setSize(double size) {
((VisualTable)m_table).setSize(m_row, size);
}
/**
* @see prefuse.visual.VisualItem#getStartSize()
*/
public double getStartSize() {
return ((VisualTable)m_table).getStartSize(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStartSize(double)
*/
public void setStartSize(double size) {
((VisualTable)m_table).setStartSize(m_row, size);
}
/**
* @see prefuse.visual.VisualItem#getEndSize()
*/
public double getEndSize() {
return ((VisualTable)m_table).getEndSize(m_row);
}
/**
* @see prefuse.visual.VisualItem#setEndSize(double)
*/
public void setEndSize(double size) {
((VisualTable)m_table).setEndSize(m_row, size);
}
// ------------------------------------------------------------------------
/**
* @see prefuse.visual.VisualItem#getShape()
*/
public int getShape() {
return ((VisualTable)m_table).getShape(m_row);
}
/**
* @see prefuse.visual.VisualItem#setShape(int)
*/
public void setShape(int shape) {
((VisualTable)m_table).setShape(m_row, shape);
}
// ------------------------------------------------------------------------
/**
* @see prefuse.visual.VisualItem#getStroke()
*/
public BasicStroke getStroke() {
return ((VisualTable)m_table).getStroke(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStroke(java.awt.BasicStroke)
*/
public void setStroke(BasicStroke stroke) {
((VisualTable)m_table).setStroke(m_row, stroke);
}
// ------------------------------------------------------------------------
/**
* @see prefuse.visual.VisualItem#getFont()
*/
public Font getFont() {
return ((VisualTable)m_table).getFont(m_row);
}
/**
* @see prefuse.visual.VisualItem#setFont(java.awt.Font)
*/
public void setFont(Font font) {
((VisualTable)m_table).setFont(m_row, font);
}
/**
* @see prefuse.visual.VisualItem#getStartFont()
*/
public Font getStartFont() {
return ((VisualTable)m_table).getStartFont(m_row);
}
/**
* @see prefuse.visual.VisualItem#setStartFont(java.awt.Font)
*/
public void setStartFont(Font font) {
((VisualTable)m_table).setStartFont(m_row, font);
}
/**
* @see prefuse.visual.VisualItem#getEndFont()
*/
public Font getEndFont() {
return ((VisualTable)m_table).getEndFont(m_row);
}
/**
* @see prefuse.visual.VisualItem#setEndFont(java.awt.Font)
*/
public void setEndFont(Font font) {
((VisualTable)m_table).setEndFont(m_row, font);
}
// ------------------------------------------------------------------------
/**
* @see prefuse.visual.VisualItem#getDOI()
*/
public double getDOI() {
return ((VisualTable)m_table).getDOI(m_row);
}
/**
* @see prefuse.visual.VisualItem#setDOI(double)
*/
public void setDOI(double doi) {
((VisualTable)m_table).setDOI(m_row, doi);
}
} // end of class TableVisualItem