예제 #1
0
        private void DispatcherControlRequest(object sender, ApplicationControlRequestArgs e)
        {
            _actionApplied = e.ControlType;
            //if (e.ControlType == ControlType.Exit || e.ControlType == ControlType.LogOut)
            //{
            //    IDisplayer[] displayers = _defaultProxy.ContainedDisplayers;
            //    foreach (IDisplayer displayer in displayers)
            //    {
            //        DisplayerCancelEventArgs arguments = new DisplayerCancelEventArgs(displayer, ControlType.Exit);
            //        displayer.OnDisplayerRemoved(arguments);
            //        if (arguments.Cancel)
            //        {
            //            e.Cancel = true;
            //            return;
            //        }
            //        if(_defaultProxy.ContainedDisplayers.Length > 1)
            //        {
            //            _defaultProxy.Remove(displayer, false);
            //        }
            //    }
            //}
            //GlobalObjects.CasEnvironment.Disconnect();
            //_controlledForm.Close();
            if (e.ControlType == ControlType.Exit)
            {
                IDisplayer[] displayers = _defaultProxy.ContainedDisplayers;
                foreach (IDisplayer displayer in displayers)
                {
                    DisplayerCancelEventArgs arguments = new DisplayerCancelEventArgs(displayer, ControlType.Exit);
                    displayer.OnDisplayerRemoving(arguments);
                    if (arguments.Cancel)
                    {
                        e.Cancel = true;
                        return;
                    }
                    //Оповещение о окончании удаления вкладки
                    displayer.OnDisplayerRemoved(arguments);
                    //Если вкладка запросила отменить закрытие, операция прекращается
                    if (arguments.Cancel)
                    {
                        e.Cancel = true;
                        break;
                    }

                    if (_defaultProxy.ContainedDisplayers.Length > 1)
                    {
                        _defaultProxy.Remove(displayer, false);
                    }
                }
                GlobalObjects.CasEnvironment.Disconnect();
                _controlledForm.Close();
            }

            if (e.ControlType == ControlType.LogOut)
            {
                IDisplayer[] displayers = _defaultProxy.ContainedDisplayers;
                foreach (IDisplayer displayer in displayers)
                {
                    DisplayerCancelEventArgs arguments = new DisplayerCancelEventArgs(displayer, ControlType.Exit);
                    displayer.OnDisplayerRemoving(arguments);
                    if (arguments.Cancel)
                    {
                        e.Cancel = true;
                        return;
                    }
                    //Оповещение о окончании удаления вкладки
                    displayer.OnDisplayerRemoved(arguments);
                    //Если вкладка запросила отменить закрытие, операция прекращается
                    if (arguments.Cancel)
                    {
                        e.Cancel = true;
                        break;
                    }

                    if (_defaultProxy.ContainedDisplayers.Length > 1)
                    {
                        _defaultProxy.Remove(displayer, false);
                    }
                }
                GlobalObjects.CasEnvironment.Disconnect();

                _defaultProxy.ContainedDisplayers[0].Text   = "Login";
                _defaultProxy.ContainedDisplayers[0].Entity =
                    new DispatcheredUIControls.MainControls.DispatcheredUILoginPage
                {
                    BackColor      = System.Drawing.Color.White,
                    Displayer      = null,
                    DisplayerText  = "Login",
                    Dock           = DockStyle.Fill,
                    Location       = new System.Drawing.Point(0, 0),
                    Margin         = new Padding(4, 4, 4, 4),
                    ReflectionType = ReflectionTypes.CloseDisplayerContainingEntity,
                };
                //_defaultProxy.ContainedDisplayers[0].Entity =
                //    new OperatorSummaryScreen(GlobalObjects.CasEnvironment.Operators[0]);
            }
        }