comparison FrmArmyTree.cs @ 62:0e7c257ca8d6 WarFoundry_v0.1beta2_Winforms

Fixes #164: Show unit cost in army tree * Add points value in army tree for units, category and army (aggregating as it goes up the tree) * Add code to update tree node text as points values change * Remove references to now deprecated points-related properties Also: * Add rolling log file appender to logging config
author IBBoard <dev@ibboard.co.uk>
date Sat, 19 Sep 2009 19:44:45 +0000
parents a0ec03c24cd9
children 4db2c1086a85
comparison
equal deleted inserted replaced
61:a0ec03c24cd9 62:0e7c257ca8d6
6 using System.Drawing; 6 using System.Drawing;
7 using System.Collections.Generic; 7 using System.Collections.Generic;
8 using System.ComponentModel; 8 using System.ComponentModel;
9 using System.Windows.Forms; 9 using System.Windows.Forms;
10 using IBBoard.Commands; 10 using IBBoard.Commands;
11 using IBBoard.Lang;
11 using IBBoard.Windows.Forms.I18N; 12 using IBBoard.Windows.Forms.I18N;
12 using IBBoard.Windows.Forms; 13 using IBBoard.Windows.Forms;
13 using IBBoard.WarFoundry.API; 14 using IBBoard.WarFoundry.API;
14 using IBBoard.WarFoundry.API.Commands; 15 using IBBoard.WarFoundry.API.Commands;
15 using IBBoard.WarFoundry.API.Objects; 16 using IBBoard.WarFoundry.API.Objects;
202 TreeNode[] catNodes = new TreeNode[cats.Length]; 203 TreeNode[] catNodes = new TreeNode[cats.Length];
203 Unit[] units; 204 Unit[] units;
204 205
205 for (int i = 0; i < cats.Length; i++) 206 for (int i = 0; i < cats.Length; i++)
206 { 207 {
207 units = army.GetUnits(cats[i]); 208 ArmyCategory cat = cats[i];
208 cats[i].NameChanged += TreeNameChangedMethod; 209 units = army.GetUnits(cat);
210 cat.NameChanged += TreeNameChangedMethod;
211 cat.PointsValueChanged += NodePointsValueChanged;
209 TreeNode[] unitNodes = new TreeNode[units.Length]; 212 TreeNode[] unitNodes = new TreeNode[units.Length];
210 TreeNode temp; 213 TreeNode temp;
211 214
212 for (int j = 0; j < units.Length; j++) 215 for (int j = 0; j < units.Length; j++)
213 { 216 {
214 unitNodes[j] = CreateTreeNode(units[j]); 217 unitNodes[j] = CreateTreeNode(units[j]);
215 } 218 }
216 219
217 temp = new TreeNode(cats[i].Name, unitNodes); 220 temp = new TreeNode(CreateNodeName(cat), unitNodes);
218 temp.Tag = cats[i]; 221 temp.Tag = cat;
219 catNodes[i] = temp; 222 catNodes[i] = temp;
220 nodes[cats[i].ID] = temp; 223 nodes[cat.ID] = temp;
221 } 224 }
222 225
223 TreeNode root = new TreeNode(army.Name, catNodes); 226 TreeNode root = new TreeNode(CreateNodeName(army), catNodes);
224 root.Tag = army; 227 root.Tag = army;
228 army.PointsValueChanged += NodePointsValueChanged;
229 nodes[army.ID] = root;
225 treeView.Nodes.Add(root); 230 treeView.Nodes.Add(root);
226 root.ExpandAll(); 231 root.ExpandAll();
227 } 232 }
228 } 233 }
234
235 private string CreateNodeName(ICostedWarFoundryObject obj)
236 {
237 return Translation.GetTranslation("treeNodeText", "{0} ({1}pts)", obj.Name, obj.Points);
238 }
239
240 private void NodePointsValueChanged(WarFoundryObject obj, double oldValue, double newValue)
241 {
242 if (obj is ICostedWarFoundryObject)
243 {
244 nodes[obj.ID].Text = CreateNodeName((ICostedWarFoundryObject)obj);
245 }
246 }
229 247
230 private TreeNode CreateTreeNode(Unit unit) 248 private TreeNode CreateTreeNode(Unit unit)
231 { 249 {
232 TreeNode temp = new TreeNode(unit.Name); 250 TreeNode temp = new TreeNode(CreateNodeName(unit));
233 temp.Tag = unit; 251 temp.Tag = unit;
234 unit.NameChanged+= UnitNameChangedMethod; 252 unit.NameChanged+= UnitNameChangedMethod;
253 unit.PointsValueChanged += NodePointsValueChanged;
235 nodes[unit.ID] = temp; 254 nodes[unit.ID] = temp;
236 return temp; 255 return temp;
237 } 256 }
238 257
239 public void FrmArmyTree_ArmyChanged(Army oldArmy, Army newArmy) 258 public void FrmArmyTree_ArmyChanged(Army oldArmy, Army newArmy)
240 { 259 {
241 if (oldArmy != null) 260 if (oldArmy != null)
242 { 261 {
243 oldArmy.UnitAdded -= UnitAddedMethod; 262 oldArmy.UnitAdded -= UnitAddedMethod;
244 oldArmy.UnitRemoved -= UnitRemovedMethod; 263 oldArmy.UnitRemoved -= UnitRemovedMethod;
264 oldArmy.PointsValueChanged -= NodePointsValueChanged;
245 } 265 }
246 266
247 if (newArmy != null) 267 if (newArmy != null)
248 { 268 {
249 newArmy.UnitAdded += UnitAddedMethod; 269 newArmy.UnitAdded += UnitAddedMethod;
250 newArmy.UnitRemoved += UnitRemovedMethod; 270 newArmy.UnitRemoved += UnitRemovedMethod;
271 newArmy.PointsValueChanged += NodePointsValueChanged;
251 } 272 }
252 273
253 SetArmy(newArmy); 274 SetArmy(newArmy);
254 } 275 }
255 276