Пример #1
0
        /// <summary>
        /// Performs actual registration of targets proeprties
        /// </summary>
        /// <param name="_MessageKey"></param>
        /// <param name="sender"></param>
        /// <param name="PropertyName"></param>
        /// <param name="PropertyType"></param>
        /// <param name="SendAsync"></param>
        private void RegisterProperty(string _MessageKey, object sender, string PropertyName, Type PropertyType, bool SendAsync)
        {
            MediatorHelper        WeakPropertyReferance = new MediatorHelper(this, sender, PropertyName, PropertyType, _MessageKey, SendAsync);
            List <MediatorHelper> wr;

            lock (_registeredListners)
            {
                if (_registeredListners.TryGetValue(_MessageKey, out wr))
                {
                    if (wr.Count > 0)
                    {
                        MediatorHelper wa = wr[0];
                        if (wa.MessengerType != PropertyType)
                        {
                            throw new ArgumentException("Invalid key passed to RegisterProperty - existing property has incompatible parameter type");
                        }
                    }

                    wr.Add(WeakPropertyReferance);
                }
                else
                {
                    wr = new List <MediatorHelper>();
                    wr.Add(WeakPropertyReferance);
                    _registeredListners[_MessageKey] = wr;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Performs unregistration from a property target
        /// </summary>
        /// <param name="_MessageKey"></param>
        /// <param name="sender"></param>
        /// <param name="PropertyName"></param>
        private void UnregisterProperty(string _MessageKey, object sender, string PropertyName)
        {
            lock (_registeredListners)
            {
                List <MediatorHelper> wr;
                if (_registeredListners.TryGetValue(_MessageKey, out wr))
                {
                    for (int i = wr.Count - 1; i >= 0; i--)
                    {
                        MediatorHelper wa = wr[i];
                        if (wa.IsProperty)
                        {
                            if (sender == wa.WeakBoundObject.Target && PropertyName == wa.PropertyName)
                            {
                                wr.RemoveAt(i);
                            }
                        }
                    }

                    if (wr.Count == 0)
                    {
                        _registeredListners.Remove(_MessageKey);
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Performs the actual registration of a targets methods
        /// </summary>
        /// <param name="key">Key to store in dictionary</param>
        /// <param name="actionType">Delegate type</param>
        /// <param name="handler">Method</param>
        private void RegisterHandler(string key, Type actionType, Delegate handler)
        {
            var action = new MediatorHelper(handler.Target, actionType, handler.Method);

            lock (_registeredListners)
            {
                List <MediatorHelper> wr;
                if (_registeredListners.TryGetValue(key, out wr))
                {
                    if (wr.Count > 0)
                    {
                        // Check that all types are the same
                        MediatorHelper wa = wr[0];
                        if (wa.MessengerType != actionType.GenericTypeArguments[0])
                        {
                            throw new ArgumentException("Invalid key passed to RegisterHandler - existing handler has incompatible parameter type");
                        }
                    }

                    wr.Add(action);
                }
                else
                {
                    wr = new List <MediatorHelper> {
                        action
                    };
                    _registeredListners.Add(key, wr);
                }
            }
        }
Пример #4
0
 protected void btnSend_Click(object sender, EventArgs e)
 {
     MediatorHelper.Instance().ChatRoom.SendMessage(CurrentUser, txtMessage.Text);
     txtMessage.Text = string.Empty;
     GetChatMessages();
     GetChatRoomUser();
 }
Пример #5
0
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            Contact mySelf = new Contact(txtLogin.Text);

            MediatorHelper.Instance().ChatRoom.Register(mySelf);
            Session["User"] = mySelf;
            Response.Redirect("ChatRoom.aspx");
        }
Пример #6
0
 private void GetChatMessages()
 {
     messageField.Items.Clear();
     foreach (var message in MediatorHelper.Instance().ChatRoom.UserMessage)
     {
         messageField.Items.Add(message);
     }
 }
Пример #7
0
 private void GetChatRoomUser()
 {
     contactList.Items.Clear();
     foreach (KeyValuePair <string, Colleague> item in MediatorHelper.Instance().ChatRoom._user)
     {
         contactList.Items.Add(item.Key);
     }
 }
Пример #8
0
        private void button1_Click(object sender, EventArgs e)
        {
            Contact mySelf = new Contact(textBox1.Text);

            MediatorHelper.Instance().ChatRoom.Register(mySelf);

            contactForm contactListForm = new contactForm(textBox1.Text);

            this.Visible = false;
            contactListForm.ShowDialog();
            this.Close();
        }
Пример #9
0
 private void InitializeMediator()
 {
     contactList.DisplayMember = "Name";
     contactList.ValueMember   = "";
     contactList.DataSource    = MediatorHelper.Instance().ChatRoom._user.Where(i => i.Key != myName).ToList();
 }