diff FrmArmyTree.cs @ 229:870877498db9

Re #382: WinForms builds from Linux/Mono fail on Windows/.Net * Rebuild FrmArmyTree from scratch, in case old file hasn't migrated through the versions properly * Add edit and delete icons
author IBBoard <dev@ibboard.co.uk>
date Sat, 03 Dec 2011 14:48:40 +0000
parents 4ada3252d1ea
children c06d0865ff27
line wrap: on
line diff
--- a/FrmArmyTree.cs	Sat Nov 26 14:50:44 2011 +0000
+++ b/FrmArmyTree.cs	Sat Dec 03 14:48:40 2011 +0000
@@ -1,48 +1,32 @@
-// This file (FrmArmyTree.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard.
-//
-// 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.
-
-using System;
-using System.Drawing;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
 using System.Windows.Forms;
 using IBBoard.Commands;
+using IBBoard.WarFoundry.API.Objects;
+using IBBoard.WarFoundry.API;
 using IBBoard.Lang;
 using IBBoard.Windows.Forms.I18N;
+using IBBoard.WarFoundry.API.Commands;
 using IBBoard.Windows.Forms;
-using IBBoard.WarFoundry.API;
-using IBBoard.WarFoundry.API.Commands;
-using IBBoard.WarFoundry.API.Objects;
 
 namespace IBBoard.WarFoundry.GUI.WinForms
 {
-	/// <summary>
-	/// Summary description for FrmArmyTree.
-	/// </summary>
-	public class FrmArmyTree : IBBoard.Windows.Forms.IBBForm
+	public partial class FrmArmyTree : IBBoard.Windows.Forms.IBBForm
 	{
-		private System.Windows.Forms.TreeView treeView;
-		private IContainer components;
 		private Dictionary<string, TreeNode> nodes;
-		private System.Windows.Forms.ContextMenu contextMenu;
-		private IBBMenuItem miDeleteUnit;
-		private IBBMenuItem miEditUnit;
-		
 		private ObjectAddDelegate UnitAddedMethod;
 		private ObjectRemoveDelegate UnitRemovedMethod;
 		private StringValChangedDelegate UnitNameChangedMethod, ArmyNameChangedMethod, TreeNameChangedMethod;
-		private ToolBar toolBar;
-		private IBBToolBarButton bttnEdit;
-		private IBBToolBarButton bttnDelete;
-		private ImageList imageList;
-		private IBBMenuItem miEditArmy;
 		private CommandStack commandStack;
-        public GameSystem CurrentGameSystem
-        {
-            get { return WarFoundryCore.CurrentGameSystem; }
-            set { WarFoundryCore.CurrentGameSystem = value; }
-        }
+		public GameSystem CurrentGameSystem
+		{
+			get { return WarFoundryCore.CurrentGameSystem; }
+			set { WarFoundryCore.CurrentGameSystem = value; }
+		}
 
 		public FrmArmyTree(CommandStack cmdStack)
 		{
@@ -58,7 +42,7 @@
 			miDeleteUnit.Name = "miDeleteUnit";
 			miEditUnit.Name = "miEditUnit";
 			miEditArmy.Name = "miEditArmy";
-			WarFoundryCore.ArmyChanged+= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged);
+			WarFoundryCore.ArmyChanged += new ArmyChangedDelegate(FrmArmyTree_ArmyChanged);
 			TranslateForm();
 			Translation.TranslationChanged += new MethodInvoker(TranslateForm);
 		}
@@ -72,147 +56,16 @@
 				ControlTranslator.TranslateComponent(comp);
 			}
 
-			foreach (IBBMenuItem mi in contextMenu.MenuItems)
+			foreach (IBBToolStripMenuItem mi in contextMenuStrip.Items)
 			{
-                ControlTranslator.TranslateComponent(mi);
+				ControlTranslator.TranslateComponent(mi);
 			}
 
-            foreach (TreeNode node in nodes.Values)
-            {
-                node.Text = CreateNodeName((ICostedWarFoundryObject)node.Tag);
-            }
-		}
-
-		/// <summary>
-		/// Clean up any resources being used.
-		/// </summary>
-		protected override void Dispose( bool disposing )
-		{
-			if( disposing )
+			foreach (TreeNode node in nodes.Values)
 			{
-				if(components != null)
-				{
-					components.Dispose();
-				}
+				node.Text = CreateNodeName((ICostedWarFoundryObject)node.Tag);
 			}
-			base.Dispose( disposing );
-			Translation.TranslationChanged -= new MethodInvoker(TranslateForm);
-			WarFoundryCore.ArmyChanged -= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged);
 		}
-
-		#region Windows Form Designer generated code
-		/// <summary>
-		/// Required method for Designer support - do not modify
-		/// the contents of this method with the code editor.
-		/// </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.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 = 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.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
-
 		private void ClearArmy()
 		{
 			nodes.Clear();
@@ -257,10 +110,10 @@
 				root.ExpandAll();
 			}
 		}
-		
+
 		private string CreateNodeName(ICostedWarFoundryObject obj)
 		{
-            return Translation.GetTranslation("treeNodeText", "{0} ({1} pts)", obj.Name, obj.Points, CurrentGameSystem.GetPointsAbbrev(obj.Points));
+			return Translation.GetTranslation("treeNodeText", "{0} ({1} pts)", obj.Name, obj.Points, CurrentGameSystem.GetPointsAbbrev(obj.Points));
 		}
 
 		private void NodePointsValueChanged(WarFoundryObject obj, double oldValue, double newValue)
@@ -285,7 +138,7 @@
 		{
 			TreeNode temp = new TreeNode(CreateNodeName(unit));
 			temp.Tag = unit;
-			unit.NameChanged+= UnitNameChangedMethod;
+			unit.NameChanged += UnitNameChangedMethod;
 			unit.PointsValueChanged += NodePointsValueChanged;
 			nodes[unit.ID] = temp;
 			return temp;
@@ -327,7 +180,7 @@
 
 		public new FrmMain MdiParent
 		{
-			get { return (FrmMain) base.MdiParent; }
+			get { return (FrmMain)base.MdiParent; }
 			set { base.MdiParent = value; }
 		}
 
@@ -343,48 +196,22 @@
 		private void RemoveUnitFromTree(Unit unit)
 		{
 			TreeNode unitNode = nodes[unit.ID];
-			unit.NameChanged-= UnitNameChangedMethod;
+			unit.NameChanged -= UnitNameChangedMethod;
 
-			if (unitNode!=null)
+			if (unitNode != null)
 			{
 				unitNode.Remove();
 				nodes.Remove(unit.ID);
 			}
 		}
 
-
-		private void contextMenu_Popup(object sender, System.EventArgs e)
-		{
-			TreeNode node = treeView.SelectedNode;
-			Object tag = (node != null) ? node.Tag : null;
-
-			if (tag is Unit)
-			{
-				miDeleteUnit.Visible = true;
-				miEditUnit.Visible = true;
-				miEditArmy.Visible = false;
-			}
-			else if (tag is Army)
-			{
-				miDeleteUnit.Visible = false;
-				miEditUnit.Visible = false;
-				miEditArmy.Visible = true;
-			}
-			else
-			{
-				miDeleteUnit.Visible = false;
-				miEditUnit.Visible = false;
-				miEditArmy.Visible = false;
-			}
-		}
-
 		private void treeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
 		{
 			if (e.Button == MouseButtons.Right)
 			{
 				TreeNode tn = treeView.GetNodeAt(e.X, e.Y);
 
-				if (tn!=null)
+				if (tn != null)
 				{
 					treeView.SelectedNode = tn;
 				}
@@ -407,19 +234,19 @@
 
 			if (selected.Tag != null && selected.Tag is Unit)
 			{
-				Unit unit = (Unit) selected.Tag;
+				Unit unit = (Unit)selected.Tag;
 				commandStack.Execute(new RemoveUnitCommand(unit));
 			}
 		}
 
 		private void miEdit_Click(object sender, System.EventArgs e)
-		{	
+		{
 			EditTreeItem();
 		}
 
 		private void treeView_DoubleClick(object sender, System.EventArgs e)
 		{
-			EditTreeItem();			
+			EditTreeItem();
 		}
 
 		private void EditTreeItem()
@@ -429,7 +256,7 @@
 
 			if (tagData is Unit)
 			{
-				Unit unit = (Unit) tagData;
+				Unit unit = (Unit)tagData;
 				MdiParent.OpenUnitDialog(unit);
 			}
 			else if (tagData is Army)
@@ -458,24 +285,12 @@
 		{
 			TreeNode node = nodes[obj.ID];
 
-			if (node!=null)
+			if (node != null)
 			{
 				node.Text = obj.Name;
 			}
 		}
 
-		private void toolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
-		{
-			if (e.Button == bttnDelete)
-			{
-				DeleteUnit();
-			}
-			else if (e.Button == bttnEdit)
-			{
-				EditTreeItem();
-			}
-		}
-
 		private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
 		{
 			TreeNode node = treeView.SelectedNode;
@@ -495,5 +310,34 @@
 			FrmEditArmy editForm = new FrmEditArmy(commandStack, army);
 			editForm.ShowDialog(this.ParentForm);
 		}
+
+		private void bttnEdit_Click(object sender, EventArgs e)
+		{
+			EditTreeItem();
+		}
+
+		private void bttnDelete_Click(object sender, EventArgs e)
+		{
+			DeleteUnit();
+		}
+
+		private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
+		{
+			TreeNode node = treeView.SelectedNode;
+			Object tag = (node != null) ? node.Tag : null;
+			bool tagIsUnit = (tag is Unit);
+			bool tagIsArmy = (tag is Army);
+
+			if (!tagIsUnit && !tagIsArmy)
+			{
+				e.Cancel = true;
+			}
+			else
+			{
+				miDeleteUnit.Visible = tagIsUnit;
+				miEditUnit.Visible = tagIsUnit;
+				miEditArmy.Visible = tagIsArmy;
+			}
+		}
 	}
 }