Example #1
0
        public static TriggerNode ConvertToTrigger(MultiTriggerNode multiTrigger)
        {
            TriggerNode triggerNode = TriggerNode.Factory.Instantiate(multiTrigger.ViewModel);

            if (multiTrigger.Conditions.Count > 0)
            {
                ConditionNode conditionNode = multiTrigger.Conditions[0];
                ((ITriggerConditionNode)triggerNode).Value       = conditionNode.Value;
                ((ITriggerConditionNode)triggerNode).PropertyKey = conditionNode.PropertyKey;
                if (conditionNode.SourceName != null)
                {
                    ((ITriggerConditionNode)triggerNode).SourceName = conditionNode.SourceName;
                }
            }
            List <SceneNode> list1 = new List <SceneNode>((IEnumerable <SceneNode>)multiTrigger.Setters);

            while (multiTrigger.Setters.Count > 0)
            {
                multiTrigger.Setters.RemoveAt(0);
            }
            List <TriggerActionNode> list2 = new List <TriggerActionNode>((IEnumerable <TriggerActionNode>)multiTrigger.EnterActions);

            while (multiTrigger.EnterActions.Count > 0)
            {
                multiTrigger.EnterActions.RemoveAt(0);
            }
            List <TriggerActionNode> list3 = new List <TriggerActionNode>((IEnumerable <TriggerActionNode>)multiTrigger.ExitActions);

            while (multiTrigger.ExitActions.Count > 0)
            {
                multiTrigger.ExitActions.RemoveAt(0);
            }
            TriggersHelper.ReplaceSceneNode((SceneNode)multiTrigger, (SceneNode)triggerNode);
            foreach (SceneNode sceneNode in list1)
            {
                triggerNode.Setters.Add(sceneNode);
            }
            foreach (TriggerActionNode triggerActionNode in list2)
            {
                triggerNode.EnterActions.Add(triggerActionNode);
            }
            foreach (TriggerActionNode triggerActionNode in list3)
            {
                triggerNode.ExitActions.Add(triggerActionNode);
            }
            SceneViewModel viewModel = multiTrigger.ViewModel;

            if (viewModel.ActiveVisualTrigger == multiTrigger)
            {
                viewModel.SetActiveTrigger((TriggerBaseNode)triggerNode);
            }
            return(triggerNode);
        }
Example #2
0
        public void Delete()
        {
            ConditionNode conditionNode = this.Condition as ConditionNode;

            if (conditionNode == null)
            {
                return;
            }
            using (SceneEditTransaction editTransaction = conditionNode.ViewModel.CreateEditTransaction(StringTable.TriggerChangeUndoUnit))
            {
                MultiTriggerNode nodeTypeAncestor = conditionNode.FindSceneNodeTypeAncestor <MultiTriggerNode>();
                conditionNode.Remove();
                if (nodeTypeAncestor != null && nodeTypeAncestor.Conditions.Count == 1)
                {
                    TriggersHelper.ConvertToTrigger(nodeTypeAncestor);
                }
                editTransaction.Commit();
            }
        }
Example #3
0
        public static void DefaultAddAction(TriggerBaseNode trigger, TriggerActionNode action)
        {
            TriggerNode      triggerNode      = trigger as TriggerNode;
            MultiTriggerNode multiTriggerNode = trigger as MultiTriggerNode;
            EventTriggerNode eventTriggerNode = trigger as EventTriggerNode;

            if (triggerNode != null)
            {
                triggerNode.EnterActions.Add(action);
            }
            else if (multiTriggerNode != null)
            {
                multiTriggerNode.EnterActions.Add(action);
            }
            else
            {
                if (eventTriggerNode == null)
                {
                    return;
                }
                eventTriggerNode.Actions.Add((SceneNode)action);
            }
        }
        private void AddCondition()
        {
            ConditionNode defaultCondition = TriggersHelper.CreateDefaultCondition(this.baseTriggerNode.TriggerContainer.TargetElementType, this.baseTriggerNode.ViewModel, this.baseTriggerNode.DocumentContext);

            if (defaultCondition == null)
            {
                return;
            }
            using (SceneEditTransaction editTransaction = this.baseTriggerNode.ViewModel.CreateEditTransaction(StringTable.TriggerChangeUndoUnit))
            {
                MultiTriggerNode multiTriggerNode1 = this.baseTriggerNode as MultiTriggerNode;
                if (multiTriggerNode1 != null)
                {
                    multiTriggerNode1.Conditions.Add(defaultCondition);
                }
                else
                {
                    MultiTriggerNode multiTriggerNode2 = TriggersHelper.ConvertToMultiTrigger((Microsoft.Expression.DesignSurface.ViewModel.TriggerNode) this.baseTriggerNode);
                    multiTriggerNode2.Conditions.Add(defaultCondition);
                    this.triggerManager.TriggerToBeSelected = (TriggerBaseNode)multiTriggerNode2;
                }
                editTransaction.Commit();
            }
        }