1 package yukihane.inqubus.gui;
4 import java.awt.Component;
5 import javax.swing.JProgressBar;
6 import javax.swing.JTable;
7 import javax.swing.table.DefaultTableCellRenderer;
8 import javax.swing.table.DefaultTableColumnModel;
9 import javax.swing.table.TableColumn;
10 import yukihane.inqubus.model.Progress;
16 public class TargetsColumnModel extends DefaultTableColumnModel {
18 private static final long serialVersionUID = 1L;
19 private final String[] columnNames = new String[]{"ID", "動画", "コメ", "変換", "状態"};
21 public TargetsColumnModel() {
23 for (int i = 0; i < columnNames.length; i++) {
24 final TableColumn tc = new TableColumn(i);
25 tc.setHeaderValue(columnNames[i]);
29 final TableColumn tcId = getColumn(0);
30 tcId.setPreferredWidth(85);
32 final TableColumn tcVideo = getColumn(1);
33 tcVideo.setPreferredWidth(40);
35 final TableColumn tcComment = getColumn(2);
36 tcComment.setPreferredWidth(40);
38 final TableColumn tcConvert = getColumn(3);
39 tcConvert.setPreferredWidth(40);
41 final TableColumn tcProgress = getColumn(4);
42 tcProgress.setCellRenderer(new ProgressRenderer());
43 tcProgress.setPreferredWidth(260);
47 class ProgressRenderer extends DefaultTableCellRenderer {
49 private static final long serialVersionUID = 1L;
50 private final JProgressBar progressBar;
52 public ProgressRenderer() {
53 progressBar = new JProgressBar(0, 100);
54 progressBar.setStringPainted(true);
58 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
59 int row, int column) {
61 return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
64 final Progress p = (Progress) value;
65 int percent = (int) p.getPercent();
66 if (percent < 0 || percent > 100) {
67 return super.getTableCellRendererComponent(table, p.getText(), isSelected, hasFocus, row, column);
70 progressBar.setValue(percent);
71 progressBar.setString(p.getText());