OSDN Git Service

プログレスバーの選択時色変更をやめる
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / gui / TargetsColumnModel.java
1 package yukihane.inqubus.gui;
2
3 import java.awt.Color;
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;
11
12 /**
13  *
14  * @author yuki
15  */
16 public class TargetsColumnModel extends DefaultTableColumnModel {
17
18     private static final long serialVersionUID = 1L;
19     private final String[] columnNames = new String[]{"ID", "動画", "コメ", "変換", "状態"};
20
21     public TargetsColumnModel() {
22         super();
23         for (int i = 0; i < columnNames.length; i++) {
24             final TableColumn tc = new TableColumn(i);
25             tc.setHeaderValue(columnNames[i]);
26             addColumn(tc);
27         }
28
29         final TableColumn tcId = getColumn(0);
30         tcId.setPreferredWidth(85);
31
32         final TableColumn tcVideo = getColumn(1);
33         tcVideo.setPreferredWidth(40);
34
35         final TableColumn tcComment = getColumn(2);
36         tcComment.setPreferredWidth(40);
37
38         final TableColumn tcConvert = getColumn(3);
39         tcConvert.setPreferredWidth(40);
40
41         final TableColumn tcProgress = getColumn(4);
42         tcProgress.setCellRenderer(new ProgressRenderer());
43         tcProgress.setPreferredWidth(260);
44     }
45 }
46
47 class ProgressRenderer extends DefaultTableCellRenderer {
48
49     private static final long serialVersionUID = 1L;
50     private final JProgressBar progressBar;
51
52     public ProgressRenderer() {
53         progressBar = new JProgressBar(0, 100);
54         progressBar.setStringPainted(true);
55     }
56
57     @Override
58     public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
59             int row, int column) {
60         if (value == null) {
61             return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
62         }
63
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);
68         }
69
70         progressBar.setValue(percent);
71         progressBar.setString(p.getText());
72         return progressBar;
73     }
74 }