/* * Created on 2006-09-06 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package net.ms.designer.editors.packages.editparts; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import net.ms.designer.core.MsContext; import net.ms.designer.core.MsEditorInput; import net.ms.designer.core.MsProject; import net.ms.designer.editors.packages.PackageImages; import net.ms.designer.editors.packages.editpolicies.NodeDirectEditPolicy; import net.ms.designer.editors.packages.editpolicies.NodeEditPolicy; import net.ms.designer.editors.packages.figures.CompartmentFigure; import net.ms.designer.editors.packages.figures.NodeFigure; import net.ms.designer.editors.packages.models.Package; import net.ms.designer.editors.packages.ui.PackageEditor; import net.ms.designer.ui.view.MsTreeView; import org.eclipse.draw2d.ChopboxAnchor; import org.eclipse.draw2d.ConnectionAnchor; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.ConnectionEditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.NodeEditPart; import org.eclipse.gef.Request; import org.eclipse.gef.RequestConstants; import org.eclipse.gef.tools.DirectEditManager; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.internal.UIPlugin; /** * @author mashuai * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class NodePart extends BaseEditPart implements PropertyChangeListener, NodeEditPart { PackageEditor editor; protected DirectEditManager manager; IWorkbenchPage page = null; MsProject project; private static Image LOGIC_ICON = PackageImages.getImage(PackageImages.ENDNODE); public void performRequest(Request req) { page = UIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow() .getActivePage(); editor = (PackageEditor)page.getActiveEditor(); if (req.getType().equals(RequestConstants.REQ_DIRECT_EDIT)) { if (manager == null) { NodeFigure figure = (NodeFigure) getFigure(); manager = new NodeDirectEditManager(this, TextCellEditor.class, new NodeCellEditorLocator(figure)); } manager.show(); } if(req.getType().equals(RequestConstants.REQ_OPEN)) { MsContext context; if(editor.getContext() != null) context = editor.getContext(); else { context = new MsContext(); editor.setContext(context); } context.change(this , "package"); } } public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(Package.prop_Location)) refreshVisuals(); else if (evt.getPropertyName().equals(Package.prop_Name)) refreshVisuals(); } // protected IFigure createFigure() // { // return new NodeFigure(); // } //-------------lili start protected IFigure createFigure() { return CompartmentFigure.createCPFigure(((Package) getModel()) .getName(), LOGIC_ICON); } //------------lili end protected void createEditPolicies() { super.createEditPolicies(); installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new NodeDirectEditPolicy()); installEditPolicy(EditPolicy.COMPONENT_ROLE, new NodeEditPolicy()); // installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new NodeGraphicalNodeEditPolicy()); } public void activate() { if (isActive()) { return; } super.activate(); ((Package) getModel()).addPropertyChangeListener(this); } public void deactivate() { if (!isActive()) { return; } super.deactivate(); ((Package) getModel()).removePropertyChangeListener(this); } protected void refreshVisuals() { Package node = (Package) getModel(); Point loc = node.getLocation(); // Dimension size = new Dimension(100, 100); Dimension size = node.getSize(); Rectangle rectangle = new Rectangle(loc, size); ((NodeFigure) this.getFigure()).setName(((Package) this.getModel()).getName()); ((GraphicalEditPart) getParent()).setLayoutConstraint(this, getFigure(), rectangle); super.refreshVisuals(); } //------------------------------------------------------------------------ // Abstract methods from NodeEditPart public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart connection) { return new ChopboxAnchor(getFigure()); } public ConnectionAnchor getSourceConnectionAnchor(Request request) { return new ChopboxAnchor(getFigure()); } public ConnectionAnchor getTargetConnectionAnchor(ConnectionEditPart connection) { return new ChopboxAnchor(getFigure()); } public ConnectionAnchor getTargetConnectionAnchor(Request request) { return new ChopboxAnchor(getFigure()); } // protected List getModelSourceConnections() { // return ((Node) this.getModel()).getOutgoingConnections(); // } // // protected List getModelTargetConnections() { // return ((Node) this.getModel()).getIncomingConnections(); // } }