public static void CreateDefaultTrigger(StoryboardTimelineSceneNode storyboard) { ITriggerContainer triggerContainer = (ITriggerContainer)storyboard.StoryboardContainer ?? storyboard.ViewModel.RootNode as ITriggerContainer; if (triggerContainer == null || !triggerContainer.CanEditTriggers) { return; } SceneViewModel viewModel = storyboard.ViewModel; IProjectContext projectContext = viewModel.ProjectContext; IType type = projectContext.GetType(triggerContainer.TargetElementType); if (type == null) { return; } TriggerSourceInformation triggerSource = (TriggerSourceInformation)TriggersHelper.GetDefaultEvent((ITypeResolver)projectContext, type); if (!(triggerSource != (TriggerSourceInformation)null)) { return; } TriggerBaseNode orCreateTrigger = TriggersHelper.FindOrCreateTrigger(triggerSource, triggerContainer, viewModel); if (orCreateTrigger == null) { return; } TimelineActionNode timelineActionNode = (TimelineActionNode)BeginActionNode.Factory.Instantiate(viewModel); timelineActionNode.TargetTimeline = storyboard; TriggersHelper.DefaultAddAction(orCreateTrigger, (TriggerActionNode)timelineActionNode); }
private TriggerModel3 TriggerSubscription_Inserted(object sender, SceneNode basisNode, object basisContent, SceneNode newPathNode) { TriggerBaseNode trigger = (TriggerBaseNode)newPathNode; TriggerModel3 triggerModel3 = TriggerModel3.ConstructModel(trigger, this); if (triggerModel3 != null) { ITriggerContainer currentContainer = this.CurrentContainer; if (currentContainer == null) { return((TriggerModel3)null); } int triggerIndex = this.GetTriggerIndex(currentContainer, trigger); if (triggerIndex == -1) { return((TriggerModel3)null); } if (this.ShouldDisplayNoneTrigger) { ++triggerIndex; } this.triggerModels.Insert(triggerIndex, triggerModel3); if (trigger == this.TriggerToBeSelected) { this.TriggerToBeSelected = (TriggerBaseNode)null; this.SelectedItem = triggerModel3; } } return(triggerModel3); }
public void CreateNewEventTrigger() { if (this.CurrentContainer == null) { return; } SceneViewModel activeSceneViewModel = this.ActiveSceneViewModel; SceneDocument document = activeSceneViewModel.Document; ITriggerContainer currentContainer = this.CurrentContainer; using (SceneEditTransaction editTransaction = document.CreateEditTransaction(StringTable.TriggerChangeUndoUnit)) { IProjectContext projectContext = document.ProjectContext; IType type = projectContext.GetType(currentContainer.TargetElementType); if (type != null) { TriggerSourceInformation triggerSource = (TriggerSourceInformation)TriggersHelper.GetDefaultEvent((ITypeResolver)projectContext, type); if (triggerSource != (TriggerSourceInformation)null) { TriggerBaseNode trigger = TriggersHelper.CreateTrigger(triggerSource, activeSceneViewModel); if (trigger != null) { int index = currentContainer.VisualTriggers.Count; if (this.selectedItem != null) { index = this.selectedItem != this.noneTrigger ? currentContainer.VisualTriggers.IndexOf(this.selectedItem.SceneNode) + 1 : 0; } currentContainer.VisualTriggers.Insert(index, trigger); this.TriggerToBeSelected = trigger; } } } editTransaction.Commit(); } }
public static TriggerBaseNode FindOrCreateTrigger(TriggerSourceInformation triggerSource, ITriggerContainer triggerContainer, SceneViewModel viewModel) { RoutedEventInformation eventInformation = triggerSource as RoutedEventInformation; PropertyInformation propertyInformation = triggerSource as PropertyInformation; foreach (TriggerBaseNode triggerBaseNode in (IEnumerable <TriggerBaseNode>)triggerContainer.VisualTriggers) { EventTriggerNode eventTriggerNode = triggerBaseNode as EventTriggerNode; TriggerNode triggerNode = triggerBaseNode as TriggerNode; if (eventTriggerNode != null && (TriggerSourceInformation)eventInformation != (TriggerSourceInformation)null && eventTriggerNode.RoutedEvent == eventInformation.RoutedEvent) { return((TriggerBaseNode)eventTriggerNode); } if (triggerNode != null && (TriggerSourceInformation)propertyInformation != (TriggerSourceInformation)null && ((ITriggerConditionNode)triggerNode).PropertyKey == propertyInformation.DependencyProperty) { return((TriggerBaseNode)triggerNode); } } TriggerBaseNode trigger = TriggersHelper.CreateTrigger(triggerSource, viewModel); if (trigger != null) { triggerContainer.VisualTriggers.Add(trigger); } return(trigger); }
public static string GetDefaultStoryboardName(TriggerBaseNode trigger) { EventTriggerNode eventTriggerNode = trigger as EventTriggerNode; string suggestion = "Storyboard"; if (eventTriggerNode != null) { suggestion = "On" + eventTriggerNode.RoutedEvent.Name; } return(trigger.ViewModel.AnimationEditor.GenerateNewTimelineName(trigger.StoryboardContainer, suggestion)); }
private void EnsureProperActions(TriggerBaseNode trigger, StoryboardTimelineSceneNode storyboard) { if (!TriggersHelper.NeedsBeginAction(storyboard)) { return; } TimelineActionNode timelineActionNode = (TimelineActionNode)BeginActionNode.Factory.Instantiate(storyboard.ViewModel); timelineActionNode.TargetTimeline = storyboard; TriggersHelper.DefaultAddAction(trigger, (TriggerActionNode)timelineActionNode); storyboard.UpdateActionNames(); }
public static bool CanDeleteTrigger(TriggerBaseNode triggerNode) { List <SceneNode> list = new List <SceneNode>(); foreach (SceneNode sceneNode in (IEnumerable <TriggerActionNode>)triggerNode.EnterActions) { list.Add(sceneNode); } foreach (SceneNode sceneNode in (IEnumerable <TriggerActionNode>)triggerNode.ExitActions) { list.Add(sceneNode); } EventTriggerNode eventTriggerNode = triggerNode as EventTriggerNode; if (eventTriggerNode != null) { list.AddRange((IEnumerable <SceneNode>)eventTriggerNode.Actions); } foreach (SceneNode sceneNode in list) { BeginActionNode beginActionNode = sceneNode as BeginActionNode; if (beginActionNode != null && beginActionNode.TargetTimeline != null) { bool flag1 = false; bool flag2 = false; foreach (TimelineActionNode timelineActionNode in beginActionNode.TargetTimeline.ControllingActions) { if (!list.Contains((SceneNode)timelineActionNode)) { if (timelineActionNode is BeginActionNode && timelineActionNode != beginActionNode) { flag2 = true; } else if (timelineActionNode is ControllableStoryboardActionNode) { flag1 = true; } } } if (!flag2 && flag1) { return(false); } } } return(true); }
private int GetTriggerIndex(ITriggerContainer container, TriggerBaseNode trigger) { int num = 0; foreach (TriggerBaseNode triggerBaseNode in (IEnumerable <TriggerBaseNode>)container.VisualTriggers) { if (triggerBaseNode == trigger) { return(num); } if (PlatformTypes.Trigger.IsAssignableFrom((ITypeId)triggerBaseNode.Type) || PlatformTypes.MultiTrigger.IsAssignableFrom((ITypeId)triggerBaseNode.Type) || PlatformTypes.EventTrigger.IsAssignableFrom((ITypeId)triggerBaseNode.Type)) { ++num; } } return(-1); }
internal static TriggerModel3 ConstructModel(TriggerBaseNode trigger, TriggerModelManager triggerManager) { EventTriggerNode trigger1 = trigger as EventTriggerNode; BaseTriggerNode trigger2 = trigger as BaseTriggerNode; TriggerModel3 triggerModel3 = (TriggerModel3)null; if (trigger1 != null) { triggerModel3 = (TriggerModel3) new EventTriggerModel(trigger1); } else if (trigger2 != null) { triggerModel3 = (TriggerModel3) new PropertyTriggerModel(trigger2, triggerManager); } if (triggerModel3 != null) { triggerModel3.Initialize(); } return(triggerModel3); }
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); } }
public void CreateNewPropertyTrigger() { if (this.CurrentContainer == null) { return; } ITriggerContainer currentContainer = this.CurrentContainer; SceneViewModel activeSceneViewModel = this.ActiveSceneViewModel; SceneDocument document = activeSceneViewModel.Document; StyleNode styleNode = currentContainer as StyleNode; FrameworkTemplateElement frameworkTemplateElement = currentContainer as FrameworkTemplateElement; using (SceneEditTransaction editTransaction = document.CreateEditTransaction(StringTable.TriggerChangeUndoUnit)) { TriggerSourceInformation triggerSource = (TriggerSourceInformation)null; if (styleNode != null || frameworkTemplateElement != null) { triggerSource = (TriggerSourceInformation)TriggersHelper.GetDefaultProperty(currentContainer.TargetElementType, document.DocumentContext); } if (triggerSource != (TriggerSourceInformation)null) { TriggerBaseNode trigger = TriggersHelper.CreateTrigger(triggerSource, activeSceneViewModel); if (trigger != null) { int index = currentContainer.VisualTriggers.Count; if (this.selectedItem != null) { index = this.selectedItem != this.noneTrigger ? currentContainer.VisualTriggers.IndexOf(this.selectedItem.SceneNode) + 1 : 0; } currentContainer.VisualTriggers.Insert(index, trigger); activeSceneViewModel.SetActiveTrigger(trigger); } } editTransaction.Commit(); } }
internal TriggerModel3(TriggerBaseNode trigger) { this.trigger = trigger; }