Lines 65-71
Link Here
|
65 |
|
65 |
|
66 |
public class ClobFieldTableCellEditor extends AbstractCellEditor |
66 |
public class ClobFieldTableCellEditor extends AbstractCellEditor |
67 |
implements TableCellEditor, |
67 |
implements TableCellEditor, |
68 |
ActionListener { |
68 |
ActionListener, AlwaysEnable { |
69 |
|
69 |
|
70 |
private class CharsetSelector extends JPanel { |
70 |
private class CharsetSelector extends JPanel { |
71 |
private JComboBox charsetSelect; |
71 |
private JComboBox charsetSelect; |
Lines 102-108
Link Here
|
102 |
protected JTable table; |
102 |
protected JTable table; |
103 |
protected int currentRow; |
103 |
protected int currentRow; |
104 |
protected int currentColumn; |
104 |
protected int currentColumn; |
|
|
105 |
protected int currentModelRow; |
106 |
protected int currentModelColumn; |
105 |
protected JMenuItem saveContentMenuItem; |
107 |
protected JMenuItem saveContentMenuItem; |
|
|
108 |
protected JMenuItem editContentMenuItem; |
109 |
protected JMenuItem loadContentMenuItem; |
110 |
protected JMenuItem nullContentMenuItem; |
106 |
|
111 |
|
107 |
@SuppressWarnings("LeakingThisInConstructor") |
112 |
@SuppressWarnings("LeakingThisInConstructor") |
108 |
public ClobFieldTableCellEditor() { |
113 |
public ClobFieldTableCellEditor() { |
Lines 118-125
Link Here
|
118 |
button.setFont(new Font(button.getFont().getFamily(), Font.ITALIC, 9)); |
123 |
button.setFont(new Font(button.getFont().getFamily(), Font.ITALIC, 9)); |
119 |
|
124 |
|
120 |
popup = new JPopupMenu(); |
125 |
popup = new JPopupMenu(); |
121 |
final JMenuItem miLobSaveAction = new JMenuItem(NbBundle.getMessage(ClobFieldTableCellEditor.class, "saveLob.title")); |
126 |
saveContentMenuItem = new JMenuItem(NbBundle.getMessage(ClobFieldTableCellEditor.class, "saveLob.title")); |
122 |
miLobSaveAction.addActionListener(new ActionListener() { |
127 |
saveContentMenuItem.addActionListener(new ActionListener() { |
123 |
|
128 |
|
124 |
@Override |
129 |
@Override |
125 |
public void actionPerformed(ActionEvent e) { |
130 |
public void actionPerformed(ActionEvent e) { |
Lines 127-136
Link Here
|
127 |
fireEditingCanceled(); |
132 |
fireEditingCanceled(); |
128 |
} |
133 |
} |
129 |
}); |
134 |
}); |
130 |
saveContentMenuItem = miLobSaveAction; |
135 |
popup.add(saveContentMenuItem); |
131 |
popup.add(miLobSaveAction); |
136 |
editContentMenuItem = new JMenuItem(NbBundle.getMessage(ClobFieldTableCellEditor.class, "editClob.title")); |
132 |
final JMenuItem miLobEditAction = new JMenuItem(NbBundle.getMessage(ClobFieldTableCellEditor.class, "editClob.title")); |
137 |
editContentMenuItem.addActionListener(new ActionListener() { |
133 |
miLobEditAction.addActionListener(new ActionListener() { |
|
|
134 |
|
138 |
|
135 |
@Override |
139 |
@Override |
136 |
public void actionPerformed(ActionEvent e) { |
140 |
public void actionPerformed(ActionEvent e) { |
Lines 138-146
Link Here
|
138 |
editCell(); |
142 |
editCell(); |
139 |
} |
143 |
} |
140 |
}); |
144 |
}); |
141 |
popup.add(miLobEditAction); |
145 |
popup.add(editContentMenuItem); |
142 |
final JMenuItem miLobLoadAction = new JMenuItem(NbBundle.getMessage(ClobFieldTableCellEditor.class, "loadLob.title")); |
146 |
loadContentMenuItem = new JMenuItem(NbBundle.getMessage(ClobFieldTableCellEditor.class, "loadLob.title")); |
143 |
miLobLoadAction.addActionListener(new ActionListener() { |
147 |
loadContentMenuItem.addActionListener(new ActionListener() { |
144 |
|
148 |
|
145 |
@Override |
149 |
@Override |
146 |
public void actionPerformed(ActionEvent e) { |
150 |
public void actionPerformed(ActionEvent e) { |
Lines 151-159
Link Here
|
151 |
fireEditingStopped(); |
155 |
fireEditingStopped(); |
152 |
} |
156 |
} |
153 |
}); |
157 |
}); |
154 |
popup.add(miLobLoadAction); |
158 |
popup.add(loadContentMenuItem); |
155 |
final JMenuItem miLobNullAction = new JMenuItem(NbBundle.getMessage(ClobFieldTableCellEditor.class, "nullLob.title")); |
159 |
nullContentMenuItem = new JMenuItem(NbBundle.getMessage(ClobFieldTableCellEditor.class, "nullLob.title")); |
156 |
miLobNullAction.addActionListener(new ActionListener() { |
160 |
nullContentMenuItem.addActionListener(new ActionListener() { |
157 |
|
161 |
|
158 |
@Override |
162 |
@Override |
159 |
public void actionPerformed(ActionEvent e) { |
163 |
public void actionPerformed(ActionEvent e) { |
Lines 161-167
Link Here
|
161 |
fireEditingStopped(); |
165 |
fireEditingStopped(); |
162 |
} |
166 |
} |
163 |
}); |
167 |
}); |
164 |
popup.add(miLobNullAction); |
168 |
popup.add(nullContentMenuItem); |
165 |
|
169 |
|
166 |
} |
170 |
} |
167 |
|
171 |
|
Lines 175-180
Link Here
|
175 |
@Override |
179 |
@Override |
176 |
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { |
180 |
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { |
177 |
currentValue = (java.sql.Clob) value; |
181 |
currentValue = (java.sql.Clob) value; |
|
|
182 |
this.currentColumn = column; |
183 |
this.currentRow = row; |
184 |
this.table = table; |
185 |
this.currentModelColumn = table.convertColumnIndexToModel(column); |
186 |
this.currentModelRow = table.convertRowIndexToModel(row); |
187 |
boolean editable = table.getModel().isCellEditable(currentModelRow, currentModelColumn); |
178 |
if (currentValue != null) { |
188 |
if (currentValue != null) { |
179 |
saveContentMenuItem.setEnabled(true); |
189 |
saveContentMenuItem.setEnabled(true); |
180 |
try { |
190 |
try { |
Lines 197-205
Link Here
|
197 |
saveContentMenuItem.setEnabled(false); |
207 |
saveContentMenuItem.setEnabled(false); |
198 |
button.setText("<NULL>"); |
208 |
button.setText("<NULL>"); |
199 |
} |
209 |
} |
200 |
this.currentColumn = column; |
210 |
loadContentMenuItem.setEnabled(editable); |
201 |
this.currentRow = row; |
211 |
nullContentMenuItem.setEnabled(editable); |
202 |
this.table = table; |
212 |
if (editable) { |
|
|
213 |
editContentMenuItem.setEnabled(true); |
214 |
editContentMenuItem.setText(NbBundle.getMessage(ClobFieldTableCellEditor.class, "editClob.title")); |
215 |
} else { |
216 |
editContentMenuItem.setEnabled(currentValue != null); |
217 |
editContentMenuItem.setText(NbBundle.getMessage(ClobFieldTableCellEditor.class, "editClobReadOnly.title")); |
218 |
} |
203 |
return button; |
219 |
return button; |
204 |
} |
220 |
} |
205 |
|
221 |
|
Lines 354-362
Link Here
|
354 |
} |
370 |
} |
355 |
|
371 |
|
356 |
JTextArea textArea = new JTextArea(20, 80); |
372 |
JTextArea textArea = new JTextArea(20, 80); |
|
|
373 |
// Work around: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7100524 |
374 |
textArea.setDropTarget(null); |
357 |
textArea.setText(stringVal); |
375 |
textArea.setText(stringVal); |
358 |
textArea.setCaretPosition(0); |
376 |
textArea.setCaretPosition(0); |
359 |
textArea.setEditable(table.isCellEditable(currentRow, currentColumn)); |
377 |
textArea.setEditable(table.getModel().isCellEditable(currentModelRow, currentModelColumn)); |
360 |
|
378 |
|
361 |
JScrollPane pane = new JScrollPane(textArea); |
379 |
JScrollPane pane = new JScrollPane(textArea); |
362 |
pane.addHierarchyListener( |
380 |
pane.addHierarchyListener( |