--- /dev/null
+package yukihane.inqubus.model;
+
+import java.awt.Color;
+import java.awt.Component;
+import javax.swing.JProgressBar;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableModel;
+
+/**
+ *
+ * @author yuki
+ */
+public class TargetsColumnModel extends DefaultTableColumnModel {
+
+ private static final long serialVersionUID = 1L;
+ private final String[] columnNames = new String[]{"ID", "動画", "コメ", "変換", "状態"};
+
+ public TargetsColumnModel() {
+ super();
+ for (int i = 0; i < columnNames.length; i++) {
+ final TableColumn tc = new TableColumn(i);
+ tc.setHeaderValue(columnNames[i]);
+ addColumn(tc);
+ }
+
+ final TableColumn tc = getColumn(4);
+ tc.setCellRenderer(new ProgressRenderer());
+ }
+}
+
+class ProgressRenderer extends DefaultTableCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+ private final JProgressBar progressBar;
+
+ public ProgressRenderer() {
+ progressBar = new JProgressBar(0, 100);
+ progressBar.setStringPainted(true);
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
+ int row, int column) {
+ if (isSelected) {
+ progressBar.setForeground(table.getSelectionForeground());
+ progressBar.setBackground(table.getSelectionBackground());
+ }
+
+ if (value == null) {
+ return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+ }
+
+ final Progress p = (Progress) value;
+ int percent = (int) p.getPercent();
+ if (percent < 0 || percent > 100) {
+ return super.getTableCellRendererComponent(table, p.getText(), isSelected, hasFocus, row, column);
+ }
+ progressBar.setValue(percent);
+ progressBar.setString(p.getText());
+ return progressBar;
+ }
+}