// 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();
}
}
}