/// <summary>
        /// Sets the new status message in the status bar.
        /// </summary>
        /// <param name="statusMsg">New Status Message</param>
        public void SetStatus(StatusMessage statusMsg)
        {
            if (statusMsg == null)
                return;

            SetStatus(statusMsg.Message, statusMsg.IsAnimated);
        }
 /// <summary>
 /// Provides derived classes an opportunity to handle changes to the Message property.
 /// </summary>
 /// <param name="oldMessage">Old Value</param>
 /// <param name="newMessage">New Value</param>
 protected virtual void OnMessageChanged(StatusMessage oldMessage, StatusMessage newMessage)
 {
     SetStatus(newMessage ?? StatusMessage.Empty);
 }
        public FluidStatusBar()
        {
            InitializeComponent();

            _state = EngineState.Ready;
            _msgToProcess = StatusMessage.Empty;
            messageQueue = new Queue<StatusMessage>();

            GetStoryboards();
        }
 /// <summary>
 /// Provides derived classes an opportunity to handle changes to the Message property.
 /// </summary>
 /// <param name="oldMessage">Old Value</param>
 /// <param name="newMessage">New Value</param>
 protected virtual void OnMessageChanged(StatusMessage oldMessage, StatusMessage newMessage)
 {
     SetStatus(newMessage ?? StatusMessage.Empty);
 }
        // -------------------------------------------------------------------------------------
        // FluidStatusBar
        // -------------------------------------------------------------------------------------

        #region FluidStatusBar

        void DoWork(object sender, DoWorkEventArgs e)
        {
            if (bgWorker.CancellationPending)
                return;

            StatusMessage msg = new StatusMessage("Verifying Code!", true);
            bgWorker.ReportProgress(0, msg);

            Thread.Sleep(200 + _rnd.Next(600));

            if (bgWorker.CancellationPending)
                return;

            msg.Message = "Verifying : 10%";
            msg.IsAnimated = true;
            bgWorker.ReportProgress(0, msg);

            Thread.Sleep(100 + _rnd.Next(400));

            for (int i = 1; i < 10; i++)
            {
                if (bgWorker.CancellationPending)
                    return;

                msg.Message = String.Format("Verifying : {0}%", (i + 1) * 10);
                msg.IsAnimated = false;
                bgWorker.ReportProgress(0, msg);
                Thread.Sleep(200 + _rnd.Next(200));
            }

            Thread.Sleep(750);

            if (bgWorker.CancellationPending)
                return;

            msg.Message = "Compiling Code!";
            msg.IsAnimated = true;
            bgWorker.ReportProgress(0, msg);

            Thread.Sleep(300 + _rnd.Next(200));
            if (bgWorker.CancellationPending)
                return;

            msg.Message = "Compiling : 10%";
            msg.IsAnimated = true;
            bgWorker.ReportProgress(0, msg);

            Thread.Sleep(100 + _rnd.Next(200));

            for (int i = 1; i < 10; i++)
            {
                if (bgWorker.CancellationPending)
                    return;

                msg.Message = String.Format("Compiling : {0}%", (i + 1) * 10);
                msg.IsAnimated = false;
                bgWorker.ReportProgress(0, msg);
                Thread.Sleep(300);
            }

            Thread.Sleep(200 + _rnd.Next(600));

            if (bgWorker.CancellationPending)
                return;

            msg.Message = "Linking!";
            msg.IsAnimated = true;
            bgWorker.ReportProgress(0, msg);

            Thread.Sleep(200 + _rnd.Next(600));
            if (bgWorker.CancellationPending)
                return;

            msg.Message = "Linking : 10%";
            msg.IsAnimated = true;
            bgWorker.ReportProgress(0, msg);

            Thread.Sleep(100 + _rnd.Next(300));

            for (int i = 1; i < 10; i++)
            {
                if (bgWorker.CancellationPending)
                    return;

                msg.Message = String.Format("Linking : {0}%", (i + 1) * 10);
                msg.IsAnimated = false;
                bgWorker.ReportProgress(0, msg);
                Thread.Sleep(200 + _rnd.Next(100));
            }

            Thread.Sleep(200 + _rnd.Next(300));

            if (bgWorker.CancellationPending)
                return;

            msg.Message = "Build Completed!";
            msg.IsAnimated = true;
            bgWorker.ReportProgress(0, msg);
        }
 /// <summary>
 /// Provides derived classes an opportunity to handle changes to the Message property.
 /// </summary>
 /// <param name="oldMessage">Old Value</param>
 /// <param name="newMessage">New Value</param>
 protected virtual void OnMessageChanged(StatusMessage oldMessage, StatusMessage newMessage)
 {
     if (newMessage != null)
     {
         SetStatus(newMessage);
     }
 }
        /// <summary>
        /// Sets the new status message in the status bar.
        /// </summary>
        /// <param name="statusMsg">New Status Message</param>
        public void SetStatus(StatusMessage statusMsg)
        {
            if (statusMsg == null)
                return;

            lock (messageQueue)
            {
                messageQueue.Enqueue(statusMsg);
            }

            ProcessAnimationQueue();
        }