view UI/StatColumnStyle.cs @ 113:c1a3993297b1

Re #115: Typing number for equipment amount doesn't update Okay button * Switch to using ControlTranslator for the EquipmentAmountControl to resolve issues with the VisualStudio form designer erroring out because the translations aren't initialised (they still won't be, but it seems to be happy now)
author IBBoard <dev@ibboard.co.uk>
date Thu, 24 Dec 2009 10:52:03 +0000
parents e749b748e7ea
children
line wrap: on
line source

// This file (StatColumnStyle.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 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.Text;
using System.Windows.Forms;
using IBBoard.WarFoundry.API.Objects;

namespace IBBoard.WarFoundry.GUI.WinForms.UI
{
	class StatColumnStyle : DataGridColumnStyle
	{
		protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight)
		{
			Object obj = GetColumnValueAtRow(source, rowNum);
			Rectangle rect = bounds;
			g.FillRectangle(backBrush, rect);

			if (obj is Stat)
			{
				Stat stat = (Stat) obj;
				StringFormat stringFormat = new StringFormat();
				stringFormat.Alignment = (stat.ParentSlotName == "name" ? StringAlignment.Near : StringAlignment.Center);//TODO: make "name" a constrant
				g.DrawString(stat.SlotValueString, GetFont(), foreBrush, rect, stringFormat);
			}
			else
			{
				g.DrawString(NullText, GetFont(), foreBrush, rect);
			}
		}

		private Font GetFont()
		{
			return DataGridTableStyle.DataGrid.Font;
		}

		protected override void Abort(int rowNum)
		{
			// Do nothing - we don't allow editing
		}

		protected override bool Commit(CurrencyManager dataSource, int rowNum)
		{
			// Do nothing - we don't allow editing - but pretend we did
			return true;
		}

		protected override void Edit(CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string displayText, bool cellIsVisible)
		{
			// Do nothing - we don't allow editing
		}

		protected override int GetMinimumHeight()
		{
			return GetFont().Height;
		}

		protected override int GetPreferredHeight(Graphics g, object value)
		{
			return GetFont().Height;
		}

		protected override Size GetPreferredSize(Graphics g, object value)
		{
			Size size = new Size();

			if (value is Stat)
			{
				SizeF stringSize = g.MeasureString(((Stat) value).SlotValueString, GetFont());
				size.Height = (int) Math.Ceiling(stringSize.Height);
				size.Width = (int) Math.Ceiling(stringSize.Width);
			}

			return size;
		}

		protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum)
		{
			Paint(g, bounds, source, rowNum, false);
		}

		protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, bool alignToRight)
		{
			Paint(g, bounds, source, rowNum, SystemBrushes.Window, SystemBrushes.WindowText, alignToRight);
		}
	}
}