/// <summary> /// Called by the base ConnectAction class to create the underlying relationship. /// </summary> /// <remarks> /// This implementation delegates calls to the ConnectionBuilder InheritanceBuilder. /// </remarks> public override void CreateConnection(DslDiagrams::ShapeElement sourceShapeElement, DslDiagrams::ShapeElement targetShapeElement, DslDiagrams::PaintFeedbackArgs paintFeedbackArgs) { if (sourceShapeElement == null) { throw new global::System.ArgumentNullException("sourceShapeElement"); } if (targetShapeElement == null) { throw new global::System.ArgumentNullException("targetShapeElement"); } sourceShapeElement = RemovePassThroughShapes(sourceShapeElement); targetShapeElement = RemovePassThroughShapes(targetShapeElement); DslModeling::ModelElement sourceElement = sourceShapeElement.ModelElement; if (sourceElement == null) { sourceElement = sourceShapeElement; } DslModeling::ModelElement targetElement = targetShapeElement.ModelElement; if (targetElement == null) { targetElement = targetShapeElement; } // The InheritanceTool connection tool specifies that source and target should be reversed. InheritanceBuilder.Connect(targetElement, sourceElement); }
/// <summary> /// Called by the base ConnectAction class to determine if the given shapes can be connected. /// </summary> /// <remarks> /// This implementation delegates calls to the ConnectionBuilder InheritanceBuilder. /// </remarks> public override bool CanCreateConnection(DslDiagrams::ShapeElement sourceShapeElement, DslDiagrams::ShapeElement targetShapeElement, ref string connectionWarning) { bool canConnect = true; if (sourceShapeElement == null) { throw new global::System.ArgumentNullException("sourceShapeElement"); } sourceShapeElement = RemovePassThroughShapes(sourceShapeElement); DslModeling::ModelElement sourceElement = sourceShapeElement.ModelElement; if (sourceElement == null) { sourceElement = sourceShapeElement; } DslModeling::ModelElement targetElement = null; if (targetShapeElement != null) { targetShapeElement = RemovePassThroughShapes(targetShapeElement); targetElement = targetShapeElement.ModelElement; if (targetElement == null) { targetElement = targetShapeElement; } // The InheritanceTool connection tool specifies that source and target should be reversed. // base.CanCreateConnection must be called to check whether existing Locks prevent this link from getting created. canConnect = base.CanCreateConnection(targetShapeElement, sourceShapeElement, ref connectionWarning); } if (canConnect) { if (targetShapeElement == null) { // The InheritanceTool connection tool specifies that source and target should be reversed. return(InheritanceBuilder.CanAcceptTarget(sourceElement)); } else { // The InheritanceTool connection tool specifies that source and target should be reversed. return(InheritanceBuilder.CanAcceptSourceAndTarget(targetElement, sourceElement)); } } else { //return false return(canConnect); } }