DevProLauncher.Windows.ChatFrm.WriteMessage C# (CSharp) Method

WriteMessage() public method

public WriteMessage ( ChatMessage message ) : void
message ChatMessage
return void
        public void WriteMessage(ChatMessage message)
        {
            if (InvokeRequired)
            {
                Invoke(new Action<ChatMessage>(WriteMessage), message);
                return;
            }

            if (message.from != null && IgnoreUser(message.from))
            {
                return;
            }

            ChatWindow window;
            if ((MessageType)message.type == MessageType.Server || (MessageType)message.type == MessageType.System)
            {
                window = (ChatWindow)ChannelTabs.SelectedTab;
                if (window == null)
                {
                    window = new ChatWindow(((MessageType)message.type).ToString(), true) { IsSystemtab = true };
                    ChannelTabs.TabPages.Add(window);
                    window.WriteMessage(message, Autoscroll);
                }
                else window.WriteMessage(message, Autoscroll);
            }
            else if ((MessageType)message.type == MessageType.Join || (MessageType)message.type == MessageType.Leave || message.channel == null)
            {
                window = GetChatWindow(message.channel) ?? (ChatWindow)ChannelTabs.SelectedTab;
                if (window == null)
                {
                    window = new ChatWindow(message.type.ToString(CultureInfo.InvariantCulture), true) { IsSystemtab = true };
                    ChannelTabs.TabPages.Add(window);
                    window.WriteMessage(message, Autoscroll);
                }
                else window.WriteMessage(message, Autoscroll);
            }
            else if ((MessageType)message.type == MessageType.PrivateMessage && Program.Config.PmWindows)
            {
                if (m_pmWindows.ContainsKey(message.channel))
                {
                    m_pmWindows[message.channel].WriteMessage(message);
                }
                else
                {
                    m_pmWindows.Add(message.channel, new PmWindowFrm(message.channel, true));
                    m_pmWindows[message.channel].WriteMessage(message);
                    m_pmWindows[message.channel].Show();
                    m_pmWindows[message.channel].FormClosed += Chat_frm_FormClosed;
                }
            }
            else if ((MessageType)message.type == MessageType.Team)
            {
                window = GetChatWindow(((MessageType)message.type).ToString());
                if (window == null)
                {
                    window = new ChatWindow(((MessageType)message.type).ToString(), (MessageType)message.type == MessageType.PrivateMessage);
                    ChannelTabs.TabPages.Add(window);
                    window.WriteMessage(message, Autoscroll);
                }
                else window.WriteMessage(message, Autoscroll);
            }
            else
            {
                window = GetChatWindow(message.channel);
                if (window == null)
                {
                    window = new ChatWindow(message.channel, (MessageType)message.type == MessageType.PrivateMessage);
                    ChannelTabs.TabPages.Add(window);
                }

                window.WriteMessage(message, Autoscroll);
            }
        }