package org.objectstyle.wolips.eomodeler.outline; import org.eclipse.jface.dialogs.MessageDialog; 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.eclipse.swt.widgets.Display; import org.objectstyle.wolips.baseforuiplugins.utils.WOTextCellEditor; import org.objectstyle.wolips.eomodeler.core.model.DuplicateNameException; import org.objectstyle.wolips.eomodeler.core.model.ISortableEOModelObject; public class EOModelOutlineEditingSupport extends EditingSupport { private TextCellEditor _nameEditor; public EOModelOutlineEditingSupport(TreeViewer viewer) { super(viewer); _nameEditor = new WOTextCellEditor(viewer.getTree()); } @Override protected boolean canEdit(Object element) { return (element instanceof ISortableEOModelObject); } @Override protected CellEditor getCellEditor(Object element) { return _nameEditor; } @Override protected Object getValue(Object element) { String text; if (element instanceof ISortableEOModelObject) { text = ((ISortableEOModelObject) element).getName(); // } else if (element instanceof EORelationshipPath) { // EORelationshipPath relationshipPath = (EORelationshipPath) // element; // text = relationshipPath.getChildRelationship().getName(); // } else if (element instanceof EOAttributePath) { // EOAttributePath attributePath = (EOAttributePath) element; // text = attributePath.getChildAttribute().getName(); } else { text = null; } if (text == null) { text = ""; } return text; } @Override protected void setValue(Object element, Object value) { if (element instanceof ISortableEOModelObject) { String newName = (String) value; try { ((ISortableEOModelObject) element).setName(newName); } catch (DuplicateNameException e) { MessageDialog.openError(Display.getCurrent().getActiveShell(), "Duplicate Name", "The name '" + newName + "' is already taken."); } // } else if (element instanceof EORelationshipPath) { // EORelationshipPath relationshipPath = (EORelationshipPath) // element; // text = relationshipPath.getChildRelationship().getName(); // } else if (element instanceof EOAttributePath) { // EOAttributePath attributePath = (EOAttributePath) element; // text = attributePath.getChildAttribute().getName(); } } }