space-pew/Neoforce/RadioButton.cs
Magnus von Wachenfeldt 2a9d8ce416 move to github
2015-12-04 10:23:49 +01:00

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
}
}