Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.WinForms
annotate FrmArmyTree.cs @ 225:5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
* Add form for editing name and size
* Add edit options from army tree
* Add edit options from Edit menu
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Mon, 29 Aug 2011 20:06:54 +0100 |
parents | 417d3f75a752 |
children | 4ada3252d1ea |
rev | line source |
---|---|
190 | 1 // This file (FrmArmyTree.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard. |
2 // | |
3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. | |
4 | |
5 using System; | |
6 using System.Drawing; | |
7 using System.Collections.Generic; | |
8 using System.ComponentModel; | |
9 using System.Windows.Forms; | |
10 using IBBoard.Commands; | |
11 using IBBoard.Lang; | |
12 using IBBoard.Windows.Forms.I18N; | |
13 using IBBoard.Windows.Forms; | |
14 using IBBoard.WarFoundry.API; | |
15 using IBBoard.WarFoundry.API.Commands; | |
16 using IBBoard.WarFoundry.API.Objects; | |
17 | |
18 namespace IBBoard.WarFoundry.GUI.WinForms | |
19 { | |
20 /// <summary> | |
21 /// Summary description for FrmArmyTree. | |
22 /// </summary> | |
23 public class FrmArmyTree : IBBoard.Windows.Forms.IBBForm | |
24 { | |
25 private System.Windows.Forms.TreeView treeView; | |
26 private IContainer components; | |
27 private Dictionary<string, TreeNode> nodes; | |
28 private System.Windows.Forms.ContextMenu contextMenu; | |
29 private IBBMenuItem miDeleteUnit; | |
30 private IBBMenuItem miEditUnit; | |
31 | |
32 private ObjectAddDelegate UnitAddedMethod; | |
33 private ObjectRemoveDelegate UnitRemovedMethod; | |
34 private StringValChangedDelegate UnitNameChangedMethod, ArmyNameChangedMethod, TreeNameChangedMethod; | |
35 private ToolBar toolBar; | |
36 private IBBToolBarButton bttnEdit; | |
37 private IBBToolBarButton bttnDelete; | |
38 private ImageList imageList; | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
39 private IBBMenuItem miEditArmy; |
190 | 40 private CommandStack commandStack; |
41 public GameSystem CurrentGameSystem | |
42 { | |
43 get { return WarFoundryCore.CurrentGameSystem; } | |
44 set { WarFoundryCore.CurrentGameSystem = value; } | |
45 } | |
46 | |
47 public FrmArmyTree(CommandStack cmdStack) | |
48 { | |
49 commandStack = cmdStack; | |
50 InitializeComponent(); | |
51 UnitAddedMethod = new ObjectAddDelegate(UnitAdded); | |
52 UnitRemovedMethod = new ObjectRemoveDelegate(UnitRemoved); | |
53 UnitNameChangedMethod = new StringValChangedDelegate(UpdateUnitName); | |
54 ArmyNameChangedMethod = new StringValChangedDelegate(UpdateArmyName); | |
55 TreeNameChangedMethod = new StringValChangedDelegate(FrmArmyTree_TreeNameChanged); | |
56 nodes = new Dictionary<string, TreeNode>(); | |
57 this.Name = "ArmyTree"; | |
58 WarFoundryCore.ArmyChanged+= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged); | |
59 TranslateForm(); | |
60 Translation.TranslationChanged += new MethodInvoker(TranslateForm); | |
61 } | |
62 | |
63 private void TranslateForm() | |
64 { | |
65 ControlTranslator.TranslateControl(this); | |
66 | |
67 foreach (Component comp in components.Components) | |
68 { | |
69 ControlTranslator.TranslateComponent(comp); | |
70 } | |
71 | |
72 foreach (IBBMenuItem mi in contextMenu.MenuItems) | |
73 { | |
74 ControlTranslator.TranslateComponent(mi); | |
75 } | |
76 foreach (TreeNode node in nodes.Values) | |
77 { | |
78 node.Text = CreateNodeName((ICostedWarFoundryObject)node.Tag); | |
79 } | |
80 } | |
81 | |
82 /// <summary> | |
83 /// Clean up any resources being used. | |
84 /// </summary> | |
85 protected override void Dispose( bool disposing ) | |
86 { | |
87 if( disposing ) | |
88 { | |
89 if(components != null) | |
90 { | |
91 components.Dispose(); | |
92 } | |
93 } | |
94 base.Dispose( disposing ); | |
95 Translation.TranslationChanged -= new MethodInvoker(TranslateForm); | |
96 WarFoundryCore.ArmyChanged -= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged); | |
97 } | |
98 | |
99 #region Windows Form Designer generated code | |
100 /// <summary> | |
101 /// Required method for Designer support - do not modify | |
102 /// the contents of this method with the code editor. | |
103 /// </summary> | |
104 private void InitializeComponent() | |
105 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
106 this.components = new System.ComponentModel.Container(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
107 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmArmyTree)); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
108 this.contextMenu = new System.Windows.Forms.ContextMenu(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
109 this.miEditUnit = new IBBoard.Windows.Forms.IBBMenuItem(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
110 this.miDeleteUnit = new IBBoard.Windows.Forms.IBBMenuItem(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
111 this.imageList = new System.Windows.Forms.ImageList(this.components); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
112 this.toolBar = new System.Windows.Forms.ToolBar(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
113 this.bttnEdit = new IBBoard.Windows.Forms.IBBToolBarButton(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
114 this.bttnDelete = new IBBoard.Windows.Forms.IBBToolBarButton(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
115 this.treeView = new System.Windows.Forms.TreeView(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
116 this.miEditArmy = new IBBoard.Windows.Forms.IBBMenuItem(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
117 this.SuspendLayout(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
118 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
119 // contextMenu |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
120 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
121 this.contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
122 this.miEditArmy, |
190 | 123 this.miEditUnit, |
124 this.miDeleteUnit}); | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
125 this.contextMenu.Popup += new System.EventHandler(this.contextMenu_Popup); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
126 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
127 // miEditUnit |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
128 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
129 this.miEditUnit.Index = 1; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
130 this.miEditUnit.Text = "&edit unit"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
131 this.miEditUnit.Click += new System.EventHandler(this.miEdit_Click); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
132 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
133 // miDeleteUnit |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
134 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
135 this.miDeleteUnit.Index = 2; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
136 this.miDeleteUnit.Text = "&delete unit"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
137 this.miDeleteUnit.Click += new System.EventHandler(this.miDelete_Click); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
138 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
139 // imageList |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
140 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
141 this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream"))); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
142 this.imageList.TransparentColor = System.Drawing.Color.Transparent; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
143 this.imageList.Images.SetKeyName(0, "gtk-edit.png"); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
144 this.imageList.Images.SetKeyName(1, "edit-delete.png"); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
145 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
146 // toolBar |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
147 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
148 this.toolBar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] { |
190 | 149 this.bttnEdit, |
150 this.bttnDelete}); | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
151 this.toolBar.ButtonSize = new System.Drawing.Size(16, 16); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
152 this.toolBar.DropDownArrows = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
153 this.toolBar.ImageList = this.imageList; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
154 this.toolBar.Location = new System.Drawing.Point(0, 0); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
155 this.toolBar.Name = "toolBar"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
156 this.toolBar.ShowToolTips = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
157 this.toolBar.Size = new System.Drawing.Size(240, 28); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
158 this.toolBar.TabIndex = 3; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
159 this.toolBar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar_ButtonClick); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
160 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
161 // bttnEdit |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
162 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
163 this.bttnEdit.Enabled = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
164 this.bttnEdit.ImageIndex = 0; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
165 this.bttnEdit.Name = "bttnEdit"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
166 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
167 // bttnDelete |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
168 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
169 this.bttnDelete.Enabled = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
170 this.bttnDelete.ImageIndex = 1; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
171 this.bttnDelete.Name = "bttnDelete"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
172 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
173 // treeView |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
174 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
175 this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
176 | System.Windows.Forms.AnchorStyles.Left) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
177 | System.Windows.Forms.AnchorStyles.Right))); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
178 this.treeView.ContextMenu = this.contextMenu; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
179 this.treeView.FullRowSelect = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
180 this.treeView.Location = new System.Drawing.Point(0, 28); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
181 this.treeView.Name = "treeView"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
182 this.treeView.Size = new System.Drawing.Size(240, 250); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
183 this.treeView.TabIndex = 0; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
184 this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
185 this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
186 this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
187 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
188 // miEditArmy |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
189 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
190 this.miEditArmy.Index = 0; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
191 this.miEditArmy.Text = "&edit army"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
192 this.miEditArmy.Click += new System.EventHandler(this.miEditArmy_Click); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
193 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
194 // FrmArmyTree |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
195 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
196 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
197 this.ClientSize = new System.Drawing.Size(240, 277); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
198 this.ControlBox = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
199 this.Controls.Add(this.toolBar); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
200 this.Controls.Add(this.treeView); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
201 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
202 this.MaximizeBox = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
203 this.MinimizeBox = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
204 this.Name = "FrmArmyTree"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
205 this.Text = "FrmArmyTree"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
206 this.ResumeLayout(false); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
207 this.PerformLayout(); |
190 | 208 |
209 } | |
210 #endregion | |
211 | |
212 private void ClearArmy() | |
213 { | |
214 nodes.Clear(); | |
215 treeView.Nodes.Clear(); | |
216 } | |
217 | |
218 private void SetArmy(Army army) | |
219 { | |
220 ClearArmy(); | |
221 | |
222 if (army != null) | |
223 { | |
224 ArmyCategory[] cats = army.Categories; | |
225 TreeNode[] catNodes = new TreeNode[cats.Length]; | |
226 Unit[] units; | |
227 | |
228 for (int i = 0; i < cats.Length; i++) | |
229 { | |
230 ArmyCategory cat = cats[i]; | |
231 units = army.GetUnits(cat); | |
232 cat.NameChanged += TreeNameChangedMethod; | |
233 cat.PointsValueChanged += NodePointsValueChanged; | |
234 TreeNode[] unitNodes = new TreeNode[units.Length]; | |
235 TreeNode temp; | |
236 | |
237 for (int j = 0; j < units.Length; j++) | |
238 { | |
239 unitNodes[j] = CreateTreeNode(units[j]); | |
240 } | |
241 | |
242 temp = new TreeNode(CreateNodeName(cat), unitNodes); | |
243 temp.Tag = cat; | |
244 catNodes[i] = temp; | |
245 nodes[cat.ID] = temp; | |
246 } | |
247 | |
248 TreeNode root = new TreeNode(CreateNodeName(army), catNodes); | |
249 root.Tag = army; | |
250 army.PointsValueChanged += NodePointsValueChanged; | |
251 nodes[army.ID] = root; | |
252 treeView.Nodes.Add(root); | |
253 root.ExpandAll(); | |
254 } | |
255 } | |
256 | |
257 private string CreateNodeName(ICostedWarFoundryObject obj) | |
258 { | |
193 | 259 return Translation.GetTranslation("treeNodeText", "{0} ({1} pts)", obj.Name, obj.Points, CurrentGameSystem.GetPointsAbbrev(obj.Points)); |
190 | 260 } |
261 | |
262 private void NodePointsValueChanged(WarFoundryObject obj, double oldValue, double newValue) | |
263 { | |
264 if (obj is ICostedWarFoundryObject) | |
265 { | |
266 SetNodeName(obj); | |
267 } | |
268 } | |
269 | |
270 private void SetNodeName(WarFoundryObject obj) | |
271 { | |
272 TreeNode node = nodes[obj.ID]; | |
273 | |
274 if (node != null) | |
275 { | |
276 node.Text = CreateNodeName((ICostedWarFoundryObject)obj); | |
277 } | |
278 } | |
279 | |
280 private TreeNode CreateTreeNode(Unit unit) | |
281 { | |
282 TreeNode temp = new TreeNode(CreateNodeName(unit)); | |
283 temp.Tag = unit; | |
284 unit.NameChanged+= UnitNameChangedMethod; | |
285 unit.PointsValueChanged += NodePointsValueChanged; | |
286 nodes[unit.ID] = temp; | |
287 return temp; | |
288 } | |
289 | |
290 public void FrmArmyTree_ArmyChanged(Army oldArmy, Army newArmy) | |
291 { | |
292 if (oldArmy != null) | |
293 { | |
294 oldArmy.UnitAdded -= UnitAddedMethod; | |
295 oldArmy.UnitRemoved -= UnitRemovedMethod; | |
296 oldArmy.PointsValueChanged -= NodePointsValueChanged; | |
297 } | |
298 | |
299 if (newArmy != null) | |
300 { | |
301 newArmy.UnitAdded += UnitAddedMethod; | |
302 newArmy.UnitRemoved += UnitRemovedMethod; | |
303 newArmy.PointsValueChanged += NodePointsValueChanged; | |
304 } | |
305 | |
306 SetArmy(newArmy); | |
307 } | |
308 | |
309 private void UnitAdded(WarFoundryObject obj) | |
310 { | |
311 if (obj is Unit) | |
312 { | |
313 Unit unit = (Unit)obj; | |
314 ArmyCategory cat = unit.Category; | |
315 TreeNode parent = nodes[cat.ID]; | |
316 TreeNode unitNode = CreateTreeNode(unit); | |
317 parent.Nodes.Add(unitNode); | |
318 parent.Expand(); //make sure it's expanded | |
319 } | |
320 } | |
321 | |
322 public new FrmMain MdiParent | |
323 { | |
324 get { return (FrmMain) base.MdiParent; } | |
325 set { base.MdiParent = value; } | |
326 } | |
327 | |
328 private void UnitRemoved(WarFoundryObject obj) | |
329 { | |
330 if (obj is Unit) | |
331 { | |
332 Unit unit = (Unit)obj; | |
333 RemoveUnitFromTree(unit); | |
334 } | |
335 } | |
336 | |
337 private void RemoveUnitFromTree(Unit unit) | |
338 { | |
339 TreeNode unitNode = nodes[unit.ID]; | |
340 unit.NameChanged-= UnitNameChangedMethod; | |
341 | |
342 if (unitNode!=null) | |
343 { | |
344 unitNode.Remove(); | |
345 nodes.Remove(unit.ID); | |
346 } | |
347 } | |
348 | |
349 | |
350 private void contextMenu_Popup(object sender, System.EventArgs e) | |
351 { | |
352 TreeNode node = treeView.SelectedNode; | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
353 Object tag = (node != null) ? node.Tag : null; |
190 | 354 |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
355 if (tag is Unit) |
190 | 356 { |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
357 miDeleteUnit.Visible = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
358 miEditUnit.Visible = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
359 miEditArmy.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
360 } |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
361 else if (tag is Army) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
362 { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
363 miDeleteUnit.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
364 miEditUnit.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
365 miEditArmy.Visible = true; |
190 | 366 } |
367 else | |
368 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
369 miDeleteUnit.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
370 miEditUnit.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
371 miEditArmy.Visible = false; |
190 | 372 } |
373 } | |
374 | |
375 private void treeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) | |
376 { | |
377 if (e.Button == MouseButtons.Right) | |
378 { | |
379 TreeNode tn = treeView.GetNodeAt(e.X, e.Y); | |
380 | |
381 if (tn!=null) | |
382 { | |
383 treeView.SelectedNode = tn; | |
384 } | |
385 else | |
386 { | |
387 treeView.SelectedNode = null; | |
388 } | |
389 } | |
390 } | |
391 | |
392 private void miDelete_Click(object sender, System.EventArgs e) | |
393 { | |
394 DeleteUnit(); | |
395 } | |
396 | |
397 private void DeleteUnit() | |
398 { | |
399 | |
400 TreeNode selected = treeView.SelectedNode; | |
401 | |
402 if (selected.Tag != null && selected.Tag is Unit) | |
403 { | |
404 Unit unit = (Unit) selected.Tag; | |
405 commandStack.Execute(new RemoveUnitCommand(unit)); | |
406 } | |
407 } | |
408 | |
409 private void miEdit_Click(object sender, System.EventArgs e) | |
410 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
411 EditTreeItem(); |
190 | 412 } |
413 | |
414 private void treeView_DoubleClick(object sender, System.EventArgs e) | |
415 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
416 EditTreeItem(); |
190 | 417 } |
418 | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
419 private void EditTreeItem() |
190 | 420 { |
421 TreeNode selected = treeView.SelectedNode; | |
422 object tagData = selected.Tag; | |
423 | |
424 if (tagData is Unit) | |
425 { | |
426 Unit unit = (Unit) tagData; | |
427 MdiParent.OpenUnitDialog(unit); | |
428 } | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
429 else if (tagData is Army) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
430 { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
431 EditArmy((Army)tagData); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
432 } |
190 | 433 } |
434 | |
435 private void UpdateUnitName(WarFoundryObject obj, string oldValue, string newValue) | |
436 { | |
437 if (obj is ICostedWarFoundryObject) | |
438 { | |
439 SetNodeName(obj); | |
440 } | |
441 } | |
442 | |
443 private void UpdateArmyName(WarFoundryObject obj, string oldValue, string newValue) | |
444 { | |
445 if (obj is Army) | |
446 { | |
447 Army army = (Army)obj; | |
448 TreeNode node = treeView.Nodes[0]; | |
449 | |
450 if (node!=null) | |
451 { | |
452 node.Text = army.Name; | |
453 } | |
454 } | |
455 } | |
456 | |
457 private void FrmArmyTree_TreeNameChanged(WarFoundryObject obj, string oldValue, string newValue) | |
458 { | |
459 TreeNode node = nodes[obj.ID]; | |
460 | |
461 if (node!=null) | |
462 { | |
463 node.Text = obj.Name; | |
464 } | |
465 } | |
466 | |
467 private void toolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e) | |
468 { | |
469 if (e.Button == bttnDelete) | |
470 { | |
471 DeleteUnit(); | |
472 } | |
473 else if (e.Button == bttnEdit) | |
474 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
475 EditTreeItem(); |
190 | 476 } |
477 } | |
478 | |
479 private void treeView_AfterSelect(object sender, TreeViewEventArgs e) | |
480 { | |
481 TreeNode node = treeView.SelectedNode; | |
482 | |
483 bttnDelete.Enabled = (node != null && node.Tag is Unit); | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
484 bttnEdit.Enabled = (node != null && (node.Tag is Unit || node.Tag is Army)); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
485 } |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
486 |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
487 private void miEditArmy_Click(object sender, EventArgs e) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
488 { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
489 Army army = treeView.SelectedNode.Tag as Army; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
490 EditArmy(army); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
491 } |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
492 |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
493 private void EditArmy(Army army) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
494 { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
495 FrmEditArmy editForm = new FrmEditArmy(commandStack, army); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
496 editForm.ShowDialog(this.ParentForm); |
190 | 497 } |
498 } | |
499 } |