package com.clearlyspam23.GLE.basic.layers.tile.gui.tileset; import java.awt.Component; import java.awt.Container; import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellEditor; import javax.swing.tree.DefaultTreeCellRenderer; import com.clearlyspam23.GLE.basic.layers.tile.TilesetGroupNode; import com.clearlyspam23.GLE.basic.layers.tile.TilesetTreeNode; public class TilesetTreeCellEditor extends DefaultTreeCellEditor{ public TilesetTreeCellEditor(JTree arg0, DefaultTreeCellRenderer arg1) { super(arg0, arg1); } private TilesetTreeNode node; private JTextField field; private TilesetGroupNode root; public void setTilesetRoot(TilesetGroupNode root){ this.root = root; } @Override public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { Container comp = (Container) super.getTreeCellEditorComponent(tree, value, isSelected, expanded, leaf, row); node = (TilesetTreeNode) ((DefaultMutableTreeNode) value).getUserObject(); field = (JTextField)comp.getComponent(0); field.setText(node.getName()); return comp; } @Override public Object getCellEditorValue() { if(field.getText()!=null&&!"".equals(field.getText())&&root.getTilesetsByName(field.getText()).isEmpty()) node.setName(field.getText()); //System.out.println("get Cell Editor Value "+ o); return node; } @Override public boolean stopCellEditing() { return super.stopCellEditing(); } @Override public void cancelCellEditing() { super.cancelCellEditing(); } }