1 /*
2 * Created on Oct 3, 2003
3 *
4 * To change the template for this generated file go to
5 * Window>Preferences>Java>Code Generation>Code and Comments
6 */
7 package net.sourceforge.neurosdbm;
8
9 import java.awt.Color;
10 import java.awt.Component;
11 import java.util.ArrayList;
12
13 import javax.swing.JTable;
14 import javax.swing.table.DefaultTableCellRenderer;
15
16 import net.sourceforge.neurosdbm.db.AudioDisplayRecord;
17 import net.sourceforge.neurosdbm.db.Database;
18 import net.sourceforge.neurosdbm.db.DisplayIndex;
19
20 /**
21 * @author carwashi
22 *
23 * To change the template for this generated type comment go to
24 * Window>Preferences>Java>Code Generation>Code and Comments
25 */
26 public class NeurosTableRowRenderer extends DefaultTableCellRenderer {
27
28 public Component getTableCellRendererComponent(
29 JTable table,
30 Object value,
31 boolean selected,
32 boolean focused,
33 int row,
34 int column) {
35 setEnabled(table == null || table.isEnabled()); // see question above
36
37 NeurosTableModel model = (NeurosTableModel) table.getModel();
38 Database database = model.getDatabase();
39 boolean highlight = NeurosProperties.isHighlightTracks();
40 if (highlight) {
41 try {
42 switch (model.getDbData()) {
43 case NeurosTableModel.BLANK :
44 return null;
45
46 case NeurosTableModel.AUDIO_SONGS :
47 case NeurosTableModel.PCAUDIO_SONGS :
48
49 {
50 AudioDisplayRecord dispTrack =
51 model.getAudioDisplayRecord(row);
52 if (dispTrack != null) {
53 if (database
54 .syncQueueContains(
55 dispTrack.getAudioRecord())) {
56 setBackground(Color.green);
57 } else if (
58 database.deleteQueueContains(
59 dispTrack.getAudioRecord())) {
60 setBackground(Color.RED);
61 } else {
62 setBackground(null);
63 }
64 }
65 break;
66 }
67 case NeurosTableModel.AUDIO_PLAYLISTS :
68 case NeurosTableModel.PCAUDIO_PLAYLISTS :
69 {
70 setBackground(null);
71 break;
72 }
73 case NeurosTableModel.AUDIO_ARTISTS :
74 case NeurosTableModel.PCAUDIO_ARTISTS :
75 case NeurosTableModel.AUDIO_ALBUMS :
76 case NeurosTableModel.PCAUDIO_ALBUMS :
77 case NeurosTableModel.AUDIO_GENRES :
78 case NeurosTableModel.PCAUDIO_GENRES :
79 {
80 boolean added = false;
81 boolean deleted = false;
82 boolean allAdded = true;
83 boolean allDeleted = true;
84
85 int[] artists = new int[1];
86 artists[0] = row;
87 ArrayList artistTracks = model.getSelectedTracks(artists);
88 for (int j = 0; j < artistTracks.size(); j++){
89 AudioDisplayRecord record = (AudioDisplayRecord) artistTracks.get(j);
90 if (database.deleteQueueContains(record.getAudioRecord())){
91 deleted = true;
92 allAdded = false;
93 }
94 else if (database.syncQueueContains((record.getAudioRecord()))){
95 added = true;
96 allDeleted = false;
97 }
98 else {
99 allDeleted = false;
100 allAdded = false;
101 }
102 if (allAdded) {
103 setBackground(Color.green);
104 }
105 else if (allDeleted){
106 setBackground(Color.red);
107 }
108 else if (added || deleted) {
109 setBackground(Color.yellow);
110 }
111 else {
112 setBackground(null);
113 }
114 }
115
116 break;
117 }
118
119 default :
120 {
121 setBackground(null);
122 }
123 }
124 } catch (Exception e) {
125 model.exceptionHandler(e);
126 }
127 }
128 else {
129 setBackground(null);
130 }
131
132 super.getTableCellRendererComponent(
133 table,
134 value,
135 selected,
136 focused,
137 row,
138 column);
139
140 return this;
141 }
142
143 }