/*
** 2012 June 2
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
*/
package info.ata4.util.gui.components;
import java.awt.Component;
import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
/**
* Progress bar table cell renderer.
*
* Based on http://www.informit.com/articles/article.aspx?p=24142&seqNum=3
*
* @author Nico Bergemann <barracuda415 at yahoo.de>
*/
public class ProgressCellRenderer extends JProgressBar
implements TableCellRenderer {
public ProgressCellRenderer() {
// Initialize the progress bar renderer to use a horizontal
// progress bar.
super(JProgressBar.HORIZONTAL);
// Ensure that the progress bar border is not painted. (The
// result is ugly when it appears in a table cell.)
setBorderPainted(false);
// Ensure that percentage text is painted on the progress bar.
setStringPainted(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int col) {
if (value instanceof Integer) {
// Ensure that the nonselected background portion of a
// progress bar is assigned the same color as the table's
// background color. The resulting progress bar fits more
// naturally (from a visual perspective) into the overall
// table's appearance.
setBackground(table.getBackground());
// Save the current progress bar value for subsequent
// rendering.
setValue((Integer) value);
}
return this;
}
}