/* * 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.component.editparts; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; import net.ms.designer.core.MsContext; import net.ms.designer.core.MsEditorInput; import net.ms.designer.core.MsProject; import net.ms.designer.editors.component.ComponentImages; import net.ms.designer.editors.component.editpolicies.NodeDirectEditPolicy; import net.ms.designer.editors.component.editpolicies.NodeEditPolicy; import net.ms.designer.editors.component.editpolicies.PropertyEditPolicy; import net.ms.designer.editors.component.figures.CompartmentFigure; import net.ms.designer.editors.component.figures.NodeFigure; import net.ms.designer.editors.component.models.BizComponent; import net.ms.designer.editors.component.models.Component; import net.ms.designer.editors.component.models.EnumComponent; import net.ms.designer.editors.component.ui.ComponentEditor; import net.ms.designer.editors.packages.ui.PackageEditor; import net.ms.designer.editors.workflow.models.WorkflowBaseActivity; 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.editparts.AbstractGraphicalEditPart; import org.eclipse.gef.tools.DirectEditManager; import org.eclipse.jface.dialogs.MessageDialog; 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 AbstractGraphicalEditPart implements PropertyChangeListener, NodeEditPart { PackageEditor editor; MsProject project; protected DirectEditManager manager; IWorkbenchPage page = null; private static Image LOGIC_ICON = ComponentImages.getImage(ComponentImages.ENDNODE); private static Image LOGIC_ICON1 = ComponentImages.getImage(ComponentImages.STARTNODE); public void performRequest(Request req) { 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)) { editor = (PackageEditor)UIPlugin.getDefault() .getWorkbench().getActiveWorkbenchWindow() .getActivePage().getActiveEditor(); MsContext context; if(editor.getContext() != null) context = editor.getContext(); else { context = new MsContext(); editor.setContext(context); } context.change(this , "component"); } } public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(Component.prop_Location)) refreshVisuals(); else if (evt.getPropertyName().equals(Component.prop_Name)) refreshVisuals(); } // protected IFigure createFigure() // { // return new NodeFigure(getModel()); // } //------------lili protected IFigure createFigure() { // return CompartmentFigure.createCPFigure(((Component) getModel()) // .getName(), ((Component) getModel()).getIcon()); if(getModel() instanceof BizComponent) { return CompartmentFigure.createCPFigure(((Component) getModel()) .getName(),LOGIC_ICON); } if(getModel() instanceof EnumComponent) { return CompartmentFigure.createCPFigure(((Component) getModel()) .getName(),LOGIC_ICON1); } return figure; } //-------------lili end protected void createEditPolicies() { installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new NodeDirectEditPolicy()); installEditPolicy(EditPolicy.COMPONENT_ROLE, new NodeEditPolicy()); // installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new NodeGraphicalNodeEditPolicy()); installEditPolicy(EditPolicy.LAYOUT_ROLE, new PropertyEditPolicy()); } public void activate() { if (isActive()) { return; } super.activate(); ((Component) getModel()).addPropertyChangeListener(this); } public void deactivate() { if (!isActive()) { return; } super.deactivate(); ((Component) getModel()).removePropertyChangeListener(this); } protected void refreshVisuals() { Component node = (Component) 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(((Component) 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(); // } }