/* ProgressTableCellRenderer.java created 2007-10-06
*
*/
package org.signalml.app.view.common.components.cellrenderers;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Insets;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableCellRenderer;
import org.signalml.task.AggregateTaskProgressInfo;
/** ProgressTableCellRenderer
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class ProgressTableCellRenderer extends JPanel implements TableCellRenderer {
private static final long serialVersionUID = 1L;
private JProgressBar progressBar;
private EmptyBorder noFocusBorder;
private CompoundBorder focusBorder = null;
public ProgressTableCellRenderer() {
super(new BorderLayout());
noFocusBorder = new EmptyBorder(4,4,4,4);
progressBar = new JProgressBar();
progressBar.setMinimum(0);
add(progressBar);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setBackground(table.getSelectionBackground());
} else {
setBackground(table.getBackground());
}
if (hasFocus) {
if (focusBorder == null) {
Border border = null;
if (isSelected) {
border = UIManager.getBorder("Table.focusSelectedCellHighlightBorder");
}
if (border == null) {
border = UIManager.getBorder("Table.focusCellHighlightBorder");
}
Insets ins = border.getBorderInsets(this);
focusBorder = new CompoundBorder(
border,
new EmptyBorder(4-ins.top,4-ins.left,4-ins.bottom,4-ins.right)
);
}
setBorder(focusBorder);
} else {
setBorder(noFocusBorder);
}
AggregateTaskProgressInfo progressInfo = (AggregateTaskProgressInfo) value;
progressBar.setMaximum(progressInfo.getMaxValue());
progressBar.setValue(progressInfo.getValue());
return this;
}
}