Mercurial > repos > IBBoard.WarFoundry.GUI.WinForms
view FrmNewUnitFromTree.cs @ 251:848fb363a8cb
Added tag single-button-ui for changeset 694f23814ec2
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 09 Oct 2011 20:48:21 +0100 |
parents | 694f23814ec2 |
children |
line wrap: on
line source
using System; using System.ComponentModel; using System.Windows.Forms; using IBBoard.Lang; using IBBoard.WarFoundry.API; using IBBoard.WarFoundry.API.Objects; using IBBoard.Windows.Forms; using IBBoard.Windows.Forms.I18N; namespace IBBoard.WarFoundry.GUI.WinForms { public partial class FrmNewUnitFromTree : IBBForm { public FrmNewUnitFromTree() { InitializeComponent(); WarFoundryCore.ArmyChanged += new ArmyChangedDelegate(ArmyChanged); TranslateForm(); Translation.TranslationChanged += new MethodInvoker(TranslateForm); } private void TranslateForm() { ControlTranslator.TranslateControl(this); ControlTranslator.TranslateComponent(addUnitMenuItem); } private void ArmyChanged(Army oldArmy, Army newArmy) { unitTypeTree.Nodes.Clear(); if (newArmy != null) { BuildTree(newArmy.Race); } } private void BuildTree(Race race) { foreach (Category cat in race.Categories) { UnitType[] unitTypes = race.GetUnitTypes(cat); if (unitTypes.Length > 0) { AddCategoryUnitTypesToTree(cat, unitTypes); } } unitTypeTree.Show(); } private void AddCategoryUnitTypesToTree(Category cat, UnitType[] unitTypes) { TreeNode[] unitNodes = new TreeNode[unitTypes.Length]; for (int i = 0; i < unitTypes.Length; i++) { UnitType unitType = unitTypes[i]; TreeNode temp = new TreeNode(unitType.Name); temp.Tag = unitType; unitNodes[i] = temp; } TreeNode catTemp = new TreeNode(cat.Name, unitNodes); catTemp.Tag = cat; unitTypeTree.Nodes.Add(catTemp); catTemp.ExpandAll(); } private void unitTypeTree_DoubleClick(object sender, EventArgs e) { AddUnitType(); } private void AddUnitType() { TreeNode selected = unitTypeTree.SelectedNode; AddUnitType(selected); } private void AddUnitType(TreeNode selected) { object tagData = selected.Tag; if (tagData is UnitType) { UnitType unit = (UnitType)tagData; Category cat = (Category)selected.Parent.Tag; MdiParent.CreateUnitInCategory(unit, cat); } } public new FrmMain MdiParent { get { return (FrmMain)base.MdiParent; } set { base.MdiParent = value; } } private void AddUnitClicked(object sender, EventArgs e) { TreeNode node = unitTypeTree.SelectedNode; if (node != null) { AddUnitType(node); } } private void contextMenu_Opening(object sender, CancelEventArgs e) { TreeNode node = unitTypeTree.SelectedNode; e.Cancel = (node == null || !(node.Tag is UnitType)); } private void unitTypeTree_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { TreeNode tn = unitTypeTree.GetNodeAt(e.X, e.Y); unitTypeTree.SelectedNode = tn; } } } }