package org.korsakow.ide.ui.resourceexplorer; import java.awt.Component; import javax.swing.JTable; import javax.swing.JTextField; import org.korsakow.ide.ui.components.KTreeTable.KTreeTableCellEditor; import org.korsakow.ide.ui.components.tree.KNode; import org.korsakow.ide.util.UIUtil; public class ResourceTreeTableCellEditor extends KTreeTableCellEditor { private final ResourceTreeTable treeTable; public ResourceTreeTableCellEditor(ResourceTreeTable treeTable) { super(treeTable); this.treeTable = treeTable; } private KNode editingNode; @Override public ResourceTreeTable getTreeTable() { return (ResourceTreeTable)super.getTreeTable(); } public KNode getEditingNode() { return editingNode; } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int r, int c) { editingNode = treeTable.getNodeAt(r); if (editingNode != null) value = editingNode.getName(); if (value == null) value = ""; int TreeTableCellEditorFixedRow = getTreeTable().getTree().isRootVisible()?r:r+1; // TreeTableCellEditor tries to compensate if root isn't visible. however its trick seems to simply not work final JTextField textField = (JTextField)super.getTableCellEditorComponent(table, value, isSelected, TreeTableCellEditorFixedRow, c); textField.setBorder(null); UIUtil.runUITaskLater(new Runnable() { public void run() { textField.setSelectionStart(0); textField.setSelectionEnd(textField.getText().length()); textField.requestFocus(); } }); return textField; } }