diff Workflow/Client/Controls/UIMessage.xaml.cs @ 89:3c67e54e3a17

Working version
author stevenhollidge <stevenhollidge@hotmail.com>
date Mon, 30 Apr 2012 10:45:32 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Workflow/Client/Controls/UIMessage.xaml.cs	Mon Apr 30 10:45:32 2012 +0100
@@ -0,0 +1,161 @@
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Imaging;
+
+namespace Client.Controls
+{
+    public enum MessageType
+    {
+        NotSet = 0,
+        Error,
+        Info,
+        Success,
+        Question
+    }
+
+    public partial class UIMessage : UserControl
+    {
+        #region Fields
+
+        private SolidColorBrush _errorBrush;
+        private SolidColorBrush _infoBrush;
+        private SolidColorBrush _successBrush;
+        private SolidColorBrush _questionBrush;
+
+        private BitmapImage _errorImage;
+        private BitmapImage _infoImage;
+        private BitmapImage _successImage;
+        private BitmapImage _questionImage;
+
+        private Storyboard _fadeInStoryboard;
+        private Storyboard _fadeOutStoryboard;
+
+        #endregion
+
+        #region Constructor
+
+        public UIMessage()
+        {
+            InitializeComponent();
+            CheckResourcesAreAvailable();
+
+            _fadeInStoryboard.Completed += (sender, args) => _fadeOutStoryboard.Begin();
+        }
+
+        #endregion
+
+        #region Dependency Properties: MessageType, Text
+
+        public static readonly DependencyProperty TypeProperty =
+            DependencyProperty.Register("MessageType",
+                                        typeof(MessageType),
+                                        typeof(UIMessage),
+                                        new PropertyMetadata(MessageType.NotSet, TypePropertyChanged));
+
+        private static void TypePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
+        {
+            var uiMessage = (UIMessage)dependencyObject;
+            uiMessage.Display.SetValue(Border.BackgroundProperty, uiMessage.GetBrush(uiMessage.MessageType));
+            uiMessage.Icon.SetValue(Image.SourceProperty, uiMessage.GetImage(uiMessage.MessageType));
+        }
+
+        public MessageType MessageType
+        {
+            get { return (MessageType)GetValue(TypeProperty); }
+            set { SetValue(TypeProperty, value); }
+        }
+
+        public static readonly DependencyProperty TextProperty =
+            DependencyProperty.Register("Text",
+                                        typeof(string),
+                                        typeof(UIMessage),
+                                        new PropertyMetadata(default(string)));
+
+        public string Text
+        {
+            get { return (string)GetValue(TextProperty); }
+            set { SetValue(TextProperty, value); }
+        }
+
+        #endregion
+
+        #region Methods
+
+        private void CheckResourcesAreAvailable()
+        {
+            _errorBrush = (SolidColorBrush)this.Resources["ErrorBrush"];
+            _infoBrush = (SolidColorBrush)this.Resources["InfoBrush"];
+            _successBrush = (SolidColorBrush)this.Resources["SuccessBrush"];
+            _questionBrush = (SolidColorBrush)this.Resources["QuestionBrush"];
+            _errorImage = (BitmapImage)this.Resources["ErrorImage"];
+            _infoImage = (BitmapImage)this.Resources["InfoImage"];
+            _successImage = (BitmapImage)this.Resources["SuccessImage"];
+            _questionImage = (BitmapImage)this.Resources["QuestionImage"];
+            _fadeInStoryboard = (Storyboard)this.Resources["FadeIn"];
+            _fadeOutStoryboard = (Storyboard)this.Resources["FadeOut"];
+
+            if (_errorBrush == null) throw new Exception("Missing ErrorBrush resource");
+            if (_infoBrush == null) throw new Exception("Missing InfoBrush resource");
+            if (_successBrush == null) throw new Exception("Missing SuccessBrush resource");
+            if (_questionBrush == null) throw new Exception("Missing QuestionBrush resource");
+            if (_errorImage == null) throw new Exception("Missing BitmapImage ErrorImage resource");
+            if (_infoImage == null) throw new Exception("Missing BitmapImage InfoImage resource");
+            if (_successImage == null) throw new Exception("Missing BitmapImage SuccessImage resource");
+            if (_questionImage == null) throw new Exception("Missing BitmapImage QuestionImage resource");
+            if (_fadeInStoryboard == null) throw new Exception("Missing Storyboard FadeIn resource");
+            if (_fadeOutStoryboard == null) throw new Exception("Missing Storyboard FadeOut resource");
+        }
+
+        private SolidColorBrush GetBrush(MessageType type)
+        {
+            SolidColorBrush brush = null;
+            switch (type)
+            {
+                case MessageType.Info:
+                    brush = _infoBrush;
+                    break;
+                case MessageType.Error:
+                    brush = _errorBrush;
+                    break;
+                case MessageType.Success:
+                    brush = _successBrush;
+                    break;
+                case MessageType.Question:
+                    brush = _questionBrush;
+                    break;
+            }
+            return brush;
+        }
+
+        private BitmapImage GetImage(MessageType type)
+        {
+            BitmapImage image = null;
+            switch (type)
+            {
+                case MessageType.Info:
+                    image = _infoImage;
+                    break;
+                case MessageType.Error:
+                    image = _errorImage;
+                    break;
+                case MessageType.Success:
+                    image = _successImage;
+                    break;
+                case MessageType.Question:
+                    image = _questionImage;
+                    break;
+            }
+            return image;
+        }
+
+        public void Show()
+        {
+            _fadeInStoryboard.Begin();
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file