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 TriggerBaseNode CreateTrigger(TriggerSourceInformation triggerSource, SceneViewModel viewModel) { RoutedEventInformation eventInformation = triggerSource as RoutedEventInformation; PropertyInformation propertyInformation = triggerSource as PropertyInformation; if ((TriggerSourceInformation)eventInformation != (TriggerSourceInformation)null) { EventTriggerNode eventTriggerNode = EventTriggerNode.Factory.Instantiate(viewModel); eventTriggerNode.RoutedEvent = eventInformation.RoutedEvent; return((TriggerBaseNode)eventTriggerNode); } if (!((TriggerSourceInformation)propertyInformation != (TriggerSourceInformation)null)) { return((TriggerBaseNode)null); } TriggerNode triggerNode = (TriggerNode)null; DependencyProperty dependencyProperty = propertyInformation.DependencyProperty; if (dependencyProperty != null) { triggerNode = TriggerNode.Factory.Instantiate(viewModel); ITriggerConditionNode triggerConditionNode = (ITriggerConditionNode)triggerNode; triggerConditionNode.PropertyKey = dependencyProperty; triggerConditionNode.Value = dependencyProperty.DefaultMetadata.DefaultValue; } return((TriggerBaseNode)triggerNode); }
public EventTriggerModel(EventTriggerNode trigger) : base((TriggerBaseNode)trigger) { this.eventTrigger = trigger; this.createActionCommand = new DelegateCommand(new DelegateCommand.SimpleEventHandler(this.CreateAction)); this.actions = new ActionCollection("Actions", (ICommand)this.createActionCommand); }
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)); }
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); }
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); } }
protected override IList <SceneElement> AddToDocumentInternal(string importedFilePath, SceneElement element, ISceneInsertionPoint insertionPoint, SceneViewModel sceneViewModel, SceneEditTransaction editTransaction) { MediaSceneElement mediaSceneElement = element as MediaSceneElement; IList <SceneElement> list = (IList <SceneElement>) new List <SceneElement>(); if (mediaSceneElement != null) { double num = (double)mediaSceneElement.GetLocalOrDefaultValueAsWpf(DesignTimeProperties.DesignTimeNaturalDurationProperty); mediaSceneElement.ClearLocalValue(DesignTimeProperties.DesignTimeNaturalDurationProperty); if (insertionPoint.CanInsert((ITypeId)mediaSceneElement.Type)) { if (!JoltHelper.TypeSupported((ITypeResolver)element.ProjectContext, PlatformTypes.MediaTimeline)) { Uri uri = new Uri(importedFilePath, UriKind.RelativeOrAbsolute); mediaSceneElement.SetLocalValueAsWpf(MediaSceneElement.SourceProperty, (object)uri); } else { IStoryboardContainer mediaStoryboardContainer = insertionPoint.SceneNode.StoryboardContainer; StoryboardTimelineSceneNode targetStoryboard = (StoryboardTimelineSceneNode)null; sceneViewModel.EditContextManager.SingleViewModelEditContextWalker.Walk(false, (SingleHistoryCallback)((context, isGhosted) => { if (context.StoryboardContainer != mediaStoryboardContainer) { return(false); } targetStoryboard = context.Timeline; return(true); })); if (targetStoryboard == null) { foreach (TriggerBaseNode triggerBaseNode in (IEnumerable <TriggerBaseNode>)mediaStoryboardContainer.VisualTriggers) { EventTriggerNode eventTriggerNode = triggerBaseNode as EventTriggerNode; if (eventTriggerNode != null && eventTriggerNode.RoutedEvent == FrameworkElement.LoadedEvent) { foreach (SceneNode sceneNode in (IEnumerable <SceneNode>)eventTriggerNode.Actions) { TimelineActionNode timelineActionNode = sceneNode as TimelineActionNode; if (timelineActionNode != null && timelineActionNode.TimelineOperation == TimelineOperation.Begin) { targetStoryboard = timelineActionNode.TargetTimeline; if (!TimelinePane.ShouldExposeStoryboardToUser((SceneNode)targetStoryboard)) { targetStoryboard = (StoryboardTimelineSceneNode)null; } else { break; } } } } if (targetStoryboard != null) { break; } } if (targetStoryboard != null) { sceneViewModel.SetActiveStoryboardTimeline(mediaStoryboardContainer, targetStoryboard, (TriggerBaseNode)null); } } if (targetStoryboard == null) { targetStoryboard = sceneViewModel.AnimationEditor.CreateNewTimeline(sceneViewModel.ActiveStoryboardContainer, element.Name, TriggerCreateBehavior.Default, true); sceneViewModel.AnimationEditor.IsRecording = false; } IType type = this.DesignerContext.ActiveDocument.ProjectContext.ResolveType(PlatformTypes.MediaTimeline); MediaTimelineSceneNode timelineSceneNode = (MediaTimelineSceneNode)sceneViewModel.CreateSceneNode(type.RuntimeType); timelineSceneNode.SetLocalValue(DesignTimeProperties.DesignTimeNaturalDurationProperty, (object)num); Uri uri = new Uri(importedFilePath, UriKind.RelativeOrAbsolute); timelineSceneNode.Source = uri; timelineSceneNode.TargetName = element.Name; double animationTime = sceneViewModel.AnimationEditor.AnimationTime; timelineSceneNode.Begin = animationTime; targetStoryboard.Children.Add((TimelineSceneNode)timelineSceneNode); editTransaction.Update(); } list.Add(element); insertionPoint.Insert((SceneNode)mediaSceneElement); } } return(list); }