package org.korsakow.ide.ui.components; import java.awt.event.MouseEvent; import javax.swing.JTable; import org.korsakow.ide.util.Platform; public class KTable extends JTable { private boolean selectionEnabled = true; private Boolean isEditable; public void setSelectionEnabled(boolean enabled) { selectionEnabled = enabled; } public boolean isSelectionEneabled() { return selectionEnabled; } /** * Set to non-null to override isCellEditable. * @param editable */ public void setEditable(Boolean editable) { isEditable = editable; } public Boolean isEditable() { return isEditable; } public boolean isCellEditable(int row, int col) { if (isEditable == null) return super.isCellEditable(row, col); return isEditable(); } public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) { if (!selectionEnabled) return; super.changeSelection(rowIndex, columnIndex, toggle, extend); } protected void processMouseEvent(MouseEvent event) { // L&F fix for MAC which uses CTL-left click as a popup trigger if (Platform.isMacOS() && event.isControlDown() && event.getButton() == MouseEvent.BUTTON1) { event = new MouseEvent(event.getComponent(), event.getID(), event.getWhen(), event.getModifiers(), event.getX(), event.getY(), event.getClickCount(), true); } super.processMouseEvent(event); } }