# HG changeset patch # User Matthias Bläsing # Date 1362834378 -3600 # Branch dataview-rework-2 # Node ID 91fe39c71e6cdcd2fcf0ce61ee4e8e37ba8e5b43 # Parent 3f5c56cc1030e545354cab55d40927a7053264a0 Preclean Celleditors - remove editable attribute from ResultSetTableCellEditor -> they are by default only invoked if editable - remove DBReadWriteHelper#validate from ResultSetTableCellEditor -> in the following commits this will be moved into the setValue method of ResultSetTableModel diff --git a/db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetTableCellEditor.java b/db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetTableCellEditor.java --- a/db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetTableCellEditor.java +++ b/db.dataview/src/org/netbeans/modules/db/dataview/table/ResultSetTableCellEditor.java @@ -45,20 +45,15 @@ import java.awt.event.MouseEvent; import java.util.EventObject; import javax.swing.DefaultCellEditor; -import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.UIManager; import org.jdesktop.swingx.renderer.JRendererCheckBox; -import org.netbeans.modules.db.dataview.meta.DBColumn; -import org.netbeans.modules.db.dataview.util.DBReadWriteHelper; import org.netbeans.modules.db.dataview.util.DataViewUtils; -import org.openide.awt.StatusDisplayer; public class ResultSetTableCellEditor extends DefaultCellEditor { protected Object val; - protected boolean editable = true; protected JTable table; protected static final boolean suppressEditorBorder; @@ -93,17 +88,9 @@ if (val == null && txtVal.equals("")) { return null; } else { - try { - assert table != null; - int col = table.getEditingColumn(); - //textField.addKeyListener(new TableKeyListener()); - return DBReadWriteHelper.validate(txtVal, ((ResultSetJXTable) table).getDBColumn(col)); - } catch (Exception ex) { - StatusDisplayer.getDefault().setStatusText(ex.getMessage()); return txtVal; } } - } }; textField.addActionListener(delegate); @@ -148,23 +135,4 @@ checkBox.addActionListener(delegate); } - - protected void setEditable(int column, Component c, boolean celleditable) { - assert table != null; - DBColumn dbCol = ((ResultSetJXTable) table).getDBColumn(column); - if (dbCol.isGenerated()) { - editable = false; - } - if (! celleditable) { - editable = false; - } else { - editable = dbCol.isEditable(); - } - - if (c instanceof JTextField) { - ((JTextField) c).setEditable(editable); - } else if (c instanceof JComponent) { - ((JComponent) c).setEnabled(editable); - } - } } diff --git a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/BooleanTableCellEditor.java b/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/BooleanTableCellEditor.java --- a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/BooleanTableCellEditor.java +++ b/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/BooleanTableCellEditor.java @@ -58,9 +58,7 @@ @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - this.table = table; Component c = super.getTableCellEditorComponent(table, value, isSelected, row, column); - setEditable(column, c, table.isCellEditable(row, column)); if (suppressEditorBorder && c instanceof JComponent) { ((JComponent) c).setBorder(BorderFactory.createEmptyBorder()); } diff --git a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/DateTimePickerCellEditor.java b/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/DateTimePickerCellEditor.java --- a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/DateTimePickerCellEditor.java +++ b/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/DateTimePickerCellEditor.java @@ -132,7 +132,6 @@ datePicker.setDateTime(getValueAsTimestamp(value)); ignoreAction = false; - setEditable(column, datePicker, table.isCellEditable(row, column)); return datePicker; } @@ -211,19 +210,6 @@ return l; } - protected void setEditable(int column, JXDateTimePicker c, boolean celleditable) { - assert table != null; - DBColumn dbCol = ((ResultSetJXTable) table).getDBColumn(column); - if (dbCol.isGenerated()) { - editable = false; - } else if (! celleditable) { - editable = false; - } else { - editable = dbCol.isEditable(); - } - c.setEditable(editable); - } - public void addKeyListener(KeyListener kl) { datePicker.addKeyListener(kl); } diff --git a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/NumberFieldEditor.java b/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/NumberFieldEditor.java --- a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/NumberFieldEditor.java +++ b/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/NumberFieldEditor.java @@ -57,12 +57,10 @@ @Override public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, int row, int column) { - this.table = table; Component c = super.getTableCellEditorComponent(table, value, isSelected, row, column); if (suppressEditorBorder && c instanceof JComponent) { ((JComponent) c).setBorder(BorderFactory.createEmptyBorder()); } - setEditable(column, c, table.isCellEditable(row, column)); return c; } } diff --git a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/StringTableCellEditor.java b/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/StringTableCellEditor.java --- a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/StringTableCellEditor.java +++ b/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/StringTableCellEditor.java @@ -65,6 +65,7 @@ import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.table.TableCellEditor; +import javax.swing.table.TableModel; import org.jdesktop.swingx.JXButton; import org.jdesktop.swingx.JXPanel; import org.netbeans.modules.db.dataview.table.ResultSetTableCellEditor; @@ -89,8 +90,8 @@ @Override public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, int row, int column) { this.table = table; + final JComponent c = (JComponent) super.getTableCellEditorComponent(table, value, isSelected, row, column); - setEditable(column, c, table.isCellEditable(row, column)); JXPanel panel = new JXPanel(new BorderLayout()) { @@ -138,7 +139,11 @@ protected void editCell(JTable table, int row, int column) { JTextArea textArea = new JTextArea(20, 80); - Object value = table.getValueAt(row, column); + TableModel tm = table.getModel(); + int modelRow = table.convertRowIndexToModel(row); + int modelColumn = table.convertColumnIndexToModel(column); + boolean editable = tm.isCellEditable(modelRow, modelColumn); + Object value = tm.getValueAt(modelRow, modelColumn); if (value != null) { textArea.setText(value.toString()); textArea.setCaretPosition(0); @@ -151,7 +156,7 @@ if (editable) { int result = JOptionPane.showOptionDialog(parent, pane, table.getColumnName(column), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null); if (result == JOptionPane.OK_OPTION) { - table.setValueAt(textArea.getText(), row, column); + tm.setValueAt(textArea.getText(), modelRow, modelColumn); } } else { JOptionPane.showMessageDialog(parent, pane, table.getColumnName(column), JOptionPane.PLAIN_MESSAGE, null);