package net.filebot.ui.sfv;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Rectangle;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTable;
import javax.swing.SwingWorker;
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableCellRenderer;
class SwingWorkerCellRenderer extends JPanel implements TableCellRenderer {
private final JProgressBar progressBar = new JProgressBar(0, 100);
public SwingWorkerCellRenderer() {
super(new BorderLayout());
// set margin for progress bar on parent component,
// because setting it on the progress bar itself does not work (border size is not respected in the paint method)
setBorder(new EmptyBorder(2, 2, 2, 2));
progressBar.setStringPainted(true);
add(progressBar, BorderLayout.CENTER);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
progressBar.setValue(((SwingWorker<?, ?>) value).getProgress());
return this;
}
/**
* Overridden for performance reasons.
*/
@Override
public void repaint(long tm, int x, int y, int width, int height) {
}
/**
* Overridden for performance reasons.
*/
@Override
public void repaint(Rectangle r) {
}
/**
* Overridden for performance reasons.
*/
@Override
public void repaint() {
}
/**
* Overridden for performance reasons.
*/
@Override
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {
}
}