client/src/Iri.Modernisation.Controls/View/HeaderControl/ButtonHeaderControl.xaml.cs
author Matthieu Totet
Thu, 19 Nov 2009 12:12:55 +0100
changeset 4 cf756528609e
parent 0 249d70e7b32d
child 27 f292db96b050
permissions -rw-r--r--
Adding Internationalization features
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     1
using System;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     2
using System.Collections.Generic;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     3
using System.Linq;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     4
using System.Net;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     5
using System.Windows;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     6
using System.Windows.Controls;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     7
using System.Windows.Documents;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     8
using System.Windows.Input;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     9
using System.Windows.Media;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    10
using System.Windows.Media.Animation;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    11
using System.Windows.Shapes;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    12
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    13
namespace Iri.Modernisation.Controls.View
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    14
{
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    15
   
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    16
    public partial class ButtonHeaderControl : UserControl
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    17
    {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    18
        public ButtonHeaderControl()
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    19
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    20
            InitializeComponent();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    21
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    22
        private bool _isMouseInside = false;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    23
        Point tempPoint = new Point();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    24
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    25
        private void LayoutRoot_MouseMove(object sender, MouseEventArgs e)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    26
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    27
            _isMouseInside = true;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    28
            Point p = e.GetPosition(this);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    29
            tempPoint.X = 1-  (p.X / ActualWidth);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    30
            //tempPoint.Y = p.Y / ActualHeight;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    31
            tempPoint.Y = 1 - (p.Y / ActualWidth); ;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    32
            brushLight.Center = tempPoint;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    33
            brushLight.GradientOrigin = tempPoint;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    34
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    35
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    36
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    37
        string _title = String.Empty;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    38
4
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    39
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    40
        /// <summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    41
        /// Title of the toolbar item
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    42
        /// </summary>
4
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    43
    
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    44
        public String Title
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    45
        {
4
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    46
            get { return (String)GetValue(TitleProperty);}
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    47
            set { SetValue(TitleProperty, value); _title = value; }
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    48
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    49
4
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    50
        // Using a DependencyProperty as the backing store for Title.  This enables animation, styling, binding, etc...
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    51
        public static readonly DependencyProperty TitleProperty =
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    52
            DependencyProperty.Register("Title", typeof(String), typeof(ButtonHeaderControl),    null);
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    53
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    54
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    55
cf756528609e Adding Internationalization features
Matthieu Totet
parents: 0
diff changeset
    56
     
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    57
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    58
        /// <summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    59
        /// The transition color when we hover over the button
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    60
        /// </summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    61
        public Color TransitionColor
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    62
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    63
            get
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    64
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    65
                return transitionColor.Color;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    66
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    67
            set
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    68
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    69
                transitionColor.Color = value;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    70
                transitionSubColor.Color = Color.FromArgb(64, value.R, value.G, value.B);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    71
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    72
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    73
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    74
        /// <summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    75
        /// The source of the image to display for the control
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    76
        /// </summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    77
        public ImageSource ImageSource
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    78
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    79
            get { return imgItem.Source; }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    80
            set { imgItem.Source = value; }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    81
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    82
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    83
        private void LayoutRoot_MouseEnter(object sender, MouseEventArgs e)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    84
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    85
            _isMouseInside = true;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    86
            animEnter.Begin();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    87
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    88
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    89
        private void LayoutRoot_MouseLeave(object sender, MouseEventArgs e)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    90
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    91
            _isMouseInside = false;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    92
            animLeave.Begin();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    93
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    94
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    95
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    96
        /// <summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    97
        /// Uri to navigate to when clicked
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    98
        /// </summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    99
        public string NavigateUri { get; set; }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   100
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   101
        /// <summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   102
        /// true to open link in new window, false to open link in current window
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   103
        /// default is false
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   104
        /// </summary>
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   105
        public bool OpenInNewWindow { get; set; }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   106
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   107
        private void UserControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   108
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   109
            if (NavigateUri != null)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   110
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   111
                if (OpenInNewWindow)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   112
                {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   113
                    System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(NavigateUri, UriKind.Absolute), "_new");
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   114
                }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   115
                else
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   116
                {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   117
                    System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(NavigateUri, UriKind.Absolute));
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   118
                }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   119
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   120
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   121
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   122
    }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   123
}