public ICMessageData(string title, string message, ICMessagePriority priority)
 {
     this.title = title;
     this.message = message;
     this.priority = priority;
 }
        //------------------------------------------------------------------------------
        // Method: AddMessage
        // Author: Neil Holmes
        // Summary: add a new message to the message queue for display
        //------------------------------------------------------------------------------
        public void AddMessage(string title, string message, ICMessagePriority priority)
        {
            int insertionIndex = 0;
            ICMessageData newMessage = new ICMessageData(title, message, priority);

            // is this an urgent message?
            if (newMessage.priority == ICMessagePriority.urgent)
            {
                // tell the message system to stop displaying any message it might be in the middle of
                stage = MessageStage.idle;

                // urgent messages always go at the top of the queue, in time order
                foreach (ICMessageData item in messageQueue)
                {
                    if (item.priority != ICMessagePriority.urgent)
                        break;
                    else
                        insertionIndex ++;
                }
            }
            else
            {
                // find the first lower-priorty message in the queue and push this one ahead of it
                foreach (ICMessageData item in messageQueue)
                {
                    if (item.priority < newMessage.priority)
                        break;
                    else
                        insertionIndex ++;
                }
            }

            // insert here!
            messageQueue.Insert(insertionIndex, newMessage);
        }