This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 233141
Collapse All | Expand All

(-)db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewTableUI.java (-29 / +10 lines)
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
(-)db.dataview/src/org/netbeans/modules/db/dataview/table/CellFocusCustomRenderer.java (-6 / +9 lines)
Lines 45-58 Link Here
45
import java.awt.Color;
45
import java.awt.Color;
46
import java.awt.Component;
46
import java.awt.Component;
47
import javax.swing.JTable;
47
import javax.swing.JTable;
48
import javax.swing.UIManager;
48
import javax.swing.table.DefaultTableCellRenderer;
49
import javax.swing.table.DefaultTableCellRenderer;
49
50
50
/**
51
 *
52
 * @author Shankari
53
 */
54
public class CellFocusCustomRenderer extends DefaultTableCellRenderer {
51
public class CellFocusCustomRenderer extends DefaultTableCellRenderer {
55
52
53
    private final static Color selectedCellBackgroundMgr = UIManager.getColor(
54
            "nb.dataview.tablecell.focused"); //NOI18N
55
    private final static Color selectedCellBackground = selectedCellBackgroundMgr != null
56
            ? selectedCellBackgroundMgr
57
            : new Color(204,204,255);
58
56
    public CellFocusCustomRenderer() {       
59
    public CellFocusCustomRenderer() {       
57
        setOpaque(true);
60
        setOpaque(true);
58
    }
61
    }
Lines 61-68 Link Here
61
    public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row, int column) {
64
    public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row, int column) {
62
        super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
65
        super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
63
        if (hasFocus) {
66
        if (hasFocus) {
64
            setBackground(new Color(204,204,255));
67
            setBackground(selectedCellBackground);
65
            setForeground(Color.BLACK);
68
            setForeground(table.getForeground());
66
        } else if (isSelected) {
69
        } else if (isSelected) {
67
            setBackground(table.getSelectionBackground());
70
            setBackground(table.getSelectionBackground());
68
            setForeground(table.getSelectionForeground());
71
            setForeground(table.getSelectionForeground());
(-)db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetCellRenderer.java (-4 lines)
Lines 202-211 Link Here
202
        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
202
        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
203
        c.setFont(new Font(c.getFont().getFamily(), Font.ITALIC, 9));
203
        c.setFont(new Font(c.getFont().getFamily(), Font.ITALIC, 9));
204
        ((JLabel) c).setToolTipText(value.toString());
204
        ((JLabel) c).setToolTipText(value.toString());
205
        if (!isSelected) {
206
            c.setForeground(Color.DARK_GRAY);
207
        }
208
209
        return c;
205
        return c;
210
    }
206
    }
211
}
207
}
(-)db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetJXTable.java (-2 / +1 lines)
Lines 75-81 Link Here
75
import org.jdesktop.swingx.renderer.CheckBoxProvider;
75
import org.jdesktop.swingx.renderer.CheckBoxProvider;
76
import org.jdesktop.swingx.renderer.JRendererCheckBox;
76
import org.jdesktop.swingx.renderer.JRendererCheckBox;
77
import org.jdesktop.swingx.renderer.StringValues;
77
import org.jdesktop.swingx.renderer.StringValues;
78
import org.jdesktop.swingx.table.DatePickerCellEditor;
79
import org.netbeans.modules.db.dataview.meta.DBColumn;
78
import org.netbeans.modules.db.dataview.meta.DBColumn;
80
import org.netbeans.modules.db.dataview.table.celleditor.*;
79
import org.netbeans.modules.db.dataview.table.celleditor.*;
81
import org.netbeans.modules.db.dataview.util.BinaryToStringConverter;
80
import org.netbeans.modules.db.dataview.util.BinaryToStringConverter;
Lines 218-224 Link Here
218
        setDefaultEditor(Boolean.class, new BooleanTableCellEditor(b));
217
        setDefaultEditor(Boolean.class, new BooleanTableCellEditor(b));
219
218
220
        try {
219
        try {
221
            DatePickerCellEditor dateEditor = new DatePickerCellEditor(new SimpleDateFormat (DateType.DEFAULT_FOMAT_PATTERN));
220
            DateTimePickerCellEditor dateEditor = new DateTimePickerCellEditor(new SimpleDateFormat (DateType.DEFAULT_FOMAT_PATTERN));
222
            setDefaultEditor(java.sql.Date.class, dateEditor);
221
            setDefaultEditor(java.sql.Date.class, dateEditor);
223
        } catch (NullPointerException npe) {
222
        } catch (NullPointerException npe) {
224
            mLogger.log(Level.WARNING, "While creating DatePickerCellEditor was thrown " + npe, npe);
223
            mLogger.log(Level.WARNING, "While creating DatePickerCellEditor was thrown " + npe, npe);
(-)db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/DateTimePickerCellEditor.java (-10 / +7 lines)
Lines 57-64 Link Here
57
import javax.swing.UIManager;
57
import javax.swing.UIManager;
58
import javax.swing.table.TableCellEditor;
58
import javax.swing.table.TableCellEditor;
59
import org.jdesktop.swingx.JXDatePicker;
59
import org.jdesktop.swingx.JXDatePicker;
60
import org.netbeans.modules.db.dataview.meta.DBColumn;
61
import org.netbeans.modules.db.dataview.table.ResultSetJXTable;
62
import org.netbeans.modules.db.dataview.util.DataViewUtils;
60
import org.netbeans.modules.db.dataview.util.DataViewUtils;
63
import org.netbeans.modules.db.dataview.util.JXDateTimePicker;
61
import org.netbeans.modules.db.dataview.util.JXDateTimePicker;
64
import org.netbeans.modules.db.dataview.util.TimestampType;
62
import org.netbeans.modules.db.dataview.util.TimestampType;
Lines 138-154 Link Here
138
    protected Timestamp getValueAsTimestamp(Object value) {
136
    protected Timestamp getValueAsTimestamp(Object value) {
139
        if (isEmpty(value) || DataViewUtils.isSQLConstantString(value, null)) {
137
        if (isEmpty(value) || DataViewUtils.isSQLConstantString(value, null)) {
140
            return new Timestamp(System.currentTimeMillis());
138
            return new Timestamp(System.currentTimeMillis());
141
        }
139
        } else if (value instanceof Timestamp) {
142
143
        if (value instanceof Timestamp) {
144
            return (Timestamp) value;
140
            return (Timestamp) value;
145
        }
141
        } else if (value instanceof java.util.Date) {
146
        if (value instanceof Long) {
142
            return new Timestamp(((java.util.Date) value).getTime());
143
        } else if (value instanceof java.util.Calendar) {
144
            return new Timestamp(((java.util.Calendar) value).getTime().getTime());
145
        } else if (value instanceof Long) {
147
            return new Timestamp((Long) value);
146
            return new Timestamp((Long) value);
148
        }
147
        } else if (value instanceof String) {
149
        if (value instanceof String) {
150
            try {
148
            try {
151
152
                return new Timestamp(dateFormat.parse((String) value).getTime());
149
                return new Timestamp(dateFormat.parse((String) value).getTime());
153
            } catch (ParseException e) {
150
            } catch (ParseException e) {
154
                //mLogger.log(Level.SEVERE, e.getMessage(), e.getMessage());
151
                //mLogger.log(Level.SEVERE, e.getMessage(), e.getMessage());
(-)db.dataview/src/org/netbeans/modules/db/dataview/util/JXDateTimePicker.java (-2 / +2 lines)
Lines 378-387 Link Here
378
            _monthView.setMonthStringForeground(UIManager.getColor("nb.dataview.jxdatetimepicker.monthStringForeground")); //NOI18N
378
            _monthView.setMonthStringForeground(UIManager.getColor("nb.dataview.jxdatetimepicker.monthStringForeground")); //NOI18N
379
        }
379
        }
380
        if (UIManager.getColor("nb.dataview.jxdatetimepicker.daysOfTheWeekForeground") != null) { //NOI18N
380
        if (UIManager.getColor("nb.dataview.jxdatetimepicker.daysOfTheWeekForeground") != null) { //NOI18N
381
            _monthView.setMonthStringForeground(UIManager.getColor("nb.dataview.jxdatetimepicker.daysOfTheWeekForeground")); //NOI18N
381
            _monthView.setDaysOfTheWeekForeground(UIManager.getColor("nb.dataview.jxdatetimepicker.daysOfTheWeekForeground")); //NOI18N
382
        }
382
        }
383
        if (UIManager.getColor("nb.dataview.jxdatetimepicker.todayBackground") != null) { //NOI18N
383
        if (UIManager.getColor("nb.dataview.jxdatetimepicker.todayBackground") != null) { //NOI18N
384
            _monthView.setMonthStringForeground(UIManager.getColor("nb.dataview.jxdatetimepicker.todayBackground")); //NOI18N
384
            _monthView.setTodayBackground(UIManager.getColor("nb.dataview.jxdatetimepicker.todayBackground")); //NOI18N
385
        }
385
        }
386
        _monthView.addPropertyChangeListener(getMonthViewListener());
386
        _monthView.addPropertyChangeListener(getMonthViewListener());
387
    }
387
    }

Return to bug 233141