コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 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);
 }
コード例 #5
0
 internal static bool ShouldExposeTriggerToUser(TimelineActionNode timelineActionNode)
 {
     if (timelineActionNode != null)
     {
         return(TimelinePane.ShouldExposeStoryboardToUser((SceneNode)timelineActionNode.TargetTimeline));
     }
     return(false);
 }
コード例 #6
0
        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();
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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();
            }
        }
コード例 #9
0
        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);
        }