Esempio n. 1
0
        public override void WriteEndMember()
        {
            switch (this.currentState)
            {
            case ActivityTemplateFactoryBuilderWriterStates.InitialState:
                SharedFx.Assert("It is impossible to end a member during InitialState");
                break;

            case ActivityTemplateFactoryBuilderWriterStates.BufferingState:
                this.queuedNodes.Writer.WriteEndMember();
                break;

            case ActivityTemplateFactoryBuilderWriterStates.BypassState:
                this.underlyingWriter.WriteEndMember();
                break;

            default:
                SharedFx.Assert(
                    this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingNameState ||
                    this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingTargetTypeState,
                    "These are the only possible ActivityTemplateFactoryBuilderWriterStates.");

                // Intentionally skipped the end member of Name / TargetType node
                this.currentState = ActivityTemplateFactoryBuilderWriterStates.BufferingState;
                break;
            }
        }
Esempio n. 2
0
        public override void WriteStartObject(XamlType type)
        {
            switch (this.currentState)
            {
            case ActivityTemplateFactoryBuilderWriterStates.InitialState:
                if (type.Equals(new XamlType(typeof(ActivityTemplateFactoryBuilder), this.schemaContext)))
                {
                    this.queuedNodes  = new XamlNodeQueue(this.schemaContext);
                    this.currentState = ActivityTemplateFactoryBuilderWriterStates.BufferingState;
                }
                else
                {
                    this.currentState = ActivityTemplateFactoryBuilderWriterStates.BypassState;
                    this.underlyingWriter.WriteStartObject(type);
                }

                break;

            case ActivityTemplateFactoryBuilderWriterStates.BypassState:
                this.underlyingWriter.WriteStartObject(type);
                break;

            default:
                SharedFx.Assert(
                    this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingState ||
                    this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingNameState ||
                    this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingTargetTypeState,
                    "These are the only possible ActivityTemplateFactoryBuilderWriterStates.");
                SharedFx.Assert("It is impossible to start any object during the buffering state.");
                break;
            }
        }
Esempio n. 3
0
        public override void WriteStartMember(XamlMember xamlMember)
        {
            switch (this.currentState)
            {
            case ActivityTemplateFactoryBuilderWriterStates.InitialState:
                SharedFx.Assert("It is impossible to start a member during InitialState");
                break;

            case ActivityTemplateFactoryBuilderWriterStates.BufferingState:
                if (xamlMember == this.ActivityTemplateFactoryBuilderImplementationMember)
                {
                    xamlMember = this.ActivityTemplateFactoryImplementationMember;

                    if (!this.xamlLanguageNamespaceWritten)
                    {
                        // Required namespace for XAML x:Class
                        this.underlyingWriter.WriteNamespace(new NamespaceDeclaration("http://schemas.microsoft.com/winfx/2006/xaml", "x"));
                    }

                    this.underlyingWriter.WriteStartObject(this.ActivityTemplateFactoryType);
                    this.underlyingWriter.WriteStartMember(XamlLanguage.Class);
                    this.underlyingWriter.WriteValue(this.className);
                    this.underlyingWriter.WriteEndMember();
                    this.underlyingWriter.WriteStartMember(XamlLanguage.TypeArguments);
                    this.underlyingWriter.WriteValue(this.targetType);
                    this.underlyingWriter.WriteEndMember();
                    this.Transform(this.queuedNodes.Reader, this.underlyingWriter);
                    this.underlyingWriter.WriteStartMember(xamlMember);
                    this.currentState = ActivityTemplateFactoryBuilderWriterStates.BypassState;
                }

                if (xamlMember == this.ActivityTemplateFactoryBuilderNameMember)
                {
                    this.currentState = ActivityTemplateFactoryBuilderWriterStates.BufferingNameState;
                }
                else if (xamlMember == this.ActivityTemplateFactoryBuilderTargetTypeMember)
                {
                    this.currentState = ActivityTemplateFactoryBuilderWriterStates.BufferingTargetTypeState;
                }
                else
                {
                    this.queuedNodes.Writer.WriteStartMember(xamlMember);
                }

                break;

            case ActivityTemplateFactoryBuilderWriterStates.BypassState:
                this.underlyingWriter.WriteStartMember(xamlMember);
                break;

            default:
                SharedFx.Assert(
                    this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingNameState ||
                    this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingTargetTypeState,
                    "These are the only possible ActivityTemplateFactoryBuilderWriterStates.");
                SharedFx.Assert("It is impossible to get an object when we are buffering the name / targetType.");
                break;
            }
        }
        public override void WriteEndMember()
        {
            switch (this.currentState)
            {
                case ActivityTemplateFactoryBuilderWriterStates.InitialState:
                    SharedFx.Assert("It is impossible to end a member during InitialState");
                    break;
                case ActivityTemplateFactoryBuilderWriterStates.BufferingState:
                    this.queuedNodes.Writer.WriteEndMember();
                    break;
                case ActivityTemplateFactoryBuilderWriterStates.BypassState:
                    this.underlyingWriter.WriteEndMember();
                    break;
                default:
                    SharedFx.Assert(
                        this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingNameState 
                        || this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingTargetTypeState, 
                        "These are the only possible ActivityTemplateFactoryBuilderWriterStates.");

                    // Intentionally skipped the end member of Name / TargetType node
                    this.currentState = ActivityTemplateFactoryBuilderWriterStates.BufferingState;
                    break;
            }
        }
        public override void WriteStartMember(XamlMember xamlMember)
        {
            switch (this.currentState)
            {
                case ActivityTemplateFactoryBuilderWriterStates.InitialState:
                    SharedFx.Assert("It is impossible to start a member during InitialState");
                    break;
                case ActivityTemplateFactoryBuilderWriterStates.BufferingState:
                    if (xamlMember == this.ActivityTemplateFactoryBuilderImplementationMember)
                    {
                        xamlMember = this.ActivityTemplateFactoryImplementationMember;

                        if (!this.xamlLanguageNamespaceWritten)
                        {
                            // Required namespace for XAML x:Class 
                            this.underlyingWriter.WriteNamespace(new NamespaceDeclaration("http://schemas.microsoft.com/winfx/2006/xaml", "x"));
                        }

                        this.underlyingWriter.WriteStartObject(this.ActivityTemplateFactoryType);
                        this.underlyingWriter.WriteStartMember(XamlLanguage.Class);
                        this.underlyingWriter.WriteValue(this.className);
                        this.underlyingWriter.WriteEndMember();
                        this.underlyingWriter.WriteStartMember(XamlLanguage.TypeArguments);
                        this.underlyingWriter.WriteValue(this.targetType);
                        this.underlyingWriter.WriteEndMember();
                        this.Transform(this.queuedNodes.Reader, this.underlyingWriter);
                        this.underlyingWriter.WriteStartMember(xamlMember);
                        this.currentState = ActivityTemplateFactoryBuilderWriterStates.BypassState;
                    }

                    if (xamlMember == this.ActivityTemplateFactoryBuilderNameMember)
                    {
                        this.currentState = ActivityTemplateFactoryBuilderWriterStates.BufferingNameState;
                    }
                    else if (xamlMember == this.ActivityTemplateFactoryBuilderTargetTypeMember)
                    {
                        this.currentState = ActivityTemplateFactoryBuilderWriterStates.BufferingTargetTypeState;
                    }
                    else
                    {
                        this.queuedNodes.Writer.WriteStartMember(xamlMember);
                    }

                    break;
                case ActivityTemplateFactoryBuilderWriterStates.BypassState:
                    this.underlyingWriter.WriteStartMember(xamlMember);
                    break;
                default:
                    SharedFx.Assert(
                        this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingNameState 
                        || this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingTargetTypeState, 
                        "These are the only possible ActivityTemplateFactoryBuilderWriterStates.");
                    SharedFx.Assert("It is impossible to get an object when we are buffering the name / targetType.");
                    break;
            }
        }
        public override void WriteStartObject(XamlType type)
        {
            switch (this.currentState)
            {
                case ActivityTemplateFactoryBuilderWriterStates.InitialState:
                    if (type.Equals(new XamlType(typeof(ActivityTemplateFactoryBuilder), this.schemaContext)))
                    {
                        this.queuedNodes = new XamlNodeQueue(this.schemaContext);
                        this.currentState = ActivityTemplateFactoryBuilderWriterStates.BufferingState;
                    }
                    else
                    {
                        this.currentState = ActivityTemplateFactoryBuilderWriterStates.BypassState;
                        this.underlyingWriter.WriteStartObject(type);
                    }

                    break;
                case ActivityTemplateFactoryBuilderWriterStates.BypassState:
                    this.underlyingWriter.WriteStartObject(type);
                    break;
                default:
                    SharedFx.Assert(
                        this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingState
                        || this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingNameState
                        || this.currentState == ActivityTemplateFactoryBuilderWriterStates.BufferingTargetTypeState,
                        "These are the only possible ActivityTemplateFactoryBuilderWriterStates.");
                    SharedFx.Assert("It is impossible to start any object during the buffering state.");
                    break;
            }
        }