/* * Copyright (C) 2007 Quadduc <quadduc@gmail.com> * * This file is part of LateralGM. * LateralGM is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package org.lateralgm.components.impl; import java.awt.event.MouseEvent; import java.util.EventObject; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellEditor; import javax.swing.tree.TreePath; import org.lateralgm.components.GmTreeGraphics; import org.lateralgm.main.Prefs; public class GmTreeEditor extends DefaultTreeCellEditor { public GmTreeEditor(JTree tree, GmTreeGraphics renderer) { super(tree,renderer); } public boolean isCellEditable(EventObject event) { if (event != null && event.getSource() instanceof JTree && event instanceof MouseEvent) { TreePath path = tree.getPathForLocation(((MouseEvent) event).getX(), ((MouseEvent) event).getY()); if (path != null && path.getPathCount() <= 2 && !Prefs.renamableRoots) return false; } else if (event == null) { ResNode node = ((ResNode) tree.getLastSelectedPathComponent()); if (node != null) { if (Prefs.renamableRoots) return true; if (node.status != ResNode.STATUS_PRIMARY) return node.isEditable(); return false; } } return super.isCellEditable(event); } protected void determineOffset(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { if (renderer != null) { GmTreeGraphics g = (GmTreeGraphics) renderer; editingIcon = g.getNodeIcon(value,expanded,leaf); offset = renderer.getIconTextGap(); if (editingIcon != null) offset += editingIcon.getIconWidth(); } else { editingIcon = null; offset = 0; } } }