1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.cosylab.gui.components.introspection;
21
22 import java.util.HashMap;
23 import java.util.Map;
24
25 import javax.swing.JTable;
26 import javax.swing.table.JTableHeader;
27 import javax.swing.table.TableCellEditor;
28 import javax.swing.table.TableCellRenderer;
29
30
31
32
33
34
35
36
37
38 public class DefaultPropertiesTable extends JTable {
39
40 private static final long serialVersionUID = 1L;
41 private Map<Class, TableCellEditor> editors=new HashMap<Class, TableCellEditor>();
42 private Map<Class, TableCellRenderer> renderers=new HashMap<Class, TableCellRenderer>();
43
44
45
46
47 public DefaultPropertiesTable() {
48 super();
49 initialize();
50 }
51
52
53
54
55
56 private void initialize() {
57 setName("ParametersTable");
58 PropertiesTableModel parametersModel = new PropertiesTableModel();
59 setModel(parametersModel);
60 createDefaultColumnsFromModel();
61 setTableHeader(new JTableHeader(getColumnModel()));
62 getTableHeader().setVisible(true);
63 setRowHeight(20);
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 setColumnSelectionAllowed(false);
93 setRowSelectionAllowed(true);
94 putClientProperty("terminateEditOnFocusLost",Boolean.TRUE);
95 }
96
97
98
99
100
101
102 public TableCellEditor getCellEditor(int row, int column) {
103 TableCellEditor ed=null;
104 if (getModel() instanceof PropertiesTableModel) {
105 PropertiesTableModel ptm=(PropertiesTableModel)getModel();
106 if (column==ptm.valCol) {
107 ed=retrieveCellEditor(ptm,row);
108 }
109 }
110 if (ed==null) {
111 ed=super.getCellEditor(row, column);
112 }
113 return ed;
114 }
115
116 private TableCellEditor retrieveCellEditor(PropertiesTableModel model,int row) {
117
118 Class dataType=model.getTypeForRow(row);
119 if (!editors.containsKey(dataType)) {
120 TableCellEditor edt=EditorsHelper.getTableCellEditorForClass(dataType);
121 if (edt==null) {
122 return null;
123 }
124 editors.put(dataType,edt);
125 }
126 return editors.get(dataType);
127 }
128
129
130
131
132
133
134
135 public TableCellRenderer getCellRenderer(int row, int column) {
136 if (getModel() instanceof PropertiesTableModel){
137 PropertiesTableModel ptm=(PropertiesTableModel)getModel();
138 if (column==ptm.valCol) {
139 TableCellRenderer tcr= retrieveCellRenderer(ptm,row);
140 if (tcr!=null) {
141 return tcr;
142 }
143 }
144 }
145 return super.getCellRenderer(row, column);
146 }
147
148 private TableCellRenderer retrieveCellRenderer(PropertiesTableModel model, int row) {
149 Class dataType=model.getTypeForRow(row);
150 if (!renderers.containsKey(dataType)) {
151 TableCellRenderer rnd=EditorsHelper.getTableCellRendererForClass(dataType);
152 if (rnd==null) {
153 return null;
154 }
155 renderers.put(dataType,rnd);
156 }
157 return renderers.get(dataType);
158 }
159
160 }