private static void CreateXisInteractionSpaceAssociation(string actionName, XisInteractionSpace source, XisInteractionSpace target) { int across = 260; int down = 180; nsDiagram.DiagramObjects.Refresh(); #region Create Diagram Objects if (nsDiagram.DiagramObjects.Count > 0) { short index = Convert.ToInt16(nsDiagram.DiagramObjects.Count - 1); EA.DiagramObject last = null; if (source.GetDiagramObject(nsDiagram) == null) { if (source.IsMainScreen) { source.SetPosition(nsDiagram, 355, 445, 10, 80); } else { last = nsDiagram.DiagramObjects.GetAt(index); EA.DiagramObject obj = null; if ((last.right + across) > 800) { obj = source.SetPosition(nsDiagram, last.left - across * 3, last.right - across * 3, -last.top + down, -last.bottom + down); } else { obj = source.SetPosition(nsDiagram, last.left + across, last.right + across, -last.top, -last.bottom); } if (target.GetDiagramObject(nsDiagram) == null) { target.SetPosition(nsDiagram, obj.left + across, obj.right + across, -obj.top, -obj.bottom); } } } else if (target.GetDiagramObject(nsDiagram) == null) { if (target.IsMainScreen) { target.SetPosition(nsDiagram, 355, 445, 10, 80); } else { last = nsDiagram.DiagramObjects.GetAt(index); if ((last.right + across) > 800) { target.SetPosition(nsDiagram, last.left - across * 3, last.right - across * 3, -last.top + down, -last.bottom + down); } else { target.SetPosition(nsDiagram, last.left + across, last.right + across, -last.top, -last.bottom); } } } } else { if (source.IsMainScreen) { EA.DiagramObject obj = source.SetPosition(nsDiagram, 355, 445, 10, 80); target.SetPosition(nsDiagram, obj.left - across, obj.right - across, -obj.top + down, -obj.bottom + down); } else if (target.IsMainScreen) { EA.DiagramObject obj = target.SetPosition(nsDiagram, 355, 445, 10, 80); source.SetPosition(nsDiagram, obj.left - across, obj.right - across, -obj.top + down, -obj.bottom + down); } else if (source.IsFirstSubScreen) { //MessageBox.Show(source.Element.Name + "->" + target.Element.Name); EA.DiagramObject obj = source.SetPosition(nsDiagram, 95, 185, 190, 260); target.SetPosition(nsDiagram, obj.left + across, obj.right + across, -obj.top, -obj.bottom); } else if (target.IsFirstSubScreen) { EA.DiagramObject obj = target.SetPosition(nsDiagram, 95, 185, 190, 260); source.SetPosition(nsDiagram, obj.left + across, obj.right + across, -obj.top, -obj.bottom); } else { EA.DiagramObject obj = source.SetPosition(nsDiagram, 355, 445, 190, 260); target.SetPosition(nsDiagram, obj.left + across, obj.right + across, -obj.top, -obj.bottom); } } #endregion EA.Connector c = source.Element.Connectors.AddNew(actionName, "Association"); c.ClientID = source.Element.ElementID; c.SupplierID = target.Element.ElementID; c.Direction = "Source -> Destination"; c.Stereotype = "XisInteractionSpaceAssociation"; c.Update(); source.Element.Update(); source.Element.Connectors.Refresh(); }
private static void ComputePositions(XisInteractionSpace space, EA.Diagram diagram) { if (space.Widgets.Count > 0) { EA.DiagramObject spaceObj = space.GetDiagramObject(diagram); ComputePositions(space.Widgets.First(), diagram, spaceObj, null); EA.DiagramObject obj = space.Widgets.First().GetDiagramObject(diagram); for (int i = 1; i < space.Widgets.Count; i++) { ComputePositions(space.Widgets[i], diagram, null, obj); obj = space.Widgets[i].GetDiagramObject(diagram); } space.SetPosition(diagram, spaceObj.left, spaceObj.right, -spaceObj.top, -obj.bottom + 10, spaceObj.Sequence); } }