/**
*
*/
package org.openflexo.fib.view.widget.browser;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.util.EventObject;
import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.TreePath;
import org.openflexo.fib.view.widget.browser.FIBBrowserModel.BrowserCell;
public class FIBBrowserCellEditor extends DefaultTreeCellEditor {
public FIBBrowserCellEditor(JTree tree, FIBBrowserCellRenderer renderer) {
super(tree, renderer);
}
@Override
public Component getTreeCellEditorComponent(JTree arg0, Object element, boolean _selected, boolean expanded, boolean leaf, int row) {
String editingName = ((BrowserCell) element).getBrowserElementType().getEditableLabelFor(
((BrowserCell) element).getRepresentedObject());
Icon customIcon = getRenderer().getIcon(((BrowserCell) element).getRepresentedObject());
if (customIcon != null) {
getRenderer().setClosedIcon(customIcon);
getRenderer().setOpenIcon(customIcon);
getRenderer().setLeafIcon(customIcon);
}
Component returned = super.getTreeCellEditorComponent(arg0, editingName, _selected, expanded, leaf, row);
return returned;
}
@Override
public boolean isCellEditable(EventObject event) {
if (super.isCellEditable(event)) {
if (event != null) {
if (event.getSource() instanceof JTree) {
setTree((JTree) event.getSource());
if (event instanceof MouseEvent) {
TreePath path = tree.getPathForLocation(((MouseEvent) event).getX(), ((MouseEvent) event).getY());
if (path != null) {
BrowserCell cell = (BrowserCell) path.getLastPathComponent();
return cell.getBrowserElementType().isLabelEditable();
}
}
}
}
}
return false;
}
protected FIBBrowserCellRenderer getRenderer() {
return (FIBBrowserCellRenderer) renderer;
}
}