package prefuse.data.column;
import prefuse.data.DataTypeException;
import prefuse.data.event.ColumnListener;
/**
* Column implementation holding a single, constant value for all rows.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public class ConstantColumn extends AbstractColumn {
private int m_size;
/**
* Create a new ConstantColumn.
* @param type the data type of this column
* @param defaultValue the default value used for all rows
*/
public ConstantColumn(Class type, Object defaultValue) {
super(type, defaultValue);
}
/**
* @see prefuse.data.column.Column#getRowCount()
*/
public int getRowCount() {
return m_size+1;
}
/**
* @see prefuse.data.column.Column#setMaximumRow(int)
*/
public void setMaximumRow(int nrows) {
m_size = nrows;
}
/**
* @see prefuse.data.column.Column#get(int)
*/
public Object get(int row) {
if ( row < 0 || row > m_size ) {
throw new IllegalArgumentException("Row index out of bounds: "+row);
}
return super.m_defaultValue;
}
/**
* Unsupported operation.
* @see prefuse.data.column.Column#set(java.lang.Object, int)
*/
public void set(Object val, int row) throws DataTypeException {
throw new UnsupportedOperationException(
"Can't set values on a ConstantColumn");
}
/**
* Returns false.
* @see prefuse.data.column.Column#canSet(java.lang.Class)
*/
public boolean canSet(Class type) {
return false;
}
/**
* Does nothing.
* @see prefuse.data.column.Column#addColumnListener(prefuse.data.event.ColumnListener)
*/
public void addColumnListener(ColumnListener listener) {
return; // column can't change, so nothing to listen to
}
/**
* Does nothing.
* @see prefuse.data.column.Column#removeColumnListener(prefuse.data.event.ColumnListener)
*/
public void removeColumnListener(ColumnListener listener) {
return; // column can't change, so nothing to listen to
}
} // end of class Constant Column