annotate FrmArmyTree.cs @ 253:7243e6646926 default tip

Re #427: Resizable equipment dialog * Make equipment dialog resizable
author IBBoard <dev@ibboard.co.uk>
date Sat, 27 Apr 2013 16:10:08 +0100
parents d0454aae0241
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
1 using System;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
2 using System.Collections.Generic;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
3 using System.ComponentModel;
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
4 using System.Data;
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
5 using System.Drawing;
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
6 using System.Text;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
7 using System.Windows.Forms;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
8 using IBBoard.Commands;
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
9 using IBBoard.WarFoundry.API.Objects;
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
10 using IBBoard.WarFoundry.API;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
11 using IBBoard.Lang;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
12 using IBBoard.Windows.Forms.I18N;
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
13 using IBBoard.WarFoundry.API.Commands;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
14 using IBBoard.Windows.Forms;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
15
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
16 namespace IBBoard.WarFoundry.GUI.WinForms
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
17 {
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
18 public partial class FrmArmyTree : IBBoard.Windows.Forms.IBBForm
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
19 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
20 private Dictionary<string, TreeNode> nodes;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
21 private ObjectAddDelegate UnitAddedMethod;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
22 private ObjectRemoveDelegate UnitRemovedMethod;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
23 private StringValChangedDelegate UnitNameChangedMethod, ArmyNameChangedMethod, TreeNameChangedMethod;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
24 private CommandStack commandStack;
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
25 public GameSystem CurrentGameSystem
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
26 {
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
27 get { return WarFoundryCore.CurrentGameSystem; }
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
28 set { WarFoundryCore.CurrentGameSystem = value; }
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
29 }
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
30
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
31 public FrmArmyTree(CommandStack cmdStack)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
32 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
33 commandStack = cmdStack;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
34 InitializeComponent();
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
35 UnitAddedMethod = new ObjectAddDelegate(UnitAdded);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
36 UnitRemovedMethod = new ObjectRemoveDelegate(UnitRemoved);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
37 UnitNameChangedMethod = new StringValChangedDelegate(UpdateUnitName);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
38 ArmyNameChangedMethod = new StringValChangedDelegate(UpdateArmyName);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
39 TreeNameChangedMethod = new StringValChangedDelegate(FrmArmyTree_TreeNameChanged);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
40 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
41 this.Name = "ArmyTree";
4ada3252d1ea Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 225
diff changeset
42 miDeleteUnit.Name = "miDeleteUnit";
4ada3252d1ea Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 225
diff changeset
43 miEditUnit.Name = "miEditUnit";
4ada3252d1ea Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 225
diff changeset
44 miEditArmy.Name = "miEditArmy";
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
45 WarFoundryCore.ArmyChanged += new ArmyChangedDelegate(FrmArmyTree_ArmyChanged);
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
46 TranslateForm();
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
47 Translation.TranslationChanged += new MethodInvoker(TranslateForm);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
48 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
49
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
50 private void TranslateForm()
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
51 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
52 ControlTranslator.TranslateControl(this);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
53
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
54 foreach (Component comp in components.Components)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
55 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
56 ControlTranslator.TranslateComponent(comp);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
57 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
58
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
59 foreach (IBBToolStripMenuItem mi in contextMenuStrip.Items)
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
60 {
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
61 ControlTranslator.TranslateComponent(mi);
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
62 }
226
4ada3252d1ea Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 225
diff changeset
63
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
64 foreach (TreeNode node in nodes.Values)
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
65 {
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
66 node.Text = CreateNodeName((ICostedWarFoundryObject)node.Tag);
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
67 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
68 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
69 private void ClearArmy()
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
70 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
71 nodes.Clear();
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
72 treeView.Nodes.Clear();
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
73 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
74
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
75 private void SetArmy(Army army)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
76 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
77 ClearArmy();
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
78
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
79 if (army != null)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
80 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
81 ArmyCategory[] cats = army.Categories;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
82 TreeNode[] catNodes = new TreeNode[cats.Length];
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
83
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
84 for (int i = 0; i < cats.Length; i++)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
85 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
86 ArmyCategory cat = cats[i];
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
87 cat.NameChanged += TreeNameChangedMethod;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
88 cat.PointsValueChanged += NodePointsValueChanged;
245
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
89 TreeNode[] unitNodes = CreateChildNodes(army.GetMainUnits(cat));
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
90 TreeNode temp = new TreeNode(CreateNodeName(cat), unitNodes);
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
91 temp.Tag = cat;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
92 catNodes[i] = temp;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
93 nodes[cat.ID] = temp;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
94 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
95
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
96 TreeNode root = new TreeNode(CreateNodeName(army), catNodes);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
97 root.Tag = army;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
98 army.PointsValueChanged += NodePointsValueChanged;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
99 nodes[army.ID] = root;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
100 treeView.Nodes.Add(root);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
101 root.ExpandAll();
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
102 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
103 }
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
104
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
105 private string CreateNodeName(ICostedWarFoundryObject obj)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
106 {
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
107 return Translation.GetTranslation("treeNodeText", "{0} ({1} pts)", obj.Name, obj.Points, CurrentGameSystem.GetPointsAbbrev(obj.Points));
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
108 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
109
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
110 private void NodePointsValueChanged(WarFoundryObject obj, double oldValue, double newValue)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
111 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
112 if (obj is ICostedWarFoundryObject)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
113 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
114 SetNodeName(obj);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
115 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
116 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
117
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
118 private void SetNodeName(WarFoundryObject obj)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
119 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
120 TreeNode node = nodes[obj.ID];
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
121
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
122 if (node != null)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
123 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
124 node.Text = CreateNodeName((ICostedWarFoundryObject)obj);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
125 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
126 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
127
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
128 private TreeNode CreateTreeNode(Unit unit)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
129 {
245
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
130 TreeNode[] unitNodes = CreateChildNodes(unit.ContainedUnits);
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
131 TreeNode temp = new TreeNode(CreateNodeName(unit), unitNodes);
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
132 temp.Tag = unit;
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
133 unit.NameChanged += UnitNameChangedMethod;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
134 unit.PointsValueChanged += NodePointsValueChanged;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
135 nodes[unit.ID] = temp;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
136 return temp;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
137 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
138
245
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
139 private TreeNode[] CreateChildNodes(Unit[] containedUnits)
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
140 {
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
141 TreeNode[] unitNodes;
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
142
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
143 if (containedUnits.Length > 0)
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
144 {
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
145 unitNodes = new TreeNode[containedUnits.Length];
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
146
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
147 for (int j = 0; j < containedUnits.Length; j++)
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
148 {
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
149 unitNodes[j] = CreateTreeNode(containedUnits[j]);
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
150 }
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
151 }
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
152 else
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
153 {
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
154 unitNodes = new TreeNode[0];
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
155 }
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
156
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
157 return unitNodes;
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
158 }
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
159
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
160 public void FrmArmyTree_ArmyChanged(Army oldArmy, Army newArmy)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
161 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
162 if (oldArmy != null)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
163 {
226
4ada3252d1ea Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 225
diff changeset
164 oldArmy.NameChanged -= ArmyNameChangedMethod;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
165 oldArmy.UnitAdded -= UnitAddedMethod;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
166 oldArmy.UnitRemoved -= UnitRemovedMethod;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
167 oldArmy.PointsValueChanged -= NodePointsValueChanged;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
168 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
169
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
170 if (newArmy != null)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
171 {
226
4ada3252d1ea Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 225
diff changeset
172 newArmy.NameChanged += ArmyNameChangedMethod;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
173 newArmy.UnitAdded += UnitAddedMethod;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
174 newArmy.UnitRemoved += UnitRemovedMethod;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
175 newArmy.PointsValueChanged += NodePointsValueChanged;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
176 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
177
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
178 SetArmy(newArmy);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
179 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
180
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
181 private void UnitAdded(WarFoundryObject obj)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
182 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
183 if (obj is Unit)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
184 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
185 Unit unit = (Unit)obj;
245
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
186 TreeNode parent;
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
187
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
188 if (unit.ParentUnit == null)
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
189 {
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
190 ArmyCategory cat = unit.Category;
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
191 parent = nodes[cat.ID];
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
192 }
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
193 else
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
194 {
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
195 parent = nodes[unit.ParentUnit.ID];
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
196 }
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
197
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
198 TreeNode unitNode = CreateTreeNode(unit);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
199 parent.Nodes.Add(unitNode);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
200 parent.Expand(); //make sure it's expanded
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
201 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
202 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
203
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
204 public new FrmMain MdiParent
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
205 {
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
206 get { return (FrmMain)base.MdiParent; }
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
207 set { base.MdiParent = value; }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
208 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
209
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
210 private void UnitRemoved(WarFoundryObject obj)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
211 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
212 if (obj is Unit)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
213 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
214 Unit unit = (Unit)obj;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
215 RemoveUnitFromTree(unit);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
216 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
217 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
218
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
219 private void RemoveUnitFromTree(Unit unit)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
220 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
221 TreeNode unitNode = nodes[unit.ID];
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
222 unit.NameChanged -= UnitNameChangedMethod;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
223
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
224 if (unitNode != null)
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
225 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
226 unitNode.Remove();
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
227 nodes.Remove(unit.ID);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
228 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
229 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
230
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
231 private void treeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
232 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
233 if (e.Button == MouseButtons.Right)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
234 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
235 TreeNode tn = treeView.GetNodeAt(e.X, e.Y);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
236
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
237 if (tn != null)
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
238 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
239 treeView.SelectedNode = tn;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
240 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
241 else
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
242 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
243 treeView.SelectedNode = null;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
244 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
245 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
246 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
247
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
248 private void miDelete_Click(object sender, System.EventArgs e)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
249 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
250 DeleteUnit();
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
251 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
252
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
253 private void DeleteUnit()
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
254 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
255
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
256 TreeNode selected = treeView.SelectedNode;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
257
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
258 if (selected.Tag != null && selected.Tag is Unit)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
259 {
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
260 Unit unit = (Unit)selected.Tag;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
261 commandStack.Execute(new RemoveUnitCommand(unit));
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
262 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
263 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
264
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
265 private void miEdit_Click(object sender, System.EventArgs e)
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
266 {
225
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
267 EditTreeItem();
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
268 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
269
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
270 private void treeView_DoubleClick(object sender, System.EventArgs e)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
271 {
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
272 EditTreeItem();
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
273 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
274
225
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
275 private void EditTreeItem()
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
276 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
277 TreeNode selected = treeView.SelectedNode;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
278 object tagData = selected.Tag;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
279
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
280 if (tagData is Unit)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
281 {
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
282 Unit unit = (Unit)tagData;
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
283 MdiParent.OpenUnitDialog(unit);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
284 }
225
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
285 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
286 {
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
287 EditArmy((Army)tagData);
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
288 }
239
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
289 else if (tagData is ArmyCategory)
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
290 {
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
291 AddUnitFromCategory((ArmyCategory)tagData);
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
292 }
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
293 }
239
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
294
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
295 private void UpdateUnitName(WarFoundryObject obj, string oldValue, string newValue)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
296 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
297 if (obj is ICostedWarFoundryObject)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
298 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
299 SetNodeName(obj);
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
300 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
301 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
302
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
303 private void UpdateArmyName(WarFoundryObject obj, string oldValue, string newValue)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
304 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
305 if (obj is Army)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
306 {
226
4ada3252d1ea Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 225
diff changeset
307 SetNodeName((Army)obj);
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
308 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
309 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
310
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
311 private void FrmArmyTree_TreeNameChanged(WarFoundryObject obj, string oldValue, string newValue)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
312 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
313 TreeNode node = nodes[obj.ID];
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
314
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
315 if (node != null)
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
316 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
317 node.Text = obj.Name;
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
318 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
319 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
320
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
321 private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
322 {
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
323 TreeNode node = treeView.SelectedNode;
244
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
324 Object tag = (node != null) ? node.Tag : null;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
325 bool tagIsUnit = (tag is Unit);
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
326 bool tagIsUnitWithContained;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
327
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
328 if (tagIsUnit)
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
329 {
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
330 tagIsUnitWithContained = ((Unit)tag).UnitType.ContainedUnitTypes.Length > 0;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
331 }
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
332 else
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
333 {
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
334 tagIsUnitWithContained = false;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
335 }
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
336
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
337 bool tagIsArmy = (tag is Army);
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
338 bool tagIsCategory = (tag is ArmyCategory);
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
339 bttnAdd.Enabled = tagIsCategory || tagIsUnitWithContained;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
340 bttnDelete.Enabled = tagIsUnit;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
341 bttnEdit.Enabled = tagIsArmy || tagIsUnit;
225
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
342 }
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
343
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
344 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
345 {
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
346 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
347 EditArmy(army);
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
348 }
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
349
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
350 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
351 {
5233147ca7e4 Re #101: Make army names and sizes modifiable after creation
IBBoard <dev@ibboard.co.uk>
parents: 198
diff changeset
352 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
353 editForm.ShowDialog(this.ParentForm);
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
354 }
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
355
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
356 private void bttnEdit_Click(object sender, EventArgs e)
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
357 {
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
358 EditTreeItem();
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
359 }
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
360
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
361 private void bttnDelete_Click(object sender, EventArgs e)
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
362 {
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
363 DeleteUnit();
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
364 }
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
365
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
366 private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
367 {
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
368 TreeNode node = treeView.SelectedNode;
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
369 Object tag = (node != null) ? node.Tag : null;
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
370 bool tagIsUnit = (tag is Unit);
244
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
371 bool tagIsUnitWithContained;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
372
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
373 if (tagIsUnit)
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
374 {
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
375 tagIsUnitWithContained = ((Unit)tag).UnitType.ContainedUnitTypes.Length > 0;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
376 }
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
377 else
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
378 {
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
379 tagIsUnitWithContained = false;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
380 }
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
381
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
382 bool tagIsArmy = (tag is Army);
239
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
383 bool tagIsCategory = (tag is ArmyCategory);
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
384
239
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
385 if (!tagIsUnit && !tagIsArmy && !tagIsCategory)
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
386 {
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
387 e.Cancel = true;
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
388 }
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
389 else
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
390 {
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
391 miDeleteUnit.Visible = tagIsUnit;
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
392 miEditUnit.Visible = tagIsUnit;
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
393 miEditArmy.Visible = tagIsArmy;
244
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
394 miAddUnit.Visible = tagIsCategory || tagIsUnitWithContained;
234
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
395 }
870877498db9 Re #382: WinForms builds from Linux/Mono fail on Windows/.Net
IBBoard <dev@ibboard.co.uk>
parents: 226
diff changeset
396 }
239
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
397
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
398 private void miAddUnit_Click(object sender, EventArgs e)
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
399 {
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
400 AddUnit();
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
401 }
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
402
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
403 private void AddUnit()
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
404 {
244
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
405 object tag = treeView.SelectedNode.Tag;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
406
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
407 if (tag is Unit)
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
408 {
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
409 Unit unit = (Unit)tag;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
410 UnitType[] unitTypes = unit.UnitType.ContainedUnitTypes;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
411 FrmNewUnit newUnitFrm = new FrmNewUnit(WarFoundryCore.CurrentArmy, unitTypes);
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
412 DialogResult dr = newUnitFrm.ShowDialog(this);
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
413
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
414 if (dr == DialogResult.OK)
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
415 {
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
416 UnitType newUnit = newUnitFrm.SelectedUnit;
245
d0454aae0241 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 244
diff changeset
417 CreateAndAddUnitCommand cmd = new CreateAndAddUnitCommand(newUnitFrm.SelectedUnit, WarFoundryCore.CurrentArmy.GetCategory(newUnit.MainCategory), unit);
244
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
418 commandStack.Execute(cmd);
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
419 MdiParent.OpenUnitDialog(cmd.Unit);
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
420 }
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
421 }
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
422 else
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
423 {
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
424 ArmyCategory tagData = tag as ArmyCategory;
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
425 AddUnitFromCategory(tagData);
2c3474d652e1 Re #360: Add WinForms UI for adding contained units
IBBoard <dev@ibboard.co.uk>
parents: 239
diff changeset
426 }
239
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
427 }
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
428
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
429 private void AddUnitFromCategory(ArmyCategory tagData)
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
430 {
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
431 MdiParent.AddUnitFromCategory(tagData.Category);
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
432 }
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
433
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
434 private void bttnAdd_Click(object sender, EventArgs e)
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
435 {
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
436 AddUnit();
c06d0865ff27 Fixes #388: Add "Add unit" options to army tree
IBBoard <dev@ibboard.co.uk>
parents: 234
diff changeset
437 }
190
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
438 }
1ca23c47345a Re #327: Point names used in the GUI
snowblizz
parents: 159
diff changeset
439 }