コード例 #1
0
        public void CreateSelectJoint(double x, double y)
        {
            if (selectJoint != null)
            {
                element_buffer.Add(selectJoint.element_begin);

                if (selectJoint.element_begin != null)
                {
                    for (int i = 0; i < blocks.Count; i++)
                    {
                        if (blocks[i].element == selectJoint.element_begin)
                        {
                            if (blocks[i].Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true)
                            {
                                blocks[i].Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true_end;
                            }
                            if (blocks[i].Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false)
                            {
                                blocks[i].Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false_end;
                            }
                        }
                    }
                }

                selectJoint.Create(this.canvas, x, y);

                selectJoint  = null;
                joint_select = false;
            }
            joint_select = false;
        }
コード例 #2
0
        /// <summary>
        /// Происходит при удалении соединения
        /// </summary>
        /// <param name="joint"></param>
        public void selectJoint_removeJoint(LMD_BLOCKS.BlockJoint joint)
        {
            Boolean block_yes = false;

            for (int i = 0; i < blocks.Count; i++)
            {
                if (blocks[i].next_1 != null)
                {
                    if (joint.element_begin == blocks[i].next_1.element)
                    {
                        if (blocks[i].next_1 != null)
                        {
                            blocks[i].next_1.next_1 = null;
                        }

                        block_yes = true;
                    }
                }

                if (block_yes)
                {
                    break;
                }
            }

            joints.Remove(joint);
            RemoveLine(joint);
        }
コード例 #3
0
        /// <summary>
        /// Происходит когда в блоке condition выбирается соединение
        /// </summary>
        /// <param name="element">Сам блок</param>
        /// <param name="num">Номер связи</param>
        private void bco_clickJoint(UIElement element, int num)
        {
            #region -
            if (num == 0)             // минус
            {
                joint_select = true;

                if (selectJoint == null)
                {
                    selectJoint = new LMD_BLOCKS.BlockJoint(this);

                    selectJoint.type_line     = LMD_BLOCKS.TYPE_LINE.condition;
                    selectJoint.element_begin = element;
                    selectJoint.State         = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false;
                    selectJoint.SelectXY(Canvas.GetLeft(element) + 10, Canvas.GetTop(element) + 50);

                    selectJoint.createNewJoint += selectJoint_createNewJoint;
                    selectJoint.removeJoint    += selectJoint_removeJoint;
                }
                else if (selectJoint != null)
                {
                }
            }
            #endregion
            #region +
            else if (num == 1)             // плюс
            {
                joint_select = true;

                if (selectJoint == null)
                {
                    selectJoint = new LMD_BLOCKS.BlockJoint(this);

                    selectJoint.type_line     = LMD_BLOCKS.TYPE_LINE.condition;
                    selectJoint.element_begin = element;
                    selectJoint.State         = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true;
                    selectJoint.SelectXY(Canvas.GetLeft(element) + 340, Canvas.GetTop(element) + 50);

                    selectJoint.createNewJoint += selectJoint_createNewJoint;
                    selectJoint.removeJoint    += selectJoint_removeJoint;
                }
                else if (selectJoint != null)
                {
                }
            }
            #endregion
        }
コード例 #4
0
        public void CreateJoint2()
        {
            if (selectJoint != null)
            {
                LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b1 = null;
                LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b2 = null;

                for (int i = 0; i < blocks.Count; i++)
                {
                    if (blocks[i].element == selectJoint.element_begin)
                    {
                        b1 = blocks[i];
                    }
                }
                for (int i = 0; i < blocks.Count; i++)
                {
                    if (blocks[i].element == selectJoint.element_end)
                    {
                        b2 = blocks[i];
                    }
                }
                b1.next_1 = b2;

                //	MessageBox.Show("b1[" + b1.Type + "] Mode[" + b1.Mode + "] b2[" + b2.Type + "] Mode[" + b2.Mode + "]");

                if (b1.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true)
                {
                    b2.Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true;
                }
                else if (b1.Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false)
                {
                    b2.Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false;
                }

                selectJoint.Create(this.canvas);

                selectJoint = null;
            }
            joint_select = false;
        }
コード例 #5
0
 /// <summary>
 /// Происходит при создании нового соединения
 /// </summary>
 /// <param name="joint"></param>
 public void selectJoint_createNewJoint(LMD_BLOCKS.BlockJoint joint)
 {
     createNewLine(joint);
     joints.Add(joint);
     //	MessageBox.Show(""+);
     if (joint.type_line == LMD_BLOCKS.TYPE_LINE.end_condition)
     {
         for (int i = 0; i < blocks.Count; i++)
         {
             if (blocks[i].element == joint.element_begin || blocks[i].element == joint.element_end)
             {
                 if (blocks[i].Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false)
                 {
                     blocks[i].Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false_end;
                 }
                 else if (blocks[i].Mode == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true)
                 {
                     blocks[i].Mode = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true_end;
                 }
             }
         }
         //	MessageBox.Show(joint.type_line + "\n" + joint.element_begin.GetType() + " | " + joint.element_end.GetType());
     }
 }
コード例 #6
0
        /// <summary>
        /// Добавляет выборочно связь. Связь зависит от selectJoint
        /// и исходя из этого объекта сама выбирает какую форму она будет иметь
        /// </summary>
        /// <param name="element">UI связываемого блока. Привязывается к соединению</param>
        public void AddJoint(UIElement element)
        {
            joint_select = true;

            if (selectJoint == null)
            {
                selectJoint = new LMD_BLOCKS.BlockJoint(this);
                selectJoint.element_begin   = element;
                selectJoint.createNewJoint += selectJoint_createNewJoint;
                selectJoint.removeJoint    += selectJoint_removeJoint;
                selectJoint.type_line       = LMD_BLOCKS.TYPE_LINE.marshrut;
            }
            else if (selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.marshrut)             // Прямая связь
            {
                if (selectJoint.element_begin == null)
                {
                    selectJoint.element_begin = element;
                }
                else if (selectJoint.element_end == null)
                {
                    selectJoint.element_end = element;

                    CreateJoint2();
                }
            }
            else if (selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.line_block || selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.condition)
            {
                if (selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.line_block)
                {
                    selectJoint.element_end = element;
                    LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b1 = null;
                    LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b2 = null;

                    for (int i = 0; i < blocks.Count; i++)
                    {
                        if (blocks[i].element == selectJoint.element_begin)
                        {
                            b1 = blocks[i];
                        }
                    }
                    for (int i = 0; i < blocks.Count; i++)
                    {
                        if (blocks[i].element == selectJoint.element_end)
                        {
                            b2 = blocks[i];
                        }
                    }
                    b1.next_1 = b2;

                    //	MessageBox.Show(""+b1.Type + " | " + b2.Type);

                    selectJoint.CreateOldXYToBlock(this.canvas, element);
                }
                else if (selectJoint.type_line == LMD_BLOCKS.TYPE_LINE.condition)
                {
                    #region +
                    if (selectJoint.State == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true)                     // +
                    {
                        selectJoint.element_end = element;
                        LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b1 = null;
                        LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b2 = null;

                        for (int i = 0; i < blocks.Count; i++)
                        {
                            if (blocks[i].element == selectJoint.element_begin)
                            {
                                b1 = blocks[i];
                            }
                        }
                        for (int i = 0; i < blocks.Count; i++)
                        {
                            if (blocks[i].element == selectJoint.element_end)
                            {
                                b2 = blocks[i];
                            }
                        }
                        b1.next_1 = b2;
                        b2.Mode   = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_true;

                        selectJoint.CreateOldXYToBlock(this.canvas, element);
                    }
                    #endregion
                    #region -
                    else if (selectJoint.State == LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false)                     // -
                    {
                        selectJoint.element_end = element;
                        LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b1 = null;
                        LMD_BLOCKS.BLOCK_JOINT.BASE_BLOCK b2 = null;

                        for (int i = 0; i < blocks.Count; i++)
                        {
                            if (blocks[i].element == selectJoint.element_begin)
                            {
                                b1 = blocks[i];
                            }
                        }
                        for (int i = 0; i < blocks.Count; i++)
                        {
                            if (blocks[i].element == selectJoint.element_end)
                            {
                                b2 = blocks[i];
                            }
                        }
                        b1.next_2 = b2;
                        b2.Mode   = LMD_BLOCKS.BLOCK_JOINT.STATE_BLOCK.base_condition_false;

                        selectJoint.CreateOldXYToBlock(this.canvas, element);
                    }
                    #endregion
                }
                else
                {
                    selectJoint.CreateOldXYToBlock(this.canvas, element);
                }
                joint_select = false;
                selectJoint  = null;
            }
        }