Beispiel #1
0
        public void ProcessSimpleMessage(ChatMessage chatMessage)
        {
            if (chatMessage == null || string.IsNullOrEmpty(chatMessage.UserName) || chatMessage.UserUri == null)
            {
                return;
            }

            PeerUser peerUserObject = this.simpleChat.GetUser(chatMessage.UserUri);
            if (peerUserObject == null)
            {
                // User is not in internal store, update container and show message               
                peerUserObject = new PeerUser(chatMessage.UserName, new EndpointAddress(chatMessage.UserUri));
                this.simpleChat.AddUser(peerUserObject);

                peerUserObject.ChatWindow = new ChatWindow(this.simpleChat, peerUserObject);                
            }

            if (peerUserObject.ChatWindowExists)
            {
                // User is in internal store and has an open chat window
                peerUserObject.ChatWindow.DisplayMessage(chatMessage);
                ShowChatWindow(peerUserObject);
            }
            else
            {
                // User is in internal store but no chat window is open                
                peerUserObject.ChatWindow = new ChatWindow(this.simpleChat, peerUserObject);
                peerUserObject.ChatWindow.DisplayMessage(chatMessage);
                ShowChatWindow(peerUserObject);
            }
        }
Beispiel #2
0
        public ChatWindow(SimpleChat simpleChat, PeerUser peerUserObject)
        {
            if (simpleChat == null)
            {
                throw new ArgumentNullException("simpleChat");
            }

            if (peerUserObject == null)
            {
                throw new ArgumentNullException("peerUserObject");
            }

            InitializeComponent();

            this.chatClient =
                ChannelFactory<ISimpleChatService>.CreateChannel(
                new WSHttpBinding(), peerUserObject.Address);

            this.simpleChatOwner = simpleChat;

            this.peerUser = peerUserObject;

            string chatWith = null;

            if (!string.IsNullOrEmpty(peerUserObject.UserName))
            {
                chatWith = this.peerUser.UserName;
            }
            else
            {
                chatWith = this.peerUser.Address.Uri.Host;
            }

            Text = string.Format(
                CultureInfo.CurrentCulture,
                Resources.ChattingWithMessage,
                simpleChat.UserName,
                chatWith);
            Owner = simpleChat;

            StartPosition = FormStartPosition.CenterParent;
            Show();
            chatText.Focus();
        }
Beispiel #3
0
 public void AddUser(PeerUser peerUser)
 {
     this.userListBox.Items.Add(peerUser);
     this.EnableUsersBox();
 }
Beispiel #4
0
 private static void ShowChatWindow(PeerUser peerUserObject)
 {
     NativeMethods.SetForegroundWindow(peerUserObject.ChatWindow.Owner.Handle);
     NativeMethods.SetForegroundWindow(peerUserObject.ChatWindow.Handle);
 }