Esempio n. 1
0
        void IStoryboardContainer.AddResourceStoryboard(string name, StoryboardTimelineSceneNode storyboard)
        {
            DictionaryEntryNode dictionaryEntryNode = DictionaryEntryNode.Factory.Instantiate((object)name, (SceneNode)storyboard);

            if ((IPropertyId)storyboard.Platform.Metadata.ResolveProperty(StyleNode.ResourcesProperty) == null)
            {
                return;
            }
            Microsoft.Expression.DesignSurface.Utility.ResourceHelper.EnsureResourceDictionaryNode((SceneNode)this).Add(dictionaryEntryNode);
        }
Esempio n. 2
0
        private void RecursiveSetTimeRegion(TimeRegionChangeDetails details, double scaleFactor, double originalRegionBegin, double originalRegionEnd, double finalRegionBegin, double finalRegionEnd)
        {
            StoryboardTimelineSceneNode timelineSceneNode = this as StoryboardTimelineSceneNode;

            if (timelineSceneNode != null)
            {
                for (int index = 0; index < timelineSceneNode.Children.Count; ++index)
                {
                    timelineSceneNode.Children[index].RecursiveSetTimeRegion(details, scaleFactor, originalRegionBegin, originalRegionEnd, finalRegionBegin, finalRegionEnd);
                }
            }
            this.SetTimeRegionCore(details, scaleFactor, originalRegionBegin, originalRegionEnd, finalRegionBegin, finalRegionEnd);
        }
Esempio n. 3
0
 protected override void ModifyValue(PropertyReference propertyReference, object valueToSet, SceneNode.Modification modification, int index)
 {
     if (!this.ShouldSerialize && modification == SceneNode.Modification.SetValue)
     {
         ReferenceStep lastStep = propertyReference.LastStep;
         if (modification == SceneNode.Modification.SetValue)
         {
             this.ShouldSerialize = true;
             StoryboardTimelineSceneNode timelineSceneNode = this.Parent as StoryboardTimelineSceneNode;
             if (timelineSceneNode != null)
             {
                 timelineSceneNode.ShouldSerialize = true;
             }
         }
     }
     base.ModifyValue(propertyReference, valueToSet, modification, index);
 }
Esempio n. 4
0
        public void UpdateTransitionStoryboard(bool updateDocument, Dictionary <TimelineSceneNode.PropertyNodePair, TransitionAnimationData> transitionTable)
        {
            StoryboardTimelineSceneNode transitionStoryboard = this.Storyboard;
            bool flag1 = false;

            if (transitionStoryboard == null && updateDocument)
            {
                transitionStoryboard = StoryboardTimelineSceneNode.Factory.Instantiate(this.ViewModel);
                this.Storyboard      = transitionStoryboard;
                flag1 = false;
            }
            VisualStateSceneNode fromState = this.FromState;
            VisualStateSceneNode toState   = this.ToState;
            Dictionary <TimelineSceneNode.PropertyNodePair, TransitionAnimationData> animations = transitionTable;

            if (animations == null)
            {
                animations = new Dictionary <TimelineSceneNode.PropertyNodePair, TransitionAnimationData>();
            }
            else
            {
                animations.Clear();
            }
            if (transitionStoryboard != null)
            {
                foreach (TimelineSceneNode timelineSceneNode in (IEnumerable <TimelineSceneNode>)transitionStoryboard.Children)
                {
                    AnimationSceneNode animation = timelineSceneNode as AnimationSceneNode;
                    if (animation != null)
                    {
                        animations[animation.TargetElementAndProperty] = new TransitionAnimationData(animation, !animation.ShouldSerialize);
                        if (animation.ShouldSerialize)
                        {
                            flag1 = true;
                        }
                    }
                }
            }
            bool flag2 = flag1 | this.UpdateTransitionTimelineForState(fromState, true, updateDocument, animations, transitionStoryboard) | this.UpdateTransitionTimelineForState(toState, false, updateDocument, animations, transitionStoryboard);

            if (!updateDocument)
            {
                return;
            }
            transitionStoryboard.ShouldSerialize = flag2;
        }
Esempio n. 5
0
 public EditContext(EditContext oldContext)
 {
     this.parentElement        = oldContext.parentElement;
     this.sceneViewModel       = oldContext.sceneViewModel;
     this.editingContainerPath = oldContext.editingContainerPath;
     this.viewScope            = oldContext.viewScope;
     this.timeline             = oldContext.timeline;
     this.trigger                    = oldContext.trigger;
     this.stateTarget                = oldContext.stateTarget;
     this.transitionTarget           = oldContext.transitionTarget;
     this.stateStoryboardTarget      = oldContext.stateStoryboardTarget;
     this.transitionStoryboardTarget = oldContext.transitionStoryboardTarget;
     if (oldContext.pinnedStates != null)
     {
         VisualStateSceneNode[] newArray = new VisualStateSceneNode[oldContext.pinnedStates.Length];
         oldContext.CopyPinnedStatesTo(newArray, (VisualStateSceneNode)null);
         this.pinnedStates = newArray;
     }
     this.isHidden                = oldContext.isHidden;
     this.lockedInsertionPoint    = oldContext.lockedInsertionPoint;
     this.lastPrimarySelectedPath = oldContext.lastPrimarySelectedPath;
 }
        public void UpdateActionNames()
        {
            List <ControllableStoryboardActionNode> list1 = new List <ControllableStoryboardActionNode>();
            List <BeginActionNode> list2 = new List <BeginActionNode>();

            foreach (TimelineActionNode timelineActionNode in this.ControllingActions)
            {
                BeginActionNode beginActionNode = timelineActionNode as BeginActionNode;
                ControllableStoryboardActionNode storyboardActionNode = timelineActionNode as ControllableStoryboardActionNode;
                if (beginActionNode != null)
                {
                    list2.Add(beginActionNode);
                }
                else
                {
                    list1.Add(storyboardActionNode);
                }
            }
            foreach (BeginActionNode beginActionNode in list2)
            {
                if (beginActionNode.Name == null)
                {
                    beginActionNode.Name = StoryboardTimelineSceneNode.CreateBeginActionName((ITriggerContainer)this.StoryboardContainer, this.Name);
                }
            }
            string str = string.Empty;

            if (list2.Count > 0)
            {
                str = list2[0].Name;
            }
            foreach (ControllableStoryboardActionNode storyboardActionNode in list1)
            {
                if (storyboardActionNode.BeginActionName != str)
                {
                    storyboardActionNode.BeginActionName = str;
                }
            }
        }
Esempio n. 7
0
        public void UpdateToValuesForStateValueChange(TimelineSceneNode.PropertyNodePair targetElementAndProperty, object newValue)
        {
            StoryboardTimelineSceneNode storyboard = this.Storyboard;

            if (storyboard == null)
            {
                return;
            }
            foreach (TimelineSceneNode timelineSceneNode in (IEnumerable <TimelineSceneNode>)storyboard.Children)
            {
                AnimationSceneNode animationSceneNode1 = timelineSceneNode as AnimationSceneNode;
                if (animationSceneNode1 != null && animationSceneNode1.TargetElementAndProperty.Equals((object)targetElementAndProperty))
                {
                    FromToAnimationSceneNode animationSceneNode2 = animationSceneNode1 as FromToAnimationSceneNode;
                    if (animationSceneNode2 != null)
                    {
                        bool shouldSerialize = animationSceneNode2.ShouldSerialize;
                        animationSceneNode2.To = newValue;
                        animationSceneNode2.ShouldSerialize = shouldSerialize;
                    }
                }
            }
        }
Esempio n. 8
0
 bool IStoryboardContainer.RemoveResourceStoryboard(StoryboardTimelineSceneNode storyboard)
 {
     return(this.Resources.RemoveEntryWithValue((SceneNode)storyboard));
 }
Esempio n. 9
0
 protected void AddResourceStoryboard(string name, StoryboardTimelineSceneNode storyboard)
 {
     (this.ProjectContext.IsCapabilitySet(PlatformCapability.SupportsNonRootTemplateEditing) ? Microsoft.Expression.DesignSurface.Utility.ResourceHelper.EnsureResourceDictionaryNode((SceneNode)this) : Microsoft.Expression.DesignSurface.Utility.ResourceHelper.EnsureResourceDictionaryNode((SceneNode)this.VisualTreeRoot)).Add(DictionaryEntryNode.Factory.Instantiate((object)name, (SceneNode)storyboard));
 }
Esempio n. 10
0
 void IStoryboardContainer.AddResourceStoryboard(string name, StoryboardTimelineSceneNode storyboard)
 {
     this.AddResourceStoryboard(name, storyboard);
 }
Esempio n. 11
0
        public void UpdateAutoTransitionsForState(VisualStateSceneNode state)
        {
            if (!state.StateGroup.IsSketchFlowAnimation || !(this.FromStateName != VisualStateManagerSceneNode.SketchFlowAnimationHoldTimeStateName))
            {
                return;
            }
            StoryboardTimelineSceneNode storyboard = state.Storyboard;
            Dictionary <TimelineSceneNode.PropertyNodePair, TimelineSceneNode>          dictionary1 = new Dictionary <TimelineSceneNode.PropertyNodePair, TimelineSceneNode>();
            Dictionary <TimelineSceneNode.PropertyNodePair, KeyFrameAnimationSceneNode> dictionary2 = new Dictionary <TimelineSceneNode.PropertyNodePair, KeyFrameAnimationSceneNode>();
            StoryboardTimelineSceneNode timelineSceneNode1 = this.Storyboard;

            if (timelineSceneNode1 != null)
            {
                foreach (TimelineSceneNode timelineSceneNode2 in (IEnumerable <TimelineSceneNode>)timelineSceneNode1.Children)
                {
                    KeyFrameAnimationSceneNode animationSceneNode = timelineSceneNode2 as KeyFrameAnimationSceneNode;
                    if (animationSceneNode != null)
                    {
                        dictionary2[timelineSceneNode2.TargetElementAndProperty] = animationSceneNode;
                    }
                }
            }
            if (storyboard != null)
            {
                foreach (TimelineSceneNode timelineSceneNode2 in (IEnumerable <TimelineSceneNode>)storyboard.Children)
                {
                    dictionary1[timelineSceneNode2.TargetElementAndProperty] = timelineSceneNode2;
                    KeyFrameAnimationSceneNode animationSceneNode1 = timelineSceneNode2 as KeyFrameAnimationSceneNode;
                    if (animationSceneNode1 != null && animationSceneNode1.NoAutoTransitionsProvided)
                    {
                        if (dictionary2.ContainsKey(timelineSceneNode2.TargetElementAndProperty))
                        {
                            KeyFrameAnimationSceneNode animationSceneNode2 = dictionary2[timelineSceneNode2.TargetElementAndProperty];
                            if (animationSceneNode1.KeyFrameCount > 0 && (bool)animationSceneNode2.GetLocalOrDefaultValue(DesignTimeProperties.AutoTransitionProperty))
                            {
                                if (animationSceneNode2.KeyFrameCount > 0)
                                {
                                    animationSceneNode2.GetKeyFrameAtIndex(animationSceneNode2.KeyFrameCount - 1).Value = animationSceneNode1.GetKeyFrameAtIndex(0).Value;
                                }
                                else
                                {
                                    animationSceneNode2.AddKeyFrame(0.0, animationSceneNode1.GetKeyFrameAtIndex(0).Value);
                                }
                            }
                        }
                        else
                        {
                            if (timelineSceneNode1 == null)
                            {
                                timelineSceneNode1 = StoryboardTimelineSceneNode.Factory.Instantiate(this.ViewModel);
                                this.Storyboard    = timelineSceneNode1;
                            }
                            KeyFrameAnimationSceneNode animationSceneNode2 = KeyFrameAnimationSceneNode.Factory.InstantiateWithTarget(this.ViewModel, animationSceneNode1.TargetElementAndProperty.SceneNode, animationSceneNode1.TargetElementAndProperty.PropertyReference, this.StoryboardContainer, KeyFrameAnimationSceneNode.GetKeyFrameAnimationForType(animationSceneNode1.AnimatedType, this.ProjectContext));
                            animationSceneNode2.ShouldSerialize = true;
                            animationSceneNode2.SetValue(DesignTimeProperties.AutoTransitionProperty, (object)true);
                            if (animationSceneNode1.KeyFrameCount > 0)
                            {
                                animationSceneNode2.AddKeyFrame(0.0, animationSceneNode1.GetKeyFrameAtIndex(0).Value);
                            }
                            timelineSceneNode1.Children.Add((TimelineSceneNode)animationSceneNode2);
                        }
                    }
                }
            }
            if (timelineSceneNode1 == null)
            {
                return;
            }
            foreach (TimelineSceneNode timelineSceneNode2 in (IEnumerable <TimelineSceneNode>)timelineSceneNode1.Children)
            {
                if ((bool)timelineSceneNode2.GetLocalOrDefaultValue(DesignTimeProperties.AutoTransitionProperty) && !dictionary1.ContainsKey(timelineSceneNode2.TargetElementAndProperty))
                {
                    timelineSceneNode2.Remove();
                }
            }
            if (timelineSceneNode1.Children.Count != 0)
            {
                return;
            }
            timelineSceneNode1.Remove();
        }
Esempio n. 12
0
        public StoryboardTimelineSceneNode BuildHandoffStoryboardNode()
        {
            if (this.ProjectContext.IsCapabilitySet(PlatformCapability.IsWpf))
            {
                return((StoryboardTimelineSceneNode)null);
            }
            VisualStateSceneNode        fromState          = this.FromState;
            StoryboardTimelineSceneNode timelineSceneNode1 = StoryboardTimelineSceneNode.Factory.Instantiate(this.ViewModel);
            Dictionary <TimelineSceneNode.PropertyNodePair, AnimationSceneNode> dictionary = new Dictionary <TimelineSceneNode.PropertyNodePair, AnimationSceneNode>();

            if (fromState != null && fromState.Storyboard != null)
            {
                foreach (TimelineSceneNode timelineSceneNode2 in (IEnumerable <TimelineSceneNode>)fromState.Storyboard.Children)
                {
                    AnimationSceneNode animationSceneNode1 = timelineSceneNode2 as AnimationSceneNode;
                    if (animationSceneNode1 != null)
                    {
                        TimelineSceneNode.PropertyNodePair elementAndProperty = animationSceneNode1.TargetElementAndProperty;
                        if (this.ShouldGenerateHandoffAnimationFor(animationSceneNode1, elementAndProperty))
                        {
                            ITypeId            animationForType    = FromToAnimationSceneNode.GetFromToAnimationForType(animationSceneNode1.AnimatedType, animationSceneNode1.ProjectContext);
                            AnimationSceneNode animationSceneNode2 = (AnimationSceneNode)null;
                            if (animationForType != null)
                            {
                                FromToAnimationSceneNode animationSceneNode3 = FromToAnimationSceneNode.Factory.InstantiateWithTarget(animationSceneNode1.ViewModel, animationSceneNode1.TargetElement, animationSceneNode1.TargetProperty, animationSceneNode1.StoryboardContainer, animationForType);
                                object transitionValue = VisualStateTransitionSceneNode.GetTransitionValue(animationSceneNode1, true);
                                animationSceneNode3.To       = transitionValue;
                                animationSceneNode3.Duration = 0.0;
                                animationSceneNode2          = (AnimationSceneNode)animationSceneNode3;
                            }
                            else
                            {
                                object transitionValue = VisualStateTransitionSceneNode.GetTransitionValue(animationSceneNode1, true);
                                if (transitionValue != null && elementAndProperty.SceneNode != null && elementAndProperty.PropertyReference != null)
                                {
                                    KeyFrameAnimationSceneNode animationSceneNode3 = KeyFrameAnimationSceneNode.Factory.InstantiateWithTarget(animationSceneNode1.ViewModel, elementAndProperty.SceneNode, elementAndProperty.PropertyReference, animationSceneNode1.StoryboardContainer, PlatformTypes.ObjectAnimationUsingKeyFrames);
                                    animationSceneNode3.AddKeyFrame(0.0, transitionValue);
                                    animationSceneNode2 = (AnimationSceneNode)animationSceneNode3;
                                }
                            }
                            if (animationSceneNode2 != null)
                            {
                                timelineSceneNode1.Children.Add((TimelineSceneNode)animationSceneNode2);
                                dictionary[elementAndProperty] = animationSceneNode2;
                            }
                        }
                    }
                }
            }
            foreach (TimelineSceneNode timelineSceneNode2 in (IEnumerable <TimelineSceneNode>) this.Storyboard.Children)
            {
                AnimationSceneNode animation = timelineSceneNode2 as AnimationSceneNode;
                if (animation != null)
                {
                    TimelineSceneNode.PropertyNodePair elementAndProperty = timelineSceneNode2.TargetElementAndProperty;
                    if (this.ShouldGenerateHandoffAnimationFor(animation, elementAndProperty) && !dictionary.ContainsKey(elementAndProperty))
                    {
                        ITypeId animationForType = FromToAnimationSceneNode.GetFromToAnimationForType(animation.AnimatedType, animation.ProjectContext);
                        if (elementAndProperty.SceneNode != null && elementAndProperty.PropertyReference != null)
                        {
                            if (animationForType != null)
                            {
                                FromToAnimationSceneNode animationSceneNode = FromToAnimationSceneNode.Factory.InstantiateWithTarget(animation.ViewModel, elementAndProperty.SceneNode, elementAndProperty.PropertyReference, animation.StoryboardContainer, animationForType);
                                timelineSceneNode1.Children.Add((TimelineSceneNode)animationSceneNode);
                                animationSceneNode.Duration = 0.0;
                            }
                            else
                            {
                                object computedValue = elementAndProperty.SceneNode.GetComputedValue(elementAndProperty.PropertyReference);
                                if (computedValue != null)
                                {
                                    KeyFrameAnimationSceneNode animationSceneNode = KeyFrameAnimationSceneNode.Factory.InstantiateWithTarget(animation.ViewModel, elementAndProperty.SceneNode, elementAndProperty.PropertyReference, animation.StoryboardContainer, PlatformTypes.ObjectAnimationUsingKeyFrames);
                                    animationSceneNode.AddKeyFrame(0.0, computedValue);
                                    timelineSceneNode1.Children.Add((TimelineSceneNode)animationSceneNode);
                                }
                            }
                        }
                    }
                }
            }
            return(timelineSceneNode1);
        }
Esempio n. 13
0
        private bool UpdateTransitionTimelineForState(VisualStateSceneNode state, bool stateIsFromState, bool updateDocument, Dictionary <TimelineSceneNode.PropertyNodePair, TransitionAnimationData> animations, StoryboardTimelineSceneNode transitionStoryboard)
        {
            bool      flag1    = false;
            bool      flag2    = false;
            IProperty property = this.ProjectContext.ResolveProperty(VisualStateManagerSceneNode.TransitionEffectProperty);

            if (property != null && this.GetLocalValueAsDocumentNode((IPropertyId)property) != null)
            {
                flag2 = true;
            }
            if (state != null && state.Storyboard != null)
            {
                foreach (TimelineSceneNode timelineSceneNode in (IEnumerable <TimelineSceneNode>)state.Storyboard.Children)
                {
                    TransitionAnimationData transitionAnimationData = (TransitionAnimationData)null;
                    AnimationSceneNode      stateAnimation          = timelineSceneNode as AnimationSceneNode;
                    if (stateAnimation != null && stateAnimation.ShouldSerialize)
                    {
                        if (!animations.TryGetValue(stateAnimation.TargetElementAndProperty, out transitionAnimationData))
                        {
                            ITypeId animatedType = stateAnimation.AnimatedType;
                            bool    isConforming = VisualStateManagerSceneNode.IsSupportedTransitionAnimationType(animatedType);
                            if (updateDocument)
                            {
                                TimelineSceneNode.PropertyNodePair elementAndProperty = stateAnimation.TargetElementAndProperty;
                                if (isConforming && !flag2 && (elementAndProperty.SceneNode != null && elementAndProperty.PropertyReference != null))
                                {
                                    FromToAnimationSceneNode animationSceneNode1 = FromToAnimationSceneNode.Factory.InstantiateWithTarget(stateAnimation.ViewModel, elementAndProperty.SceneNode, elementAndProperty.PropertyReference, stateAnimation.StoryboardContainer, FromToAnimationSceneNode.GetFromToAnimationForType(animatedType, stateAnimation.ProjectContext));
                                    animationSceneNode1.EasingFunction = this.GeneratedEasingFunction;
                                    AnimationSceneNode animationSceneNode2 = (AnimationSceneNode)animationSceneNode1;
                                    transitionStoryboard.Children.Add((TimelineSceneNode)animationSceneNode2);
                                    animationSceneNode1.ShouldSerialize = false;
                                    transitionAnimationData             = new TransitionAnimationData((AnimationSceneNode)animationSceneNode1, true);
                                    animations[stateAnimation.TargetElementAndProperty] = transitionAnimationData;
                                }
                                else
                                {
                                    transitionAnimationData = new TransitionAnimationData((AnimationSceneNode)null, false);
                                    animations[stateAnimation.TargetElementAndProperty] = transitionAnimationData;
                                }
                            }
                            else
                            {
                                transitionAnimationData = new TransitionAnimationData((AnimationSceneNode)null, isConforming);
                                animations[stateAnimation.TargetElementAndProperty] = transitionAnimationData;
                            }
                        }
                        else if (flag2 && transitionAnimationData.TransitionAnimation != null && !transitionAnimationData.TransitionAnimation.ShouldSerialize)
                        {
                            if (updateDocument)
                            {
                                transitionStoryboard.Children.Remove((TimelineSceneNode)transitionAnimationData.TransitionAnimation);
                            }
                            transitionAnimationData.TransitionAnimation = (AnimationSceneNode)null;
                        }
                        AnimationSceneNode transitionAnimation = transitionAnimationData.TransitionAnimation;
                        if (transitionAnimation != null)
                        {
                            FromToAnimationSceneNode animationSceneNode = transitionAnimation as FromToAnimationSceneNode;
                            if (animationSceneNode != null)
                            {
                                object objB = !stateIsFromState?VisualStateTransitionSceneNode.GetTransitionValue(stateAnimation, stateIsFromState) : (object)null;

                                if (!transitionAnimation.ShouldSerialize)
                                {
                                    if (updateDocument)
                                    {
                                        if (!stateIsFromState)
                                        {
                                            animationSceneNode.To = objB;
                                        }
                                        Duration generatedDuration = this.GeneratedDuration;
                                        if (generatedDuration.HasTimeSpan)
                                        {
                                            animationSceneNode.Duration = generatedDuration.TimeSpan.TotalSeconds;
                                        }
                                        else
                                        {
                                            animationSceneNode.Duration = 0.0;
                                        }
                                        animationSceneNode.EasingFunction  = this.GeneratedEasingFunction;
                                        animationSceneNode.ShouldSerialize = false;
                                    }
                                }
                                else
                                {
                                    transitionAnimationData.IsConforming = !stateIsFromState ? animationSceneNode.From == null && object.Equals(animationSceneNode.To, objB) : animationSceneNode.To == null;
                                    flag1 = true;
                                }
                            }
                            else
                            {
                                flag1 = true;
                            }
                        }
                    }
                }
            }
            return(flag1);
        }
Esempio n. 14
0
 protected void AddResourceStoryboard(string name, StoryboardTimelineSceneNode storyboard)
 {
     Microsoft.Expression.DesignSurface.Utility.ResourceHelper.EnsureResourceDictionaryNode((SceneNode)this).Add(DictionaryEntryNode.Factory.Instantiate((object)name, (SceneNode)storyboard));
 }