Пример #1
0
        /// <summary>
        /// Constructs a new matching between the two given DeckTraversalModels
        /// </summary>
        /// <param name="srcTraversal">The DeckTraversal to marshal changes from</param>
        /// <param name="destTraversal">The DeckTraversal to marshal changes to</param>
        public DeckTraversalMatch( EventQueue sender, DeckTraversalModel srcTraversal, DeckTraversalModel destTraversal )
        {
            // Set the members
            this.m_Sender = sender;
            this.m_SourceDeckTraversal = srcTraversal;
            this.m_DestDeckTraversal = destTraversal;

            this.m_CurrentChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.m_Sender, new PropertyEventHandler(this.HandleCurrentChanged));

            if( !this.IsSameTarget() ) {
                // Recursively Create all the child matchings
                this.m_DeckMatch = new DeckMatch( this.m_Sender, this.m_SourceDeckTraversal.Deck, this.m_DestDeckTraversal.Deck );

                // Setup the listeners
                this.m_SourceDeckTraversal.Changed["Current"].Add(this.m_CurrentChangedDispatcher.Dispatcher);

                // Update the initial values
                this.m_Sender.Post(delegate() {
                    this.m_CurrentChangedDispatcher.Dispatcher(this, null);
                });
            }
        }
Пример #2
0
        /// <summary>
        /// Constructs a new matching between the two given DeckTraversalModels
        /// </summary>
        /// <param name="srcTraversal">The DeckTraversal to marshal changes from</param>
        /// <param name="destTraversal">The DeckTraversal to marshal changes to</param>
        public DeckTraversalMatch(EventQueue sender, DeckTraversalModel srcTraversal, DeckTraversalModel destTraversal)
        {
            // Set the members
            this.m_Sender = sender;
            this.m_SourceDeckTraversal = srcTraversal;
            this.m_DestDeckTraversal   = destTraversal;

            this.m_CurrentChangedDispatcher = new EventQueue.PropertyEventDispatcher(this.m_Sender, new PropertyEventHandler(this.HandleCurrentChanged));

            if (!this.IsSameTarget())
            {
                // Recursively Create all the child matchings
                this.m_DeckMatch = new DeckMatch(this.m_Sender, this.m_SourceDeckTraversal.Deck, this.m_DestDeckTraversal.Deck);

                // Setup the listeners
                this.m_SourceDeckTraversal.Changed["Current"].Add(this.m_CurrentChangedDispatcher.Dispatcher);

                // Update the initial values
                this.m_Sender.Post(delegate() {
                    this.m_CurrentChangedDispatcher.Dispatcher(this, null);
                });
            }
        }