Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.WinForms
annotate FrmArmyTree.cs @ 226:4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
* Fix up translations
* Correct enabling of menu item
* Add translation text
* Update army names in tree and app title when edited
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Mon, 29 Aug 2011 20:53:53 +0100 |
parents | 5233147ca7e4 |
children | 870877498db9 |
rev | line source |
---|---|
190 | 1 // This file (FrmArmyTree.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard. |
2 // | |
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. | |
4 | |
5 using System; | |
6 using System.Drawing; | |
7 using System.Collections.Generic; | |
8 using System.ComponentModel; | |
9 using System.Windows.Forms; | |
10 using IBBoard.Commands; | |
11 using IBBoard.Lang; | |
12 using IBBoard.Windows.Forms.I18N; | |
13 using IBBoard.Windows.Forms; | |
14 using IBBoard.WarFoundry.API; | |
15 using IBBoard.WarFoundry.API.Commands; | |
16 using IBBoard.WarFoundry.API.Objects; | |
17 | |
18 namespace IBBoard.WarFoundry.GUI.WinForms | |
19 { | |
20 /// <summary> | |
21 /// Summary description for FrmArmyTree. | |
22 /// </summary> | |
23 public class FrmArmyTree : IBBoard.Windows.Forms.IBBForm | |
24 { | |
25 private System.Windows.Forms.TreeView treeView; | |
26 private IContainer components; | |
27 private Dictionary<string, TreeNode> nodes; | |
28 private System.Windows.Forms.ContextMenu contextMenu; | |
29 private IBBMenuItem miDeleteUnit; | |
30 private IBBMenuItem miEditUnit; | |
31 | |
32 private ObjectAddDelegate UnitAddedMethod; | |
33 private ObjectRemoveDelegate UnitRemovedMethod; | |
34 private StringValChangedDelegate UnitNameChangedMethod, ArmyNameChangedMethod, TreeNameChangedMethod; | |
35 private ToolBar toolBar; | |
36 private IBBToolBarButton bttnEdit; | |
37 private IBBToolBarButton bttnDelete; | |
38 private ImageList imageList; | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
39 private IBBMenuItem miEditArmy; |
190 | 40 private CommandStack commandStack; |
41 public GameSystem CurrentGameSystem | |
42 { | |
43 get { return WarFoundryCore.CurrentGameSystem; } | |
44 set { WarFoundryCore.CurrentGameSystem = value; } | |
45 } | |
46 | |
47 public FrmArmyTree(CommandStack cmdStack) | |
48 { | |
49 commandStack = cmdStack; | |
50 InitializeComponent(); | |
51 UnitAddedMethod = new ObjectAddDelegate(UnitAdded); | |
52 UnitRemovedMethod = new ObjectRemoveDelegate(UnitRemoved); | |
53 UnitNameChangedMethod = new StringValChangedDelegate(UpdateUnitName); | |
54 ArmyNameChangedMethod = new StringValChangedDelegate(UpdateArmyName); | |
55 TreeNameChangedMethod = new StringValChangedDelegate(FrmArmyTree_TreeNameChanged); | |
56 nodes = new Dictionary<string, TreeNode>(); | |
226
4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
225
diff
changeset
|
57 this.Name = "ArmyTree"; |
4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
225
diff
changeset
|
58 miDeleteUnit.Name = "miDeleteUnit"; |
4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
225
diff
changeset
|
59 miEditUnit.Name = "miEditUnit"; |
4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
225
diff
changeset
|
60 miEditArmy.Name = "miEditArmy"; |
190 | 61 WarFoundryCore.ArmyChanged+= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged); |
62 TranslateForm(); | |
63 Translation.TranslationChanged += new MethodInvoker(TranslateForm); | |
64 } | |
65 | |
66 private void TranslateForm() | |
67 { | |
68 ControlTranslator.TranslateControl(this); | |
69 | |
70 foreach (Component comp in components.Components) | |
71 { | |
72 ControlTranslator.TranslateComponent(comp); | |
73 } | |
74 | |
75 foreach (IBBMenuItem mi in contextMenu.MenuItems) | |
76 { | |
77 ControlTranslator.TranslateComponent(mi); | |
78 } | |
226
4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
225
diff
changeset
|
79 |
190 | 80 foreach (TreeNode node in nodes.Values) |
81 { | |
82 node.Text = CreateNodeName((ICostedWarFoundryObject)node.Tag); | |
83 } | |
84 } | |
85 | |
86 /// <summary> | |
87 /// Clean up any resources being used. | |
88 /// </summary> | |
89 protected override void Dispose( bool disposing ) | |
90 { | |
91 if( disposing ) | |
92 { | |
93 if(components != null) | |
94 { | |
95 components.Dispose(); | |
96 } | |
97 } | |
98 base.Dispose( disposing ); | |
99 Translation.TranslationChanged -= new MethodInvoker(TranslateForm); | |
100 WarFoundryCore.ArmyChanged -= new ArmyChangedDelegate(FrmArmyTree_ArmyChanged); | |
101 } | |
102 | |
103 #region Windows Form Designer generated code | |
104 /// <summary> | |
105 /// Required method for Designer support - do not modify | |
106 /// the contents of this method with the code editor. | |
107 /// </summary> | |
108 private void InitializeComponent() | |
109 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
110 this.components = new System.ComponentModel.Container(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
111 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmArmyTree)); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
112 this.contextMenu = new System.Windows.Forms.ContextMenu(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
113 this.miEditUnit = new IBBoard.Windows.Forms.IBBMenuItem(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
114 this.miDeleteUnit = new IBBoard.Windows.Forms.IBBMenuItem(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
115 this.imageList = new System.Windows.Forms.ImageList(this.components); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
116 this.toolBar = new System.Windows.Forms.ToolBar(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
117 this.bttnEdit = new IBBoard.Windows.Forms.IBBToolBarButton(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
118 this.bttnDelete = new IBBoard.Windows.Forms.IBBToolBarButton(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
119 this.treeView = new System.Windows.Forms.TreeView(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
120 this.miEditArmy = new IBBoard.Windows.Forms.IBBMenuItem(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
121 this.SuspendLayout(); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
122 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
123 // contextMenu |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
124 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
125 this.contextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
126 this.miEditArmy, |
190 | 127 this.miEditUnit, |
128 this.miDeleteUnit}); | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
129 this.contextMenu.Popup += new System.EventHandler(this.contextMenu_Popup); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
130 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
131 // miEditUnit |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
132 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
133 this.miEditUnit.Index = 1; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
134 this.miEditUnit.Text = "&edit unit"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
135 this.miEditUnit.Click += new System.EventHandler(this.miEdit_Click); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
136 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
137 // miDeleteUnit |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
138 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
139 this.miDeleteUnit.Index = 2; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
140 this.miDeleteUnit.Text = "&delete unit"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
141 this.miDeleteUnit.Click += new System.EventHandler(this.miDelete_Click); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
142 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
143 // imageList |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
144 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
145 this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream"))); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
146 this.imageList.TransparentColor = System.Drawing.Color.Transparent; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
147 this.imageList.Images.SetKeyName(0, "gtk-edit.png"); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
148 this.imageList.Images.SetKeyName(1, "edit-delete.png"); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
149 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
150 // toolBar |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
151 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
152 this.toolBar.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] { |
190 | 153 this.bttnEdit, |
154 this.bttnDelete}); | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
155 this.toolBar.ButtonSize = new System.Drawing.Size(16, 16); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
156 this.toolBar.DropDownArrows = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
157 this.toolBar.ImageList = this.imageList; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
158 this.toolBar.Location = new System.Drawing.Point(0, 0); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
159 this.toolBar.Name = "toolBar"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
160 this.toolBar.ShowToolTips = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
161 this.toolBar.Size = new System.Drawing.Size(240, 28); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
162 this.toolBar.TabIndex = 3; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
163 this.toolBar.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar_ButtonClick); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
164 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
165 // bttnEdit |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
166 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
167 this.bttnEdit.Enabled = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
168 this.bttnEdit.ImageIndex = 0; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
169 this.bttnEdit.Name = "bttnEdit"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
170 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
171 // bttnDelete |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
172 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
173 this.bttnDelete.Enabled = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
174 this.bttnDelete.ImageIndex = 1; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
175 this.bttnDelete.Name = "bttnDelete"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
176 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
177 // treeView |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
178 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
179 this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
180 | System.Windows.Forms.AnchorStyles.Left) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
181 | System.Windows.Forms.AnchorStyles.Right))); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
182 this.treeView.ContextMenu = this.contextMenu; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
183 this.treeView.FullRowSelect = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
184 this.treeView.Location = new System.Drawing.Point(0, 28); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
185 this.treeView.Name = "treeView"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
186 this.treeView.Size = new System.Drawing.Size(240, 250); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
187 this.treeView.TabIndex = 0; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
188 this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
189 this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
190 this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
191 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
192 // miEditArmy |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
193 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
194 this.miEditArmy.Index = 0; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
195 this.miEditArmy.Text = "&edit army"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
196 this.miEditArmy.Click += new System.EventHandler(this.miEditArmy_Click); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
197 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
198 // FrmArmyTree |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
199 // |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
200 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
201 this.ClientSize = new System.Drawing.Size(240, 277); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
202 this.ControlBox = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
203 this.Controls.Add(this.toolBar); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
204 this.Controls.Add(this.treeView); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
205 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
206 this.MaximizeBox = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
207 this.MinimizeBox = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
208 this.Name = "FrmArmyTree"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
209 this.Text = "FrmArmyTree"; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
210 this.ResumeLayout(false); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
211 this.PerformLayout(); |
190 | 212 |
213 } | |
214 #endregion | |
215 | |
216 private void ClearArmy() | |
217 { | |
218 nodes.Clear(); | |
219 treeView.Nodes.Clear(); | |
220 } | |
221 | |
222 private void SetArmy(Army army) | |
223 { | |
224 ClearArmy(); | |
225 | |
226 if (army != null) | |
227 { | |
228 ArmyCategory[] cats = army.Categories; | |
229 TreeNode[] catNodes = new TreeNode[cats.Length]; | |
230 Unit[] units; | |
231 | |
232 for (int i = 0; i < cats.Length; i++) | |
233 { | |
234 ArmyCategory cat = cats[i]; | |
235 units = army.GetUnits(cat); | |
236 cat.NameChanged += TreeNameChangedMethod; | |
237 cat.PointsValueChanged += NodePointsValueChanged; | |
238 TreeNode[] unitNodes = new TreeNode[units.Length]; | |
239 TreeNode temp; | |
240 | |
241 for (int j = 0; j < units.Length; j++) | |
242 { | |
243 unitNodes[j] = CreateTreeNode(units[j]); | |
244 } | |
245 | |
246 temp = new TreeNode(CreateNodeName(cat), unitNodes); | |
247 temp.Tag = cat; | |
248 catNodes[i] = temp; | |
249 nodes[cat.ID] = temp; | |
250 } | |
251 | |
252 TreeNode root = new TreeNode(CreateNodeName(army), catNodes); | |
253 root.Tag = army; | |
254 army.PointsValueChanged += NodePointsValueChanged; | |
255 nodes[army.ID] = root; | |
256 treeView.Nodes.Add(root); | |
257 root.ExpandAll(); | |
258 } | |
259 } | |
260 | |
261 private string CreateNodeName(ICostedWarFoundryObject obj) | |
262 { | |
193 | 263 return Translation.GetTranslation("treeNodeText", "{0} ({1} pts)", obj.Name, obj.Points, CurrentGameSystem.GetPointsAbbrev(obj.Points)); |
190 | 264 } |
265 | |
266 private void NodePointsValueChanged(WarFoundryObject obj, double oldValue, double newValue) | |
267 { | |
268 if (obj is ICostedWarFoundryObject) | |
269 { | |
270 SetNodeName(obj); | |
271 } | |
272 } | |
273 | |
274 private void SetNodeName(WarFoundryObject obj) | |
275 { | |
276 TreeNode node = nodes[obj.ID]; | |
277 | |
278 if (node != null) | |
279 { | |
280 node.Text = CreateNodeName((ICostedWarFoundryObject)obj); | |
281 } | |
282 } | |
283 | |
284 private TreeNode CreateTreeNode(Unit unit) | |
285 { | |
286 TreeNode temp = new TreeNode(CreateNodeName(unit)); | |
287 temp.Tag = unit; | |
288 unit.NameChanged+= UnitNameChangedMethod; | |
289 unit.PointsValueChanged += NodePointsValueChanged; | |
290 nodes[unit.ID] = temp; | |
291 return temp; | |
292 } | |
293 | |
294 public void FrmArmyTree_ArmyChanged(Army oldArmy, Army newArmy) | |
295 { | |
296 if (oldArmy != null) | |
297 { | |
226
4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
225
diff
changeset
|
298 oldArmy.NameChanged -= ArmyNameChangedMethod; |
190 | 299 oldArmy.UnitAdded -= UnitAddedMethod; |
300 oldArmy.UnitRemoved -= UnitRemovedMethod; | |
301 oldArmy.PointsValueChanged -= NodePointsValueChanged; | |
302 } | |
303 | |
304 if (newArmy != null) | |
305 { | |
226
4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
225
diff
changeset
|
306 newArmy.NameChanged += ArmyNameChangedMethod; |
190 | 307 newArmy.UnitAdded += UnitAddedMethod; |
308 newArmy.UnitRemoved += UnitRemovedMethod; | |
309 newArmy.PointsValueChanged += NodePointsValueChanged; | |
310 } | |
311 | |
312 SetArmy(newArmy); | |
313 } | |
314 | |
315 private void UnitAdded(WarFoundryObject obj) | |
316 { | |
317 if (obj is Unit) | |
318 { | |
319 Unit unit = (Unit)obj; | |
320 ArmyCategory cat = unit.Category; | |
321 TreeNode parent = nodes[cat.ID]; | |
322 TreeNode unitNode = CreateTreeNode(unit); | |
323 parent.Nodes.Add(unitNode); | |
324 parent.Expand(); //make sure it's expanded | |
325 } | |
326 } | |
327 | |
328 public new FrmMain MdiParent | |
329 { | |
330 get { return (FrmMain) base.MdiParent; } | |
331 set { base.MdiParent = value; } | |
332 } | |
333 | |
334 private void UnitRemoved(WarFoundryObject obj) | |
335 { | |
336 if (obj is Unit) | |
337 { | |
338 Unit unit = (Unit)obj; | |
339 RemoveUnitFromTree(unit); | |
340 } | |
341 } | |
342 | |
343 private void RemoveUnitFromTree(Unit unit) | |
344 { | |
345 TreeNode unitNode = nodes[unit.ID]; | |
346 unit.NameChanged-= UnitNameChangedMethod; | |
347 | |
348 if (unitNode!=null) | |
349 { | |
350 unitNode.Remove(); | |
351 nodes.Remove(unit.ID); | |
352 } | |
353 } | |
354 | |
355 | |
356 private void contextMenu_Popup(object sender, System.EventArgs e) | |
357 { | |
358 TreeNode node = treeView.SelectedNode; | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
359 Object tag = (node != null) ? node.Tag : null; |
190 | 360 |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
361 if (tag is Unit) |
190 | 362 { |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
363 miDeleteUnit.Visible = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
364 miEditUnit.Visible = true; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
365 miEditArmy.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
366 } |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
367 else if (tag is Army) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
368 { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
369 miDeleteUnit.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
370 miEditUnit.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
371 miEditArmy.Visible = true; |
190 | 372 } |
373 else | |
374 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
375 miDeleteUnit.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
376 miEditUnit.Visible = false; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
377 miEditArmy.Visible = false; |
190 | 378 } |
379 } | |
380 | |
381 private void treeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) | |
382 { | |
383 if (e.Button == MouseButtons.Right) | |
384 { | |
385 TreeNode tn = treeView.GetNodeAt(e.X, e.Y); | |
386 | |
387 if (tn!=null) | |
388 { | |
389 treeView.SelectedNode = tn; | |
390 } | |
391 else | |
392 { | |
393 treeView.SelectedNode = null; | |
394 } | |
395 } | |
396 } | |
397 | |
398 private void miDelete_Click(object sender, System.EventArgs e) | |
399 { | |
400 DeleteUnit(); | |
401 } | |
402 | |
403 private void DeleteUnit() | |
404 { | |
405 | |
406 TreeNode selected = treeView.SelectedNode; | |
407 | |
408 if (selected.Tag != null && selected.Tag is Unit) | |
409 { | |
410 Unit unit = (Unit) selected.Tag; | |
411 commandStack.Execute(new RemoveUnitCommand(unit)); | |
412 } | |
413 } | |
414 | |
415 private void miEdit_Click(object sender, System.EventArgs e) | |
416 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
417 EditTreeItem(); |
190 | 418 } |
419 | |
420 private void treeView_DoubleClick(object sender, System.EventArgs e) | |
421 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
422 EditTreeItem(); |
190 | 423 } |
424 | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
425 private void EditTreeItem() |
190 | 426 { |
427 TreeNode selected = treeView.SelectedNode; | |
428 object tagData = selected.Tag; | |
429 | |
430 if (tagData is Unit) | |
431 { | |
432 Unit unit = (Unit) tagData; | |
433 MdiParent.OpenUnitDialog(unit); | |
434 } | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
435 else if (tagData is Army) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
436 { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
437 EditArmy((Army)tagData); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
438 } |
190 | 439 } |
440 | |
441 private void UpdateUnitName(WarFoundryObject obj, string oldValue, string newValue) | |
442 { | |
443 if (obj is ICostedWarFoundryObject) | |
444 { | |
445 SetNodeName(obj); | |
446 } | |
447 } | |
448 | |
449 private void UpdateArmyName(WarFoundryObject obj, string oldValue, string newValue) | |
450 { | |
451 if (obj is Army) | |
452 { | |
226
4ada3252d1ea
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
225
diff
changeset
|
453 SetNodeName((Army)obj); |
190 | 454 } |
455 } | |
456 | |
457 private void FrmArmyTree_TreeNameChanged(WarFoundryObject obj, string oldValue, string newValue) | |
458 { | |
459 TreeNode node = nodes[obj.ID]; | |
460 | |
461 if (node!=null) | |
462 { | |
463 node.Text = obj.Name; | |
464 } | |
465 } | |
466 | |
467 private void toolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e) | |
468 { | |
469 if (e.Button == bttnDelete) | |
470 { | |
471 DeleteUnit(); | |
472 } | |
473 else if (e.Button == bttnEdit) | |
474 { | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
475 EditTreeItem(); |
190 | 476 } |
477 } | |
478 | |
479 private void treeView_AfterSelect(object sender, TreeViewEventArgs e) | |
480 { | |
481 TreeNode node = treeView.SelectedNode; | |
482 | |
483 bttnDelete.Enabled = (node != null && node.Tag is Unit); | |
225
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
484 bttnEdit.Enabled = (node != null && (node.Tag is Unit || node.Tag is Army)); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
485 } |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
486 |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
487 private void miEditArmy_Click(object sender, EventArgs e) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
488 { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
489 Army army = treeView.SelectedNode.Tag as Army; |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
490 EditArmy(army); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
491 } |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
492 |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
493 private void EditArmy(Army army) |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
494 { |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
495 FrmEditArmy editForm = new FrmEditArmy(commandStack, army); |
5233147ca7e4
Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents:
198
diff
changeset
|
496 editForm.ShowDialog(this.ParentForm); |
190 | 497 } |
498 } | |
499 } |