diff FrmArmyTree.cs @ 239:c06d0865ff27

Fixes #388: Add "Add unit" options to army tree * Add button, context menu and double-click hooks for adding units
author IBBoard <dev@ibboard.co.uk>
date Sat, 21 Jan 2012 11:36:23 +0000
parents 870877498db9
children 2c3474d652e1
line wrap: on
line diff
--- a/FrmArmyTree.cs	Sat Jan 21 11:35:09 2012 +0000
+++ b/FrmArmyTree.cs	Sat Jan 21 11:36:23 2012 +0000
@@ -263,8 +263,12 @@
 			{
 				EditArmy((Army)tagData);
 			}
+			else if (tagData is ArmyCategory)
+			{
+				AddUnitFromCategory((ArmyCategory)tagData);
+			}
 		}
-
+		
 		private void UpdateUnitName(WarFoundryObject obj, string oldValue, string newValue)
 		{
 			if (obj is ICostedWarFoundryObject)
@@ -294,7 +298,7 @@
 		private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
 		{
 			TreeNode node = treeView.SelectedNode;
-
+			bttnAdd.Enabled = (node != null && node.Tag is ArmyCategory);
 			bttnDelete.Enabled = (node != null && node.Tag is Unit);
 			bttnEdit.Enabled = (node != null && (node.Tag is Unit || node.Tag is Army));
 		}
@@ -327,8 +331,9 @@
 			Object tag = (node != null) ? node.Tag : null;
 			bool tagIsUnit = (tag is Unit);
 			bool tagIsArmy = (tag is Army);
+			bool tagIsCategory = (tag is ArmyCategory);
 
-			if (!tagIsUnit && !tagIsArmy)
+			if (!tagIsUnit && !tagIsArmy && !tagIsCategory)
 			{
 				e.Cancel = true;
 			}
@@ -337,7 +342,29 @@
 				miDeleteUnit.Visible = tagIsUnit;
 				miEditUnit.Visible = tagIsUnit;
 				miEditArmy.Visible = tagIsArmy;
+				miAddUnit.Visible = tagIsCategory;
 			}
 		}
+
+		private void miAddUnit_Click(object sender, EventArgs e)
+		{
+			AddUnit();
+		}
+
+		private void AddUnit()
+		{
+			ArmyCategory tagData = treeView.SelectedNode.Tag as ArmyCategory;
+			AddUnitFromCategory(tagData);
+		}
+
+		private void AddUnitFromCategory(ArmyCategory tagData)
+		{
+			MdiParent.AddUnitFromCategory(tagData.Category);
+		}
+
+		private void bttnAdd_Click(object sender, EventArgs e)
+		{
+			AddUnit();
+		}
 	}
 }