/********************************************************************
* FulcrumWeb RAD Framework - Fulcrum of your business *
* Copyright (c) 2002-2009 FulcrumWeb, ALL RIGHTS RESERVED *
* *
* THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED *
* FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE *
* COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE *
* AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT *
* AND PERMISSION FROM FULCRUMWEB. CONSULT THE END USER LICENSE *
* AGREEMENT FOR INFORMATION ON ADDITIONAL RESTRICTIONS. *
********************************************************************/
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace Framework.Silverlight.Client
{
/// <summary>
/// visual control for button with text and image.
/// </summary>
public partial class CxNavigationButton : IDisposable
{
private HorizontalAlignment m_ImageAllign = System.Windows.HorizontalAlignment.Left;
private CxHint m_Hint = new CxHint();
//----------------------------------------------------------------------------
/// <summary>
/// Default ctor.
/// </summary>
public CxNavigationButton()
{
InitializeComponent();
m_Hint.TargetUiElement = this;
m_Hint.HintLocationCorrection = new Point(-25, -75);
AllignElements();
}
//----------------------------------------------------------------------------
/// <summary>
/// Grts or sets button text.
/// </summary>
public string Text
{
get { return text.Text; }
set{ text.Text = value;}
}
//----------------------------------------------------------------------------
/// <summary>
/// Gets or sets button image.
/// </summary>
public ImageSource Image
{
get { return image.Source; }
set{image.Source = value;}
}
//----------------------------------------------------------------------------
/// <summary>
/// Gets or sets button image width.
/// </summary>
public double ImageWidth
{
get { return image.Width; }
set { image.Width = value; }
}
//----------------------------------------------------------------------------
/// <summary>
/// Gets or sets button image height.
/// </summary>
public double ImageHeight
{
get { return image.Height; }
set { image.Height = value; }
}
//----------------------------------------------------------------------------
/// <summary>
/// Gets or sets button image allign.
/// </summary>
public HorizontalAlignment ImageAllign
{
get { return m_ImageAllign; }
set
{
m_ImageAllign = value;
AllignElements();
}
}
//----------------------------------------------------------------------------
/// <summary>
/// Alligns image by specified allign.
/// </summary>
private void AllignElements()
{
if(m_ImageAllign == HorizontalAlignment.Left)
{
image.SetValue(Grid.ColumnProperty, 0);
text.SetValue(Grid.ColumnProperty, 1);
}
if (m_ImageAllign == HorizontalAlignment.Right)
{
image.SetValue(Grid.ColumnProperty, 1);
text.SetValue(Grid.ColumnProperty, 0);
}
if (m_ImageAllign == HorizontalAlignment.Center)
{
text.Visibility = System.Windows.Visibility.Collapsed;
}
}
//----------------------------------------------------------------------------
/// <summary>
/// Handles MouseEnter event.
/// </summary>
private void brdHover_MouseEnter(object sender, MouseEventArgs e)
{
brdHover.Background = (Brush)Application.Current.Resources["ImageButtonHoverBrush"];
}
//----------------------------------------------------------------------------
/// <summary>
/// Handles MouseLeave event.
/// </summary>
private void brdHover_MouseLeave(object sender, MouseEventArgs e)
{
brdHover.Background = new SolidColorBrush(Colors.Transparent);
}
//----------------------------------------------------------------------------
/// <summary>
/// Handles IsEnabledChanged event.
/// </summary>
private void UserControl_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (!IsEnabled)
{
Opacity = 0.3;
brdHover.Background = new SolidColorBrush(Colors.Transparent);
}
else
{
Opacity = 1;
}
}
//----------------------------------------------------------------------------
/// <summary>
/// Hint text.
/// </summary>
public string HintText
{
get { return m_Hint.HintText; }
set { m_Hint.HintText = value; }
}
//----------------------------------------------------------------------------
/// <summary>
/// Release allocated resources.
/// (Workaround, related to some specific Silverlight behavior in garbage collection.)
/// </summary>
public void Dispose()
{
image.Source = null;
image = null;
m_Hint.Dispose();
m_Hint = null;
brdHover.MouseEnter -= brdHover_MouseEnter;
brdHover.MouseLeave -= brdHover_MouseLeave;
IsEnabledChanged -= UserControl_IsEnabledChanged;
LayoutRoot.Children.Clear();
text = null;
brdHover.Child = null;
brdHover = null;
LayoutRoot = null;
Content = null;
}
}
}