[mapguide-commits] r6966 - in branches/2.4/MgDev/Desktop: . Samples Samples/AdvancedSample Samples/AdvancedSample/Properties Samples/BasicSample Samples/BasicSample/Properties Samples/Lib Samples/SampleExtension

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu Aug 30 10:04:26 PDT 2012


Author: jng
Date: 2012-08-30 10:04:26 -0700 (Thu, 30 Aug 2012)
New Revision: 6966

Added:
   branches/2.4/MgDev/Desktop/Samples/
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/AdvancedSample.Net40.csproj
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/AdvancedSample.csproj
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.Designer.cs
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.cs
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.resx
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Program.cs
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/AssemblyInfo.cs
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Resources.Designer.cs
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Resources.resx
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Settings.Designer.cs
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Settings.settings
   branches/2.4/MgDev/Desktop/Samples/AdvancedSample/RedlineLayer.xml
   branches/2.4/MgDev/Desktop/Samples/BasicSample/
   branches/2.4/MgDev/Desktop/Samples/BasicSample/BasicSample.Net40.csproj
   branches/2.4/MgDev/Desktop/Samples/BasicSample/BasicSample.csproj
   branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.Designer.cs
   branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.cs
   branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.resx
   branches/2.4/MgDev/Desktop/Samples/BasicSample/Program.cs
   branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/
   branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/AssemblyInfo.cs
   branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Resources.Designer.cs
   branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Resources.resx
   branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Settings.Designer.cs
   branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Settings.settings
   branches/2.4/MgDev/Desktop/Samples/Lib/
   branches/2.4/MgDev/Desktop/Samples/MgDesktopSamples.sln
   branches/2.4/MgDev/Desktop/Samples/MgDesktopSamples_VS2010.sln
   branches/2.4/MgDev/Desktop/Samples/SampleExtension/
   branches/2.4/MgDev/Desktop/Samples/samples_readme.txt
Removed:
   branches/2.4/MgDev/Desktop/SampleExtension/
Modified:
   branches/2.4/MgDev/Desktop/MgDesktopDotNet.sln
   branches/2.4/MgDev/Desktop/Samples/SampleExtension/SampleExtension.csproj
Log:
Move mg-desktop samples into their own solution. Also add updated basic/advanced samples

Modified: branches/2.4/MgDev/Desktop/MgDesktopDotNet.sln
===================================================================
--- branches/2.4/MgDev/Desktop/MgDesktopDotNet.sln	2012-08-30 16:14:43 UTC (rev 6965)
+++ branches/2.4/MgDev/Desktop/MgDesktopDotNet.sln	2012-08-30 17:04:26 UTC (rev 6966)
@@ -13,8 +13,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MgAppLayout", "MgAppLayout\MgAppLayout.csproj", "{F7FCC5EB-FB46-41FE-AC4B-430DF52C4066}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleExtension", "SampleExtension\SampleExtension.csproj", "{B97E7D94-E693-4081-8229-2FE87E5502E4}"
-EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|x64 = Debug|x64
@@ -67,14 +65,6 @@
 		{F7FCC5EB-FB46-41FE-AC4B-430DF52C4066}.Release|x64.Build.0 = Release|x64
 		{F7FCC5EB-FB46-41FE-AC4B-430DF52C4066}.Release|x86.ActiveCfg = Release|x86
 		{F7FCC5EB-FB46-41FE-AC4B-430DF52C4066}.Release|x86.Build.0 = Release|x86
-		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Debug|x64.ActiveCfg = Debug|x64
-		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Debug|x64.Build.0 = Debug|x64
-		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Debug|x86.ActiveCfg = Debug|x86
-		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Debug|x86.Build.0 = Debug|x86
-		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Release|x64.ActiveCfg = Release|x64
-		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Release|x64.Build.0 = Release|x64
-		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Release|x86.ActiveCfg = Release|x86
-		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE


Property changes on: branches/2.4/MgDev/Desktop/Samples
___________________________________________________________________
Added: bugtraq:number
   + true


Property changes on: branches/2.4/MgDev/Desktop/Samples/AdvancedSample
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/AdvancedSample.Net40.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/AdvancedSample.Net40.csproj	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/AdvancedSample.Net40.csproj	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Release\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AB9B45B7-38BF-4FFD-B809-A23F74A6C505}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>AdvancedSample</RootNamespace>
+    <AssemblyName>AdvancedSample</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Desktop.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Foundation, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Foundation.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Geometry, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Geometry.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.PlatformBase.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.Desktop.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="RedlineLayer.xml">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>if not exist "$(TargetDir)FDO" md "$(TargetDir)FDO"
+xcopy /s /y "$(SolutionDir)Lib\FDO" "$(TargetDir)FDO"
+if not exist "$(TargetDir)Dictionaries" md "$(TargetDir)Dictionaries"
+xcopy /s /y "$(SolutionDir)Lib\Dictionaries" "$(TargetDir)Dictionaries"
+if not exist "$(TargetDir)Resources" md "$(TargetDir)Resources"
+xcopy /s /y "$(SolutionDir)Lib\Resources" "$(TargetDir)Resources"
+if not exist "$(TargetDir)Schema" md "$(TargetDir)Schema"
+xcopy /s /y "$(SolutionDir)Lib\Schema" "$(TargetDir)Schema"
+copy /y "$(SolutionDir)Lib\*.dll" "$(TargetDir)"
+copy /y "$(SolutionDir)Lib\Platform.ini" "$(TargetDir)"</PostBuildEvent>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/AdvancedSample.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/AdvancedSample.csproj	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/AdvancedSample.csproj	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Release\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AB9B45B7-38BF-4FFD-B809-A23F74A6C505}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>AdvancedSample</RootNamespace>
+    <AssemblyName>AdvancedSample</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Desktop.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Foundation, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Foundation.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Geometry, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Geometry.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.PlatformBase.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.Desktop.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="RedlineLayer.xml">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>if not exist "$(TargetDir)FDO" md "$(TargetDir)FDO"
+xcopy /s /y "$(SolutionDir)Lib\FDO" "$(TargetDir)FDO"
+if not exist "$(TargetDir)Dictionaries" md "$(TargetDir)Dictionaries"
+xcopy /s /y "$(SolutionDir)Lib\Dictionaries" "$(TargetDir)Dictionaries"
+if not exist "$(TargetDir)Resources" md "$(TargetDir)Resources"
+xcopy /s /y "$(SolutionDir)Lib\Resources" "$(TargetDir)Resources"
+if not exist "$(TargetDir)Schema" md "$(TargetDir)Schema"
+xcopy /s /y "$(SolutionDir)Lib\Schema" "$(TargetDir)Schema"
+copy /y "$(SolutionDir)Lib\*.dll" "$(TargetDir)"
+copy /y "$(SolutionDir)Lib\Platform.ini" "$(TargetDir)"</PostBuildEvent>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.Designer.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,237 @@
+namespace AdvancedSample
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+            this.mgDefaultToolbar1 = new OSGeo.MapGuide.Viewer.MgDefaultToolbar();
+            this.btnMeasure = new System.Windows.Forms.ToolStripButton();
+            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+            this.lblCoordinates = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblMessage = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblScale = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblSize = new System.Windows.Forms.ToolStripStatusLabel();
+            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+            this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+            this.mgLegend1 = new OSGeo.MapGuide.Viewer.MgLegend();
+            this.mgPropertyPane1 = new OSGeo.MapGuide.Viewer.MgPropertyPane();
+            this.mgMapViewer1 = new OSGeo.MapGuide.Viewer.MgMapViewer();
+            this.btnDrawPoint = new System.Windows.Forms.ToolStripButton();
+            this.mgDefaultToolbar1.SuspendLayout();
+            this.statusStrip1.SuspendLayout();
+            this.splitContainer1.Panel1.SuspendLayout();
+            this.splitContainer1.Panel2.SuspendLayout();
+            this.splitContainer1.SuspendLayout();
+            this.splitContainer2.Panel1.SuspendLayout();
+            this.splitContainer2.Panel2.SuspendLayout();
+            this.splitContainer2.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // mgDefaultToolbar1
+            // 
+            this.mgDefaultToolbar1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.btnMeasure,
+            this.btnDrawPoint});
+            this.mgDefaultToolbar1.Location = new System.Drawing.Point(0, 0);
+            this.mgDefaultToolbar1.Name = "mgDefaultToolbar1";
+            this.mgDefaultToolbar1.Size = new System.Drawing.Size(624, 25);
+            this.mgDefaultToolbar1.TabIndex = 2;
+            this.mgDefaultToolbar1.Text = "mgDefaultToolbar1";
+            this.mgDefaultToolbar1.Viewer = null;
+            // 
+            // btnMeasure
+            // 
+            this.btnMeasure.Image = ((System.Drawing.Image)(resources.GetObject("btnMeasure.Image")));
+            this.btnMeasure.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.btnMeasure.Name = "btnMeasure";
+            this.btnMeasure.Size = new System.Drawing.Size(72, 22);
+            this.btnMeasure.Text = "Measure";
+            this.btnMeasure.Click += new System.EventHandler(this.btnMeasure_Click);
+            // 
+            // statusStrip1
+            // 
+            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.lblCoordinates,
+            this.lblMessage,
+            this.lblScale,
+            this.lblSize});
+            this.statusStrip1.Location = new System.Drawing.Point(0, 420);
+            this.statusStrip1.Name = "statusStrip1";
+            this.statusStrip1.Size = new System.Drawing.Size(624, 22);
+            this.statusStrip1.TabIndex = 3;
+            this.statusStrip1.Text = "statusStrip1";
+            // 
+            // lblCoordinates
+            // 
+            this.lblCoordinates.Name = "lblCoordinates";
+            this.lblCoordinates.Size = new System.Drawing.Size(84, 17);
+            this.lblCoordinates.Text = "lblCoordinates";
+            // 
+            // lblMessage
+            // 
+            this.lblMessage.Name = "lblMessage";
+            this.lblMessage.Size = new System.Drawing.Size(264, 17);
+            this.lblMessage.Spring = true;
+            this.lblMessage.Text = "lblMessage";
+            this.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // lblScale
+            // 
+            this.lblScale.Name = "lblScale";
+            this.lblScale.Size = new System.Drawing.Size(47, 17);
+            this.lblScale.Text = "lblScale";
+            // 
+            // lblSize
+            // 
+            this.lblSize.Name = "lblSize";
+            this.lblSize.Size = new System.Drawing.Size(40, 17);
+            this.lblSize.Text = "lblSize";
+            // 
+            // splitContainer1
+            // 
+            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+            this.splitContainer1.Location = new System.Drawing.Point(0, 25);
+            this.splitContainer1.Name = "splitContainer1";
+            // 
+            // splitContainer1.Panel1
+            // 
+            this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
+            // 
+            // splitContainer1.Panel2
+            // 
+            this.splitContainer1.Panel2.Controls.Add(this.mgMapViewer1);
+            this.splitContainer1.Size = new System.Drawing.Size(624, 395);
+            this.splitContainer1.SplitterDistance = 214;
+            this.splitContainer1.TabIndex = 4;
+            // 
+            // splitContainer2
+            // 
+            this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+            this.splitContainer2.Name = "splitContainer2";
+            this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
+            // 
+            // splitContainer2.Panel1
+            // 
+            this.splitContainer2.Panel1.Controls.Add(this.mgLegend1);
+            // 
+            // splitContainer2.Panel2
+            // 
+            this.splitContainer2.Panel2.Controls.Add(this.mgPropertyPane1);
+            this.splitContainer2.Size = new System.Drawing.Size(214, 395);
+            this.splitContainer2.SplitterDistance = 187;
+            this.splitContainer2.TabIndex = 0;
+            // 
+            // mgLegend1
+            // 
+            this.mgLegend1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.mgLegend1.GroupContextMenu = null;
+            this.mgLegend1.LayerContextMenu = null;
+            this.mgLegend1.Location = new System.Drawing.Point(0, 0);
+            this.mgLegend1.Name = "mgLegend1";
+            this.mgLegend1.Size = new System.Drawing.Size(214, 187);
+            this.mgLegend1.TabIndex = 0;
+            this.mgLegend1.ThemeCompressionLimit = 0;
+            // 
+            // mgPropertyPane1
+            // 
+            this.mgPropertyPane1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.mgPropertyPane1.Location = new System.Drawing.Point(0, 0);
+            this.mgPropertyPane1.Name = "mgPropertyPane1";
+            this.mgPropertyPane1.Size = new System.Drawing.Size(214, 204);
+            this.mgPropertyPane1.TabIndex = 0;
+            // 
+            // mgMapViewer1
+            // 
+            this.mgMapViewer1.Cursor = System.Windows.Forms.Cursors.Default;
+            this.mgMapViewer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.mgMapViewer1.Location = new System.Drawing.Point(0, 0);
+            this.mgMapViewer1.Name = "mgMapViewer1";
+            this.mgMapViewer1.SelectionColor = System.Drawing.Color.Blue;
+            this.mgMapViewer1.ShowVertexCoordinatesWhenDigitizing = true;
+            this.mgMapViewer1.Size = new System.Drawing.Size(406, 395);
+            this.mgMapViewer1.TabIndex = 0;
+            this.mgMapViewer1.Text = "mgMapViewer1";
+            this.mgMapViewer1.ZoomInFactor = 0.5;
+            this.mgMapViewer1.ZoomOutFactor = 2;
+            this.mgMapViewer1.SelectionChanged += new System.EventHandler(this.mgMapViewer1_SelectionChanged);
+            // 
+            // btnDrawPoint
+            // 
+            this.btnDrawPoint.Image = ((System.Drawing.Image)(resources.GetObject("btnDrawPoint.Image")));
+            this.btnDrawPoint.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.btnDrawPoint.Name = "btnDrawPoint";
+            this.btnDrawPoint.Size = new System.Drawing.Size(85, 20);
+            this.btnDrawPoint.Text = "Draw Point";
+            this.btnDrawPoint.Click += new System.EventHandler(this.btnDrawPoint_Click);
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(624, 442);
+            this.Controls.Add(this.splitContainer1);
+            this.Controls.Add(this.statusStrip1);
+            this.Controls.Add(this.mgDefaultToolbar1);
+            this.Name = "Form1";
+            this.Text = "Form1";
+            this.mgDefaultToolbar1.ResumeLayout(false);
+            this.mgDefaultToolbar1.PerformLayout();
+            this.statusStrip1.ResumeLayout(false);
+            this.statusStrip1.PerformLayout();
+            this.splitContainer1.Panel1.ResumeLayout(false);
+            this.splitContainer1.Panel2.ResumeLayout(false);
+            this.splitContainer1.ResumeLayout(false);
+            this.splitContainer2.Panel1.ResumeLayout(false);
+            this.splitContainer2.Panel2.ResumeLayout(false);
+            this.splitContainer2.ResumeLayout(false);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private OSGeo.MapGuide.Viewer.MgDefaultToolbar mgDefaultToolbar1;
+        private System.Windows.Forms.StatusStrip statusStrip1;
+        private System.Windows.Forms.ToolStripStatusLabel lblCoordinates;
+        private System.Windows.Forms.ToolStripStatusLabel lblMessage;
+        private System.Windows.Forms.ToolStripStatusLabel lblSize;
+        private System.Windows.Forms.ToolStripStatusLabel lblScale;
+        private System.Windows.Forms.SplitContainer splitContainer1;
+        private System.Windows.Forms.SplitContainer splitContainer2;
+        private OSGeo.MapGuide.Viewer.MgLegend mgLegend1;
+        private OSGeo.MapGuide.Viewer.MgPropertyPane mgPropertyPane1;
+        private OSGeo.MapGuide.Viewer.MgMapViewer mgMapViewer1;
+        private System.Windows.Forms.ToolStripButton btnMeasure;
+        private System.Windows.Forms.ToolStripButton btnDrawPoint;
+
+    }
+}
+

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,275 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.Viewer;
+using OSGeo.MapGuide;
+using OSGeo.MapGuide.Viewer.Desktop;
+using System.IO;
+
+namespace AdvancedSample
+{
+    public partial class MainForm : Form, IMapStatusBar
+    {
+        public MainForm()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnLoad(EventArgs e)
+        {
+            new MapViewerController(mgMapViewer1,          //The MgMapViewer
+                                    mgLegend1,             //The MgLegend
+                                    this,                  //The IMapStatusBar
+                                    mgPropertyPane1,       //The MgPropertyPane
+                                    mgDefaultToolbar1);    //The MgDefaultToolbar
+
+            MgdServiceFactory factory = new MgdServiceFactory();
+            MgdResourceService resSvc = (MgdResourceService)factory.CreateService(MgServiceType.ResourceService);
+            MgResourceIdentifier mapDefId = new MgResourceIdentifier("Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition");
+            //If this map definition doesn't exist, we ask the user to
+            //load the Sheboygan package
+            if (!resSvc.ResourceExists(mapDefId))
+            {
+                using (OpenFileDialog diag = new OpenFileDialog())
+                {
+                    diag.Filter = "MapGuide Packages (*.mgp)|*.mgp";
+                    if (diag.ShowDialog() == DialogResult.OK)
+                    {
+                        MgByteSource source = new MgByteSource(diag.FileName);
+                        MgByteReader reader = source.GetReader();
+                        resSvc.ApplyResourcePackage(reader);
+                    }
+                    else
+                    {
+                        //No map, nothing to do here
+                        Application.Exit();
+                    }
+                }
+            }
+
+            //Create our runtime map
+            MgdMap map = new MgdMap(mapDefId);
+            //Create our viewer provider
+            MgMapViewerProvider provider = new MgDesktopMapViewerProvider(map);
+            //Initialize our viewer with this provider
+            mgMapViewer1.Init(provider);
+        }
+
+        public void SetCursorPositionMessage(string message)
+        {
+            lblCoordinates.Text = message;
+        }
+
+        public void SetFeatureSelectedMessage(string message)
+        {
+            lblMessage.Text = message;
+        }
+
+        public void SetMapScaleMessage(string message)
+        {
+            lblScale.Text = message;
+        }
+
+        public void SetMapSizeMessage(string message)
+        {
+            lblSize.Text = message;
+        }
+
+        private void mgMapViewer1_SelectionChanged(object sender, EventArgs e)
+        {
+            MgSelectionBase selection = mgMapViewer1.GetSelection();
+            MgReadOnlyLayerCollection layers = selection.GetLayers();
+            if (layers != null)
+            {
+                for (int i = 0; i < layers.GetCount(); i++)
+                {
+                    MgLayerBase layer = layers.GetItem(i);
+                    if (layer.Name == "Parcels") //The selected layer is parcels
+                    {
+                        //Check that we only have one selected object
+                        int count = selection.GetSelectedFeaturesCount(layer, layer.FeatureClassName);
+                        if (count == 1)
+                        {
+                            MgFeatureReader reader = null;
+                            try
+                            {
+                                reader = selection.GetSelectedFeatures(layer, layer.FeatureClassName, false);
+                                if (reader.ReadNext())
+                                {
+                                    //Address is in the RPROPAD property
+                                    if (reader.IsNull("RPROPAD"))
+                                        MessageBox.Show("Selected parcel has no address");
+                                    else
+                                        MessageBox.Show("Address: " + reader.GetString("RPROPAD"));
+                                }
+                            }
+                            finally //Must close all readers, otherwise connections will leak
+                            {
+                                reader.Close();
+                            }
+                        }
+                        else
+                        {
+                            MessageBox.Show("Please select only one parcel");
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+
+        private void btnMeasure_Click(object sender, EventArgs e)
+        {
+            mgMapViewer1.DigitizeLine(OnLineDigitized);
+        }
+
+        private void OnLineDigitized(double x1, double y1, double x2, double y2)
+        {
+            MgMapBase map = mgMapViewer1.GetMap();
+            //Create a coordiante system from the map's SRS
+            MgCoordinateSystemFactory csFactory = new MgCoordinateSystemFactory();
+            MgCoordinateSystem mapCs = csFactory.Create(map.GetMapSRS());
+
+            //Invoke the appropriate measure method depending on the type
+            //of coordinate system
+            double dist = 0.0;
+            if (mapCs.GetType() == MgCoordinateSystemType.Geographic)
+                dist = mapCs.MeasureGreatCircleDistance(x1, y1, x2, y2);
+            else
+                dist = mapCs.MeasureEuclideanDistance(x1, y1, x2, y2);
+
+            //Convert this distance to meters
+            dist = mapCs.ConvertCoordinateSystemUnitsToMeters(dist);
+
+            MessageBox.Show("Distance is: " + dist + " meters");
+        }
+
+        private MgdLayer _pointLayer;
+
+        private void btnDrawPoint_Click(object sender, EventArgs e)
+        {
+            mgMapViewer1.DigitizePoint(OnPointDrawn);
+        }
+
+        private void OnPointDrawn(double x, double y)
+        {
+            if (_pointLayer == null) //Our point layer doesn't exist
+                CreateRedlineLayer();
+            
+            //Now insert our point. This code should look familiar
+            //to you, setting up the MgPropertyCollection for insertion
+            MgPropertyCollection props = new MgPropertyCollection();
+            MgWktReaderWriter wktRw = new MgWktReaderWriter();
+            MgAgfReaderWriter agfRw = new MgAgfReaderWriter();
+
+            MgGeometry geom = wktRw.Read("POINT (" + x + " " + y + ")");
+            MgByteReader agf = agfRw.Write(geom);
+
+            MgGeometryProperty geomProp = new MgGeometryProperty("Geometry", agf);
+            props.Add(geomProp);
+
+            //Here's where we differ from the official MapGuide API
+            //instead of a monolithic UpdateFeatures() that tries to 
+            //do everything, we have individual InsertFeatures/DeleteFeatures/UpdateFeatures
+            //methods. So here's the mg-desktop way
+
+            MgFeatureReader result = _pointLayer.InsertFeatures(props);
+            result.Close();
+
+            //Or if you have have access to the MgdLayer instance
+            /*
+            MgResourceIdentifier fsId = new MgResourceIdentifier(_pointLayer.GetFeatureSourceId());
+            MgServiceFactory factory = new MgServiceFactory();
+            MgdFeatureService featSvc = (MgdFeatureService)factory.CreateService(MgServiceType.FeatureService);
+            MgFeatureReader fr = featSvc.InsertFeatures(fsId, "Default:Redline", props);
+            fr.Close();
+             */
+            
+            //Now refresh to see your newly drawn point
+            mgMapViewer1.RefreshMap();
+        }
+
+        private void CreateRedlineLayer()
+        {
+            MgMapBase map = mgMapViewer1.GetMap();
+            MgdServiceFactory fact = new MgdServiceFactory();
+            MgdFeatureService featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
+            MgResourceService resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
+
+            //Note that mg-desktop does not have a concept of sessions like the
+            //official MapGuide API, but it *does* allow session-based resources 
+            //as a way of having temporary resources. Such resources will reside
+            //in a special directory for session resources (specified in Platform.ini)
+            //
+            //You can plug whatever string as the session id, but the resource identifier
+            //must satisfy the session id pattern:
+            //
+            // Session:<session id string>//Path/To/Your.ResourceType
+            //
+            //These files are removed with MgPlatform.Terminate(), which is called in this
+            //application as part of the exiting process.
+            string sessionId = Guid.NewGuid().ToString();
+            MgResourceIdentifier fsId = new MgResourceIdentifier("Session:" + sessionId + "//Redline.FeatureSource");
+            MgResourceIdentifier ldfId = new MgResourceIdentifier("Session:" + sessionId + "//Redline.LayerDefinition");
+
+            //Create our point redline schema. It looks like this:
+            //
+            // Default
+            //    Redline
+            //        ID (int32, autogenerated)
+            //        Geometry (coordinate system same as map
+            string featureClass = "Default:Redline";
+            string geometry = "Geometry";
+
+            MgFeatureSchema schema = new MgFeatureSchema("Default", "Redline schema");
+            MgClassDefinition cls = new MgClassDefinition();
+            cls.Name = "Redline";
+
+            MgDataPropertyDefinition id = new MgDataPropertyDefinition("ID");
+            id.DataType = MgPropertyType.Int32;
+            id.SetAutoGeneration(true);
+
+            MgGeometricPropertyDefinition geom = new MgGeometricPropertyDefinition(geometry);
+            geom.SpatialContextAssociation = "Default";
+            geom.GeometryTypes = MgFeatureGeometricType.Curve | MgFeatureGeometricType.Point | MgFeatureGeometricType.Solid | MgFeatureGeometricType.Surface;
+
+            MgPropertyDefinitionCollection clsProps = cls.GetProperties();
+            clsProps.Add(id);
+            clsProps.Add(geom);
+
+            MgPropertyDefinitionCollection idProps = cls.GetIdentityProperties();
+            idProps.Add(id);
+
+            cls.DefaultGeometryPropertyName = geometry;
+            MgClassDefinitionCollection classes = schema.GetClasses();
+            classes.Add(cls);
+
+            //Create the feature source with this schema. We use the map's
+            //coordinate system for the feature source to ensure features
+            //that we create, will line up with the map
+            MgCreateSdfParams create = new MgCreateSdfParams("Default", map.GetMapSRS(), schema);
+            featSvc.CreateFeatureSource(fsId, create);
+
+            //Then create the layer definition. RedlineLayer.xml contains the template
+            string xml = string.Format(File.ReadAllText("RedlineLayer.xml"), fsId.ToString(), featureClass, geometry);
+            var bytes = Encoding.UTF8.GetBytes(xml);
+            MgByteSource source = new MgByteSource(bytes, bytes.Length);
+            resSvc.SetResource(ldfId, source.GetReader(), null);
+
+            //Now create the runtime layer and add to map
+            _pointLayer = new MgdLayer(ldfId, resSvc);
+            _pointLayer.LegendLabel = "Redlining";
+            _pointLayer.Name = "Redline";
+            _pointLayer.Visible = true;
+            _pointLayer.Selectable = true;
+            _pointLayer.DisplayInLegend = true;
+
+            var layers = map.GetLayers();
+            layers.Insert(0, _pointLayer);
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.resx
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/MainForm.resx	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <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" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </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>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="mgDefaultToolbar1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="btnMeasure.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
+        ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
+        HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
+        rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
+        TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
+        oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
+        7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
+        xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
+        LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
+        KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="btnDrawPoint.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
+        ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
+        HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
+        rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
+        TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
+        oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
+        7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
+        xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
+        LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
+        KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>174, 17</value>
+  </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>42</value>
+  </metadata>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Program.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Program.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Program.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using OSGeo.MapGuide;
+
+namespace AdvancedSample
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            MgdPlatform.Initialize("Platform.ini");
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new MainForm());
+            MgdPlatform.Terminate();
+        }
+    }
+}


Property changes on: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/AssemblyInfo.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/AssemblyInfo.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/AssemblyInfo.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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("MgDesktopSample")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MgDesktopSample")]
+[assembly: AssemblyCopyright("Copyright ©  2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d9cee68f-32da-4a96-89f5-bb6f41859254")]
+
+// 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 Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Resources.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Resources.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Resources.Designer.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.5420
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace AdvancedSample.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AdvancedSample.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Resources.resx
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Resources.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Resources.resx	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <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="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </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="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <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" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </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>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Settings.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Settings.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Settings.Designer.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.5420
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace AdvancedSample.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Settings.settings
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Settings.settings	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/Properties/Settings.settings	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

Added: branches/2.4/MgDev/Desktop/Samples/AdvancedSample/RedlineLayer.xml
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/AdvancedSample/RedlineLayer.xml	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/AdvancedSample/RedlineLayer.xml	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="LayerDefinition-1.0.0.xsd" version="1.0.0">
+  <VectorLayerDefinition>
+    <ResourceId>{0}</ResourceId>
+    <FeatureName>{1}</FeatureName>
+    <FeatureNameType>FeatureClass</FeatureNameType>
+    <Geometry>{2}</Geometry>
+    <VectorScaleRange>
+      <AreaTypeStyle>
+        <AreaRule>
+          <LegendLabel />
+          <AreaSymbolization2D>
+            <Fill>
+              <FillPattern>Solid</FillPattern>
+              <ForegroundColor>ffffffff</ForegroundColor>
+              <BackgroundColor>ffffffff</BackgroundColor>
+            </Fill>
+            <Stroke>
+              <LineStyle>Solid</LineStyle>
+              <Thickness>1</Thickness>
+              <Color>ffff0000</Color>
+              <Unit>Points</Unit>
+            </Stroke>
+          </AreaSymbolization2D>
+        </AreaRule>
+      </AreaTypeStyle>
+      <LineTypeStyle>
+        <LineRule>
+          <LegendLabel />
+          <LineSymbolization2D>
+            <LineStyle>Solid</LineStyle>
+            <Thickness>1</Thickness>
+            <Color>ffff0000</Color>
+            <Unit>Points</Unit>
+          </LineSymbolization2D>
+        </LineRule>
+      </LineTypeStyle>
+      <PointTypeStyle>
+        <DisplayAsText>false</DisplayAsText>
+        <AllowOverpost>false</AllowOverpost>
+        <PointRule>
+          <LegendLabel />
+          <Label>
+            <Unit>Points</Unit>
+            <SizeContext>DeviceUnits</SizeContext>
+            <SizeX>10</SizeX>
+            <SizeY>10</SizeY>
+            <Rotation>0</Rotation>
+            <Text></Text>
+            <FontName>Arial</FontName>
+            <ForegroundColor>ffff0000</ForegroundColor>
+            <BackgroundColor>ffffffff</BackgroundColor>
+            <BackgroundStyle>Ghosted</BackgroundStyle>
+          </Label>
+          <PointSymbolization2D>
+            <Mark>
+              <Unit>Points</Unit>
+              <SizeContext>DeviceUnits</SizeContext>
+              <SizeX>10</SizeX>
+              <SizeY>10</SizeY>
+              <Rotation>0</Rotation>
+              <Shape>Square</Shape>
+              <Fill>
+                <FillPattern>Solid</FillPattern>
+                <ForegroundColor>ffffffff</ForegroundColor>
+                <BackgroundColor>ffffffff</BackgroundColor>
+              </Fill>
+              <Edge>
+                <LineStyle>Solid</LineStyle>
+                <Thickness>1</Thickness>
+                <Color>ffff0000</Color>
+                <Unit>Points</Unit>
+              </Edge>
+            </Mark>
+          </PointSymbolization2D>
+        </PointRule>
+      </PointTypeStyle>
+    </VectorScaleRange>
+  </VectorLayerDefinition>
+</LayerDefinition>
\ No newline at end of file


Property changes on: branches/2.4/MgDev/Desktop/Samples/BasicSample
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/BasicSample.Net40.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/BasicSample.Net40.csproj	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/BasicSample.Net40.csproj	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Release\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{BE473CB6-718D-4654-9B0F-F1F9A327BD07}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>BasicSample</RootNamespace>
+    <AssemblyName>BasicSample</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Desktop.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Foundation, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Foundation.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Geometry, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Geometry.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.PlatformBase.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.Desktop.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>if not exist "$(TargetDir)FDO" md "$(TargetDir)FDO"
+xcopy /s /y "$(SolutionDir)Lib\FDO" "$(TargetDir)FDO"
+if not exist "$(TargetDir)Dictionaries" md "$(TargetDir)Dictionaries"
+xcopy /s /y "$(SolutionDir)Lib\Dictionaries" "$(TargetDir)Dictionaries"
+if not exist "$(TargetDir)Resources" md "$(TargetDir)Resources"
+xcopy /s /y "$(SolutionDir)Lib\Resources" "$(TargetDir)Resources"
+if not exist "$(TargetDir)Schema" md "$(TargetDir)Schema"
+xcopy /s /y "$(SolutionDir)Lib\Schema" "$(TargetDir)Schema"
+copy /y "$(SolutionDir)Lib\*.dll" "$(TargetDir)"
+copy /y "$(SolutionDir)Lib\Platform.ini" "$(TargetDir)"</PostBuildEvent>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/BasicSample.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/BasicSample.csproj	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/BasicSample.csproj	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Release\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{BE473CB6-718D-4654-9B0F-F1F9A327BD07}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>BasicSample</RootNamespace>
+    <AssemblyName>BasicSample</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Desktop.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Foundation, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Foundation.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Geometry, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Geometry.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.PlatformBase.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.Desktop.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>if not exist "$(TargetDir)FDO" md "$(TargetDir)FDO"
+xcopy /s /y "$(SolutionDir)Lib\FDO" "$(TargetDir)FDO"
+if not exist "$(TargetDir)Dictionaries" md "$(TargetDir)Dictionaries"
+xcopy /s /y "$(SolutionDir)Lib\Dictionaries" "$(TargetDir)Dictionaries"
+if not exist "$(TargetDir)Resources" md "$(TargetDir)Resources"
+xcopy /s /y "$(SolutionDir)Lib\Resources" "$(TargetDir)Resources"
+if not exist "$(TargetDir)Schema" md "$(TargetDir)Schema"
+xcopy /s /y "$(SolutionDir)Lib\Schema" "$(TargetDir)Schema"
+copy /y "$(SolutionDir)Lib\*.dll" "$(TargetDir)"
+copy /y "$(SolutionDir)Lib\Platform.ini" "$(TargetDir)"</PostBuildEvent>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.Designer.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,208 @@
+namespace BasicSample
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.mgDefaultToolbar1 = new OSGeo.MapGuide.Viewer.MgDefaultToolbar();
+            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+            this.lblCoords = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblSelected = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblScale = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblSize = new System.Windows.Forms.ToolStripStatusLabel();
+            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+            this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+            this.mgLegend1 = new OSGeo.MapGuide.Viewer.MgLegend();
+            this.mgPropertyPane1 = new OSGeo.MapGuide.Viewer.MgPropertyPane();
+            this.mgMapViewer1 = new OSGeo.MapGuide.Viewer.MgMapViewer();
+            this.statusStrip1.SuspendLayout();
+            this.splitContainer1.Panel1.SuspendLayout();
+            this.splitContainer1.Panel2.SuspendLayout();
+            this.splitContainer1.SuspendLayout();
+            this.splitContainer2.Panel1.SuspendLayout();
+            this.splitContainer2.Panel2.SuspendLayout();
+            this.splitContainer2.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // mgDefaultToolbar1
+            // 
+            this.mgDefaultToolbar1.Location = new System.Drawing.Point(0, 0);
+            this.mgDefaultToolbar1.Name = "mgDefaultToolbar1";
+            this.mgDefaultToolbar1.Size = new System.Drawing.Size(613, 25);
+            this.mgDefaultToolbar1.TabIndex = 0;
+            this.mgDefaultToolbar1.Text = "mgDefaultToolbar1";
+            this.mgDefaultToolbar1.Viewer = null;
+            // 
+            // statusStrip1
+            // 
+            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.lblCoords,
+            this.lblSelected,
+            this.lblScale,
+            this.lblSize});
+            this.statusStrip1.Location = new System.Drawing.Point(0, 484);
+            this.statusStrip1.Name = "statusStrip1";
+            this.statusStrip1.Size = new System.Drawing.Size(613, 22);
+            this.statusStrip1.TabIndex = 1;
+            this.statusStrip1.Text = "statusStrip1";
+            // 
+            // lblCoords
+            // 
+            this.lblCoords.Name = "lblCoords";
+            this.lblCoords.Size = new System.Drawing.Size(0, 17);
+            // 
+            // lblSelected
+            // 
+            this.lblSelected.Name = "lblSelected";
+            this.lblSelected.Size = new System.Drawing.Size(598, 17);
+            this.lblSelected.Spring = true;
+            this.lblSelected.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // lblScale
+            // 
+            this.lblScale.Name = "lblScale";
+            this.lblScale.Size = new System.Drawing.Size(0, 17);
+            this.lblScale.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // lblSize
+            // 
+            this.lblSize.Name = "lblSize";
+            this.lblSize.Size = new System.Drawing.Size(0, 17);
+            // 
+            // splitContainer1
+            // 
+            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.splitContainer1.Location = new System.Drawing.Point(0, 25);
+            this.splitContainer1.Name = "splitContainer1";
+            // 
+            // splitContainer1.Panel1
+            // 
+            this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
+            // 
+            // splitContainer1.Panel2
+            // 
+            this.splitContainer1.Panel2.Controls.Add(this.mgMapViewer1);
+            this.splitContainer1.Size = new System.Drawing.Size(613, 459);
+            this.splitContainer1.SplitterDistance = 204;
+            this.splitContainer1.TabIndex = 2;
+            // 
+            // splitContainer2
+            // 
+            this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+            this.splitContainer2.Name = "splitContainer2";
+            this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
+            // 
+            // splitContainer2.Panel1
+            // 
+            this.splitContainer2.Panel1.Controls.Add(this.mgLegend1);
+            // 
+            // splitContainer2.Panel2
+            // 
+            this.splitContainer2.Panel2.Controls.Add(this.mgPropertyPane1);
+            this.splitContainer2.Size = new System.Drawing.Size(204, 459);
+            this.splitContainer2.SplitterDistance = 219;
+            this.splitContainer2.TabIndex = 0;
+            // 
+            // mgLegend1
+            // 
+            this.mgLegend1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.mgLegend1.GroupContextMenu = null;
+            this.mgLegend1.LayerContextMenu = null;
+            this.mgLegend1.Location = new System.Drawing.Point(0, 0);
+            this.mgLegend1.Name = "mgLegend1";
+            this.mgLegend1.ShowTooltips = true;
+            this.mgLegend1.Size = new System.Drawing.Size(204, 219);
+            this.mgLegend1.TabIndex = 0;
+            this.mgLegend1.ThemeCompressionLimit = 0;
+            // 
+            // mgPropertyPane1
+            // 
+            this.mgPropertyPane1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.mgPropertyPane1.Location = new System.Drawing.Point(0, 0);
+            this.mgPropertyPane1.Name = "mgPropertyPane1";
+            this.mgPropertyPane1.Size = new System.Drawing.Size(204, 236);
+            this.mgPropertyPane1.TabIndex = 0;
+            // 
+            // mgMapViewer1
+            // 
+            this.mgMapViewer1.Cursor = System.Windows.Forms.Cursors.Default;
+            this.mgMapViewer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.mgMapViewer1.Location = new System.Drawing.Point(0, 0);
+            this.mgMapViewer1.MaxScale = 1000000000;
+            this.mgMapViewer1.MinScale = 10;
+            this.mgMapViewer1.MouseWheelDelayRenderInterval = 800;
+            this.mgMapViewer1.Name = "mgMapViewer1";
+            this.mgMapViewer1.PointPixelBuffer = 2;
+            this.mgMapViewer1.SelectionColor = System.Drawing.Color.Blue;
+            this.mgMapViewer1.Size = new System.Drawing.Size(405, 459);
+            this.mgMapViewer1.TabIndex = 0;
+            this.mgMapViewer1.Text = "mgMapViewer1";
+            this.mgMapViewer1.TooltipDelayInterval = 1000;
+            this.mgMapViewer1.ZoomInFactor = 0.5;
+            this.mgMapViewer1.ZoomOutFactor = 2;
+            this.mgMapViewer1.SelectionChanged += new System.EventHandler(this.mgMapViewer1_SelectionChanged);
+            // 
+            // MainForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(613, 506);
+            this.Controls.Add(this.splitContainer1);
+            this.Controls.Add(this.statusStrip1);
+            this.Controls.Add(this.mgDefaultToolbar1);
+            this.Name = "MainForm";
+            this.Text = "mg-desktop Sample";
+            this.statusStrip1.ResumeLayout(false);
+            this.statusStrip1.PerformLayout();
+            this.splitContainer1.Panel1.ResumeLayout(false);
+            this.splitContainer1.Panel2.ResumeLayout(false);
+            this.splitContainer1.ResumeLayout(false);
+            this.splitContainer2.Panel1.ResumeLayout(false);
+            this.splitContainer2.Panel2.ResumeLayout(false);
+            this.splitContainer2.ResumeLayout(false);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private OSGeo.MapGuide.Viewer.MgDefaultToolbar mgDefaultToolbar1;
+        private System.Windows.Forms.StatusStrip statusStrip1;
+        private System.Windows.Forms.ToolStripStatusLabel lblCoords;
+        private System.Windows.Forms.ToolStripStatusLabel lblSelected;
+        private System.Windows.Forms.ToolStripStatusLabel lblScale;
+        private System.Windows.Forms.ToolStripStatusLabel lblSize;
+        private System.Windows.Forms.SplitContainer splitContainer1;
+        private OSGeo.MapGuide.Viewer.MgMapViewer mgMapViewer1;
+        private System.Windows.Forms.SplitContainer splitContainer2;
+        private OSGeo.MapGuide.Viewer.MgLegend mgLegend1;
+        private OSGeo.MapGuide.Viewer.MgPropertyPane mgPropertyPane1;
+    }
+}
+

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.Viewer;
+using OSGeo.MapGuide;
+using OSGeo.MapGuide.Viewer.Desktop;
+
+namespace BasicSample
+{
+    public partial class MainForm : Form, IMapStatusBar
+    {
+        public MainForm()
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnLoad(EventArgs e)
+        {
+            new MapViewerController(mgMapViewer1,          //The MgMapViewer
+                                    mgLegend1,             //The MgLegend
+                                    this,                  //The IMapStatusBar
+                                    mgPropertyPane1,       //The MgPropertyPane
+                                    mgDefaultToolbar1);    //The MgDefaultToolbar
+
+            MgdServiceFactory factory = new MgdServiceFactory();
+            MgdResourceService resSvc = (MgdResourceService)factory.CreateService(MgServiceType.ResourceService);
+            MgResourceIdentifier mapDefId = new MgResourceIdentifier("Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition");
+            //If this map definition doesn't exist, we ask the user to
+            //load the Sheboygan package
+            if (!resSvc.ResourceExists(mapDefId))
+            {
+                using (OpenFileDialog diag = new OpenFileDialog())
+                {
+                    diag.Filter = "MapGuide Packages (*.mgp)|*.mgp";
+                    if (diag.ShowDialog() == DialogResult.OK)
+                    {
+                        MgByteSource source = new MgByteSource(diag.FileName);
+                        MgByteReader reader = source.GetReader();
+                        resSvc.ApplyResourcePackage(reader);
+                    }
+                    else
+                    {
+                        //No map, nothing to do here
+                        Application.Exit();
+                    }
+                }
+            }
+
+            //Create our runtime map
+            MgdMap map = new MgdMap(mapDefId);
+            //Create our viewer provider
+            MgMapViewerProvider provider = new MgDesktopMapViewerProvider(map);
+            //Initialize our viewer with this provider
+            mgMapViewer1.Init(provider);
+        }
+
+        public void SetCursorPositionMessage(string message)
+        {
+            lblCoords.Text = message;
+        }
+
+        public void SetFeatureSelectedMessage(string message)
+        {
+            lblSelected.Text = message;
+        }
+
+        public void SetMapScaleMessage(string message)
+        {
+            lblScale.Text = message;
+        }
+
+        public void SetMapSizeMessage(string message)
+        {
+            lblSize.Text = message;
+        }
+
+        private void mgMapViewer1_SelectionChanged(object sender, EventArgs e)
+        {
+            MgSelectionBase selection = mgMapViewer1.GetSelection();
+            MgReadOnlyLayerCollection layers = selection.GetLayers();
+            if (layers != null)
+            {
+                for (int i = 0; i < layers.GetCount(); i++)
+                {
+                    MgLayerBase layer = layers.GetItem(i);
+                    if (layer.Name == "Parcels") //The selected layer is parcels
+                    {
+                        //Check that we only have one selected object
+                        int count = selection.GetSelectedFeaturesCount(layer, layer.FeatureClassName);
+                        if (count == 1)
+                        {
+                            MgFeatureReader reader = null;
+                            try
+                            {
+                                reader = selection.GetSelectedFeatures(layer, layer.FeatureClassName, false);
+                                if (reader.ReadNext())
+                                {
+                                    //Address is in the RPROPAD property
+                                    if (reader.IsNull("RPROPAD"))
+                                        MessageBox.Show("Selected parcel has no address");
+                                    else
+                                        MessageBox.Show("Address: " + reader.GetString("RPROPAD"));
+                                }
+                            }
+                            finally //Must close all readers, otherwise connections will leak
+                            {
+                                reader.Close();
+                            }
+                        }
+                        else
+                        {
+                            MessageBox.Show("Please select only one parcel");
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.resx
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/MainForm.resx	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <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" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </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>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="mgDefaultToolbar1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>133, 17</value>
+  </metadata>
+  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/Program.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/Program.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/Program.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using OSGeo.MapGuide;
+
+namespace BasicSample
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            MgdPlatform.Initialize("Platform.ini");
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new MainForm());
+            MgdPlatform.Terminate();
+        }
+    }
+}


Property changes on: branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/AssemblyInfo.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/AssemblyInfo.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/AssemblyInfo.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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("BasicSample")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("BasicSample")]
+[assembly: AssemblyCopyright("Copyright ©  2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("ed9ea551-07b7-4cfb-973a-b0384efdab37")]
+
+// 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 Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Resources.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Resources.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Resources.Designer.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.5420
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace BasicSample.Properties
+{
+
+
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BasicSample.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Resources.resx
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Resources.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Resources.resx	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <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="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </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="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <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" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </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>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Settings.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Settings.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Settings.Designer.cs	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.5420
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace BasicSample.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Settings.settings
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Settings.settings	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/BasicSample/Properties/Settings.settings	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>


Property changes on: branches/2.4/MgDev/Desktop/Samples/Lib
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/Desktop/Samples/MgDesktopSamples.sln
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/MgDesktopSamples.sln	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/MgDesktopSamples.sln	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleExtension", "SampleExtension\SampleExtension.csproj", "{B97E7D94-E693-4081-8229-2FE87E5502E4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicSample", "BasicSample\BasicSample.csproj", "{BE473CB6-718D-4654-9B0F-F1F9A327BD07}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdvancedSample", "AdvancedSample\AdvancedSample.csproj", "{AB9B45B7-38BF-4FFD-B809-A23F74A6C505}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x86 = Debug|x86
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Debug|x86.ActiveCfg = Debug|x86
+		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Debug|x86.Build.0 = Debug|x86
+		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Release|x86.ActiveCfg = Release|x86
+		{B97E7D94-E693-4081-8229-2FE87E5502E4}.Release|x86.Build.0 = Release|x86
+		{BE473CB6-718D-4654-9B0F-F1F9A327BD07}.Debug|x86.ActiveCfg = Debug|x86
+		{BE473CB6-718D-4654-9B0F-F1F9A327BD07}.Debug|x86.Build.0 = Debug|x86
+		{BE473CB6-718D-4654-9B0F-F1F9A327BD07}.Release|x86.ActiveCfg = Release|x86
+		{BE473CB6-718D-4654-9B0F-F1F9A327BD07}.Release|x86.Build.0 = Release|x86
+		{AB9B45B7-38BF-4FFD-B809-A23F74A6C505}.Debug|x86.ActiveCfg = Debug|x86
+		{AB9B45B7-38BF-4FFD-B809-A23F74A6C505}.Debug|x86.Build.0 = Debug|x86
+		{AB9B45B7-38BF-4FFD-B809-A23F74A6C505}.Release|x86.ActiveCfg = Release|x86
+		{AB9B45B7-38BF-4FFD-B809-A23F74A6C505}.Release|x86.Build.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

Added: branches/2.4/MgDev/Desktop/Samples/MgDesktopSamples_VS2010.sln
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/MgDesktopSamples_VS2010.sln	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/MgDesktopSamples_VS2010.sln	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,86 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetHarness.Net40", "DotNetHarness\DotNetHarness.Net40.csproj", "{A5881D59-BD24-4A3A-A707-F18A25724D29}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetUnitTest.Net40", "DotNetUnitTest\DotNetUnitTest.Net40.csproj", "{FDA196F0-3C55-4360-B207-BA5EF6D746F8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapViewer.Net40", "MapViewer\MapViewer.Net40.csproj", "{D46ED17B-329B-4D80-9181-FEF8307EFCBB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapViewer.Desktop.Net40", "MapViewer.Desktop\MapViewer.Desktop.Net40.csproj", "{E2001B46-F226-4F7B-911E-252B9644236E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapViewerTest.Net40", "MapViewerTest\MapViewerTest.Net40.csproj", "{E2FC8B99-0638-4C01-86C4-1B625D966981}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MgAppLayout.Net40", "MgAppLayout\MgAppLayout.Net40.csproj", "{F6054D81-E857-49FB-945F-AC2ECD9BB27A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleExtension.Net40", "SampleExtension\SampleExtension.Net40.csproj", "{942C10FD-F7F5-4E68-806D-32EB23A1DD35}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Debug|x64.ActiveCfg = Debug|x64
+		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Debug|x64.Build.0 = Debug|x64
+		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Debug|x86.ActiveCfg = Debug|x86
+		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Debug|x86.Build.0 = Debug|x86
+		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Release|x64.ActiveCfg = Release|x64
+		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Release|x64.Build.0 = Release|x64
+		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Release|x86.ActiveCfg = Release|x86
+		{A5881D59-BD24-4A3A-A707-F18A25724D29}.Release|x86.Build.0 = Release|x86
+		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Debug|x64.ActiveCfg = Debug|x64
+		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Debug|x64.Build.0 = Debug|x64
+		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Debug|x86.ActiveCfg = Debug|x86
+		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Debug|x86.Build.0 = Debug|x86
+		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Release|x64.ActiveCfg = Release|x64
+		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Release|x64.Build.0 = Release|x64
+		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Release|x86.ActiveCfg = Release|x86
+		{FDA196F0-3C55-4360-B207-BA5EF6D746F8}.Release|x86.Build.0 = Release|x86
+		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Debug|x64.Build.0 = Debug|Any CPU
+		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Debug|x86.Build.0 = Debug|Any CPU
+		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Release|x64.ActiveCfg = Release|Any CPU
+		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Release|x64.Build.0 = Release|Any CPU
+		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Release|x86.ActiveCfg = Release|Any CPU
+		{D46ED17B-329B-4D80-9181-FEF8307EFCBB}.Release|x86.Build.0 = Release|Any CPU
+		{E2001B46-F226-4F7B-911E-252B9644236E}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{E2001B46-F226-4F7B-911E-252B9644236E}.Debug|x64.Build.0 = Debug|Any CPU
+		{E2001B46-F226-4F7B-911E-252B9644236E}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E2001B46-F226-4F7B-911E-252B9644236E}.Debug|x86.Build.0 = Debug|Any CPU
+		{E2001B46-F226-4F7B-911E-252B9644236E}.Release|x64.ActiveCfg = Release|Any CPU
+		{E2001B46-F226-4F7B-911E-252B9644236E}.Release|x64.Build.0 = Release|Any CPU
+		{E2001B46-F226-4F7B-911E-252B9644236E}.Release|x86.ActiveCfg = Release|Any CPU
+		{E2001B46-F226-4F7B-911E-252B9644236E}.Release|x86.Build.0 = Release|Any CPU
+		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Debug|x64.ActiveCfg = Debug|x64
+		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Debug|x64.Build.0 = Debug|x64
+		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Debug|x86.ActiveCfg = Debug|x86
+		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Debug|x86.Build.0 = Debug|x86
+		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Release|x64.ActiveCfg = Release|x64
+		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Release|x64.Build.0 = Release|x64
+		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Release|x86.ActiveCfg = Release|x86
+		{E2FC8B99-0638-4C01-86C4-1B625D966981}.Release|x86.Build.0 = Release|x86
+		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Debug|x64.ActiveCfg = Debug|x64
+		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Debug|x64.Build.0 = Debug|x64
+		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Debug|x86.ActiveCfg = Debug|x86
+		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Debug|x86.Build.0 = Debug|x86
+		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Release|x64.ActiveCfg = Release|x64
+		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Release|x64.Build.0 = Release|x64
+		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Release|x86.ActiveCfg = Release|x86
+		{F6054D81-E857-49FB-945F-AC2ECD9BB27A}.Release|x86.Build.0 = Release|x86
+		{942C10FD-F7F5-4E68-806D-32EB23A1DD35}.Debug|x64.ActiveCfg = Debug|x64
+		{942C10FD-F7F5-4E68-806D-32EB23A1DD35}.Debug|x64.Build.0 = Debug|x64
+		{942C10FD-F7F5-4E68-806D-32EB23A1DD35}.Debug|x86.ActiveCfg = Debug|x86
+		{942C10FD-F7F5-4E68-806D-32EB23A1DD35}.Debug|x86.Build.0 = Debug|x86
+		{942C10FD-F7F5-4E68-806D-32EB23A1DD35}.Release|x64.ActiveCfg = Release|x64
+		{942C10FD-F7F5-4E68-806D-32EB23A1DD35}.Release|x64.Build.0 = Release|x64
+		{942C10FD-F7F5-4E68-806D-32EB23A1DD35}.Release|x86.ActiveCfg = Release|x86
+		{942C10FD-F7F5-4E68-806D-32EB23A1DD35}.Release|x86.Build.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

Modified: branches/2.4/MgDev/Desktop/Samples/SampleExtension/SampleExtension.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/SampleExtension/SampleExtension.csproj	2012-08-30 16:14:43 UTC (rev 6965)
+++ branches/2.4/MgDev/Desktop/Samples/SampleExtension/SampleExtension.csproj	2012-08-30 17:04:26 UTC (rev 6966)
@@ -46,22 +46,35 @@
     <ErrorReport>prompt</ErrorReport>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.0, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=x86">
+    <Reference Include="OSGeo.MapGuide.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Desktop.dll</HintPath>
+      <HintPath>..\Lib\OSGeo.MapGuide.Desktop.dll</HintPath>
+      <Private>False</Private>
     </Reference>
-    <Reference Include="OSGeo.MapGuide.Foundation, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+    <Reference Include="OSGeo.MapGuide.Foundation, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Foundation.dll</HintPath>
+      <HintPath>..\Lib\OSGeo.MapGuide.Foundation.dll</HintPath>
+      <Private>False</Private>
     </Reference>
-    <Reference Include="OSGeo.MapGuide.Geometry, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+    <Reference Include="OSGeo.MapGuide.Geometry, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.Geometry.dll</HintPath>
+      <HintPath>..\Lib\OSGeo.MapGuide.Geometry.dll</HintPath>
+      <Private>False</Private>
     </Reference>
-    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=1.0.0.1, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
+    <Reference Include="OSGeo.MapGuide.PlatformBase, Version=2.4.0.6962, Culture=neutral, PublicKeyToken=f526c48929fda856, processorArchitecture=x86">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\bin\Assemblies\OSGeo.MapGuide.PlatformBase.dll</HintPath>
+      <HintPath>..\Lib\OSGeo.MapGuide.PlatformBase.dll</HintPath>
+      <Private>False</Private>
     </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="OSGeo.MapGuide.Viewer.Desktop, Version=2.4.0.6964, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Lib\OSGeo.MapGuide.Viewer.Desktop.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
@@ -185,16 +198,6 @@
     <Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\MapViewer.Desktop\MapViewer.Desktop.csproj">
-      <Project>{E2001B46-F226-4F7B-911E-252B9644236E}</Project>
-      <Name>MapViewer.Desktop</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\MapViewer\MapViewer.csproj">
-      <Project>{D46ED17B-329B-4D80-9181-FEF8307EFCBB}</Project>
-      <Name>MapViewer</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
     <EmbeddedResource Include="AnalyzingFeatures.resx">
       <DependentUpon>AnalyzingFeatures.cs</DependentUpon>
     </EmbeddedResource>
@@ -275,4 +278,18 @@
   <Target Name="AfterBuild">
   </Target>
   -->
+  <PropertyGroup>
+    <PostBuildEvent>if not exist "$(TargetDir)FDO" md "$(TargetDir)FDO"
+xcopy /s /y "$(SolutionDir)Lib\FDO" "$(TargetDir)FDO"
+if not exist "$(TargetDir)Dictionaries" md "$(TargetDir)Dictionaries"
+xcopy /s /y "$(SolutionDir)Lib\Dictionaries" "$(TargetDir)Dictionaries"
+if not exist "$(TargetDir)Resources" md "$(TargetDir)Resources"
+xcopy /s /y "$(SolutionDir)Lib\Resources" "$(TargetDir)Resources"
+if not exist "$(TargetDir)Schema" md "$(TargetDir)Schema"
+xcopy /s /y "$(SolutionDir)Lib\Schema" "$(TargetDir)Schema"
+copy /y "$(SolutionDir)Lib\*.dll" "$(TargetDir)"
+copy /y "$(SolutionDir)Lib\Platform.ini" "$(TargetDir)"
+copy /y "$(SolutionDir)Lib\MgAppLayout.exe" "$(TargetDir)"
+copy /y "$(SolutionDir)Lib\Sheboygan.AppLayout" "$(TargetDir)"</PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Samples/samples_readme.txt
===================================================================
--- branches/2.4/MgDev/Desktop/Samples/samples_readme.txt	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Samples/samples_readme.txt	2012-08-30 17:04:26 UTC (rev 6966)
@@ -0,0 +1,30 @@
+mg-desktop samples README
+=========================
+
+The following samples all require the Sheboygan sample dataset. For these samples to build, copy your mg-desktop files (and its subfolders) into the Lib directory, you must use the correct build of mg-desktop for the version of VS you are using to open this solution file:
+
+ - MgDesktopSamples.sln: mg-desktop .net Framework 2.0, VC9 build
+ - MgDesktopSamples_VS2010.sln: mg-desktop .net Framework 4.0, VC10 build
+
+Basically, you can't use a .net 4.0 build of mg-desktop on a VS2008 solution
+
+BasicSample
+===========
+
+Demonstrates a basic Windows Forms Application that embeds the mg-desktop map viewer
+
+AdvancedSample
+==============
+
+Demonstrates a Windows Forms Application that embeds the mg-desktop map viewer and shows how to do things like measuring and digitizing
+
+SampleExtension
+===============
+
+The MapGuide Developer's Guide fully ported to mg-desktop in the form of an mg-desktop AppLayout extension module. This is the most comprehensive demonstration of the mg-desktop API
+
+To run this particular sample extension, build it in Visual Studio, then run from the command-line of the project's output directory:
+
+MgAppLayout.exe Sheboygan.AppLayout
+
+The Sheboygan.AppLayout document will instruct MgAppLayout.exe to load your SampleExtension and invoke the components within.
\ No newline at end of file



More information about the mapguide-commits mailing list