示例#1
0
        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();
        }
示例#2
0
        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);
            }
        }