Skip to content

Commit 34574bf

Browse files
committed
refactor: add instanceof check
1 parent 69a10fc commit 34574bf

File tree

7 files changed

+76
-57
lines changed

7 files changed

+76
-57
lines changed

CellEditorInputVerifier/src/java/example/MainPanel.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,20 @@
2323
public final class MainPanel extends JPanel {
2424
private MainPanel() {
2525
super(new BorderLayout());
26+
JTextField field1 = new JTextField();
27+
initBorderAndAlignment(field1);
28+
Document doc1 = field1.getDocument();
29+
if (doc1 instanceof AbstractDocument) {
30+
((AbstractDocument) doc1).setDocumentFilter(new IntegerDocumentFilter());
31+
}
2632

27-
JTextField textField1 = new JTextField();
28-
initBorderAndAlignment(textField1);
29-
((AbstractDocument) textField1.getDocument()).setDocumentFilter(new IntegerDocumentFilter());
30-
31-
JTextField textField2 = new JTextField();
32-
initBorderAndAlignment(textField2);
33-
textField2.setInputVerifier(new IntegerInputVerifier());
33+
JTextField field2 = new JTextField();
34+
initBorderAndAlignment(field2);
35+
field2.setInputVerifier(new IntegerInputVerifier());
3436

35-
JFormattedTextField textField3 = new JFormattedTextField();
36-
initBorderAndAlignment(textField3);
37-
textField3.setFormatterFactory(new NumberFormatterFactory());
37+
JFormattedTextField field3 = new JFormattedTextField();
38+
initBorderAndAlignment(field3);
39+
field3.setFormatterFactory(new NumberFormatterFactory());
3840

3941
String[] columnNames = {"Default", "DocumentFilter", "InputVerifier", "JFormattedTextField"};
4042
TableModel model = new DefaultTableModel(columnNames, 10) {
@@ -45,12 +47,14 @@ private MainPanel() {
4547
JTable table = new JTable(model) {
4648
@Override public Component prepareEditor(TableCellEditor editor, int row, int column) {
4749
Component c = super.prepareEditor(editor, row, column);
48-
((JComponent) c).setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
50+
if (c instanceof JComponent) {
51+
((JComponent) c).setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
52+
}
4953
return c;
5054
}
5155
};
52-
table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(textField1));
53-
table.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(textField2) {
56+
table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(field1));
57+
table.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(field2) {
5458
@Override public boolean stopCellEditing() {
5559
JComponent editor = (JComponent) getComponent();
5660
boolean isEditValid = editor.getInputVerifier().verify(editor);
@@ -59,7 +63,7 @@ private MainPanel() {
5963
return isEditValid && super.stopCellEditing();
6064
}
6165
});
62-
table.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(textField3) {
66+
table.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(field3) {
6367
@Override public boolean stopCellEditing() {
6468
JFormattedTextField editor = (JFormattedTextField) getComponent();
6569
boolean isEditValid = editor.isEditValid();

DeleteKeyBeep/src/java/example/MainPanel.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,18 @@ public final class MainPanel extends JPanel {
2222
private MainPanel() {
2323
super(new GridLayout(2, 1));
2424
JTextField field = new JTextField(12);
25-
26-
((AbstractDocument) field.getDocument()).setDocumentFilter(new SizeFilter());
27-
// ((AbstractDocument) field.getDocument()).setDocumentFilter(new DocumentSizeFilter(5));
25+
Document doc = field.getDocument();
26+
if (doc instanceof AbstractDocument) {
27+
((AbstractDocument) doc).setDocumentFilter(new SizeFilter());
28+
// ((AbstractDocument) doc).setDocumentFilter(new DocumentSizeFilter(5));
29+
}
2830

2931
ActionMap am = field.getActionMap();
32+
String delPrev = DefaultEditorKit.deletePrevCharAction; // "delete-previous";
33+
am.put(delPrev, new SilentDeleteTextAction(delPrev, am.get(delPrev)));
3034

31-
String key = DefaultEditorKit.deletePrevCharAction; // "delete-previous";
32-
am.put(key, new SilentDeleteTextAction(key, am.get(key)));
33-
34-
key = DefaultEditorKit.deleteNextCharAction; // "delete-next";
35-
am.put(key, new SilentDeleteTextAction(key, am.get(key)));
35+
String delNext = DefaultEditorKit.deleteNextCharAction; // "delete-next";
36+
am.put(delNext, new SilentDeleteTextAction(delNext, am.get(delNext)));
3637

3738
add(makeTitledPanel("Default", new JTextField()));
3839
add(makeTitledPanel("Override delete-previous, delete-next beep", field));
@@ -72,7 +73,7 @@ private static void createAndShowGui() {
7273
}
7374

7475
class SilentDeleteTextAction extends TextAction {
75-
private final Action deleteAction;
76+
private final transient Action deleteAction;
7677

7778
protected SilentDeleteTextAction(String name, Action deleteAction) {
7879
super(name);

FIFODocument/src/java/example/MainPanel.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ private MainPanel() {
2727
textArea1.setEditable(false);
2828

2929
JTextArea textArea2 = new JTextArea();
30-
((AbstractDocument) textArea2.getDocument()).setDocumentFilter(new FifoDocumentFilter());
30+
Document doc2 = textArea2.getDocument();
31+
if (doc2 instanceof AbstractDocument) {
32+
((AbstractDocument) doc2).setDocumentFilter(new FifoDocumentFilter());
33+
}
3134

3235
Timer timer = new Timer(200, e -> {
3336
String s = LocalDateTime.now(ZoneId.systemDefault()).toString();

LastLineEditableTextArea/src/java/example/MainPanel.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ private MainPanel() {
2525
JTextArea textArea = new JTextArea();
2626
textArea.setMargin(new Insets(2, 5, 2, 2));
2727
textArea.setText(MESSAGE + NonEditableLineDocumentFilter.PROMPT);
28-
((AbstractDocument) textArea.getDocument()).setDocumentFilter(new NonEditableLineDocumentFilter());
29-
28+
Document doc = textArea.getDocument();
29+
if (doc instanceof AbstractDocument) {
30+
((AbstractDocument) doc).setDocumentFilter(new NonEditableLineDocumentFilter());
31+
}
3032
add(new JScrollPane(textArea));
3133
setPreferredSize(new Dimension(320, 240));
3234
}

NonEditableLine/src/java/example/MainPanel.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ private MainPanel() {
2525
JTextArea textArea = new JTextArea();
2626
textArea.setText("Non editable lines\naaa bbb ccc ddd eee\n1234567890\n1234567890987654321");
2727
DocumentFilter filter = new NonEditableLineDocumentFilter(maskRange);
28-
((AbstractDocument) textArea.getDocument()).setDocumentFilter(filter);
28+
Document doc = textArea.getDocument();
29+
if (doc instanceof AbstractDocument) {
30+
((AbstractDocument) doc).setDocumentFilter(filter);
31+
}
32+
Highlighter highlighter = textArea.getHighlighter();
33+
Element root = doc.getDefaultRootElement();
2934
try {
30-
Highlighter highlighter = textArea.getHighlighter();
31-
Document doc = textArea.getDocument();
32-
Element root = doc.getDefaultRootElement();
3335
for (int i = 0; i < maskRange; i++) { // root.getElementCount(); i++) {
3436
Element elm = root.getElement(i);
3537
highlighter.addHighlight(elm.getStartOffset(), elm.getEndOffset() - 1, highlightPainter);

NumericTextField/src/java/example/MainPanel.java

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,25 @@
2121
public final class MainPanel extends JPanel {
2222
private MainPanel() {
2323
super(new BorderLayout());
24+
JTextField field1 = new JTextField("1000");
25+
field1.setHorizontalAlignment(SwingConstants.RIGHT);
26+
field1.setInputVerifier(new IntegerInputVerifier());
27+
28+
JTextField field2 = new JTextField();
29+
field2.setDocument(new IntegerDocument());
30+
field2.setText("2000");
31+
32+
JTextField field3 = new JTextField();
33+
Document doc = field3.getDocument();
34+
if (doc instanceof AbstractDocument) {
35+
((AbstractDocument) doc).setDocumentFilter(new IntegerDocumentFilter());
36+
}
37+
field3.setText("3000");
2438

25-
JTextField textField1 = new JTextField("1000");
26-
textField1.setHorizontalAlignment(SwingConstants.RIGHT);
27-
textField1.setInputVerifier(new IntegerInputVerifier());
28-
29-
JTextField textField2 = new JTextField();
30-
textField2.setDocument(new IntegerDocument());
31-
textField2.setText("2000");
32-
33-
JTextField textField3 = new JTextField();
34-
((AbstractDocument) textField3.getDocument()).setDocumentFilter(new IntegerDocumentFilter());
35-
textField3.setText("3000");
36-
37-
JFormattedTextField textField4 = new JFormattedTextField();
38-
textField4.setFormatterFactory(new NumberFormatterFactory());
39-
textField4.setHorizontalAlignment(SwingConstants.RIGHT);
40-
textField4.setValue(4000);
39+
JFormattedTextField field4 = new JFormattedTextField();
40+
field4.setFormatterFactory(new NumberFormatterFactory());
41+
field4.setHorizontalAlignment(SwingConstants.RIGHT);
42+
field4.setValue(4000);
4143

4244
JSpinner spinner = new JSpinner(new SpinnerNumberModel(0, 0, Integer.MAX_VALUE, 1));
4345
((JSpinner.NumberEditor) spinner.getEditor()).getFormat().setGroupingUsed(false);
@@ -46,19 +48,19 @@ private MainPanel() {
4648
Box box = Box.createVerticalBox();
4749
box.setBorder(BorderFactory.createTitledBorder("TextField"));
4850
box.add(new JLabel("InputVerifier"));
49-
box.add(textField1);
51+
box.add(field1);
5052
box.add(Box.createVerticalStrut(10));
5153

5254
box.add(new JLabel("Custom Document"));
53-
box.add(textField2);
55+
box.add(field2);
5456
box.add(Box.createVerticalStrut(10));
5557

5658
box.add(new JLabel("DocumentFilter"));
57-
box.add(textField3);
59+
box.add(field3);
5860
box.add(Box.createVerticalStrut(10));
5961

6062
box.add(new JLabel("FormatterFactory"));
61-
box.add(textField4);
63+
box.add(field4);
6264
box.add(Box.createVerticalStrut(10));
6365

6466
JPanel p = new JPanel(new BorderLayout(5, 5));
@@ -178,12 +180,12 @@ class IntegerDocumentFilter extends DocumentFilter {
178180
fb.replace(offset, length, text, attrs);
179181
}
180182

181-
private static void checkInput(String proposedValue, int offset) throws BadLocationException {
182-
if (!proposedValue.isEmpty()) {
183+
private static void checkInput(String value, int offset) throws BadLocationException {
184+
if (!value.isEmpty()) {
183185
try {
184-
Integer.parseInt(proposedValue);
186+
Integer.parseInt(value);
185187
} catch (NumberFormatException ex) {
186-
throw (BadLocationException) new BadLocationException(proposedValue, offset).initCause(ex);
188+
throw (BadLocationException) new BadLocationException(value, offset).initCause(ex);
187189
}
188190
}
189191
}

PageInputForPagination/src/java/example/MainPanel.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,13 @@ private MainPanel() {
7171
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
7272
field.getInputMap(JComponent.WHEN_FOCUSED).put(enter, "Enter");
7373
field.getActionMap().put("Enter", enterAction);
74-
((AbstractDocument) field.getDocument()).setDocumentFilter(new IntegerDocumentFilter());
74+
Document doc = field.getDocument();
75+
if (doc instanceof AbstractDocument) {
76+
((AbstractDocument) doc).setDocumentFilter(new IntegerDocumentFilter());
77+
}
7578

76-
Stream.of(first, prev, next, last).forEach(b -> b.addActionListener(this::updateCurrentPageIndex));
79+
Stream.of(first, prev, next, last)
80+
.forEach(b -> b.addActionListener(this::updateCurrentPageIndex));
7781

7882
new TableUpdateTask(2020, itemsPerPage).execute();
7983

@@ -242,7 +246,8 @@ protected int load(int current, int size) throws InterruptedException {
242246

243247
// private int load(Statement stat, int current, int limit) throws SQLException {
244248
// List<Object[]> result = new ArrayList<>(limit);
245-
// String q = String.format("select * from moz_bookmarks limit %d offset %d", limit, current - 1);
249+
// String q = String.format(
250+
// "select * from moz_bookmarks limit %d offset %d", limit, current - 1);
246251
// ResultSet rs = stat.executeQuery(q);
247252
// int i = current;
248253
// while (rs.next() && !isCancelled()) {

0 commit comments

Comments
 (0)