forked from NeoforceControls/Neoforce-Mono
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MenuBase.cs
141 lines (110 loc) · 5.13 KB
/
MenuBase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
////////////////////////////////////////////////////////////////
// //
// Neoforce Controls //
// //
////////////////////////////////////////////////////////////////
// //
// File: MenuBase.cs //
// //
// Version: 0.7 //
// //
// Date: 11/09/2010 //
// //
// Author: Tom Shane //
// //
////////////////////////////////////////////////////////////////
// //
// Copyright (c) by Tom Shane //
// //
////////////////////////////////////////////////////////////////
#region //// Using /////////////
////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
////////////////////////////////////////////////////////////////////////////
#endregion
namespace TomShane.Neoforce.Controls
{
public class MenuItem: Unknown
{
#region //// Fields ////////////
////////////////////////////////////////////////////////////////////////////
public string Text = "MenuItem";
public List<MenuItem> Items = new List<MenuItem>();
public bool Separated = false;
public Texture2D Image = null;
public bool Enabled = true;
public object Tag { get; set; }
////////////////////////////////////////////////////////////////////////////
#endregion
#region //// Constructors //////
////////////////////////////////////////////////////////////////////////////
public MenuItem()
{
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
public MenuItem(string text): this()
{
Text = text;
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
public MenuItem(string text, bool separated): this(text)
{
Separated = separated;
}
////////////////////////////////////////////////////////////////////////////
#endregion
#region //// Methods ///////////
////////////////////////////////////////////////////////////////////////////
public event EventHandler Click;
public event EventHandler Selected;
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
internal void ClickInvoke(EventArgs e)
{
if (Click != null) Click.Invoke(this, e);
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
internal void SelectedInvoke(EventArgs e)
{
if (Selected != null) Selected.Invoke(this, e);
}
////////////////////////////////////////////////////////////////////////////
#endregion
}
public abstract class MenuBase: Control
{
#region //// Fields ////////////
////////////////////////////////////////////////////////////////////////////
private int itemIndex = -1;
private List<MenuItem> items = new List<MenuItem>();
private MenuBase childMenu = null;
private MenuBase rootMenu = null;
private MenuBase parentMenu = null;
////////////////////////////////////////////////////////////////////////////
#endregion
#region //// Properties ////////
////////////////////////////////////////////////////////////////////////////
protected internal int ItemIndex { get { return itemIndex; } set { itemIndex = value; } }
protected internal MenuBase ChildMenu { get { return childMenu; } set { childMenu = value; } }
protected internal MenuBase RootMenu { get { return rootMenu; } set { rootMenu = value; } }
protected internal MenuBase ParentMenu { get { return parentMenu; } set { parentMenu = value; } }
public List<MenuItem> Items { get { return items; } }
////////////////////////////////////////////////////////////////////////////
#endregion
#region //// Construstors //////
////////////////////////////////////////////////////////////////////////////
public MenuBase(Manager manager): base(manager)
{
rootMenu = this;
}
////////////////////////////////////////////////////////////////////////////
#endregion
}
}