/// <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); }); } }
/// <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); }); } }