diff 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
line wrap: on
line diff
--- a/FrmArmyTree.cs	Mon Aug 29 15:17:59 2011 +0100
+++ b/FrmArmyTree.cs	Mon Aug 29 20:06:54 2011 +0100
@@ -36,6 +36,7 @@
 		private IBBToolBarButton bttnEdit;
 		private IBBToolBarButton bttnDelete;
 		private ImageList imageList;
+		private IBBMenuItem miEditArmy;
 		private CommandStack commandStack;
         public GameSystem CurrentGameSystem
         {
@@ -102,100 +103,108 @@
 		/// </summary>
 		private void InitializeComponent()
 		{
-            this.components = new System.ComponentModel.Container();
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmArmyTree));
-            this.contextMenu = new System.Windows.Forms.ContextMenu();
-            this.miEditUnit = new IBBoard.Windows.Forms.IBBMenuItem();
-            this.miDeleteUnit = new IBBoard.Windows.Forms.IBBMenuItem();
-            this.imageList = new System.Windows.Forms.ImageList(this.components);
-            this.toolBar = new System.Windows.Forms.ToolBar();
-            this.bttnEdit = new IBBoard.Windows.Forms.IBBToolBarButton();
-            this.bttnDelete = new IBBoard.Windows.Forms.IBBToolBarButton();
-            this.treeView = new System.Windows.Forms.TreeView();
-            this.SuspendLayout();
-            // 
-            // contextMenu
-            // 
-            this.contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+			this.components = new System.ComponentModel.Container();
+			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmArmyTree));
+			this.contextMenu = new System.Windows.Forms.ContextMenu();
+			this.miEditUnit = new IBBoard.Windows.Forms.IBBMenuItem();
+			this.miDeleteUnit = new IBBoard.Windows.Forms.IBBMenuItem();
+			this.imageList = new System.Windows.Forms.ImageList(this.components);
+			this.toolBar = new System.Windows.Forms.ToolBar();
+			this.bttnEdit = new IBBoard.Windows.Forms.IBBToolBarButton();
+			this.bttnDelete = new IBBoard.Windows.Forms.IBBToolBarButton();
+			this.treeView = new System.Windows.Forms.TreeView();
+			this.miEditArmy = new IBBoard.Windows.Forms.IBBMenuItem();
+			this.SuspendLayout();
+			// 
+			// contextMenu
+			// 
+			this.contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+            this.miEditArmy,
             this.miEditUnit,
             this.miDeleteUnit});
-            this.contextMenu.Popup += new System.EventHandler(this.contextMenu_Popup);
-            // 
-            // miEditUnit
-            // 
-            this.miEditUnit.Index = 0;
-            this.miEditUnit.Text = "&edit unit";
-            this.miEditUnit.Click += new System.EventHandler(this.miEdit_Click);
-            // 
-            // miDeleteUnit
-            // 
-            this.miDeleteUnit.Index = 1;
-            this.miDeleteUnit.Text = "&delete unit";
-            this.miDeleteUnit.Click += new System.EventHandler(this.miDelete_Click);
-            // 
-            // imageList
-            // 
-            this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
-            this.imageList.TransparentColor = System.Drawing.Color.Transparent;
-            this.imageList.Images.SetKeyName(0, "gtk-edit.png");
-            this.imageList.Images.SetKeyName(1, "edit-delete.png");
-            // 
-            // toolBar
-            // 
-            this.toolBar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
+			this.contextMenu.Popup += new System.EventHandler(this.contextMenu_Popup);
+			// 
+			// miEditUnit
+			// 
+			this.miEditUnit.Index = 1;
+			this.miEditUnit.Text = "&edit unit";
+			this.miEditUnit.Click += new System.EventHandler(this.miEdit_Click);
+			// 
+			// miDeleteUnit
+			// 
+			this.miDeleteUnit.Index = 2;
+			this.miDeleteUnit.Text = "&delete unit";
+			this.miDeleteUnit.Click += new System.EventHandler(this.miDelete_Click);
+			// 
+			// imageList
+			// 
+			this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
+			this.imageList.TransparentColor = System.Drawing.Color.Transparent;
+			this.imageList.Images.SetKeyName(0, "gtk-edit.png");
+			this.imageList.Images.SetKeyName(1, "edit-delete.png");
+			// 
+			// toolBar
+			// 
+			this.toolBar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
             this.bttnEdit,
             this.bttnDelete});
-            this.toolBar.ButtonSize = new System.Drawing.Size(16, 16);
-            this.toolBar.DropDownArrows = true;
-            this.toolBar.ImageList = this.imageList;
-            this.toolBar.Location = new System.Drawing.Point(0, 0);
-            this.toolBar.Name = "toolBar";
-            this.toolBar.ShowToolTips = true;
-            this.toolBar.Size = new System.Drawing.Size(240, 28);
-            this.toolBar.TabIndex = 3;
-            this.toolBar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar_ButtonClick);
-            // 
-            // bttnEdit
-            // 
-            this.bttnEdit.Enabled = false;
-            this.bttnEdit.ImageIndex = 0;
-            this.bttnEdit.Name = "bttnEdit";
-            // 
-            // bttnDelete
-            // 
-            this.bttnDelete.Enabled = false;
-            this.bttnDelete.ImageIndex = 1;
-            this.bttnDelete.Name = "bttnDelete";
-            // 
-            // treeView
-            // 
-            this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.treeView.ContextMenu = this.contextMenu;
-            this.treeView.FullRowSelect = true;
-            this.treeView.Location = new System.Drawing.Point(0, 28);
-            this.treeView.Name = "treeView";
-            this.treeView.Size = new System.Drawing.Size(240, 250);
-            this.treeView.TabIndex = 0;
-            this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick);
-            this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect);
-            this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown);
-            // 
-            // FrmArmyTree
-            // 
-            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
-            this.ClientSize = new System.Drawing.Size(240, 277);
-            this.ControlBox = false;
-            this.Controls.Add(this.toolBar);
-            this.Controls.Add(this.treeView);
-            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
-            this.MaximizeBox = false;
-            this.MinimizeBox = false;
-            this.Name = "FrmArmyTree";
-            this.Text = "FrmArmyTree";
-            this.ResumeLayout(false);
-            this.PerformLayout();
+			this.toolBar.ButtonSize = new System.Drawing.Size(16, 16);
+			this.toolBar.DropDownArrows = true;
+			this.toolBar.ImageList = this.imageList;
+			this.toolBar.Location = new System.Drawing.Point(0, 0);
+			this.toolBar.Name = "toolBar";
+			this.toolBar.ShowToolTips = true;
+			this.toolBar.Size = new System.Drawing.Size(240, 28);
+			this.toolBar.TabIndex = 3;
+			this.toolBar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar_ButtonClick);
+			// 
+			// bttnEdit
+			// 
+			this.bttnEdit.Enabled = false;
+			this.bttnEdit.ImageIndex = 0;
+			this.bttnEdit.Name = "bttnEdit";
+			// 
+			// bttnDelete
+			// 
+			this.bttnDelete.Enabled = false;
+			this.bttnDelete.ImageIndex = 1;
+			this.bttnDelete.Name = "bttnDelete";
+			// 
+			// treeView
+			// 
+			this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+						| System.Windows.Forms.AnchorStyles.Left)
+						| System.Windows.Forms.AnchorStyles.Right)));
+			this.treeView.ContextMenu = this.contextMenu;
+			this.treeView.FullRowSelect = true;
+			this.treeView.Location = new System.Drawing.Point(0, 28);
+			this.treeView.Name = "treeView";
+			this.treeView.Size = new System.Drawing.Size(240, 250);
+			this.treeView.TabIndex = 0;
+			this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect);
+			this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick);
+			this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown);
+			// 
+			// miEditArmy
+			// 
+			this.miEditArmy.Index = 0;
+			this.miEditArmy.Text = "&edit army";
+			this.miEditArmy.Click += new System.EventHandler(this.miEditArmy_Click);
+			// 
+			// FrmArmyTree
+			// 
+			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+			this.ClientSize = new System.Drawing.Size(240, 277);
+			this.ControlBox = false;
+			this.Controls.Add(this.toolBar);
+			this.Controls.Add(this.treeView);
+			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+			this.MaximizeBox = false;
+			this.MinimizeBox = false;
+			this.Name = "FrmArmyTree";
+			this.Text = "FrmArmyTree";
+			this.ResumeLayout(false);
+			this.PerformLayout();
 
 		}
 		#endregion
@@ -341,20 +350,25 @@
 		private void contextMenu_Popup(object sender, System.EventArgs e)
 		{
 			TreeNode node = treeView.SelectedNode;
+			Object tag = (node != null) ? node.Tag : null;
 
-			if (node!=null && node.Tag is Unit)
+			if (tag is Unit)
 			{
-				foreach(MenuItem item in contextMenu.MenuItems)
-				{
-					item.Visible = true;
-				}
+				miDeleteUnit.Visible = true;
+				miEditUnit.Visible = true;
+				miEditArmy.Visible = false;
+			}
+			else if (tag is Army)
+			{
+				miDeleteUnit.Visible = false;
+				miEditUnit.Visible = false;
+				miEditArmy.Visible = true;
 			}
 			else
 			{
-				foreach(MenuItem item in contextMenu.MenuItems)
-				{
-					item.Visible = false;
-				}
+				miDeleteUnit.Visible = false;
+				miEditUnit.Visible = false;
+				miEditArmy.Visible = false;
 			}
 		}
 
@@ -394,15 +408,15 @@
 
 		private void miEdit_Click(object sender, System.EventArgs e)
 		{	
-			EditUnit();
+			EditTreeItem();
 		}
 
 		private void treeView_DoubleClick(object sender, System.EventArgs e)
 		{
-			EditUnit();			
+			EditTreeItem();			
 		}
 
-		private void EditUnit()
+		private void EditTreeItem()
 		{
 			TreeNode selected = treeView.SelectedNode;
 			object tagData = selected.Tag;
@@ -412,6 +426,10 @@
 				Unit unit = (Unit) tagData;
 				MdiParent.OpenUnitDialog(unit);
 			}
+			else if (tagData is Army)
+			{
+				EditArmy((Army)tagData);
+			}
 		}
 
 		private void UpdateUnitName(WarFoundryObject obj, string oldValue, string newValue)
@@ -454,7 +472,7 @@
 			}
 			else if (e.Button == bttnEdit)
 			{
-				EditUnit();
+				EditTreeItem();
 			}
 		}
 
@@ -463,7 +481,19 @@
 			TreeNode node = treeView.SelectedNode;
 
 			bttnDelete.Enabled = (node != null && node.Tag is Unit);
-			bttnEdit.Enabled = bttnDelete.Enabled;
+			bttnEdit.Enabled = (node != null && (node.Tag is Unit || node.Tag is Army));
+		}
+
+		private void miEditArmy_Click(object sender, EventArgs e)
+		{
+			Army army = treeView.SelectedNode.Tag as Army;
+			EditArmy(army);
+		}
+
+		private void EditArmy(Army army)
+		{
+			FrmEditArmy editForm = new FrmEditArmy(commandStack, army);
+			editForm.ShowDialog(this.ParentForm);
 		}
 	}
 }