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 227588
Collapse All | Expand All

(-)a/db.dataview/src/org/netbeans/modules/db/dataview/table/celleditor/NumberFieldEditor.java (+79 lines)
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
}

Return to bug 227588