예제 #1
0
        public void BeginSelectAction()
        {
            ActionInstanceSide actionInstanceSide;

            if (AlgorithmContext is SingleActionScenario)
            {
                actionInstanceSide = ActionInstanceSide.Both;
            }
            else if (MasterAction == null)
            {
                actionInstanceSide = ActionInstanceSide.OnlyLeft;
            }
            else
            {
                actionInstanceSide = ActionInstanceSide.OnlyRight;
            }
            SelectActionView.Show(
                (type) => {
                var newAction = Singleton.Resolve <PluginsManager>().CreateInstance(type, AlgorithmContext);
                if (newAction != null)
                {
                    ActionControlResolver.UserInitialize(
                        (result) => {
                        if (result)
                        {
                            ActionHolder.Action = newAction;
                            Model.Refresh(ActionHolder);
                            Modified?.Invoke(this);

                            if (MasterAction != null && !MasterAction.ValueType.IsCompatibleWith(newAction.ValueType))
                            {
                                MessageView.ShowMessage(
                                    "Тип действия не совпадает с типом действия главного действия. Нужно настроить подчиненное действие еще раз.",
                                    "Внимание!",
                                    Icons.Icon.WarningCircle);
                            }
                        }
                    },
                        newAction,
                        MasterAction?.ValueType,
                        true,
                        MasterAction);
                }
            },
                MasterAction?.ValueType.GetType(),
                actionInstanceSide,
                ActionHolder?.Action.GetType());
        }
예제 #2
0
 public void BeginSelectAction()
 {
     SelectActionView.Show(
         (type) =>
     {
         try
         {
             var newAction = Singleton.Resolve <PluginsManager>().CreateInstance(type, AlgorithmContext);
             if (newAction != null)
             {
                 ActionControlResolver.UserInitialize(
                     (result) =>
                 {
                     if (result)
                     {
                         ActionHolder.Action = newAction;
                         Model.Refresh(ActionHolder);
                         Modified?.Invoke(this);
                     }
                 },
                     newAction,
                     MasterAction?.ValueType,
                     true,
                     MasterAction);
                 if (MasterAction != null && MasterAction.ValueType.GetType() != newAction.ValueType.GetType())
                 {
                     MessageView.ShowMessage(
                         "Тип действия не совпадает с типом действия главного действия. Нужно настроить подчиненное действие еще раз.",
                         "Внимание!",
                         Icons.Icon.WarningCircle, null,
                         () =>
                     {
                         BeginSelectAction();
                     });
                 }
             }
         }
         catch (Exception e)
         {
             Log.Error("Ошибка во время настройки действия", e);
         }
     },
         MasterAction?.ValueType.GetType(),
         ActionInstanceSide.OnlyRight,
         ActionHolder?.Action.GetType());
 }