// This file (FrmNewUnitEquipment.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2008, 2009 IBBoard. // // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. using System; using System.Drawing; using System.ComponentModel; using System.Windows.Forms; using IBBoard; using IBBoard.Commands; using IBBoard.Lang; using IBBoard.WarFoundry.API; using IBBoard.WarFoundry.API.Commands; using IBBoard.WarFoundry.API.Objects; using IBBoard.WarFoundry.GUI.WinForms.Util; namespace IBBoard.WarFoundry.GUI.WinForms { /// /// Summary description for FrmNewUnitEquipment. /// public class FrmNewUnitEquipment : System.Windows.Forms.Form { private Unit unit; private CommandStack commandStack; private System.Windows.Forms.Label lblAmount; private System.Windows.Forms.Button bttnCancel; private System.Windows.Forms.Button bttnOkay; private System.Windows.Forms.Label lblItem; private System.Windows.Forms.ListBox listItems; private IBBoard.WarFoundry.GUI.WinForms.UI.EquipmentAmountControl equipmentAmount; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; public FrmNewUnitEquipment(Unit unit, CommandStack stack) { commandStack = stack; this.unit = unit; InitializeComponent(); this.Text = "New equipment for " + unit.Name; object[] items = Arrays.Subtract(unit.GetAllowedOptionalEquipment(), unit.GetEquipment()); listItems.Items.AddRange(items); equipmentAmount.SetUnit(unit); } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.lblAmount = new System.Windows.Forms.Label(); this.bttnCancel = new System.Windows.Forms.Button(); this.bttnOkay = new System.Windows.Forms.Button(); this.lblItem = new System.Windows.Forms.Label(); this.listItems = new System.Windows.Forms.ListBox(); this.equipmentAmount = new IBBoard.WarFoundry.GUI.WinForms.UI.EquipmentAmountControl(); this.SuspendLayout(); // // lblAmount // this.lblAmount.Location = new System.Drawing.Point(8, 80); this.lblAmount.Name = "lblAmount"; this.lblAmount.Size = new System.Drawing.Size(72, 23); this.lblAmount.TabIndex = 2; this.lblAmount.Text = "amount"; this.lblAmount.TextAlign = System.Drawing.ContentAlignment.TopRight; // // bttnCancel // this.bttnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.bttnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System; this.bttnCancel.Location = new System.Drawing.Point(158, 162); this.bttnCancel.Name = "bttnCancel"; this.bttnCancel.Size = new System.Drawing.Size(75, 23); this.bttnCancel.TabIndex = 3; this.bttnCancel.Text = "cancel"; this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click); // // bttnOkay // this.bttnOkay.Enabled = false; this.bttnOkay.FlatStyle = System.Windows.Forms.FlatStyle.System; this.bttnOkay.Location = new System.Drawing.Point(12, 162); this.bttnOkay.Name = "bttnOkay"; this.bttnOkay.Size = new System.Drawing.Size(75, 23); this.bttnOkay.TabIndex = 4; this.bttnOkay.Text = "okay"; this.bttnOkay.Click += new System.EventHandler(this.bttnOkay_Click); // // lblItem // this.lblItem.Location = new System.Drawing.Point(0, 8); this.lblItem.Name = "lblItem"; this.lblItem.Size = new System.Drawing.Size(80, 23); this.lblItem.TabIndex = 6; this.lblItem.Text = "item"; this.lblItem.TextAlign = System.Drawing.ContentAlignment.TopRight; // // listItems // this.listItems.Location = new System.Drawing.Point(88, 8); this.listItems.Name = "listItems"; this.listItems.Size = new System.Drawing.Size(145, 69); this.listItems.TabIndex = 7; this.listItems.SelectedIndexChanged += new System.EventHandler(this.listItems_SelectedIndexChanged); // // equipmentAmount // this.equipmentAmount.Location = new System.Drawing.Point(88, 80); this.equipmentAmount.Name = "equipmentAmount"; this.equipmentAmount.Size = new System.Drawing.Size(155, 77); this.equipmentAmount.TabIndex = 8; this.equipmentAmount.ValueChanged += new System.EventHandler(this.equipmentAmount_ValueChanged); // // FrmNewUnitEquipment // this.AcceptButton = this.bttnOkay; this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.CancelButton = this.bttnCancel; this.ClientSize = new System.Drawing.Size(245, 190); this.ControlBox = false; this.Controls.Add(this.equipmentAmount); this.Controls.Add(this.listItems); this.Controls.Add(this.lblItem); this.Controls.Add(this.bttnOkay); this.Controls.Add(this.bttnCancel); this.Controls.Add(this.lblAmount); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Name = "FrmNewUnitEquipment"; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "FrmEditUnitEquipment"; this.ResumeLayout(false); } #endregion private void bttnOkay_Click(object sender, System.EventArgs e) { SetValue(); this.Close(); } private void SetValue() { UnitEquipmentItem equipItem = (UnitEquipmentItem)listItems.SelectedItem; if (equipmentAmount.IsRatioEquipmentAmount) { commandStack.Execute(new SetUnitEquipmentRatioAmountCommand(unit, equipItem, equipmentAmount.EquipmentAmount)); } else { //Just cast here - we should be returned a whole number anyway commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, (int) equipmentAmount.EquipmentAmount)); } } private void bttnCancel_Click(object sender, System.EventArgs e) { this.Close(); } private void listItems_SelectedIndexChanged(object sender, System.EventArgs e) { if (listItems.SelectedIndex > -1) { equipmentAmount.SetUnitEquipmentItem((UnitEquipmentItem)listItems.SelectedItem); } else { equipmentAmount.SetUnitEquipmentItem(null); } setOkayButton(); } private void setOkayButton() { double equipAmount = equipmentAmount.EquipmentAmount; bttnOkay.Enabled = listItems.SelectedIndex > -1 && (equipAmount > 0 || equipAmount == WarFoundryCore.INFINITY); } private void equipmentAmount_ValueChanged(object sender, EventArgs e) { setOkayButton(); } } }