/// <summary> /// Creates new instance of <see cref="PSM_ComponentConnector" />. /// </summary> public PSM_ComponentConnector(XCaseCanvas canvas, IConnectable parentControl, IConnectable childControl, ComponentConnectorViewHelper viewHelper) { ParentControl = parentControl; ChildControl = childControl; XCaseCanvas = canvas; ViewHelper = viewHelper; if (viewHelper.Points.Count < 2) { viewHelper.Points.Clear(); viewHelper.Points.AppendRange(JunctionGeometryHelper.ComputeOptimalConnection(parentControl, childControl)); viewHelper.Points.PointsInvalid = true; } Junction = new XCaseJunction(canvas, viewHelper.Points); Junction.AutoPosModeOnly = true; XCaseCanvas.Children.Add(Junction); Junction.NewConnection(parentControl, null, childControl, null, viewHelper.Points); if (childControl is System.Windows.Controls.Control) { if (childControl is PSM_ContentContainer) { Junction.ContextMenu = ((PSM_ContentContainer)childControl).ContextMenu; } Junction.ContextMenu = ((System.Windows.Controls.Control)childControl).ContextMenu; } }
private void AddComponentRepresentation(PSMSubordinateComponent component) { IModelElementRepresentant componentRepresentant = null; IConnectable connectedChild = null; PSM_ComponentConnector connector = null; if (component is PSMAssociation) { connectedChild = (IConnectable)((PSMAssociation)component).Child; ComponentConnectorViewHelper viewHelper = ((PSMElementViewHelper)((PSMElementViewBase)connectedChild).ViewHelper).ConnectorViewHelper; connector = new PSM_ComponentConnector(XCaseCanavs, SuperordinateRepresentation, connectedChild, viewHelper); } else { componentRepresentant = XCaseCanavs.ElementRepresentations[component]; connectedChild = (IConnectable)componentRepresentant; ComponentConnectorViewHelper viewHelper = ((PSMElementViewHelper)((PSMElementViewBase)connectedChild).ViewHelper).ConnectorViewHelper; connector = new PSM_ComponentConnector(XCaseCanavs, SuperordinateRepresentation, connectedChild, viewHelper); } ComponentData data = new ComponentData() { ComponentRepresentant = componentRepresentant, ConnectedChild = connectedChild, Connector = connector }; ComponentsData[component] = data; }