Example #1
0
        public void DeselectMultipleObjects()
        {
            TcpListener ServerSocket = new TcpListener(IPAddress.Parse("127.0.0.1"), 1000);

            ServerSocket.Start();
            PrivateObject canvas = new PrivateObject(typeof(Canvas));

            RectangleBlue       blueObj        = new RectangleBlue(50, 50, true);
            CmdAddRectangleBlue commandAddBlue = new CmdAddRectangleBlue();

            commandAddBlue.Execute(blueObj);
            Canvas.Objects.Add(blueObj);

            RectangleBlue       blueObj2        = new RectangleBlue(250, 70, true);
            CmdAddRectangleBlue commandAddBlue2 = new CmdAddRectangleBlue();

            commandAddBlue2.Execute(blueObj2);
            Canvas.Objects.Add(blueObj2);

            RectangleRed       redObj        = new RectangleRed(450, 100, true);
            CmdAddRectangleRed commandAddRed = new CmdAddRectangleRed();

            commandAddRed.Execute(redObj);
            Canvas.Objects.Add(redObj);

            object[] paramsSelectClick = new object[] { null, null };
            canvas.Invoke("btnSelect_Click", paramsSelectClick);

            object[] paramsMouseClick3 = new object[] { null, new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0) };
            canvas.Invoke("pnlCenter_MouseClick", paramsMouseClick3);

            NUnit.Framework.Assert.IsFalse(blueObj.Selected);
            NUnit.Framework.Assert.IsFalse(blueObj2.Selected);
            NUnit.Framework.Assert.IsFalse(redObj.Selected);
        }
Example #2
0
        private void DeleteRectRed(RectangleRed Rect)
        {
            CmdDeleteRectangleRed CmdDeleteRectRed = new CmdDeleteRectangleRed();

            CmdDeleteRectRed.Execute(Rect);
            CmdDeleteRectRed.hierarchyID = Rect.HierarchyID;
        }
Example #3
0
        public void TestTwoObjectsSelect()
        {
            Canvas              canvas         = new Canvas(true);
            Guid                rectObjId      = Guid.NewGuid();
            Rectangle_Object    rectObjRed     = new RectangleRed(0, 0, false, false, false, rectObjId, 0, 0, false, false);
            Rectangle_Object    rectObjBlue    = new RectangleBlue(50, 20, false, false, false, rectObjId, 0, 0, false, false);
            CmdAddRectangleRed  cmdAddRectRed  = new CmdAddRectangleRed();
            CmdAddRectangleBlue cmdAddRectBlue = new CmdAddRectangleBlue();

            cmdAddRectRed.Execute(rectObjRed);
            Canvas.Objects.Add(rectObjRed);
            cmdAddRectBlue.Execute(rectObjBlue);
            Canvas.Objects.Add(rectObjBlue);

            canvas.IsChecked_btnSelectProp   = true;
            canvas.IsChecked_btnRectRedProp  = false;
            canvas.IsChecked_btnRectBlueProp = false;

            canvas.pnlCenter_MouseClickWrapper(55, 25, 1, 0);

            Assert.IsTrue(rectObjBlue.Selected);
            Assert.IsFalse(rectObjRed.Selected);

            canvas.pnlCenter_MouseClickWrapper(10, 10, 1, 0);

            Assert.IsTrue(rectObjRed.Selected);
        }
Example #4
0
        private void MoveRectRed(RectangleRed Rect)
        {
            CmdMoveRectangleRed CmdMoveRect = new CmdMoveRectangleRed();

            CmdMoveRect.Execute(Rect);
            CmdMoveRect.hierarchyID = Rect.HierarchyID;
        }
Example #5
0
        private void DeleteRectRed_Inverse(RectangleRed Rect)
        {
            CmdDeleteRectangleRed CmdDeleteRect = new CmdDeleteRectangleRed();

            CmdDeleteRect.Unexecute(Rect);
            Objects.Add(Rect);
            CmdDeleteRect.hierarchyID = Rect.HierarchyID;
        }
Example #6
0
        private void DrawRectRed_Inverse(RectangleRed Rect)
        {
            CmdAddRectangleRed CmdAddRect = new CmdAddRectangleRed();

            CmdAddRect.Unexecute(Rect);
            CmdAddRect.hierarchyID = Rect.HierarchyID;
            Objects.Remove(Rect);
        }
Example #7
0
        //COMMANDS------------------------------------------------------------------

        private void DrawRectRed(RectangleRed Rect)
        {
            CmdAddRectangleRed CmdAddRect = new CmdAddRectangleRed();

            CmdAddRect.Execute(Rect);
            CmdAddRect.hierarchyID = Rect.HierarchyID;
            Objects.Add(Rect);
        }
Example #8
0
        private void SelectRectangleRed(RectangleRed Rect)
        {
            CmdSelectRectangleRed CmdSelectRect = new CmdSelectRectangleRed();

            CmdSelectRect.ID_Command = Guid.NewGuid();
            Rect.Username            = Username;
            Rect.Selected            = true;
            CmdSelectRect.Execute(Rect);
            Selected.Add(Rect);
        }
Example #9
0
        public static void Moving(string x, string y)
        {
            if (Selected[0].Name == "Rectangle Red")
            {
                int HelperX = 0;
                int HelperY = 0;
                for (int i = Objects.Count - 1; i >= 0; i--)
                {
                    if (Objects[i].Selected)
                    {
                        HelperX = Objects[i].X;
                        HelperY = Objects[i].Y;
                    }
                }

                RectangleRed Rec = new RectangleRed(int.Parse(x), int.Parse(y), HelperX, HelperY);
                Rec.Moved       = true;
                Rec.Username    = Username;
                Rec.HierarchyID = Selected[0].HierarchyID;
                CmdMoveRectangleRed CmdMoveRec = new CmdMoveRectangleRed();
                CmdMoveRec.ID_Command = Guid.NewGuid();
                CmdMoveRec.Execute(Rec);
                CmdMoveRec.hierarchyID = Rec.HierarchyID;

                BinaryFormatter bf = new BinaryFormatter();
                using (MemoryStream data = new MemoryStream())
                {
                    bf.Serialize(data, CmdMoveRec);
                    ServerStream.Write(data.ToArray(), 0, data.ToArray().Length);
                    ServerStream.Flush();
                }
                Selected.Clear();
            }
            else if (Selected[0].Name == "Rectangle Blue")
            {
                int HelperX = 0;
                int HelperY = 0;
                for (int i = Objects.Count - 1; i >= 0; i--)
                {
                    if (Objects[i].Selected)
                    {
                        HelperX = Objects[i].X;
                        HelperY = Objects[i].Y;
                    }
                }

                RectangleBlue Rec = new RectangleBlue(int.Parse(x), int.Parse(y), HelperX, HelperY);
                Rec.Moved    = true;
                Rec.Username = Username;
                CmdMoveRectangleBlue CmdMoveRec = new CmdMoveRectangleBlue();
                CmdMoveRec.ID_Command = Guid.NewGuid();
                CmdMoveRec.Execute(Rec);
                CmdMoveRec.hierarchyID = Rec.HierarchyID;

                BinaryFormatter bf = new BinaryFormatter();
                using (MemoryStream data = new MemoryStream())
                {
                    bf.Serialize(data, CmdMoveRec);
                    ServerStream.Write(data.ToArray(), 0, data.ToArray().Length);
                    ServerStream.Flush();
                }
                Selected.Clear();
            }
        }
Example #10
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            this.IsChecked_btnRectRed  = false;
            this.IsChecked_btnRectBlue = false;
            this.IsChecked_btnSelect   = false;

            if (Selected.Count == 1)
            {
                for (int i = 0; i < Objects.Count; i++)
                {
                    if (Selected[0] == Objects[i])
                    {
                        Objects[i].Moved   = false;
                        Objects[i].Deleted = true;
                        if (Objects[i].Name == "Rectangle Red")
                        {
                            CmdDeleteRectangleRed CmdDeleteEventOne = new CmdDeleteRectangleRed();
                            Rect_Red                     = (RectangleRed)Objects[i];
                            Rect_Red.Username            = Username;
                            CmdDeleteEventOne.ID_Command = Guid.NewGuid();
                            CmdDeleteEventOne.Execute(Rect_Red);
                            CmdDeleteEventOne.hierarchyID = Rect.HierarchyID;

                            Command_manager = Manager.SaveCommand(CmdDeleteEventOne, CmdDeleteEventOne.isUndo, CmdDeleteEventOne.isRedo);
                            BinaryFormatter bf = new BinaryFormatter();
                            using (MemoryStream data = new MemoryStream())
                            {
                                bf.Serialize(data, CmdDeleteEventOne);
                                ServerStream_priv.Write(data.ToArray(), 0, data.ToArray().Length);
                                ServerStream_priv.Flush();
                            }
                        }
                        else if (Objects[i].Name == "Rectangle Blue")
                        {
                            CmdDeleteRectangleBlue CmdDeleteEventTwo = new CmdDeleteRectangleBlue();
                            Rect_Blue                    = (RectangleBlue)Objects[i];
                            Rect_Blue.Username           = Username;
                            CmdDeleteEventTwo.ID_Command = Guid.NewGuid();
                            CmdDeleteEventTwo.Execute(Rect_Blue);
                            CmdDeleteEventTwo.hierarchyID = Rect.HierarchyID;

                            Command_manager = Manager.SaveCommand(CmdDeleteEventTwo, CmdDeleteEventTwo.isUndo, CmdDeleteEventTwo.isRedo);
                            BinaryFormatter bf = new BinaryFormatter();
                            using (MemoryStream data = new MemoryStream())
                            {
                                bf.Serialize(data, CmdDeleteEventTwo);
                                ServerStream_priv.Write(data.ToArray(), 0, data.ToArray().Length);
                                ServerStream_priv.Flush();
                            }
                        }
                        else if (Objects[i].Name == "Relation")
                        {
                            CmdDeleteRelation CmdDeleteRelation = new CmdDeleteRelation();
                            Rel          = (Relation)Objects[i];
                            Rel.Username = Username;
                            CmdDeleteRelation.ID_Command = Guid.NewGuid();
                            CmdDeleteRelation.Execute(Rel);
                            CmdDeleteRelation.hierarchyID = Rel.HierarchyID;

                            Command_manager = Manager.SaveCommand(CmdDeleteRelation, CmdDeleteRelation.isUndo, CmdDeleteRelation.isRedo);
                            BinaryFormatter bf = new BinaryFormatter();
                            using (MemoryStream data = new MemoryStream())
                            {
                                bf.Serialize(data, CmdDeleteRelation);
                                ServerStream_priv.Write(data.ToArray(), 0, data.ToArray().Length);
                                ServerStream_priv.Flush();
                            }
                        }
                        Selected.Clear();
                        break;
                    }
                }
            }
        }
Example #11
0
        //----------------------------------------------------------------------------

        private void pnlCenter_MouseClick(object sender, MouseEventArgs e)
        {
            if (this.IsChecked_btnRectRed)
            {
                int x = e.Location.X;
                int y = e.Location.Y;
                Rect_Red                = new RectangleRed(x, y);
                Rect_Red.Username       = Username;
                Rect_Red.HierarchyID[0] = Canvas_ID;
                Rect_Red.HierarchyID[1] = Guid.NewGuid();

                CmdAddRectangleRed CmdAddRect = new CmdAddRectangleRed();
                CmdAddRect.username   = Username;
                CmdAddRect.ID_Command = Guid.NewGuid();
                CmdAddRect.Execute(Rect_Red);
                CmdAddRect.hierarchyID = Rect_Red.HierarchyID;
                CmdAddRect.eventList   = Rect_Red.EventList;

                Command_manager = Manager.SaveCommand(CmdAddRect, CmdAddRect.isUndo, CmdAddRect.isRedo);

                BinaryFormatter bf = new BinaryFormatter();
                using (MemoryStream data = new MemoryStream())
                {
                    bf.Serialize(data, CmdAddRect);
                    ServerStream_priv.Write(data.ToArray(), 0, data.ToArray().Length);
                    ServerStream_priv.Flush();
                }
            }
            else if (this.IsChecked_btnRectBlue)
            {
                int x = e.Location.X;
                int y = e.Location.Y;
                Rect_Blue = new RectangleBlue(x, y);

                CmdAddRectangleBlue CmdAddRect = new CmdAddRectangleBlue();
                Rect_Blue.Username       = Username;
                Rect_Blue.HierarchyID[0] = Canvas_ID;
                Rect_Blue.HierarchyID[1] = Guid.NewGuid();
                CmdAddRect.ID_Command    = Guid.NewGuid();
                CmdAddRect.eventList     = Rect_Blue.EventList;
                CmdAddRect.Execute(Rect_Blue);
                CmdAddRect.hierarchyID = Rect_Blue.HierarchyID;

                Command_manager = Manager.SaveCommand(CmdAddRect, CmdAddRect.isUndo, CmdAddRect.isRedo);

                BinaryFormatter bf = new BinaryFormatter();
                using (MemoryStream data = new MemoryStream())
                {
                    bf.Serialize(data, CmdAddRect);
                    ServerStream_priv.Write(data.ToArray(), 0, data.ToArray().Length);
                    ServerStream_priv.Flush();
                }
            }
            else if (this.IsChecked_btnSelect)
            {
                int x = e.Location.X;
                int y = e.Location.Y;

                if (this.CheckUnselection(x, y, Objects))
                {
                    for (int i = Objects.Count - 1; i >= 0; i--)
                    {
                        if (Objects[i].Name == "Relation")
                        {
                            Point Start = GetNearestPoint(Objects[i].EventList[0], Objects[i].EventList[1].Center());
                            Point End   = GetNearestPoint(Objects[i].EventList[1], Objects[i].EventList[0].Center());

                            bool helper = CheckSelectionLine(x, y, End.X, End.Y, Start.X, Start.Y);

                            if (helper)
                            {
                                SelectRelation((Relation)Objects[i]);
                                break;
                            }
                        }
                        else if (Objects[i].Name == "Label")
                        {
                            bool helper = this.CheckSelection(x, y, Objects[i].X, Objects[i].Y, Objects[i].X + 75, Objects[i].Y + 15);

                            if (helper)
                            {
                                SelectLabelEvent((Objects.Label)Objects[i]);
                                break;
                            }
                        }
                        else
                        {
                            bool helper = this.CheckSelection(x, y, Objects[i].X, Objects[i].Y, Objects[i].X + 150, Objects[i].Y + 70);

                            if (helper)
                            {
                                if (Objects[i].Name == "Rectangle Red")
                                {
                                    SelectRectangleRed((RectangleRed)Objects[i]);
                                    break;
                                }
                                else if (Objects[i].Name == "Rectangle Blue")
                                {
                                    SelectRectangleBlue((RectangleBlue)Objects[i]);
                                    break;
                                }
                            }
                        }
                    }
                }
                else
                {
                    for (int i = Objects.Count - 1; i >= 0; i--)
                    {
                        Objects[i].Unselect(pnlCenter);
                        Objects[i].Selected = false;
                        Selected.Clear();
                    }
                }
            }
        }
Example #12
0
        private void MoveRectangleRed_Invoker(RectangleRed Rect)
        {
            MoveRectanglRed MoveRect = new MoveRectanglRed(MoveRectRed);

            Invoke(MoveRect, Rect);
        }
Example #13
0
        private void DeleteRectangleRed_Invoker_Inverse(RectangleRed Rect)
        {
            DeleteRectangleRed_Inverse DeleteRect = new DeleteRectangleRed_Inverse(DeleteRectRed_Inverse);

            Invoke(DeleteRect, Rect);
        }
Example #14
0
        private void DeleteRectangleRed_Invoker(RectangleRed Rect)
        {
            DeleteRectangleRed DeleteRect = new DeleteRectangleRed(DeleteRectRed);

            Invoke(DeleteRect, Rect);
        }
Example #15
0
        private void DrawRectangleRed_Invoker_Inverse(RectangleRed Rect)
        {
            DrawRectangleRed_Inverse DrawRect = new DrawRectangleRed_Inverse(DrawRectRed_Inverse);

            Invoke(DrawRect, Rect);
        }
Example #16
0
        private void GetContent()
        {
            while (true)
            {
                ServerStream_priv = ClientSocket.GetStream();
                byte[] inStream = new byte[10025];
                int    n        = 0;
                n = ServerStream_priv.Read(inStream, 0, 10025);

                if (n != 0)
                {
                    byte[]          data = inStream;
                    BinaryFormatter bf   = new BinaryFormatter();
                    using (MemoryStream ms = new MemoryStream(data))
                    {
                        object obj = bf.Deserialize(ms);
                        if (obj.GetType() == typeof(Undo_Redo.UndoRedoWrapper))
                        {
                            this.Undo_command = (Undo_Redo.UndoRedoWrapper)obj;

                            if (Undo_command.Command.Username != Username)
                            {
                                Undo_command = Manager.SaveCommand(Undo_command.Command, Undo_command.Command.IsUndo, Undo_command.Command.IsRedo);
                            }

                            if (Manager.Counter > 1)
                            {
                                if (Counter > 2)
                                {
                                    CmdLargeRepair cmdLargeRepair = new CmdLargeRepair();
                                    cmdLargeRepair.isLargeRepair = true;
                                    cmdLargeRepair.ID_Command    = Guid.NewGuid();
                                    cmdLargeRepair.username      = Username;

                                    BinaryFormatter bf1 = new BinaryFormatter();
                                    using (MemoryStream data1 = new MemoryStream())
                                    {
                                        bf1.Serialize(data1, cmdLargeRepair);
                                        ServerStream_priv.Write(data1.ToArray(), 0, data1.ToArray().Length);
                                        ServerStream_priv.Flush();
                                    }
                                }
                                else if (Manager.Commands[Manager.Counter - 1].ID_prevCommand != Undo_command.ID_prevCommand)
                                {
                                    Manager.Swap(Manager.Commands[Manager.Counter - 2], Manager.Commands[Manager.Counter - 1], Manager.Commands);
                                    Counter++;
                                }
                            }

                            this.Rect = Undo_command.Command;

                            if (Rect.EventName == "Rectangle Red")
                            {
                                this.Rect_Red        = new RectangleRed(Rect.X, Rect.Y, Rect.Selected, Rect.Deleted, Rect.Moved, Rect.Username, Rect.MovingHelperX, Rect.MovingHelperY, Rect.IsUndo, Rect.IsRedo);
                                Rect_Red.HierarchyID = Rect.HierarchyID;
                                Rect_Red.EventList   = Rect.EventList;
                                if (Rect_Red.IsUndo && Rect_Red.Deleted)
                                {
                                    DeleteRectangleRed_Invoker_Inverse(this.Rect_Red);
                                }
                                else if (Rect_Red.IsUndo)
                                {
                                    DrawRectangleRed_Invoker_Inverse(this.Rect_Red);
                                }
                                else if (Rect_Red.Moved)
                                {
                                    MoveRectangleRed_Invoker(this.Rect_Red);
                                }
                                else if (Rect_Red.Deleted)
                                {
                                    DeleteRectangleRed_Invoker(this.Rect_Red);
                                }
                                else if (Rect_Red.Selected)
                                {
                                    SelectRectangleRed(this.Rect_Red);
                                }
                                else
                                {
                                    DrawRectRed(this.Rect_Red);
                                }
                            }
                            else if (Rect.EventName == "Rectangle Blue")
                            {
                                this.Rect_Blue = new RectangleBlue(Rect.X, Rect.Y, Rect.Selected, Rect.Deleted, Rect.Moved, Rect.Username, Rect.MovingHelperX, Rect.MovingHelperY, Rect.IsUndo, Rect.IsRedo);

                                Rect_Blue.HierarchyID = Rect.HierarchyID;
                                Rect_Blue.EventList   = Rect.EventList;
                                if (Rect_Blue.IsUndo && Rect_Blue.Deleted)
                                {
                                    DeleteRectangleBlue_Invoker_Inverse(this.Rect_Blue);
                                }
                                else if (Rect_Blue.IsUndo)
                                {
                                    DrawRectangleBlue_Invoker_Inverse(this.Rect_Blue);
                                }
                                else if (Rect_Blue.Moved)
                                {
                                    MoveRectangleBlue_Invoker(this.Rect_Blue);
                                }
                                else if (Rect_Blue.Deleted)
                                {
                                    DeleteRectangleBlue_Invoker(this.Rect_Blue);
                                }
                                else if (Rect_Blue.Selected)
                                {
                                    SelectRectangleBlue(this.Rect_Blue);
                                }
                                else
                                {
                                    DrawRectBlue(this.Rect_Blue);
                                }
                            }
                            else if (Rect.EventName == "Relation")
                            {
                                this.Rel = new Relation(Rect.Start, Rect.End, Rect.Selected, Rect.Deleted, Rect.Moved, Rect.Username, Rect.IsUndo, Rect.IsRedo);
                                Rel.EventList.Add(Rect.EventList[0]);
                                Rel.EventList.Add(Rect.EventList[1]);
                                Rel.HierarchyID = Rect.HierarchyID;
                                if (Rel.IsUndo && Rel.Deleted)
                                {
                                    DeleteRelation_Invoker_Inverse(Rel);
                                }
                                else if (Rel.IsUndo)
                                {
                                    DrawRelation_Invoker_Inverse(Rel);
                                }
                                else if (Rel.Deleted)
                                {
                                    DeleteRelation_Invoker(Rel);
                                }
                                else if (Rel.Moved)
                                {
                                    MoveRelation_Invoker(Rel);
                                }
                                else
                                {
                                    DrawRelation(Rel);
                                }
                            }
                            else if (Rect.EventName == "Label")
                            {
                                this.Lab = new Objects.Label(Rect.X, Rect.Y, Rect.Selected, Rect.Deleted, Rect.Moved, Rect.Username, Rect.MovingHelperX, Rect.MovingHelperY, Rect.IsUndo, Rect.IsRedo);

                                Lab.HierarchyID = Rect.HierarchyID;
                                Lab.EventList   = Rect.EventList;

                                if (Lab.IsUndo && Lab.Deleted)
                                {
                                    DeleteLabel_Invoker_Inverse(this.Lab);
                                }
                                else if (Lab.IsUndo)
                                {
                                    DrawLabel_Invoker_Inverse(this.Lab);
                                }
                                else if (Lab.Deleted)
                                {
                                    DeleteLabel_Invoker(this.Lab);
                                }
                                else if (Lab.Selected)
                                {
                                    SelectLabelEvent(this.Lab);
                                }
                                else
                                {
                                    DrawLabel(this.Lab);
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("This is large repair!");
                            Manager.Commands = (Undo_Redo.UndoRedoWrapper[])obj;
                        }
                    }
                }
                else
                {
                    break;
                }
            }
        }