private void btCreateScenario_Click(object sender, RoutedEventArgs e)
        {
            ThroughScenarioSave(() => {
                var selectScenarioTypeControl = new NewScenarioSelectionView();
                var dialogView = new DialogView(selectScenarioTypeControl);
                dialogView.Show();

                selectScenarioTypeControl.SingleActionScenario += () => {
                    dialogView.Close();
                    NewScenario(new SingleActionScenario());
                };

                selectScenarioTypeControl.RemoteScenario += () => {
                    dialogView.Close();
                    NewScenario(new RemoteScenario());
                };

                selectScenarioTypeControl.CompositeScenario += () => {
                    dialogView.Close();
                    var selectCompositeScenarioType       = new NewCompositeScenarioSelectionView();
                    var dialogViewComposite               = new DialogView(selectCompositeScenarioType);
                    selectCompositeScenarioType.Selected += (valueType) => {
                        dialogViewComposite.Close();
                        var scenario = new CompositeScenario()
                        {
                            ValueType = valueType
                        };
                        NewScenario(scenario);
                    };
                    dialogViewComposite.Show();
                };
            });
        }
示例#2
0
 public void Revert(ScenarioBase scenario)
 {
     _scenario = (CompositeScenario)scenario;
     complexActionView.BeginInit();
     complexActionView.Refresh(new ActionHolder(_scenario.TargetAction), _scenario);
     complexActionView.EndInit();
     Refresh();
 }
示例#3
0
        public static void BeginCompositeScenarioSettings(CompositeScenario compositeScenario, Action <bool> callback)
        {
            var control = CreateControl(compositeScenario);
            var dialog  = new DialogView((FrameworkElement)control);

            if (compositeScenario.ValueType is StateValueType)
            {
                dialog.Caption =
                    "В данном окне можно настроить значение по умолчанию и статусы, " +
                    "которые может принимать и возвращать данный сценарий. " +
                    "Для того, чтобы добавить статус, нужно ввести в поле ввода " +
                    "его название и нажать \"+\". Для выбора значения сценария по " +
                    "умолчанию, нужно выбрать любой статус из списка.";
            }
            else if (compositeScenario.ValueType is FloatValueType)
            {
                dialog.Caption =
                    "Выберите числовое значение, которое сценарий будет принимать при инициализации. Настройте максимальное и минимальное значение, которое можно задать сценарию.";
            }
            else
            {
                dialog.Caption =
                    "Выберите значение, которое сценарий будет принимать при инициализации.";
            }

            bool ignoreCloseEvent = false;

            control.ApplyClicked += () =>
            {
                ignoreCloseEvent = true;
                callback?.Invoke(true);
                dialog.Close();
            };
            dialog.Closed += (o, e) => {
                if (!ignoreCloseEvent)
                {
                    callback?.Invoke(false);
                }
            };
            dialog.Show();
        }
示例#4
0
        public CompositeScenarioView(CompositeScenario scenario)
        {
            InitializeComponent();

            buttons.AddNewClick += () => complexActionView.AddFirst();

            btScaleMinus.Click += (o, e) => {
                if (scale.ScaleY > 0.2)
                {
                    scale.ScaleX -= 0.1;
                    scale.ScaleY -= 0.1;
                }
            };

            btScalePlus.Click += (o, e) => {
                scale.ScaleX += 0.1;
                scale.ScaleY += 0.1;
            };

            btSettings.Click += (o, e) => {
                ActionControlResolver.BeginCompositeScenarioSettings(
                    _scenario,
                    (result) => {
                    if (result)
                    {
                        Modified?.Invoke();
                    }
                });
            };

            _scenario = scenario;
            Refresh();
            complexActionView.BeginInit();
            complexActionView.Refresh(new ActionHolder(_scenario.TargetAction), _scenario);
            complexActionView.EndInit();
            complexActionView.Modified += (element) => Modified?.Invoke();
        }
示例#5
0
 private void btComplexScenario_Click(object sender, RoutedEventArgs e)
 {
     CompositeScenario?.Invoke();
 }