changeset 0:d860e2c49f43

Initial commit of IBBoard libraries
author IBBoard <dev@ibboard.co.uk>
date Fri, 19 Dec 2008 11:13:48 +0000
parents
children 258ef411e698
files AssemblyInfo.cs IBBoardWF.csproj IBBoardWF.csproj.user IBBoardWF.mdp IBBoardWF.pidb Windows/Forms/ColorableStatusBar.cs Windows/Forms/ColorableStatusBar.resx Windows/Forms/ColorableStatusBarPanel.cs Windows/Forms/ColorableStatusBarPanel.resources Windows/Forms/ColorableStatusBarPanel.resx Windows/Forms/Delegates.cs Windows/Forms/IBBButton.cs Windows/Forms/IBBForm.cs Windows/Forms/IBBLabel.cs Windows/Forms/IBBLabel.resources Windows/Forms/IBBLabel.resx Windows/Forms/IBBMenuItem.cs Windows/Forms/IBBMenuItem.resources Windows/Forms/IBBMenuItem.resx Windows/Forms/IBBToolBarButton.cs Windows/Forms/ListViewColumnSorter.cs
diffstat 18 files changed, 829 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AssemblyInfo.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,58 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+//
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly: AssemblyTitle("IBBoard.Windows.Forms")]
+[assembly: AssemblyDescription("Custom System.Windows.Forms extensions, including translatable controls.")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("IBBoard.Windows.Forms")]
+[assembly: AssemblyCopyright("IBBoard, 2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]		
+
+//
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("1.0.0.*")]
+
+//
+// In order to sign your assembly you must specify a key to use. Refer to the 
+// Microsoft .NET Framework documentation for more information on assembly signing.
+//
+// Use the attributes below to control which key is used for signing. 
+//
+// Notes: 
+//   (*) If no key is specified, the assembly is not signed.
+//   (*) KeyName refers to a key that has been installed in the Crypto Service
+//       Provider (CSP) on your machine. KeyFile refers to a file which contains
+//       a key.
+//   (*) If the KeyFile and the KeyName values are both specified, the 
+//       following processing occurs:
+//       (1) If the KeyName can be found in the CSP, that key is used.
+//       (2) If the KeyName does not exist and the KeyFile does exist, the key 
+//           in the KeyFile is installed into the CSP and used.
+//   (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
+//       When specifying the KeyFile, the location of the KeyFile should be
+//       relative to the project output directory which is
+//       %Project Directory%\obj\<configuration>. For example, if your KeyFile is
+//       located in the project directory, you would specify the AssemblyKeyFile 
+//       attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
+//   (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
+//       documentation for more information on this.
+//
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
+[assembly: AssemblyKeyName("")]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IBBoardWF.csproj	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,147 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{E3790268-2082-4975-B1A3-C70B37842CE8}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>IBBoardWF</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>IBBoard</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>C:\Documents and Settings\ibboard\My Documents\Visual Studio 2005\Projects\IBBoardWF\bin\Debug\</OutputPath>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+    <BaseAddress>285212672</BaseAddress>
+    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>true</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <NoStdLib>false</NoStdLib>
+    <NoWarn>
+    </NoWarn>
+    <Optimize>false</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>full</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+    <BaseAddress>285212672</BaseAddress>
+    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>false</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <NoStdLib>false</NoStdLib>
+    <NoWarn>
+    </NoWarn>
+    <Optimize>true</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>none</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Drawing">
+      <Name>System.Drawing</Name>
+    </Reference>
+    <Reference Include="System.Windows.Forms">
+      <Name>System.Windows.Forms</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+    <ProjectReference Include="..\IBBoard\IBBoard.csproj">
+      <Name>IBBoard</Name>
+      <Project>{5DFD64F6-FC2B-4B4F-B92E-483BAC468105}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Windows\Forms\ColorableStatusBar.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Windows\Forms\ColorableStatusBarPanel.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Windows\Forms\Delegates.cs" />
+    <Compile Include="Windows\Forms\IBBButton.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Windows\Forms\IBBForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Windows\Forms\IBBLabel.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Windows\Forms\IBBMenuItem.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Windows\Forms\IBBToolBarButton.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Windows\Forms\ListViewColumnSorter.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <EmbeddedResource Include="Windows\Forms\ColorableStatusBar.resx">
+      <DependentUpon>ColorableStatusBar.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Windows\Forms\ColorableStatusBarPanel.resx">
+      <DependentUpon>ColorableStatusBarPanel.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Windows\Forms\IBBLabel.resx">
+      <DependentUpon>IBBLabel.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Windows\Forms\IBBMenuItem.resx">
+      <DependentUpon>IBBMenuItem.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IBBoardWF.csproj.user	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,58 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <LastOpenVersion>7.10.3077</LastOpenVersion>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ReferencePath>
+    </ReferencePath>
+    <CopyProjectDestinationFolder>
+    </CopyProjectDestinationFolder>
+    <CopyProjectUncPath>
+    </CopyProjectUncPath>
+    <CopyProjectOption>0</CopyProjectOption>
+    <ProjectView>ProjectFiles</ProjectView>
+    <ProjectTrust>0</ProjectTrust>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <EnableASPDebugging>false</EnableASPDebugging>
+    <EnableASPXDebugging>false</EnableASPXDebugging>
+    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
+    <EnableSQLServerDebugging>false</EnableSQLServerDebugging>
+    <RemoteDebugEnabled>false</RemoteDebugEnabled>
+    <RemoteDebugMachine>
+    </RemoteDebugMachine>
+    <StartAction>Project</StartAction>
+    <StartArguments>
+    </StartArguments>
+    <StartPage>
+    </StartPage>
+    <StartProgram>
+    </StartProgram>
+    <StartURL>
+    </StartURL>
+    <StartWorkingDirectory>
+    </StartWorkingDirectory>
+    <StartWithIE>true</StartWithIE>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <EnableASPDebugging>false</EnableASPDebugging>
+    <EnableASPXDebugging>false</EnableASPXDebugging>
+    <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
+    <EnableSQLServerDebugging>false</EnableSQLServerDebugging>
+    <RemoteDebugEnabled>false</RemoteDebugEnabled>
+    <RemoteDebugMachine>
+    </RemoteDebugMachine>
+    <StartAction>Project</StartAction>
+    <StartArguments>
+    </StartArguments>
+    <StartPage>
+    </StartPage>
+    <StartProgram>
+    </StartProgram>
+    <StartURL>
+    </StartURL>
+    <StartWorkingDirectory>
+    </StartWorkingDirectory>
+    <StartWithIE>true</StartWithIE>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IBBoardWF.mdp	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,38 @@
+<Project name="IBBoardWF" fileversion="2.0" DefaultNamespace="IBBoard" language="C#" clr-version="Net_1_1" ctype="DotNetProject">
+  <Configurations active="Debug">
+    <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+      <Output directory="bin/Debug/" assembly="IBBoardWF" />
+      <Build debugmode="True" target="Library" />
+      <Execution runwithwarnings="False" consolepause="True" runtime="MsNet" clr-version="Net_1_1" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+    <Configuration name="Release" ctype="DotNetProjectConfiguration">
+      <Output directory="bin/Release/" assembly="IBBoardWF" />
+      <Build debugmode="False" target="Library" />
+      <Execution runwithwarnings="False" consolepause="True" runtime="MsNet" clr-version="Net_1_1" />
+      <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+    </Configuration>
+  </Configurations>
+  <Contents>
+    <File name="AssemblyInfo.cs" subtype="Code" buildaction="Compile" />
+    <File name="Windows/Forms/ColorableStatusBar.cs" subtype="Code" buildaction="Compile" />
+    <File name="Windows/Forms/ColorableStatusBarPanel.cs" subtype="Code" buildaction="Compile" />
+    <File name="Windows/Forms/ColorableStatusBarPanel.resx" subtype="Code" buildaction="EmbedAsResource" dependson="ColorableStatusBarPanel.cs" resource_id="IBBoard.Windows.Forms.ColorableStatusBarPanel.resources" />
+    <File name="Windows/Forms/IBBButton.cs" subtype="Code" buildaction="Compile" />
+    <File name="Windows/Forms/IBBForm.cs" subtype="Code" buildaction="Compile" />
+    <File name="Windows/Forms/IBBLabel.cs" subtype="Code" buildaction="Compile" />
+    <File name="Windows/Forms/IBBLabel.resx" subtype="Code" buildaction="EmbedAsResource" dependson="IBBLabel.cs" resource_id="IBBoard.Windows.Forms.IBBLabel.resources" />
+    <File name="Windows/Forms/IBBMenuItem.cs" subtype="Code" buildaction="Compile" />
+    <File name="Windows/Forms/IBBMenuItem.resx" subtype="Code" buildaction="EmbedAsResource" dependson="IBBMenuItem.cs" resource_id="IBBoard.Windows.Forms.IBBMenuItem.resources" />
+    <File name="Windows/Forms/IBBToolBarButton.cs" subtype="Code" buildaction="Compile" />
+    <File name="Windows/Forms/ListViewColumnSorter.cs" subtype="Code" buildaction="Compile" />
+  </Contents>
+  <References>
+    <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="True" refto="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Project" localcopy="True" refto="IBBoard" />
+  </References>
+</Project>
\ No newline at end of file
Binary file IBBoardWF.pidb has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/ColorableStatusBar.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,40 @@
+using System;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Windows.Forms;
+
+namespace IBBoard.Windows.Forms
+{
+	/// <summary>
+	/// Summary description for ColorableStatusBar.
+	/// </summary>
+	public class ColorableStatusBar : StatusBar
+	{
+		private Brush defaultBrush;
+
+		public ColorableStatusBar()
+		{
+			defaultBrush = new SolidBrush(SystemColors.WindowText);
+		}
+
+		//Code taken from MS Knowledge base - http://support.microsoft.com/kb/319311
+		public void ColorableStatusBarDrawItem(object sender, StatusBarDrawItemEventArgs sbdevent)
+		{		
+			if (sender is StatusBar)
+			{
+				System.Drawing.Graphics g = sbdevent.Graphics;
+				StatusBar sb = (StatusBar)sender;
+				RectangleF rectf = new RectangleF(sbdevent.Bounds.X, sbdevent.Bounds.Y, sbdevent.Bounds.Width, sbdevent.Bounds.Height);
+			
+				if (sbdevent.Panel is ColorableStatusBarPanel)
+				{
+					g.DrawString(sbdevent.Panel.Text, sb.Font, ((ColorableStatusBarPanel)sbdevent.Panel).Brush, rectf);
+				}
+				else
+				{
+					g.DrawString(sbdevent.Panel.Text, sb.Font, defaultBrush, rectf);
+				}
+			}
+		} 
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/ColorableStatusBar.resx	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<root>
+	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+		<xsd:element name="root" msdata:IsDataSet="true">
+			<xsd:complexType>
+				<xsd:choice maxOccurs="unbounded">
+					<xsd:element name="data">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" />
+							<xsd:attribute name="type" type="xsd:string" />
+							<xsd:attribute name="mimetype" type="xsd:string" />
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="resheader">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" use="required" />
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:choice>
+			</xsd:complexType>
+		</xsd:element>
+	</xsd:schema>
+	<resheader name="ResMimeType">
+		<value>text/microsoft-resx</value>
+	</resheader>
+	<resheader name="Version">
+		<value>1.0.0.0</value>
+	</resheader>
+	<resheader name="Reader">
+		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+	<resheader name="Writer">
+		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+</root>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/ColorableStatusBarPanel.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,56 @@
+using System;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Windows.Forms;
+
+namespace IBBoard.Windows.Forms
+{
+	/// <summary>
+	/// Summary description for ColourableStatusBarPanel.
+	/// </summary>
+	public class ColorableStatusBarPanel : StatusBarPanel
+	{
+		//Note: We keep all external references consistant with .Net and use the American spelling of Colour
+		private Color textColour;
+		private SolidBrush brush;
+		private object tag;
+
+		public ColorableStatusBarPanel() : base()
+		{
+			this.Style = StatusBarPanelStyle.OwnerDraw;
+			textColour = SystemColors.WindowText;
+			brush = new SolidBrush(textColour);
+		}
+
+		public Color Color
+		{
+			get { return textColour; }
+			set 
+			{
+				textColour = value;
+				brush.Color = value;
+			}
+		}
+
+		public Brush Brush
+		{
+			get { return brush; }
+		}
+
+		public void ResetColor()
+		{
+			Color = SystemColors.WindowText;
+		}
+
+		public object Tag
+		{
+			get { return tag; }
+			set { tag = value; }
+		}
+
+		public string TagString
+		{
+			get { return (tag == null ? "" : tag.ToString()); }
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/ColorableStatusBarPanel.resx	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<root>
+	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+		<xsd:element name="root" msdata:IsDataSet="true">
+			<xsd:complexType>
+				<xsd:choice maxOccurs="unbounded">
+					<xsd:element name="data">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" />
+							<xsd:attribute name="type" type="xsd:string" />
+							<xsd:attribute name="mimetype" type="xsd:string" />
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="resheader">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" use="required" />
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:choice>
+			</xsd:complexType>
+		</xsd:element>
+	</xsd:schema>
+	<resheader name="ResMimeType">
+		<value>text/microsoft-resx</value>
+	</resheader>
+	<resheader name="Version">
+		<value>1.0.0.0</value>
+	</resheader>
+	<resheader name="Reader">
+		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+	<resheader name="Writer">
+		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+</root>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/Delegates.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,8 @@
+using System;
+using System.Windows.Forms;
+
+namespace IBBoard.Windows.Forms
+{
+    public delegate void ToolBarButtonRangeDelegate(ToolBarButton[] buttons);
+    public delegate void ToolBarButtonDelegate(ToolBarButton button);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/IBBButton.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,13 @@
+using System;
+using System.Windows.Forms;
+using IBBoard.Lang;
+
+namespace IBBoard.Windows.Forms
+{
+	/// <summary>
+	/// Summary description for IBBButton.
+	/// </summary>
+	public class IBBButton : Button, ITranslatable
+	{
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/IBBForm.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,13 @@
+using System;
+using System.Windows.Forms;
+using IBBoard.Lang;
+
+namespace IBBoard.Windows.Forms
+{
+	/// <summary>
+	/// Summary description for IBBForm.
+	/// </summary>
+	public class IBBForm : Form, ITranslatable
+	{
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/IBBLabel.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,13 @@
+using System;
+using System.Windows.Forms;
+using IBBoard.Lang;
+
+namespace IBBoard.Windows.Forms
+{
+	/// <summary>
+	/// Summary description for IBBLabel.
+	/// </summary>
+	public class IBBLabel : Label, ITranslatable
+	{
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/IBBLabel.resx	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<root>
+	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+		<xsd:element name="root" msdata:IsDataSet="true">
+			<xsd:complexType>
+				<xsd:choice maxOccurs="unbounded">
+					<xsd:element name="data">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" />
+							<xsd:attribute name="type" type="xsd:string" />
+							<xsd:attribute name="mimetype" type="xsd:string" />
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="resheader">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" use="required" />
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:choice>
+			</xsd:complexType>
+		</xsd:element>
+	</xsd:schema>
+	<resheader name="ResMimeType">
+		<value>text/microsoft-resx</value>
+	</resheader>
+	<resheader name="Version">
+		<value>1.0.0.0</value>
+	</resheader>
+	<resheader name="Reader">
+		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+	<resheader name="Writer">
+		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+</root>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/IBBMenuItem.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,38 @@
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Windows.Forms;
+using IBBoard.Lang;
+
+namespace IBBoard.Windows.Forms
+{
+	/// <summary>
+	/// Summary description for IBBMenuItem.
+	/// </summary>
+	public class IBBMenuItem : System.Windows.Forms.MenuItem, ITranslatable
+	{
+		private string name = "emptyName";
+
+		public IBBMenuItem() : base(){}
+
+		public IBBMenuItem(string text) : base(text) {}
+
+		#region ITranslatable Members
+
+		public new string Name
+		{
+			get
+			{
+				return name;
+			}
+			set
+			{
+				name = value;
+			}
+		}
+
+		#endregion
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/IBBMenuItem.resx	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<root>
+	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+		<xsd:element name="root" msdata:IsDataSet="true">
+			<xsd:complexType>
+				<xsd:choice maxOccurs="unbounded">
+					<xsd:element name="data">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" />
+							<xsd:attribute name="type" type="xsd:string" />
+							<xsd:attribute name="mimetype" type="xsd:string" />
+						</xsd:complexType>
+					</xsd:element>
+					<xsd:element name="resheader">
+						<xsd:complexType>
+							<xsd:sequence>
+								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+							</xsd:sequence>
+							<xsd:attribute name="name" type="xsd:string" use="required" />
+						</xsd:complexType>
+					</xsd:element>
+				</xsd:choice>
+			</xsd:complexType>
+		</xsd:element>
+	</xsd:schema>
+	<resheader name="ResMimeType">
+		<value>text/microsoft-resx</value>
+	</resheader>
+	<resheader name="Version">
+		<value>1.0.0.0</value>
+	</resheader>
+	<resheader name="Reader">
+		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+	<resheader name="Writer">
+		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+	</resheader>
+</root>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/IBBToolBarButton.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,47 @@
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Windows.Forms;
+using IBBoard.Lang;
+
+namespace IBBoard.Windows.Forms
+{
+	/// <summary>
+	/// Summary description for IBBMenuItem.
+	/// </summary>
+	public class IBBToolBarButton : System.Windows.Forms.ToolBarButton, ITranslatable
+	{
+		private string name = "";
+
+		#region ITranslatable Members
+
+		public new string Name
+		{
+			get
+			{
+				return name;
+			}
+			set
+			{
+				name = value;
+			}
+		}
+
+
+		public new string Text
+		{
+			get
+			{
+				return ToolTipText;
+			}
+			set
+			{
+				ToolTipText = value;
+			}
+		}
+
+		#endregion
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Windows/Forms/ListViewColumnSorter.cs	Fri Dec 19 11:13:48 2008 +0000
@@ -0,0 +1,132 @@
+using System.Collections;	
+using System.Windows.Forms;
+using System.Globalization; 
+
+/// <summary>
+/// This class is an implementation of the 'IComparer' interface.
+/// </summary>
+namespace IBBoard.Windows.Forms
+{
+	public class ListViewColumnSorter : IComparer
+	{
+		/// <summary>
+		/// Specifies the column to be sorted
+		/// </summary>
+		private int ColumnToSort;
+		/// <summary>
+		/// Specifies the order in which to sort (i.e. 'Ascending').
+		/// </summary>
+		private SortOrder OrderOfSort;
+		/// <summary>
+		/// Case insensitive comparer object
+		/// </summary>
+		private CaseInsensitiveComparer ObjectCompare;
+
+		/// <summary>
+		/// Class constructor.  Initializes various elements
+		/// </summary>
+		public ListViewColumnSorter()
+		{
+			// Initialize the column to '0'
+			ColumnToSort = 0;
+
+			// Initialize the sort order to 'none'
+			OrderOfSort = SortOrder.None;
+
+			// Initialize the CaseInsensitiveComparer object
+			ObjectCompare = new CaseInsensitiveComparer();
+		}
+
+		/// <summary>
+		/// This method is inherited from the IComparer interface.  It compares the two objects passed using a case insensitive comparison.
+		/// </summary>
+		/// <param name="x">First object to be compared</param>
+		/// <param name="y">Second object to be compared</param>
+		/// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
+		public int Compare(object x, object y)
+		{
+			int compareResult;
+			ListViewItem listviewX, listviewY;
+
+			// Cast the objects to be compared to ListViewItem objects
+			listviewX = (ListViewItem)x;
+			listviewY = (ListViewItem)y;
+			double resultx, resulty;
+			
+			if (double.TryParse(listviewX.SubItems[ColumnToSort].Text, NumberStyles.Any, 
+				NumberFormatInfo.InvariantInfo, out resultx) && double.TryParse(listviewY.SubItems[ColumnToSort].Text, NumberStyles.Any, 
+				NumberFormatInfo.InvariantInfo, out resulty))
+			{
+				if (OrderOfSort == SortOrder.Ascending)
+				{
+					// Ascending sort is selected, return normal result of compare operation
+					return resultx.CompareTo(resulty);
+				}
+				else if (OrderOfSort == SortOrder.Descending)
+				{
+					// Descending sort is selected, return negative result of compare operation
+					return resulty.CompareTo(resultx);
+				}
+				else
+				{
+					// Return '0' to indicate they are equal
+					return 0;
+				}
+			}
+			else
+			{
+
+				// Compare the two items
+				compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,listviewY.SubItems[ColumnToSort].Text);
+			
+				// Calculate correct return value based on object comparison
+				if (OrderOfSort == SortOrder.Ascending)
+				{
+					// Ascending sort is selected, return normal result of compare operation
+					return compareResult;
+				}
+				else if (OrderOfSort == SortOrder.Descending)
+				{
+					// Descending sort is selected, return negative result of compare operation
+					return (-compareResult);
+				}
+				else
+				{
+					// Return '0' to indicate they are equal
+					return 0;
+				}
+			}
+		}
+    
+		/// <summary>
+		/// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').
+		/// </summary>
+		public int SortColumn
+		{
+			set
+			{
+				ColumnToSort = value;
+			}
+			get
+			{
+				return ColumnToSort;
+			}
+		}
+
+		/// <summary>
+		/// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').
+		/// </summary>
+		public SortOrder Order
+		{
+			set
+			{
+				OrderOfSort = value;
+			}
+			get
+			{
+				return OrderOfSort;
+			}
+		}
+    
+	}
+}
\ No newline at end of file