public class TimePlaylistCellRenderer
extends JLabel implements TableCellRenderer
{
private Color backgroundColor = null;
private Color foregroundColor = null;
//private NumberFormat format = NumberFormat.getInstance();
private StringBuffer numberBuffer = new StringBuffer();
private final char DIV = ':';
private final String LIVE = "LIVE";
public TimePlaylistCellRenderer()
{
super();
setHorizontalAlignment(JLabel.RIGHT);
setOpaque(true);
backgroundColor = getBackground();
foregroundColor = getForeground();
}
/**
* Returns the component used for drawing the cell.
*
* @param table the <code>JTable</code> that is asking the renderer to draw;
* can be <code>null</code>
* @param value the value of the cell to be rendered. It is up to the specific
* renderer to interpret and draw the value. For example, if
* <code>value</code> is the string "true", it could be rendered as a string
* or it could be rendered as a check box that is checked. <code>null</code>
* is a valid value
* @param isSelected true if the cell is to be rendered with the selection
* highlighted; otherwise false
* @param hasFocus if true, render cell appropriately. For example, put a
* special border on the cell, if the cell can be edited, render in the
* color used to indicate editing
* @param row the row index of the cell being drawn. When drawing the header,
* the value of <code>row</code> is -1
* @param column the column index of the cell being drawn
* @return Component
*/
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
IMediaObject mo = (IMediaObject) value;
if (mo.isSteamed())
{
setHorizontalAlignment(JLabel.CENTER);
setText(LIVE);
}
else
{
setHorizontalAlignment(JLabel.RIGHT);
int fraction = mo.getTimeInSeconds() % 60;
numberBuffer.setLength(0);
numberBuffer.append(mo.getTimeInSeconds() / 60);
numberBuffer.append(DIV);
numberBuffer.append(fraction);
if (fraction < 10)
{
numberBuffer.append('0');
}
setText(numberBuffer.toString());
}
if (isSelected)
{
setBackground(table.getSelectionBackground());
setForeground(table.getSelectionForeground());
}
else
{
setBackground(backgroundColor);
setForeground(foregroundColor);
}
return this;
}
}