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); }
public static bool CanDeleteAction(TimelineActionNode action) { BeginActionNode beginActionNode = action as BeginActionNode; if (beginActionNode == null || beginActionNode.TargetTimeline == null) { return(true); } bool flag1 = false; bool flag2 = false; foreach (TimelineActionNode timelineActionNode in action.TargetTimeline.ControllingActions) { if (timelineActionNode is BeginActionNode && timelineActionNode != beginActionNode) { flag2 = true; } else if (timelineActionNode is ControllableStoryboardActionNode) { flag1 = true; } } if (!flag2) { return(!flag1); } return(true); }
public static TriggerActionNode CreateDefaultAction(SceneViewModel viewModel, string defaultStoryboardName) { StoryboardTimelineSceneNode timelineSceneNode = viewModel.AnimationEditor.GetFirstActiveStoryboard(false); if (timelineSceneNode == null) { MessageBoxArgs args = new MessageBoxArgs() { Message = StringTable.MissingDefaultStoryboardMessage, Button = MessageBoxButton.OKCancel, Image = MessageBoxImage.Asterisk }; if (viewModel.DesignerContext.MessageDisplayService.ShowMessage(args) == MessageBoxResult.OK) { timelineSceneNode = viewModel.AnimationEditor.CreateNewTimeline(viewModel.ActiveStoryboardContainer, defaultStoryboardName); } } if (timelineSceneNode == null) { return((TriggerActionNode)null); } TimelineActionNode timelineActionNode = (TimelineActionNode)BeginActionNode.Factory.Instantiate(viewModel); timelineActionNode.TargetTimeline = timelineSceneNode; return((TriggerActionNode)timelineActionNode); }
internal TimelineActionModel(TimelineActionNode action) : base((TriggerActionNode)action) { this.operationsView = (ListCollectionView)CollectionViewSource.GetDefaultView((object)new ReadOnlyCollection <TimelineOperation>((IList <TimelineOperation>)TimelineActionModel.Operations)); this.operationsView.MoveCurrentTo((object)action.TimelineOperation); this.operationsView.CurrentChanged += new EventHandler(this.OperationsView_CurrentChanged); }
internal static bool ShouldExposeTriggerToUser(TimelineActionNode timelineActionNode) { if (timelineActionNode != null) { return(TimelinePane.ShouldExposeStoryboardToUser((SceneNode)timelineActionNode.TargetTimeline)); } return(false); }
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(); }
internal static TriggerActionModel ConstructModel(TriggerActionNode triggerActionNode) { TimelineActionNode action = triggerActionNode as TimelineActionNode; if (action != null) { return((TriggerActionModel) new TimelineActionModel(action)); } if (triggerActionNode != null) { return(new TriggerActionModel(triggerActionNode)); } return((TriggerActionModel)null); }
private void OperationsView_CurrentChanged(object sender, EventArgs e) { TimelineOperation timelineOperation = (TimelineOperation)this.operationsView.CurrentItem; if (timelineOperation == this.TimelineAction.TimelineOperation) { return; } using (SceneEditTransaction editTransaction = this.SceneNode.ViewModel.CreateEditTransaction(StringTable.TriggerChangeUndoUnit)) { TimelineActionNode actionForOperation = TimelineActionNode.CreateActionForOperation(timelineOperation, this.SceneNode.ViewModel); actionForOperation.TargetTimeline = this.TimelineAction.TargetTimeline; TriggersHelper.ReplaceSceneNode((SceneNode)this.TimelineAction, (SceneNode)actionForOperation); actionForOperation.TargetTimeline.UpdateActionNames(); this.EnsureProperActions(actionForOperation.FindSceneNodeTypeAncestor <TriggerBaseNode>(), actionForOperation.TargetTimeline); editTransaction.Commit(); } }
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); }