Lines 42-66
Link Here
|
42 |
package org.netbeans.modules.db.dataview.table.celleditor; |
42 |
package org.netbeans.modules.db.dataview.table.celleditor; |
43 |
|
43 |
|
44 |
import java.awt.Component; |
44 |
import java.awt.Component; |
|
|
45 |
import java.lang.ref.WeakReference; |
45 |
import javax.swing.BorderFactory; |
46 |
import javax.swing.BorderFactory; |
|
|
47 |
import javax.swing.InputVerifier; |
46 |
import javax.swing.JComponent; |
48 |
import javax.swing.JComponent; |
47 |
import javax.swing.JTable; |
49 |
import javax.swing.JTable; |
48 |
import javax.swing.JTextField; |
50 |
import javax.swing.JTextField; |
|
|
51 |
import javax.swing.table.TableModel; |
52 |
import javax.swing.text.JTextComponent; |
53 |
import org.netbeans.modules.db.dataview.meta.DBColumn; |
54 |
import org.netbeans.modules.db.dataview.meta.DBException; |
49 |
import org.netbeans.modules.db.dataview.table.ResultSetTableCellEditor; |
55 |
import org.netbeans.modules.db.dataview.table.ResultSetTableCellEditor; |
|
|
56 |
import org.netbeans.modules.db.dataview.table.ResultSetTableModel; |
57 |
import org.netbeans.modules.db.dataview.util.DBReadWriteHelper; |
58 |
import org.openide.util.Exceptions; |
50 |
|
59 |
|
51 |
public class NumberFieldEditor extends ResultSetTableCellEditor { |
60 |
public class NumberFieldEditor extends ResultSetTableCellEditor { |
|
|
61 |
private final JTextField textField; |
62 |
private DBColumn dbColumn; |
63 |
private Object oldValue; |
64 |
private InputVerifier verifier = new InputVerifier() { |
65 |
@Override |
66 |
public boolean verify(JComponent input) { |
67 |
if(dbColumn != null && input instanceof JTextComponent) { |
68 |
String inputText = ((JTextComponent) input).getText(); |
69 |
try { |
70 |
DBReadWriteHelper.validate(inputText, dbColumn); |
71 |
} catch (DBException ex) { |
72 |
return false; |
73 |
} |
74 |
return true; |
75 |
} else { |
76 |
return true; |
77 |
} |
78 |
} |
79 |
}; |
80 |
|
52 |
|
81 |
|
53 |
public NumberFieldEditor(final JTextField textField) { |
82 |
public NumberFieldEditor(final JTextField textField) { |
54 |
super(textField); |
83 |
super(textField); |
|
|
84 |
this.textField = textField; |
55 |
((JTextField) getComponent()).setHorizontalAlignment(JTextField.RIGHT); |
85 |
((JTextField) getComponent()).setHorizontalAlignment(JTextField.RIGHT); |
56 |
} |
86 |
} |
57 |
|
87 |
|
58 |
@Override |
88 |
@Override |
59 |
public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, int row, int column) { |
89 |
public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, int row, int column) { |
|
|
90 |
oldValue = value; |
91 |
int modelColumn = table.convertColumnIndexToModel(column); |
92 |
TableModel tm = table.getModel(); |
93 |
dbColumn = null; |
94 |
if(tm instanceof ResultSetTableModel) { |
95 |
textField.setInputVerifier(verifier); |
96 |
dbColumn = ((ResultSetTableModel) tm).getColumn(modelColumn); |
97 |
} else { |
98 |
textField.setInputVerifier(null); |
99 |
} |
60 |
Component c = super.getTableCellEditorComponent(table, value, isSelected, row, column); |
100 |
Component c = super.getTableCellEditorComponent(table, value, isSelected, row, column); |
61 |
if (suppressEditorBorder && c instanceof JComponent) { |
101 |
if (suppressEditorBorder && c instanceof JComponent) { |
62 |
((JComponent) c).setBorder(BorderFactory.createEmptyBorder()); |
102 |
((JComponent) c).setBorder(BorderFactory.createEmptyBorder()); |
63 |
} |
103 |
} |
64 |
return c; |
104 |
return c; |
65 |
} |
105 |
} |
|
|
106 |
|
107 |
/** |
108 |
* Override getCellEditorValue to build |
109 |
*/ |
110 |
@Override |
111 |
public Object getCellEditorValue() { |
112 |
try { |
113 |
Object superVal = super.getCellEditorValue(); |
114 |
if (dbColumn != null) { |
115 |
try { |
116 |
return DBReadWriteHelper.validate(superVal, dbColumn); |
117 |
} catch (DBException ex) { |
118 |
Exceptions.printStackTrace(ex); |
119 |
return oldValue; |
66 |
} |
120 |
} |
|
|
121 |
} else { |
122 |
return superVal; |
123 |
} |
124 |
} finally { |
125 |
oldValue = null; |
126 |
} |
127 |
} |
128 |
|
129 |
@Override |
130 |
public boolean stopCellEditing() { |
131 |
try { |
132 |
Object value = super.getCellEditorValue(); |
133 |
DBReadWriteHelper.validate(value, dbColumn); |
134 |
return super.stopCellEditing(); |
135 |
} catch (DBException ex) { |
136 |
return false; |
137 |
} |
138 |
} |
139 |
|
140 |
@Override |
141 |
public void cancelCellEditing() { |
142 |
oldValue = null; |
143 |
super.cancelCellEditing(); |
144 |
} |
145 |
} |