Lines 146-162
Link Here
|
146 |
|
146 |
|
147 |
@Override |
147 |
@Override |
148 |
public TableCellRenderer getCellRenderer(int row, int column) { |
148 |
public TableCellRenderer getCellRenderer(int row, int column) { |
149 |
try { |
|
|
150 |
if (getModel().hasUpdates( |
151 |
convertRowIndexToModel(row), |
152 |
convertColumnIndexToModel(column))) { |
153 |
return new UpdatedResultSetCellRenderer(); |
149 |
return new UpdatedResultSetCellRenderer(); |
154 |
} |
150 |
} |
155 |
} catch (IndexOutOfBoundsException ex) { |
|
|
156 |
// Swallow it, caused by pack from JXTable - Bug #228753 |
157 |
} |
158 |
return super.getCellRenderer(row, column); |
159 |
} |
160 |
|
151 |
|
161 |
@Override |
152 |
@Override |
162 |
protected KeyListener createControKeyListener() { |
153 |
protected KeyListener createControKeyListener() { |
Lines 164-192
Link Here
|
164 |
} |
155 |
} |
165 |
|
156 |
|
166 |
private static class UpdatedResultSetCellRenderer extends ResultSetCellRenderer { |
157 |
private static class UpdatedResultSetCellRenderer extends ResultSetCellRenderer { |
167 |
static int borderThickness = 1; |
158 |
static int borderThickness = 2; |
168 |
static Color emptyNullForeground; |
|
|
169 |
static Color selectedForeground; |
159 |
static Color selectedForeground; |
170 |
static Color unselectedForeground; |
160 |
static Color unselectedForeground; |
171 |
private JComponent holder = new JComponent() {}; |
161 |
private JComponent holder = new JComponent() {}; |
172 |
|
162 |
|
173 |
static { |
163 |
static { |
174 |
Color emptyNullFromMngr = UIManager.getColor( |
|
|
175 |
"nb.dataview.tablecell.edited.selected.emptyNull.foreground"); //NOI18N |
176 |
emptyNullForeground = emptyNullFromMngr != null |
177 |
? emptyNullFromMngr |
178 |
: new Color(245, 245, 245); // gray color |
179 |
Color selectedFgFromMngr = UIManager.getColor( |
164 |
Color selectedFgFromMngr = UIManager.getColor( |
180 |
"nb.dataview.tablecell.edited.selected.foreground"); //NOI18N |
165 |
"nb.dataview.tablecell.edited.selected.foreground"); //NOI18N |
181 |
selectedForeground = selectedFgFromMngr != null |
166 |
selectedForeground = selectedFgFromMngr != null |
182 |
? selectedFgFromMngr |
167 |
? selectedFgFromMngr |
183 |
: Color.ORANGE; |
168 |
: new Color(229, 148, 0); |
184 |
Color unselectedFgFromMngr = UIManager.getColor( |
169 |
Color unselectedFgFromMngr = UIManager.getColor( |
185 |
"nb.dataview.tablecell.edited.unselected.foreground"); //NOI18N |
170 |
"nb.dataview.tablecell.edited.unselected.foreground"); //NOI18N |
186 |
unselectedForeground = unselectedFgFromMngr != null |
171 |
unselectedForeground = unselectedFgFromMngr != null |
187 |
? unselectedFgFromMngr |
172 |
? unselectedFgFromMngr |
188 |
: new Color(0, 128, 0); // green color |
173 |
: new Color(0, 128, 0); // green color |
189 |
} |
174 |
} |
|
|
175 |
|
190 |
public UpdatedResultSetCellRenderer() { |
176 |
public UpdatedResultSetCellRenderer() { |
191 |
holder.setLayout(new BorderLayout()); |
177 |
holder.setLayout(new BorderLayout()); |
192 |
} |
178 |
} |
Lines 202-233
Link Here
|
202 |
|
188 |
|
203 |
DataViewTableUIModel model = (DataViewTableUIModel) table.getModel(); |
189 |
DataViewTableUIModel model = (DataViewTableUIModel) table.getModel(); |
204 |
|
190 |
|
205 |
Color color; |
191 |
Color color = null; |
206 |
boolean override = false; |
192 |
boolean override = false; |
207 |
|
193 |
|
|
|
194 |
if (model.hasUpdates(modelRow, modelColumn)) { |
208 |
if (isSelected) { |
195 |
if (isSelected) { |
209 |
if (! model.hasUpdates(modelRow, modelColumn)) { |
|
|
210 |
color = emptyNullForeground; |
211 |
override = true; |
212 |
} else { |
213 |
color = selectedForeground; |
196 |
color = selectedForeground; |
214 |
override = true; |
|
|
215 |
} |
216 |
} else { |
197 |
} else { |
217 |
if (! model.hasUpdates(modelRow, modelColumn)) { |
|
|
218 |
color = table.getForeground(); |
219 |
} else { |
220 |
color = unselectedForeground; |
198 |
color = unselectedForeground; |
|
|
199 |
} |
221 |
override = true; |
200 |
override = true; |
222 |
} |
201 |
} |
223 |
} |
|
|
224 |
|
202 |
|
225 |
if(override && c instanceof JRendererCheckBox) { |
203 |
if(override && c instanceof JRendererCheckBox) { |
226 |
holder.removeAll(); |
204 |
holder.removeAll(); |
227 |
holder.setBorder(new LineBorder(color, borderThickness)); |
205 |
holder.setBorder(new LineBorder(color, borderThickness)); |
228 |
holder.add(c); |
206 |
holder.add(c); |
229 |
return holder; |
207 |
return holder; |
230 |
} else { |
208 |
} else if (color != null) { |
231 |
c.setForeground(color); |
209 |
c.setForeground(color); |
232 |
} |
210 |
} |
233 |
return c; |
211 |
return c; |
Lines 251-256
Link Here
|
251 |
editor.stopCellEditing(); |
229 |
editor.stopCellEditing(); |
252 |
} |
230 |
} |
253 |
handler.deleteRecordActionPerformed(); |
231 |
handler.deleteRecordActionPerformed(); |
|
|
232 |
e.consume(); |
254 |
} else if (e.isControlDown() && e.getKeyChar() == KeyEvent.VK_0) { |
233 |
} else if (e.isControlDown() && e.getKeyChar() == KeyEvent.VK_0) { |
255 |
int row = getSelectedRow(); |
234 |
int row = getSelectedRow(); |
256 |
int col = getSelectedColumn(); |
235 |
int col = getSelectedColumn(); |
Lines 266-271
Link Here
|
266 |
setValueAt("<NULL>", row, col); |
245 |
setValueAt("<NULL>", row, col); |
267 |
} |
246 |
} |
268 |
setRowSelectionInterval(row, row); |
247 |
setRowSelectionInterval(row, row); |
|
|
248 |
e.consume(); |
269 |
} else if (e.isControlDown() && e.getKeyChar() == KeyEvent.VK_1) { |
249 |
} else if (e.isControlDown() && e.getKeyChar() == KeyEvent.VK_1) { |
270 |
int row = getSelectedRow(); |
250 |
int row = getSelectedRow(); |
271 |
int col = getSelectedColumn(); |
251 |
int col = getSelectedColumn(); |
Lines 284-289
Link Here
|
284 |
setValueAt("<DEFAULT>", row, col); |
264 |
setValueAt("<DEFAULT>", row, col); |
285 |
} |
265 |
} |
286 |
setRowSelectionInterval(row, row); |
266 |
setRowSelectionInterval(row, row); |
|
|
267 |
e.consume(); |
287 |
} |
268 |
} |
288 |
} |
269 |
} |
289 |
|
270 |
|