public BaseTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) {
super(dm, cm, sm);
getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setSurrendersFocusOnKeystroke(true);
setCellSelectionEnabled(false);
setRowSelectionAllowed(true);
setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);
putClientProperty("terminateEditOnFocusLost", PropUtils.psCommitOnFocusLoss ? Boolean.FALSE : Boolean.TRUE);
dragListener = new LineDragListener();
addMouseListener(dragListener);
addMouseMotionListener(dragListener);
setFocusCycleRoot(true);
enableEvents(AWTEvent.FOCUS_EVENT_MASK);
if (getClass() != SheetTable.class) {
throw new NoClassDefFoundError("Only SheetTable may subclass BaseTable, for good reasons");
}
}