Lines 43-48
Link Here
|
43 |
|
43 |
|
44 |
import java.awt.datatransfer.StringSelection; |
44 |
import java.awt.datatransfer.StringSelection; |
45 |
import java.awt.datatransfer.Transferable; |
45 |
import java.awt.datatransfer.Transferable; |
|
|
46 |
import java.awt.event.ActionEvent; |
46 |
import java.awt.event.KeyEvent; |
47 |
import java.awt.event.KeyEvent; |
47 |
import java.awt.event.KeyListener; |
48 |
import java.awt.event.KeyListener; |
48 |
import java.awt.event.MouseEvent; |
49 |
import java.awt.event.MouseEvent; |
Lines 56-61
Link Here
|
56 |
import java.util.List; |
57 |
import java.util.List; |
57 |
import java.util.logging.Level; |
58 |
import java.util.logging.Level; |
58 |
import java.util.logging.Logger; |
59 |
import java.util.logging.Logger; |
|
|
60 |
import javax.swing.AbstractAction; |
61 |
import javax.swing.Action; |
59 |
import javax.swing.DefaultRowSorter; |
62 |
import javax.swing.DefaultRowSorter; |
60 |
import javax.swing.JComponent; |
63 |
import javax.swing.JComponent; |
61 |
import javax.swing.JLabel; |
64 |
import javax.swing.JLabel; |
Lines 67-73
Link Here
|
67 |
import javax.swing.event.TableModelListener; |
70 |
import javax.swing.event.TableModelListener; |
68 |
import javax.swing.plaf.UIResource; |
71 |
import javax.swing.plaf.UIResource; |
69 |
import javax.swing.table.*; |
72 |
import javax.swing.table.*; |
70 |
import org.jdesktop.swingx.JXTable; |
|
|
71 |
import org.jdesktop.swingx.JXTableHeader; |
73 |
import org.jdesktop.swingx.JXTableHeader; |
72 |
import org.jdesktop.swingx.decorator.ColorHighlighter; |
74 |
import org.jdesktop.swingx.decorator.ColorHighlighter; |
73 |
import org.jdesktop.swingx.decorator.HighlightPredicate; |
75 |
import org.jdesktop.swingx.decorator.HighlightPredicate; |
Lines 135-140
Link Here
|
135 |
multiplier = getFontMetrics(getFont()).stringWidth(data) / data.length() + 4; |
137 |
multiplier = getFontMetrics(getFont()).stringWidth(data) / data.length() + 4; |
136 |
putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); |
138 |
putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); |
137 |
this.setModel(createDefaultDataModel()); |
139 |
this.setModel(createDefaultDataModel()); |
|
|
140 |
|
141 |
getActionMap().put("selectNextColumnCell", new EditingAwareAction(getActionMap().get("selectNextColumnCell"))); |
142 |
getActionMap().put("selectPreviousColumnCell", new EditingAwareAction(getActionMap().get("selectPreviousColumnCell"))); |
143 |
getActionMap().put("selectNextRowCell", new EditingAwareAction(getActionMap().get("selectNextRowCell"))); |
144 |
getActionMap().put("selectNextPreviousCell", new EditingAwareAction(getActionMap().get("selectPreviousRowCell"))); |
145 |
|
146 |
setSurrendersFocusOnKeystroke(true); |
138 |
} |
147 |
} |
139 |
|
148 |
|
140 |
@Override |
149 |
@Override |
Lines 478-481
Link Here
|
478 |
return COPY; |
487 |
return COPY; |
479 |
} |
488 |
} |
480 |
} |
489 |
} |
|
|
490 |
|
491 |
private class EditingAwareAction extends AbstractAction { |
492 |
|
493 |
private final Action delegate; |
494 |
|
495 |
public EditingAwareAction(Action delegate) { |
496 |
this.delegate = delegate; |
497 |
} |
498 |
|
499 |
@Override |
500 |
public void actionPerformed(ActionEvent e) { |
501 |
boolean editing = isEditing(); |
502 |
delegate.actionPerformed(e); |
503 |
if (editing) { |
504 |
editCellAt(getSelectedRow(), getSelectedColumn()); |
505 |
} |
506 |
} |
507 |
} |
508 |
|
481 |
} |
509 |
} |