/***************************************************************************** * Copyright (c) 2009 Atos Origin. * * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Atos Origin - Initial API and implementation * *****************************************************************************/ package org.eclipse.papyrus.uml.diagram.activity.edit.parts; import org.eclipse.draw2d.Connection; import org.eclipse.draw2d.PolylineDecoration; import org.eclipse.draw2d.RotatableDecoration; import org.eclipse.draw2d.geometry.PointList; import org.eclipse.gef.EditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.papyrus.uml.diagram.activity.edit.policies.InterruptibleEdgeEditPolicy; import org.eclipse.papyrus.uml.diagram.activity.edit.policies.ObjectFlowItemSemanticEditPolicy; import org.eclipse.papyrus.uml.diagram.activity.figures.ActivityEdgeFigure; import org.eclipse.papyrus.uml.diagram.common.editparts.UMLConnectionNodeEditPart; import org.eclipse.papyrus.uml.diagram.common.editpolicies.AppliedStereotypeLinkLabelDisplayEditPolicy; import org.eclipse.papyrus.uml.diagram.common.figure.edge.UMLEdgeFigure; /** * @generated */ public class ObjectFlowEditPart extends UMLConnectionNodeEditPart implements ITreeBranchEditPart { /** * @generated */ public static final int VISUAL_ID = 4003; /** * @generated */ public ObjectFlowEditPart(View view) { super(view); } /** * @generated */ protected void createDefaultEditPolicies() { super.createDefaultEditPolicies(); installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ObjectFlowItemSemanticEditPolicy()); installEditPolicy(AppliedStereotypeLinkLabelDisplayEditPolicy.STEREOTYPE_LABEL_POLICY, new AppliedStereotypeLinkLabelDisplayEditPolicy()); installEditPolicy(InterruptibleEdgeEditPolicy.INTERRUPTIBLE_ICON_POLICY, new InterruptibleEdgeEditPolicy()); } /** * @generated */ protected boolean addFixedChild(EditPart childEditPart) { if(childEditPart instanceof ObjectFlowAppliedStereotypeEditPart) { ((ObjectFlowAppliedStereotypeEditPart)childEditPart).setLabel(getPrimaryShape().getAppliedStereotypeLabel()); return true; } return false; } /** * @generated */ protected void addChildVisual(EditPart childEditPart, int index) { if(addFixedChild(childEditPart)) { return; } super.addChildVisual(childEditPart, -1); } /** * @generated */ protected boolean removeFixedChild(EditPart childEditPart) { if(childEditPart instanceof ObjectFlowAppliedStereotypeEditPart) { return true; } return false; } /** * @generated */ protected void removeChildVisual(EditPart childEditPart) { if(removeFixedChild(childEditPart)) { return; } super.removeChildVisual(childEditPart); } /** * Creates figure for this edit part. * * Body of this method does not depend on settings in generation model * so you may safely remove <i>generated</i> tag and modify it. * * @generated */ protected Connection createConnectionFigure() { return new ActivityEdgeFigure(); } /** * @generated */ public ActivityEdgeFigure getPrimaryShape() { return (ActivityEdgeFigure)getFigure(); } /** * @generated NOT inherits from UMLEdgeFigure to manage stereotype label */ public class ActivityEdgeDescriptor extends UMLEdgeFigure { /** * @generated NOT call the super constructor */ public ActivityEdgeDescriptor() { super(); this.setLineWidth(1); setTargetDecoration(createTargetDecoration()); } /** * @generated NOT */ protected void createContents() { super.createContents(); //fAppliedStereotypeLabel = new WrappingLabel(); //fAppliedStereotypeLabel.setText(""); //this.add(fAppliedStereotypeLabel); } /** * @generated NOT scale changed from default 7:3 to 5:2 to make a smaller arrow */ private RotatableDecoration createTargetDecoration() { PolylineDecoration df = new PolylineDecoration(); df.setLineWidth(1); PointList pl = new PointList(); pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(2)); pl.addPoint(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0)); pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(-2)); df.setTemplate(pl); df.setScale(getMapMode().DPtoLP(5), getMapMode().DPtoLP(2)); return df; } /** * @generated NOT get the stereotype label of super class */ public WrappingLabel getAppliedStereotypeLabel() { return super.getAppliedStereotypeLabel(); } } }