160 lines
5.3 KiB
C#
160 lines
5.3 KiB
C#
////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Neoforce Controls //
|
|
// //
|
|
////////////////////////////////////////////////////////////////
|
|
// //
|
|
// File: RadioButton.cs //
|
|
// //
|
|
// Version: 0.7 //
|
|
// //
|
|
// Date: 11/09/2010 //
|
|
// //
|
|
// Author: Tom Shane //
|
|
// //
|
|
////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Copyright (c) by Tom Shane //
|
|
// //
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
#region //// Using /////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
using Microsoft.Xna.Framework;
|
|
using System.Collections.Generic;
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endregion
|
|
|
|
namespace TomShane.Neoforce.Controls
|
|
{
|
|
|
|
#region //// Enums /////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
public enum RadioButtonMode
|
|
{
|
|
Auto,
|
|
Manual
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endregion
|
|
|
|
public class RadioButton: CheckBox
|
|
{
|
|
|
|
#region //// Consts ////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
private const string skRadioButton = "RadioButton";
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endregion
|
|
|
|
#region //// Fields ////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
private RadioButtonMode mode = RadioButtonMode.Auto;
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endregion
|
|
|
|
#region //// Properties ////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
public RadioButtonMode Mode
|
|
{
|
|
get { return mode; }
|
|
set { mode = value; }
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endregion
|
|
|
|
#region //// Events ////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endregion
|
|
|
|
#region //// Construstors //////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
public RadioButton(Manager manager): base(manager)
|
|
{
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endregion
|
|
|
|
#region //// Methods ///////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
public override void Init()
|
|
{
|
|
base.Init();
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
protected internal override void InitSkin()
|
|
{
|
|
base.InitSkin();
|
|
Skin = new SkinControl(Manager.Skin.Controls[skRadioButton]);
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
|
|
{
|
|
base.DrawControl(renderer, rect, gameTime);
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
protected override void OnClick(EventArgs e)
|
|
{
|
|
MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs();
|
|
|
|
if (ex.Button == MouseButton.Left || ex.Button == MouseButton.None)
|
|
{
|
|
if (mode == RadioButtonMode.Auto)
|
|
{
|
|
if (Parent != null)
|
|
{
|
|
ControlsList lst = Parent.Controls as ControlsList;
|
|
for (int i = 0; i < lst.Count; i++)
|
|
{
|
|
if (lst[i] is RadioButton)
|
|
{
|
|
(lst[i] as RadioButton).Checked = false;
|
|
}
|
|
}
|
|
}
|
|
else if (Parent == null && Manager != null)
|
|
{
|
|
ControlsList lst = Manager.Controls as ControlsList;
|
|
|
|
for (int i = 0; i < lst.Count; i++)
|
|
{
|
|
if (lst[i] is RadioButton)
|
|
{
|
|
(lst[i] as RadioButton).Checked = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
base.OnClick(e);
|
|
}
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|