Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.WinForms
annotate FrmArmyTree.cs @ 61:a0ec03c24cd9
Fixes #171: Open unit form when unit is created
* Move unit form opening code to parent window (i.e. FrmMain)
* Add code to open form on first create (but not on re-add - e.g. undo create and redo - because we don't know if it was open before or not)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 19 Sep 2009 16:01:43 +0000 |
parents | f272e70a9f71 |
children | 0e7c257ca8d6 |
rev | line source |
---|---|
33 | 1 // This file (FrmArmyTree.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard. |
2 // | |
36 | 3 // 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. |
33 | 4 |
5 using System; | |
6 using System.Drawing; | |
45
1c74b51abac1
Re #137: Remove use of old collections
IBBoard <dev@ibboard.co.uk>
parents:
44
diff
changeset
|
7 using System.Collections.Generic; |
33 | 8 using System.ComponentModel; |
9 using System.Windows.Forms; | |
10 using IBBoard.Commands; | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
11 using IBBoard.Windows.Forms.I18N; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
12 using IBBoard.Windows.Forms; |
33 | 13 using IBBoard.WarFoundry.API; |
14 using IBBoard.WarFoundry.API.Commands; | |
27
526fefefb16b
Fixes #91: Fix WinForms rendering of unit stats
IBBoard <dev@ibboard.co.uk>
parents:
24
diff
changeset
|
15 using IBBoard.WarFoundry.API.Objects; |
526fefefb16b
Fixes #91: Fix WinForms rendering of unit stats
IBBoard <dev@ibboard.co.uk>
parents:
24
diff
changeset
|
16 |
40
740350673006
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
17 namespace IBBoard.WarFoundry.GUI.WinForms |
33 | 18 { |
19 /// <summary> | |
20 /// Summary description for FrmArmyTree. | |
21 /// </summary> | |
22 public class FrmArmyTree : IBBoard.Windows.Forms.IBBForm | |
23 { | |
24 private System.Windows.Forms.TreeView treeView; | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
25 private IContainer components; |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
26 private Dictionary<string, TreeNode> nodes; |
33 | 27 private System.Windows.Forms.ContextMenu contextMenu; |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
28 private IBBMenuItem miDelete; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
29 private IBBMenuItem miEdit; |
33 | 30 |
31 private ObjectAddDelegate UnitAddedMethod; | |
32 private ObjectRemoveDelegate UnitRemovedMethod; | |
33 private StringValChangedDelegate UnitNameChangedMethod, ArmyNameChangedMethod, TreeNameChangedMethod; | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
34 private ToolBar toolBar; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
35 private IBBToolBarButton bttnEdit; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
36 private IBBToolBarButton bttnDelete; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
37 private ImageList imageList; |
33 | 38 private CommandStack commandStack; |
39 | |
40 public FrmArmyTree(CommandStack cmdStack) | |
41 { | |
42 commandStack = cmdStack; | |
43 InitializeComponent(); | |
61
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
44 UnitAddedMethod = new ObjectAddDelegate(UnitAdded); |
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
45 UnitRemovedMethod = new ObjectRemoveDelegate(UnitRemoved); |
33 | 46 UnitNameChangedMethod = new StringValChangedDelegate(UpdateUnitName); |
47 ArmyNameChangedMethod = new StringValChangedDelegate(UpdateArmyName); | |
48 TreeNameChangedMethod = new StringValChangedDelegate(FrmArmyTree_TreeNameChanged); | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
49 nodes = new Dictionary<string, TreeNode>(); |
33 | 50 this.Name = "ArmyTree"; |
51 WarFoundryCore.ArmyChanged+= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged); | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
52 |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
53 foreach (Control ctrl in Controls) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
54 { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
55 ControlTranslator.TranslateControl(ctrl); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
56 } |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
57 |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
58 foreach (Component comp in components.Components) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
59 { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
60 ControlTranslator.TranslateComponent(comp); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
61 } |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
62 |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
63 foreach (IBBMenuItem mi in contextMenu.MenuItems) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
64 { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
65 ControlTranslator.TranslateComponent(mi); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
66 } |
33 | 67 } |
68 | |
69 /// <summary> | |
70 /// Clean up any resources being used. | |
71 /// </summary> | |
72 protected override void Dispose( bool disposing ) | |
73 { | |
74 if( disposing ) | |
75 { | |
76 if(components != null) | |
77 { | |
78 components.Dispose(); | |
79 } | |
80 } | |
81 base.Dispose( disposing ); | |
82 } | |
83 | |
84 #region Windows Form Designer generated code | |
85 /// <summary> | |
86 /// Required method for Designer support - do not modify | |
87 /// the contents of this method with the code editor. | |
88 /// </summary> | |
89 private void InitializeComponent() | |
90 { | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
91 this.components = new System.ComponentModel.Container(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
92 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmArmyTree)); |
33 | 93 this.contextMenu = new System.Windows.Forms.ContextMenu(); |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
94 this.miEdit = new IBBoard.Windows.Forms.IBBMenuItem(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
95 this.miDelete = new IBBoard.Windows.Forms.IBBMenuItem(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
96 this.imageList = new System.Windows.Forms.ImageList(this.components); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
97 this.toolBar = new System.Windows.Forms.ToolBar(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
98 this.bttnEdit = new IBBoard.Windows.Forms.IBBToolBarButton(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
99 this.bttnDelete = new IBBoard.Windows.Forms.IBBToolBarButton(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
100 this.treeView = new System.Windows.Forms.TreeView(); |
33 | 101 this.SuspendLayout(); |
102 // | |
103 // contextMenu | |
104 // | |
105 this.contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
106 this.miEdit, |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
107 this.miDelete}); |
33 | 108 this.contextMenu.Popup += new System.EventHandler(this.contextMenu_Popup); |
109 // | |
110 // miEdit | |
111 // | |
112 this.miEdit.Index = 0; | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
113 this.miEdit.Text = "&edit unit"; |
33 | 114 this.miEdit.Click += new System.EventHandler(this.miEdit_Click); |
115 // | |
116 // miDelete | |
117 // | |
118 this.miDelete.Index = 1; | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
119 this.miDelete.Text = "&delete unit"; |
33 | 120 this.miDelete.Click += new System.EventHandler(this.miDelete_Click); |
121 // | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
122 // imageList |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
123 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
124 this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer) (resources.GetObject("imageList.ImageStream"))); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
125 this.imageList.TransparentColor = System.Drawing.Color.Transparent; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
126 this.imageList.Images.SetKeyName(0, "gtk-edit.png"); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
127 this.imageList.Images.SetKeyName(1, "edit-delete.png"); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
128 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
129 // toolBar |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
130 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
131 this.toolBar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
132 this.bttnEdit, |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
133 this.bttnDelete}); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
134 this.toolBar.ButtonSize = new System.Drawing.Size(16, 16); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
135 this.toolBar.DropDownArrows = true; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
136 this.toolBar.ImageList = this.imageList; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
137 this.toolBar.Location = new System.Drawing.Point(0, 0); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
138 this.toolBar.Name = "toolBar"; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
139 this.toolBar.ShowToolTips = true; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
140 this.toolBar.Size = new System.Drawing.Size(240, 28); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
141 this.toolBar.TabIndex = 3; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
142 this.toolBar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar_ButtonClick); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
143 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
144 // bttnEdit |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
145 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
146 this.bttnEdit.Enabled = false; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
147 this.bttnEdit.ImageIndex = 0; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
148 this.bttnEdit.Name = "bttnEdit"; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
149 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
150 // bttnDelete |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
151 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
152 this.bttnDelete.Enabled = false; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
153 this.bttnDelete.ImageIndex = 1; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
154 this.bttnDelete.Name = "bttnDelete"; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
155 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
156 // treeView |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
157 // |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
158 this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles) ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
159 | System.Windows.Forms.AnchorStyles.Left) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
160 | System.Windows.Forms.AnchorStyles.Right))); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
161 this.treeView.ContextMenu = this.contextMenu; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
162 this.treeView.FullRowSelect = true; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
163 this.treeView.Location = new System.Drawing.Point(0, 28); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
164 this.treeView.Name = "treeView"; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
165 this.treeView.Size = new System.Drawing.Size(240, 250); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
166 this.treeView.TabIndex = 0; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
167 this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
168 this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
169 this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
170 // |
33 | 171 // FrmArmyTree |
172 // | |
173 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); | |
174 this.ClientSize = new System.Drawing.Size(240, 277); | |
175 this.ControlBox = false; | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
176 this.Controls.Add(this.toolBar); |
33 | 177 this.Controls.Add(this.treeView); |
178 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; | |
179 this.MaximizeBox = false; | |
180 this.MinimizeBox = false; | |
181 this.Name = "FrmArmyTree"; | |
182 this.Text = "FrmArmyTree"; | |
183 this.ResumeLayout(false); | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
184 this.PerformLayout(); |
33 | 185 |
186 } | |
187 #endregion | |
188 | |
189 private void ClearArmy() | |
190 { | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
191 nodes.Clear(); |
33 | 192 treeView.Nodes.Clear(); |
193 } | |
194 | |
195 private void SetArmy(Army army) | |
196 { | |
197 ClearArmy(); | |
198 | |
199 if (army != null) | |
200 { | |
201 ArmyCategory[] cats = army.Categories; | |
202 TreeNode[] catNodes = new TreeNode[cats.Length]; | |
203 Unit[] units; | |
204 | |
205 for (int i = 0; i < cats.Length; i++) | |
206 { | |
207 units = army.GetUnits(cats[i]); | |
208 cats[i].NameChanged += TreeNameChangedMethod; | |
209 TreeNode[] unitNodes = new TreeNode[units.Length]; | |
210 TreeNode temp; | |
211 | |
212 for (int j = 0; j < units.Length; j++) | |
213 { | |
61
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
214 unitNodes[j] = CreateTreeNode(units[j]); |
33 | 215 } |
216 | |
217 temp = new TreeNode(cats[i].Name, unitNodes); | |
218 temp.Tag = cats[i]; | |
219 catNodes[i] = temp; | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
220 nodes[cats[i].ID] = temp; |
33 | 221 } |
222 | |
223 TreeNode root = new TreeNode(army.Name, catNodes); | |
224 root.Tag = army; | |
225 treeView.Nodes.Add(root); | |
226 root.ExpandAll(); | |
227 } | |
228 } | |
229 | |
61
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
230 private TreeNode CreateTreeNode(Unit unit) |
33 | 231 { |
232 TreeNode temp = new TreeNode(unit.Name); | |
233 temp.Tag = unit; | |
234 unit.NameChanged+= UnitNameChangedMethod; | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
235 nodes[unit.ID] = temp; |
33 | 236 return temp; |
237 } | |
238 | |
239 public void FrmArmyTree_ArmyChanged(Army oldArmy, Army newArmy) | |
240 { | |
241 if (oldArmy != null) | |
242 { | |
243 oldArmy.UnitAdded -= UnitAddedMethod; | |
244 oldArmy.UnitRemoved -= UnitRemovedMethod; | |
245 } | |
246 | |
247 if (newArmy != null) | |
248 { | |
249 newArmy.UnitAdded += UnitAddedMethod; | |
250 newArmy.UnitRemoved += UnitRemovedMethod; | |
251 } | |
252 | |
253 SetArmy(newArmy); | |
254 } | |
45
1c74b51abac1
Re #137: Remove use of old collections
IBBoard <dev@ibboard.co.uk>
parents:
44
diff
changeset
|
255 |
61
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
256 private void UnitAdded(WarFoundryObject obj) |
33 | 257 { |
258 if (obj is Unit) | |
259 { | |
260 Unit unit = (Unit)obj; | |
261 ArmyCategory cat = unit.Category; | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
262 TreeNode parent = nodes[cat.ID]; |
61
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
263 TreeNode unitNode = CreateTreeNode(unit); |
33 | 264 parent.Nodes.Add(unitNode); |
265 parent.Expand(); //make sure it's expanded | |
266 } | |
267 } | |
268 | |
61
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
269 public new FrmMain MdiParent |
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
270 { |
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
271 get { return (FrmMain) base.MdiParent; } |
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
272 set { base.MdiParent = value; } |
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
273 } |
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
274 |
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
275 private void UnitRemoved(WarFoundryObject obj) |
33 | 276 { |
277 if (obj is Unit) | |
278 { | |
279 Unit unit = (Unit)obj; | |
45
1c74b51abac1
Re #137: Remove use of old collections
IBBoard <dev@ibboard.co.uk>
parents:
44
diff
changeset
|
280 RemoveUnitFromTree(unit); |
33 | 281 } |
282 } | |
283 | |
45
1c74b51abac1
Re #137: Remove use of old collections
IBBoard <dev@ibboard.co.uk>
parents:
44
diff
changeset
|
284 private void RemoveUnitFromTree(Unit unit) |
33 | 285 { |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
286 TreeNode unitNode = nodes[unit.ID]; |
33 | 287 unit.NameChanged-= UnitNameChangedMethod; |
288 | |
289 if (unitNode!=null) | |
290 { | |
291 unitNode.Remove(); | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
292 nodes.Remove(unit.ID); |
33 | 293 } |
294 } | |
295 | |
296 | |
297 private void contextMenu_Popup(object sender, System.EventArgs e) | |
298 { | |
299 TreeNode node = treeView.SelectedNode; | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
300 |
33 | 301 if (node!=null && node.Tag is Unit) |
302 { | |
303 foreach(MenuItem item in contextMenu.MenuItems) | |
304 { | |
305 item.Visible = true; | |
306 } | |
307 } | |
308 else | |
309 { | |
310 foreach(MenuItem item in contextMenu.MenuItems) | |
311 { | |
312 item.Visible = false; | |
313 } | |
314 } | |
315 } | |
316 | |
317 private void treeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) | |
318 { | |
319 if (e.Button == MouseButtons.Right) | |
320 { | |
321 TreeNode tn = treeView.GetNodeAt(e.X, e.Y); | |
322 | |
323 if (tn!=null) | |
324 { | |
325 treeView.SelectedNode = tn; | |
326 } | |
327 else | |
328 { | |
329 treeView.SelectedNode = null; | |
330 } | |
331 } | |
332 } | |
333 | |
334 private void miDelete_Click(object sender, System.EventArgs e) | |
335 { | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
336 DeleteUnit(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
337 } |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
338 |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
339 private void DeleteUnit() |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
340 { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
341 |
33 | 342 TreeNode selected = treeView.SelectedNode; |
343 | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
344 if (selected.Tag != null && selected.Tag is Unit) |
33 | 345 { |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
346 Unit unit = (Unit) selected.Tag; |
33 | 347 commandStack.Execute(new RemoveUnitCommand(unit)); |
348 } | |
349 } | |
350 | |
351 private void miEdit_Click(object sender, System.EventArgs e) | |
352 { | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
353 EditUnit(); |
33 | 354 } |
355 | |
356 private void treeView_DoubleClick(object sender, System.EventArgs e) | |
357 { | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
358 EditUnit(); |
33 | 359 } |
360 | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
361 private void EditUnit() |
33 | 362 { |
363 TreeNode selected = treeView.SelectedNode; | |
50
c972fb283675
Fixes #149: Crash with edit on null tree item
IBBoard <dev@ibboard.co.uk>
parents:
49
diff
changeset
|
364 object tagData = selected.Tag; |
33 | 365 |
50
c972fb283675
Fixes #149: Crash with edit on null tree item
IBBoard <dev@ibboard.co.uk>
parents:
49
diff
changeset
|
366 if (tagData is Unit) |
33 | 367 { |
50
c972fb283675
Fixes #149: Crash with edit on null tree item
IBBoard <dev@ibboard.co.uk>
parents:
49
diff
changeset
|
368 Unit unit = (Unit) tagData; |
61
a0ec03c24cd9
Fixes #171: Open unit form when unit is created
IBBoard <dev@ibboard.co.uk>
parents:
57
diff
changeset
|
369 MdiParent.OpenUnitDialog(unit); |
33 | 370 } |
371 } | |
372 | |
373 private void UpdateUnitName(WarFoundryObject obj, string oldValue, string newValue) | |
374 { | |
375 if (obj is Unit) | |
376 { | |
377 Unit unit = (Unit)obj; | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
378 TreeNode node = nodes[unit.ID]; |
33 | 379 |
380 if (node!=null) | |
381 { | |
382 node.Text = unit.Name; | |
383 } | |
384 } | |
385 } | |
386 | |
387 private void UpdateArmyName(WarFoundryObject obj, string oldValue, string newValue) | |
388 { | |
389 if (obj is Army) | |
390 { | |
391 Army army = (Army)obj; | |
392 TreeNode node = treeView.Nodes[0]; | |
393 | |
394 if (node!=null) | |
395 { | |
396 node.Text = army.Name; | |
397 } | |
398 } | |
399 } | |
400 | |
401 private void FrmArmyTree_TreeNameChanged(WarFoundryObject obj, string oldValue, string newValue) | |
402 { | |
49
93b3d23147ba
Fixes #160: Army tree is visible when no army is available
IBBoard <dev@ibboard.co.uk>
parents:
45
diff
changeset
|
403 TreeNode node = nodes[obj.ID]; |
33 | 404 |
405 if (node!=null) | |
406 { | |
407 node.Text = obj.Name; | |
408 } | |
409 } | |
57
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
410 |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
411 private void toolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
412 { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
413 if (e.Button == bttnDelete) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
414 { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
415 DeleteUnit(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
416 } |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
417 else if (e.Button == bttnEdit) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
418 { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
419 EditUnit(); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
420 } |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
421 } |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
422 |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
423 private void treeView_AfterSelect(object sender, TreeViewEventArgs e) |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
424 { |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
425 TreeNode node = treeView.SelectedNode; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
426 |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
427 bttnDelete.Enabled = (node != null && node.Tag is Unit); |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
428 bttnEdit.Enabled = bttnDelete.Enabled; |
f272e70a9f71
Fixes #169: Add more obvious edit and delete options to Army Tree
IBBoard <dev@ibboard.co.uk>
parents:
50
diff
changeset
|
429 } |
33 | 430 } |
431 } |