package org.objectstyle.wolips.baseforuiplugins.plist; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.TreeViewer; import org.objectstyle.wolips.baseforplugins.util.ComparisonUtils; import org.objectstyle.wolips.baseforuiplugins.utils.WOTextCellEditor; public class PropertyListKeyEditingSupport extends EditingSupport { private IPropertyListChangeListener _listener; private TreeViewer _treeViewer; private TextCellEditor _textCellEditor; public PropertyListKeyEditingSupport(TreeViewer viewer, IPropertyListChangeListener listener) { super(viewer); _listener = listener; _treeViewer = viewer; _textCellEditor = new WOTextCellEditor(_treeViewer.getTree()); } protected boolean canEdit(Object element) { return ((PropertyListPath) element).isRealKey(); } protected CellEditor getCellEditor(Object element) { return _textCellEditor; } protected Object getValue(Object element) { return ((PropertyListPath) element).getKey(); } protected void setValue(Object element, final Object key) { final PropertyListPath path = (PropertyListPath) element; final String oldKeyPath = path.getKeyPath(); final String oldKey = path.getKey(); if (!ComparisonUtils.equals(oldKey, key)) { if (path.setKey(key)) { _listener.pathRenamed(oldKeyPath, path.getParent().getKeyPath()); PropertyListPath newPath = path.getParent().getChildForKey(key); if (newPath != null) { _treeViewer.refresh(newPath.getParent()); } } } } }