Exemplo n.º 1
0
        /// <summary>
        /// 状态编辑时点击确认
        /// </summary>
        public void Update_Name()
        {
            if (name_TextBox.Text == null || name_TextBox.Text.Length == 0)
            {
                ResourceManager.mainWindowVM.Tips = "需要给出状态名称!";
                return;
            }

            // 【注意】区分“状态机”和“访问控制”
            SidePanel_VM sidePanel_VM = ResourceManager.mainWindowVM.SelectedItem.SelectedItem.SelectedItem;

            if (sidePanel_VM is ProcessToSM_P_VM) // “状态机”
            {
                // 检查状态名称独一无二
                ProcessToSM_P_VM  processToSM_P_VM  = (ProcessToSM_P_VM)ResourceManager.mainWindowVM.SelectedItem.SelectedItem.SelectedItem;
                StateMachine_P_VM stateMachine_P_VM = processToSM_P_VM.SelectedItem;
                if (!Checker.checkStateName(stateMachine_P_VM, VM.State, name_TextBox.Text))
                {
                    ResourceManager.mainWindowVM.Tips = "不可用的名称,与其它状态重名!";
                    return;
                }

                VM.State.Name = name_TextBox.Text;
                ResourceManager.mainWindowVM.Tips = "为状态设置了名称:" + VM.State.Name;
            }
            else if (sidePanel_VM is AccessControl_P_VM) // “访问控制”
            {
                // 不检查状态名是否独一无二
                VM.State.Name = name_TextBox.Text;
                ResourceManager.mainWindowVM.Tips = "为状态设置了名称:" + VM.State.Name;
            }

            // 关闭窗口
            this.Close();
        }
Exemplo n.º 2
0
        // 关闭窗体
        private void close_event(object sender, CancelEventArgs e)
        {
            // 【注意】区分“状态机”和“访问控制”
            SidePanel_VM sidePanel_VM = ResourceManager.mainWindowVM.SelectedItem.SelectedItem.SelectedItem;

            if (sidePanel_VM is ProcessToSM_P_VM) // “状态机”
            {
                ProcessToSM_P_VM  processToSM_P_VM = (ProcessToSM_P_VM)sidePanel_VM;
                StateMachine_P_VM stateMachineP_VM = processToSM_P_VM.SelectedItem;
                stateMachineP_VM.PanelEnabled = true;
            }
            else if (sidePanel_VM is AccessControl_P_VM) // “访问控制”
            {
                AccessControl_P_VM accessControl_P_VM = (AccessControl_P_VM)sidePanel_VM;
                accessControl_P_VM.PanelEnabled = true;
            }
        }
Exemplo n.º 3
0
        // 鼠标按下
        protected override void OnPointerPressed(PointerPressedEventArgs e)
        {
            base.OnPointerPressed(e);

            // 【注意】区分“状态机”和“访问控制”
            SidePanel_VM sidePanel_VM = ResourceManager.mainWindowVM.SelectedItem.SelectedItem.SelectedItem;

            if (sidePanel_VM is ProcessToSM_P_VM) // “状态机”
            {
                StateMachine_P_VM nowSMPVM = ((ProcessToSM_P_VM)sidePanel_VM).SelectedItem;
                // 如果有连线,那么要做的是删除连线
                if (ConnectorVM.ConnectionVM != null)
                {
                    nowSMPVM.BreakTransitionVM(ConnectorVM);
                    ResourceManager.mainWindowVM.Tips = "删除了转移关系";
                }
                // 如果已经是活动锚点,要清除活动状态
                else if (nowSMPVM.ActiveConnector == ConnectorVM) // 也可用ConnectorVM.IsActive
                {
                    ConnectorVM.IsActive              = false;
                    nowSMPVM.ActiveConnector          = null;
                    ResourceManager.mainWindowVM.Tips = "清除了锚点的预连线状态";
                }
                // 否则,即是空闲锚点
                // 如果还没有活动锚点,设置其为活动锚点
                else if (nowSMPVM.ActiveConnector == null)
                {
                    nowSMPVM.ActiveConnector          = ConnectorVM;
                    ConnectorVM.IsActive              = true;
                    ResourceManager.mainWindowVM.Tips = "设置锚点为预连线锚点";
                }
                // 至此,说明已经有一个活动锚点了,且当前锚点是另一个空闲锚点,这时要从活动锚点连线到此锚点
                else
                {
                    nowSMPVM.CreateTransitionVM(nowSMPVM.ActiveConnector, ConnectorVM);
                    // 清除活动锚点
                    nowSMPVM.ActiveConnector.IsActive = false;
                    nowSMPVM.ActiveConnector          = null;
                }

                e.Handled = true;
            }
            else if (sidePanel_VM is AccessControl_P_VM) // “访问控制”
            {
                AccessControl_P_VM nowSMPVM = (AccessControl_P_VM)sidePanel_VM;
                // 如果有连线,那么要做的是删除连线
                if (ConnectorVM.ConnectionVM != null)
                {
                    nowSMPVM.BreakTransitionVM(ConnectorVM);
                    ResourceManager.mainWindowVM.Tips = "删除了转移关系";
                }
                // 如果已经是活动锚点,要清除活动状态
                else if (nowSMPVM.ActiveConnector == ConnectorVM) // 也可用ConnectorVM.IsActive
                {
                    ConnectorVM.IsActive              = false;
                    nowSMPVM.ActiveConnector          = null;
                    ResourceManager.mainWindowVM.Tips = "清除了锚点的预连线状态";
                }
                // 否则,即是空闲锚点
                // 如果还没有活动锚点,设置其为活动锚点
                else if (nowSMPVM.ActiveConnector == null)
                {
                    nowSMPVM.ActiveConnector          = ConnectorVM;
                    ConnectorVM.IsActive              = true;
                    ResourceManager.mainWindowVM.Tips = "设置锚点为预连线锚点";
                }
                // 至此,说明已经有一个活动锚点了,且当前锚点是另一个空闲锚点,这时要从活动锚点连线到此锚点
                else
                {
                    nowSMPVM.CreateTransitionVM(nowSMPVM.ActiveConnector, ConnectorVM);
                    // 清除活动锚点
                    nowSMPVM.ActiveConnector.IsActive = false;
                    nowSMPVM.ActiveConnector          = null;
                }

                e.Handled = true;
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// 删除指定面板上指定的建模元素
 /// </summary>
 /// <param name="networkItem_VM">要删除的建模元素</param>
 /// <param name="sidePanel_VM">指定的面板</param>
 public static void deleteAndClearNetworkItemVM(NetworkItem_VM networkItem_VM, SidePanel_VM sidePanel_VM)
 {
     // 清理其锚点上的所有连线
     foreach (Connector_VM connector_VM in networkItem_VM.ConnectorVMs)
     {
         if (connector_VM is null)
         {
             continue;
         }
         Connection_VM connection_VM = connector_VM.ConnectionVM;
         if (connection_VM is null)
         {
             continue;
         }
         if (connection_VM.Source == connector_VM)
         {
             connection_VM.Dest.ConnectionVM = null;
         }
         else
         {
             connection_VM.Source.ConnectionVM = null;
         }
         sidePanel_VM.UserControlVMs.Remove(connection_VM);
     }
     // 从面板中删除该建模元素
     sidePanel_VM.UserControlVMs.Remove(networkItem_VM);
 }