Ejemplo n.º 1
0
 public void SetScenario(ScenarioBase scenario, Action callback = null)
 {
     StuckUILoadingWindow.Show(
         "Компоновка окна...",
         () =>
     {
         if (scenario != null)
         {
             try
             {
                 _originalSenario = scenario;
                 _clonedScenario  = (ScenarioBase)Lazurite.Windows.Utils.Utils.CloneObject(_originalSenario);
                 _clonedScenario.InitializeAsync();
                 if (scenario is SingleActionScenario)
                 {
                     contentPresenter.Content = _constructorView = new SingleActionScenarioView((SingleActionScenario)_clonedScenario);
                 }
                 else if (scenario is RemoteScenario)
                 {
                     contentPresenter.Content = _constructorView = new RemoteScenarioView((RemoteScenario)_clonedScenario);
                 }
                 else if (scenario is CompositeScenario)
                 {
                     contentPresenter.Content = _constructorView = new CompositeScenarioView((CompositeScenario)_clonedScenario);
                 }
                 buttonsView.SetScenario(_clonedScenario);
                 IsModified = false;
                 _constructorView.Modified += () => Modified?.Invoke();
                 _constructorView.Modified += () => buttonsView.ScenarioModified();
                 _constructorView.Modified += () => IsModified = true;
                 _constructorView.Failed   += () => buttonsView.Failed();
                 _constructorView.Succeed  += () => buttonsView.Success();
                 EmptyScenarioModeOff();
             }
             catch (Exception e)
             {
                 Log.ErrorFormat(e, "Ошибка инициализации сценария {0}", scenario.Name);
             }
         }
         else
         {
             EmptyScenarioModeOn();
         }
         callback?.Invoke();
     }
         );
 }
Ejemplo n.º 2
0
        public async Task <bool> SetScenario(ScenarioBase scenario)
        {
            if (scenario != null)
            {
                using (StuckUILoadingWindow.Loading("Компоновка окна..."))
                {
                    try
                    {
                        _originalSenario = scenario;
                        _clonedScenario  = (ScenarioBase)Lazurite.Windows.Utils.Utils.CloneObject(_originalSenario);
                        if (_clonedScenario is SingleActionScenario s)
                        {
                            await _clonedScenario.Initialize();

                            contentPresenter.Content = _constructorView = new SingleActionScenarioView(s);
                        }
                        else if (_clonedScenario is CompositeScenario c)
                        {
                            await _clonedScenario.Initialize();

                            contentPresenter.Content = _constructorView = new CompositeScenarioView(c);
                        }
                        else if (_clonedScenario is RemoteScenario r)
                        {
                            contentPresenter.Content = _constructorView = new RemoteScenarioView(r);
                        }

                        buttonsView.SetScenario(_clonedScenario);
                        IsModified = false;
                        _constructorView.Modified += () =>
                        {
                            Modified?.Invoke();
                            buttonsView.ScenarioModified();
                            IsModified = true;
                        };
                        _constructorView.Failed += () =>
                        {
                            buttonsView.Failed();
                            IsFailed = true;
                        };
                        _constructorView.Succeed += () =>
                        {
                            buttonsView.Success();
                            IsFailed = false;
                        };
                        EmptyScenarioModeOff();
                        return(true);
                    }
                    catch (Exception e)
                    {
                        EmptyScenarioModeOn();
                        Log.Error($"Ошибка инициализации сценария [{scenario.Name}]", e);
                        return(false);
                    }
                }
            }
            else
            {
                EmptyScenarioModeOn();
                return(false);
            }
        }