1 package fr.ifremer.quadrige3.ui.swing.table.renderer;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import javax.swing.JLabel;
28 import javax.swing.JTable;
29 import javax.swing.table.TableCellRenderer;
30 import java.awt.Component;
31 import java.util.Map;
32
33
34
35
36
37
38 public class MultipleCellRenderer implements TableCellRenderer {
39
40 private final Map<Class, TableCellRenderer> renderers;
41
42
43
44
45
46
47 public MultipleCellRenderer(Map<Class, TableCellRenderer> renderers) {
48 this.renderers = renderers;
49 }
50
51
52 @Override
53 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
54
55 if (value == null) {
56 JLabel dummy = new JLabel();
57 dummy.setOpaque(true);
58 dummy.setBackground(null);
59 return dummy;
60 }
61
62 TableCellRenderer renderer = renderers.get(value.getClass());
63
64 if (renderer != null) {
65 return renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
66 }
67
68 return table.getDefaultRenderer(value.getClass()).getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
69 }
70 }