package net.ms.designer.editors.componentdetail.editparts; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.List; import net.ms.designer.editors.componentdetail.models.Container; import net.ms.designer.editors.componentdetail.models.Element; import net.ms.designer.editors.componentdetail.policies.ElementEditPolicy; import net.ms.designer.editors.componentdetail.policies.LogicTreeEditPolicy; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; /** * EditPart for Logic components in the Tree. */ public class LogicTreeEditPart extends org.eclipse.gef.editparts.AbstractTreeEditPart implements PropertyChangeListener { /** * Constructor initializes this with the given model. * * @param model * Model for this. */ public LogicTreeEditPart(Object model) { super(model); } public void activate() { super.activate(); getFieldBase().addPropertyChangeListener(this); } /** * Creates and installs pertinent EditPolicies for this. */ protected void createEditPolicies() { EditPolicy component=null; if (getModel() instanceof Element) component = new ElementEditPolicy(); else component = new ElementEditPolicy(); installEditPolicy(EditPolicy.COMPONENT_ROLE, component); installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new LogicTreeEditPolicy()); } public void deactivate() { getFieldBase().removePropertyChangeListener(this); super.deactivate(); } /** * Returns the model of this as a LogicSubPart. * * @return Model of this. */ protected Element getFieldBase() { return (Element) getModel(); } /** * Returns <code>null</code> as a Tree EditPart holds no children under * it. * * @return <code>null</code> */ protected List getModelChildren() { return children; // if(getModel() instanceof LookupField) // return ((LookupField)getModel()).getChildren(); // return Collections.EMPTY_LIST; } public void propertyChange(PropertyChangeEvent evt) { // TODO �Զ����ɷ������ } // public void propertyChange(PropertyChangeEvent change) { // if (change.getPropertyName().equals(Container.CHILDREN)) { // if (change.getOldValue() instanceof Integer) // // new child // addChild(createChild(change.getNewValue()), ((Integer) change // .getOldValue()).intValue()); // else { // // remove child // Object o = getViewer().getEditPartRegistry().get( // change.getOldValue()); // if (o != null) // removeChild((EditPart) o); // } // } else // refreshVisuals(); // } // // /** // * Refreshes the Widget of this based on the property given to update. All // * major properties are updated irrespective of the property input. // * // * @param property // * Property to be refreshed. // */ // protected void refreshVisuals() { // if (getWidget() instanceof Tree) // return; // Image image = getFieldBase().getIcon(); // TreeItem item = (TreeItem) getWidget(); // if (image != null) // image.setBackground(item.getParent().getBackground()); // setWidgetImage(image); // setWidgetText(getFieldBase().toString()); // } }