Example #1
0
        private void Shape_Resize(object sender, EventArgs e)
        {
            EntityShape shape = (EntityShape)sender;

            if (shape == null)
            {
                return;
            }

            for (int i = 0; i < shape.TerminalNodes.Count; i++)
            {
                TerminalNode node = shape.TerminalNodes[i];

                if (node.IsVertical && node.RelativeLocation >= shape.Width)
                {
                    node.RelativeLocation = shape.Width - 1;
                }
                else if (node.IsHorizontal && node.RelativeLocation >= shape.Height)
                {
                    node.RelativeLocation = shape.Height - 1;
                }
            }

            Invalidate();
            OnContentsChanged(EventArgs.Empty);
        }
Example #2
0
        /// <exception cref="ArgumentNullException">
        /// <paramref name="startNode"/>is null.-or-
        /// <paramref name="endNode"/> is null.-or-
        /// <paramref name="dependency"/> is null.
        /// </exception>
        internal DependencyConnection(TerminalNode startNode, TerminalNode endNode,
                                      Dependency dependency) : base(startNode, endNode)
        {
            if (dependency == null)
            {
                throw new ArgumentNullException("dependency");
            }

            this.dependency = dependency;
        }
Example #3
0
        /// <exception cref="ArgumentNullException">
        /// <paramref name="startNode"/>is null.-or-
        /// <paramref name="endNode"/> is null.-or-
        /// <paramref name="commentRelation"/> is null.
        /// </exception>
        internal CommentConnection(TerminalNode startNode, TerminalNode endNode,
                                   CommentRelation commentRelation) : base(startNode, endNode)
        {
            if (commentRelation == null)
            {
                throw new ArgumentNullException("commentRelation");
            }

            this.commentRelation = commentRelation;
        }
Example #4
0
        /// <exception cref="ArgumentNullException">
        /// <paramref name="startNode"/>is null.-or-
        /// <paramref name="endNode"/> is null.-or-
        /// <paramref name="nesting"/> is null.
        /// </exception>
        internal NestingConnection(TerminalNode startNode, TerminalNode endNode,
                                   Nesting nesting) : base(startNode, endNode)
        {
            if (nesting == null)
            {
                throw new ArgumentNullException("nesting");
            }

            this.nesting = nesting;
        }
        /// <exception cref="ArgumentNullException">
        /// <paramref name="startNode"/>is null.-or-
        /// <paramref name="endNode"/> is null.-or-
        /// <paramref name="realization"/> is null.
        /// </exception>
        internal RealizationConnection(TerminalNode startNode, TerminalNode endNode,
                                       Realization realization) : base(startNode, endNode)
        {
            if (realization == null)
            {
                throw new ArgumentNullException("realization");
            }

            this.realization = realization;
        }
Example #6
0
        /// <exception cref="ArgumentNullException">
        /// <paramref name="startNode"/>is null.-or-
        /// <paramref name="endNode"/> is null.-or-
        /// <paramref name="generalization"/> is null.
        /// </exception>
        internal GeneralizationConnection(TerminalNode startNode, TerminalNode endNode,
                                          Generalization generalization) : base(startNode, endNode)
        {
            if (generalization == null)
            {
                throw new ArgumentNullException("generalization");
            }

            this.generalization = generalization;
        }
Example #7
0
        /// <exception cref="ArgumentNullException">
        /// <paramref name="startNode"/>is null.-or-
        /// <paramref name="endNode"/> is null.
        /// </exception>
        protected Connection(TerminalNode startNode, TerminalNode endNode)
        {
            if (startNode == null)
            {
                throw new ArgumentNullException("startNode");
            }
            if (endNode == null)
            {
                throw new ArgumentNullException("endNode");
            }

            this.startNode = startNode;
            this.endNode   = endNode;
        }
Example #8
0
        private void CheckTerminalNodes(Point mouseLocation)
        {
            for (int i = 0; i < connections.Count; i++)
            {
                TerminalNode node = connections[i].GetTerminalNode(mouseLocation);

                if (node != null)
                {
                    ModifyingNode = node;
                    return;
                }
            }

            ModifyingNode = null;
        }
Example #9
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);

            if (Connecting)
            {
                TerminalNode node           = (StartChosen) ? endNode : startNode;
                bool         needInvalidate = false;

                if (node != null && node.Shape != null)
                {
                    needInvalidate = true;
                }
                if (SetNodeShape(node, e.Location))
                {
                    needInvalidate = true;
                }

                if (needInvalidate)
                {
                    Invalidate();
                }
            }
            else if (selecting)
            {
                ClearSelectionRectangle();
                SetSelectionRectangle(e.Location);
                DrawSelectionRectangle();
            }
            else if (ModifyingNode != null && e.Button == MouseButtons.Left)
            {
                if (ModifyingNode.SetPosition(e.Location))
                {
                    Invalidate();
                }
            }
            else if (ShapeResizing)
            {
                shapeHorizontalResizing = false;
                shapeVerticalResizing   = false;
                Cursor = Cursors.Default;
            }
            else
            {
                CheckTerminalNodes(e.Location);
            }
        }
Example #10
0
        private bool SetNodeShape(TerminalNode node, Point mouseLocation)
        {
            if (node == null)
            {
                return(false);
            }

            for (int i = 0; i < shapes.Count; i++)
            {
                if (IsShapeEdge(shapes[i], mouseLocation))
                {
                    node.Shape = shapes[i];
                    node.SetPosition(mouseLocation);
                    return(true);
                }
            }

            node.Shape = null;
            return(false);
        }
Example #11
0
 /// <exception cref="ArgumentNullException">
 /// <paramref name="startNode"/>is null.-or-
 /// <paramref name="endNode"/> is null.
 /// </exception>
 internal PreviewConnection(TerminalNode startNode, TerminalNode endNode)
     : base(startNode, endNode)
 {
 }
Example #12
0
        /// <exception cref="ArgumentException">
        /// There is no type of <paramref name="relation"/>.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="relation"/> is null.
        /// </exception>
        public void AddRelation(Relation relation, bool fromScreen)
        {
            if (relation == null)
            {
                throw new ArgumentNullException("relation");
            }

            Connection connection = null;

            if (!fromScreen || startNode == null || endNode == null)
            {
                startNode = new TerminalNode();
                endNode   = new TerminalNode();

                for (int i = 0; i < shapes.Count; i++)
                {
                    if (shapes[i].Entity == relation.First)
                    {
                        startNode.Shape = shapes[i];
                    }
                    if (shapes[i].Entity == relation.Second)
                    {
                        endNode.Shape = shapes[i];
                    }
                }
            }

            startNode.IsDirty = true;
            endNode.IsDirty   = true;

            if (relation is Association)
            {
                connection = new AssociationConnection(
                    startNode, endNode, (Association)relation);
            }
            if (relation is Generalization)
            {
                connection = new GeneralizationConnection(
                    startNode, endNode, (Generalization)relation);
            }
            if (relation is Realization)
            {
                connection = new RealizationConnection(
                    startNode, endNode, (Realization)relation);
            }
            if (relation is Dependency)
            {
                connection = new DependencyConnection(
                    startNode, endNode, (Dependency)relation);
            }
            if (relation is Nesting)
            {
                connection = new NestingConnection(
                    startNode, endNode, (Nesting)relation);
            }
            if (relation is CommentRelation)
            {
                connection = new CommentConnection(
                    startNode, endNode, (CommentRelation)relation);
            }

            if (connection == null)
            {
                throw new ArgumentException("Unknown type of relation.", "relation");
            }

            connection.ContentsChanged  += new EventHandler(Item_ContentsChanged);
            connection.SelectionChanged += new EventHandler(Item_SelectionChanged);
            connection.Delete           += new EventHandler(Item_Delete);
            connections.Add(connection);

            OnContentsChanged(EventArgs.Empty);
        }