[mapguide-commits] r7871 - in branches/2.4/MgDev/Desktop: MapViewer MapViewer/Properties MapViewer/Redlining MapViewer/Resources MgAppLayout

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu Sep 26 02:05:11 PDT 2013


Author: jng
Date: 2013-09-26 02:05:10 -0700 (Thu, 26 Sep 2013)
New Revision: 7871

Added:
   branches/2.4/MgDev/Desktop/MapViewer/MgRedlineComponent.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgRedlineComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.resx
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditor.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.resx
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineManager.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineRegistry.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineSchemaFactory.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.resx
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.resx
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.cs
   branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.resx
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_box.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_cross.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_dash.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_dolmit.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_hex.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_135.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_45.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_90.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_net.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_sacncr.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_solid.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_square.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/area_steel.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/cross-script.png
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_border.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dash.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dashdot.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dashdotdot.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_divide.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dot.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_fenceline1.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_rail.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/line_solid.templ
   branches/2.4/MgDev/Desktop/MapViewer/Resources/map--minus.png
   branches/2.4/MgDev/Desktop/MapViewer/Resources/map--plus.png
   branches/2.4/MgDev/Desktop/MapViewer/Resources/markupfeaturesource.xml
   branches/2.4/MgDev/Desktop/MapViewer/Resources/markuplayerdefinition.xml
   branches/2.4/MgDev/Desktop/MapViewer/Resources/markuplayerdefinition_advanced.xml
   branches/2.4/MgDev/Desktop/MapViewer/Resources/plus.png
   branches/2.4/MgDev/Desktop/MapViewer/Resources/redline.png
Modified:
   branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj
   branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx
   branches/2.4/MgDev/Desktop/MapViewer/Strings.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Strings.resx
   branches/2.4/MgDev/Desktop/MapViewer/Util.cs
   branches/2.4/MgDev/Desktop/MgAppLayout/Sheboygan.AppLayout
   branches/2.4/MgDev/Desktop/MgAppLayout/SheboyganTiled.AppLayout
Log:
#2313: First cut of a redlining component for mg-desktop. This borrows design heavily from the current Fusion implementation, but without the following features from the Fusion implementation:
 - Redline data store export
 - Redline data store import
 - Configurable properties
   - Default data store (currently hardcoded to SDF)
   - Default geometry storage (current hardcoded to all)
   - Stylization type (currently hardcoded to Advanced)
Future submissions will fill in some of these gaps

Modified: branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj	2013-09-24 13:24:19 UTC (rev 7870)
+++ branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj	2013-09-26 09:05:10 UTC (rev 7871)
@@ -55,6 +55,7 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Design" />
     <Reference Include="System.Drawing" />
+    <Reference Include="System.Messaging" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
   </ItemGroup>
@@ -168,6 +169,18 @@
     <Compile Include="MgLayerSelectionHandler.cs">
       <SubType>Component</SubType>
     </Compile>
+    <Compile Include="MgRedlineComponent.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="MgRedlineComponent.Designer.cs">
+      <DependentUpon>MgRedlineComponent.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MgRedlineControlImpl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="MgRedlineControlImpl.Designer.cs">
+      <DependentUpon>MgRedlineControlImpl.cs</DependentUpon>
+    </Compile>
     <Compile Include="MgSearchComponent.cs">
       <SubType>Component</SubType>
     </Compile>
@@ -208,6 +221,40 @@
       <DesignTime>True</DesignTime>
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
+    <Compile Include="Redlining\RedlineEditingCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Redlining\RedlineEditingCtrl.Designer.cs">
+      <DependentUpon>RedlineEditingCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Redlining\RedlineEditor.cs" />
+    <Compile Include="Redlining\RedlineMainCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Redlining\RedlineMainCtrl.Designer.cs">
+      <DependentUpon>RedlineMainCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Redlining\RedlineManager.cs" />
+    <Compile Include="Redlining\RedlineRegistry.cs" />
+    <Compile Include="Redlining\RedlineSchemaFactory.cs" />
+    <Compile Include="Redlining\RedlineStyleCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Redlining\RedlineStyleCtrl.Designer.cs">
+      <DependentUpon>RedlineStyleCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Redlining\RedlineStyleDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Redlining\RedlineStyleDialog.Designer.cs">
+      <DependentUpon>RedlineStyleDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Redlining\TextPrompt.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Redlining\TextPrompt.Designer.cs">
+      <DependentUpon>TextPrompt.cs</DependentUpon>
+    </Compile>
     <Compile Include="Strings.Designer.cs">
       <AutoGen>True</AutoGen>
       <DesignTime>True</DesignTime>
@@ -254,6 +301,9 @@
     <EmbeddedResource Include="MgQueryResultsDialog.resx">
       <DependentUpon>MgQueryResultsDialog.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="MgRedlineControlImpl.resx">
+      <DependentUpon>MgRedlineControlImpl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="MgSearchControlImpl.resx">
       <DependentUpon>MgSearchControlImpl.cs</DependentUpon>
     </EmbeddedResource>
@@ -270,6 +320,21 @@
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <EmbeddedResource Include="Redlining\RedlineEditingCtrl.resx">
+      <DependentUpon>RedlineEditingCtrl.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Redlining\RedlineMainCtrl.resx">
+      <DependentUpon>RedlineMainCtrl.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Redlining\RedlineStyleCtrl.resx">
+      <DependentUpon>RedlineStyleCtrl.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Redlining\RedlineStyleDialog.resx">
+      <DependentUpon>RedlineStyleDialog.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Redlining\TextPrompt.resx">
+      <DependentUpon>TextPrompt.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Strings.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Strings.Designer.cs</LastGenOutput>
@@ -466,6 +531,37 @@
   </ItemGroup>
   <ItemGroup>
     <Content Include="Resources\AreaLayerDef.txt" />
+    <None Include="Resources\area_box.templ" />
+    <None Include="Resources\area_cross.templ" />
+    <None Include="Resources\area_dash.templ" />
+    <None Include="Resources\area_dolmit.templ" />
+    <None Include="Resources\area_hex.templ" />
+    <None Include="Resources\area_line.templ" />
+    <None Include="Resources\area_line_135.templ" />
+    <None Include="Resources\area_line_45.templ" />
+    <None Include="Resources\area_line_90.templ" />
+    <None Include="Resources\area_net.templ" />
+    <None Include="Resources\area_sacncr.templ" />
+    <None Include="Resources\area_solid.templ" />
+    <None Include="Resources\area_square.templ" />
+    <None Include="Resources\area_steel.templ" />
+    <None Include="Resources\line_border.templ" />
+    <None Include="Resources\line_dash.templ" />
+    <None Include="Resources\markuplayerdefinition_advanced.xml" />
+    <None Include="Resources\markuplayerdefinition.xml" />
+    <None Include="Resources\markupfeaturesource.xml" />
+    <None Include="Resources\line_dashdot.templ" />
+    <None Include="Resources\line_dashdotdot.templ" />
+    <None Include="Resources\line_divide.templ" />
+    <None Include="Resources\line_dot.templ" />
+    <None Include="Resources\line_fenceline1.templ" />
+    <None Include="Resources\line_rail.templ" />
+    <None Include="Resources\line_solid.templ" />
+    <None Include="Resources\redline.png" />
+    <None Include="Resources\map--minus.png" />
+    <None Include="Resources\map--plus.png" />
+    <None Include="Resources\cross-script.png" />
+    <None Include="Resources\plus.png" />
     <None Include="Resources\AreaRuleTemplate.txt" />
     <None Include="Resources\view_log.gif" />
     <None Include="Resources\monitor_status.gif" />

Added: branches/2.4/MgDev/Desktop/MapViewer/MgRedlineComponent.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgRedlineComponent.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgRedlineComponent.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,36 @@
+namespace OSGeo.MapGuide.Viewer
+{
+    partial class MgRedlineComponent
+    {
+        /// <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 Component 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()
+        {
+            components = new System.ComponentModel.Container();
+        }
+
+        #endregion
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgRedlineComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgRedlineComponent.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgRedlineComponent.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Text;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    /// <summary>
+    /// A generic component that allows the user to annotate the map with redlines
+    /// </summary>
+    [ToolboxItem(true)]
+    public partial class MgRedlineComponent : MgViewerComponent
+    {
+        //TODO: Feature parity with the Fusion implementation
+        // - Configurable Data Store choice
+        // - Configurable Geometry Types
+        // - Redline import
+        // - Redline export
+        // - Configurable default style template
+
+        public MgRedlineComponent()
+        {
+            this.Icon = Properties.Resources.redline;
+            this.Label = this.ToolTipText = Strings.TitleRedline;
+        }
+        protected override MgControlView CreateControlView()
+        {
+            return new MgRedlineControlImpl(this.Viewer);
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,260 @@
+namespace OSGeo.MapGuide.Viewer
+{
+    partial class MgRedlineControlImpl
+    {
+        /// <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 Component 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.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgRedlineControlImpl));
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.lstRedlineLayers = new System.Windows.Forms.ListView();
+            this.layerIcons = new System.Windows.Forms.ImageList(this.components);
+            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.btnNew = new System.Windows.Forms.ToolStripButton();
+            this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+            this.btnDeleteRedlineStore = new System.Windows.Forms.ToolStripButton();
+            this.btnAddToMap = new System.Windows.Forms.ToolStripButton();
+            this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+            this.btnRefreshAvailableLayers = new System.Windows.Forms.ToolStripButton();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.lstLayersOnMap = new System.Windows.Forms.ListView();
+            this.toolStrip2 = new System.Windows.Forms.ToolStrip();
+            this.btnRemoveLayerFromMap = new System.Windows.Forms.ToolStripButton();
+            this.btnEditStyle = new System.Windows.Forms.ToolStripButton();
+            this.btnEditObjects = new System.Windows.Forms.ToolStripButton();
+            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+            this.btnRefreshLayersOnMap = new System.Windows.Forms.ToolStripButton();
+            this.mainBody = new System.Windows.Forms.Panel();
+            this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
+            this.groupBox1.SuspendLayout();
+            this.toolStrip1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.toolStrip2.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.lstRedlineLayers);
+            this.groupBox1.Controls.Add(this.toolStrip1);
+            resources.ApplyResources(this.groupBox1, "groupBox1");
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.TabStop = false;
+            // 
+            // lstRedlineLayers
+            // 
+            resources.ApplyResources(this.lstRedlineLayers, "lstRedlineLayers");
+            this.lstRedlineLayers.LargeImageList = this.layerIcons;
+            this.lstRedlineLayers.MultiSelect = false;
+            this.lstRedlineLayers.Name = "lstRedlineLayers";
+            this.lstRedlineLayers.SmallImageList = this.layerIcons;
+            this.lstRedlineLayers.UseCompatibleStateImageBehavior = false;
+            this.lstRedlineLayers.View = System.Windows.Forms.View.List;
+            this.lstRedlineLayers.SelectedIndexChanged += new System.EventHandler(this.lstRedlineLayers_SelectedIndexChanged);
+            // 
+            // layerIcons
+            // 
+            this.layerIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("layerIcons.ImageStream")));
+            this.layerIcons.TransparentColor = System.Drawing.Color.Transparent;
+            this.layerIcons.Images.SetKeyName(0, "legend-layer.png");
+            // 
+            // toolStrip1
+            // 
+            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.btnNew,
+            this.toolStripSeparator2,
+            this.btnDeleteRedlineStore,
+            this.btnAddToMap,
+            this.toolStripSeparator3,
+            this.btnRefreshAvailableLayers});
+            resources.ApplyResources(this.toolStrip1, "toolStrip1");
+            this.toolStrip1.Name = "toolStrip1";
+            // 
+            // btnNew
+            // 
+            this.btnNew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.btnNew.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.plus;
+            resources.ApplyResources(this.btnNew, "btnNew");
+            this.btnNew.Name = "btnNew";
+            this.btnNew.Click += new System.EventHandler(this.btnNew_Click);
+            // 
+            // toolStripSeparator2
+            // 
+            this.toolStripSeparator2.Name = "toolStripSeparator2";
+            resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
+            // 
+            // btnDeleteRedlineStore
+            // 
+            this.btnDeleteRedlineStore.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            resources.ApplyResources(this.btnDeleteRedlineStore, "btnDeleteRedlineStore");
+            this.btnDeleteRedlineStore.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.cross_script;
+            this.btnDeleteRedlineStore.Name = "btnDeleteRedlineStore";
+            this.btnDeleteRedlineStore.Click += new System.EventHandler(this.btnDeleteRedlineStore_Click);
+            // 
+            // btnAddToMap
+            // 
+            this.btnAddToMap.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            resources.ApplyResources(this.btnAddToMap, "btnAddToMap");
+            this.btnAddToMap.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.map__plus;
+            this.btnAddToMap.Name = "btnAddToMap";
+            this.btnAddToMap.Click += new System.EventHandler(this.btnAddToMap_Click);
+            // 
+            // toolStripSeparator3
+            // 
+            this.toolStripSeparator3.Name = "toolStripSeparator3";
+            resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
+            // 
+            // btnRefreshAvailableLayers
+            // 
+            this.btnRefreshAvailableLayers.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.btnRefreshAvailableLayers.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.view_refresh;
+            resources.ApplyResources(this.btnRefreshAvailableLayers, "btnRefreshAvailableLayers");
+            this.btnRefreshAvailableLayers.Name = "btnRefreshAvailableLayers";
+            this.btnRefreshAvailableLayers.Click += new System.EventHandler(this.btnRefreshAvailableLayers_Click);
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.lstLayersOnMap);
+            this.groupBox2.Controls.Add(this.toolStrip2);
+            resources.ApplyResources(this.groupBox2, "groupBox2");
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.TabStop = false;
+            // 
+            // lstLayersOnMap
+            // 
+            resources.ApplyResources(this.lstLayersOnMap, "lstLayersOnMap");
+            this.lstLayersOnMap.LargeImageList = this.layerIcons;
+            this.lstLayersOnMap.MultiSelect = false;
+            this.lstLayersOnMap.Name = "lstLayersOnMap";
+            this.lstLayersOnMap.SmallImageList = this.layerIcons;
+            this.lstLayersOnMap.UseCompatibleStateImageBehavior = false;
+            this.lstLayersOnMap.View = System.Windows.Forms.View.List;
+            this.lstLayersOnMap.SelectedIndexChanged += new System.EventHandler(this.lstLayersOnMap_SelectedIndexChanged);
+            // 
+            // toolStrip2
+            // 
+            this.toolStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.btnRemoveLayerFromMap,
+            this.toolStripSeparator4,
+            this.btnEditStyle,
+            this.btnEditObjects,
+            this.toolStripSeparator1,
+            this.btnRefreshLayersOnMap});
+            resources.ApplyResources(this.toolStrip2, "toolStrip2");
+            this.toolStrip2.Name = "toolStrip2";
+            // 
+            // btnRemoveLayerFromMap
+            // 
+            this.btnRemoveLayerFromMap.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            resources.ApplyResources(this.btnRemoveLayerFromMap, "btnRemoveLayerFromMap");
+            this.btnRemoveLayerFromMap.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.map__minus;
+            this.btnRemoveLayerFromMap.Name = "btnRemoveLayerFromMap";
+            this.btnRemoveLayerFromMap.Click += new System.EventHandler(this.btnRemoveLayerFromMap_Click);
+            // 
+            // btnEditStyle
+            // 
+            this.btnEditStyle.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            resources.ApplyResources(this.btnEditStyle, "btnEditStyle");
+            this.btnEditStyle.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.edit_xml;
+            this.btnEditStyle.Name = "btnEditStyle";
+            this.btnEditStyle.Click += new System.EventHandler(this.btnEditStyle_Click);
+            // 
+            // btnEditObjects
+            // 
+            this.btnEditObjects.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            resources.ApplyResources(this.btnEditObjects, "btnEditObjects");
+            this.btnEditObjects.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.redline;
+            this.btnEditObjects.Name = "btnEditObjects";
+            this.btnEditObjects.Click += new System.EventHandler(this.btnEditObjects_Click);
+            // 
+            // toolStripSeparator1
+            // 
+            this.toolStripSeparator1.Name = "toolStripSeparator1";
+            resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
+            // 
+            // btnRefreshLayersOnMap
+            // 
+            this.btnRefreshLayersOnMap.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.btnRefreshLayersOnMap.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.view_refresh;
+            resources.ApplyResources(this.btnRefreshLayersOnMap, "btnRefreshLayersOnMap");
+            this.btnRefreshLayersOnMap.Name = "btnRefreshLayersOnMap";
+            this.btnRefreshLayersOnMap.Click += new System.EventHandler(this.btnRefreshLayersOnMap_Click);
+            // 
+            // mainBody
+            // 
+            resources.ApplyResources(this.mainBody, "mainBody");
+            this.mainBody.Name = "mainBody";
+            // 
+            // toolStripSeparator4
+            // 
+            this.toolStripSeparator4.Name = "toolStripSeparator4";
+            resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
+            // 
+            // MgRedlineControlImpl
+            // 
+            resources.ApplyResources(this, "$this");
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.mainBody);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.Name = "MgRedlineControlImpl";
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.toolStrip1.ResumeLayout(false);
+            this.toolStrip1.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            this.toolStrip2.ResumeLayout(false);
+            this.toolStrip2.PerformLayout();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.ListView lstRedlineLayers;
+        private System.Windows.Forms.ToolStrip toolStrip1;
+        private System.Windows.Forms.ToolStripButton btnDeleteRedlineStore;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.ListView lstLayersOnMap;
+        private System.Windows.Forms.ToolStrip toolStrip2;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+        private System.Windows.Forms.ToolStripButton btnAddToMap;
+        private System.Windows.Forms.ToolStripButton btnRemoveLayerFromMap;
+        private System.Windows.Forms.ToolStripButton btnEditStyle;
+        private System.Windows.Forms.ToolStripButton btnEditObjects;
+        private System.Windows.Forms.Panel mainBody;
+        private System.Windows.Forms.ToolStripButton btnNew;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+        private System.Windows.Forms.ToolStripButton btnRefreshAvailableLayers;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripButton btnRefreshLayersOnMap;
+        private System.Windows.Forms.ImageList layerIcons;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
+
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,241 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.Viewer.Redlining;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    public partial class MgRedlineControlImpl : MgControlView
+    {
+        private MgRedlineControlImpl()
+        {
+            InitializeComponent();
+        }
+
+        private IMapViewer _viewer;
+
+        public MgRedlineControlImpl(IMapViewer viewer)
+            : this()
+        {
+            _viewer = viewer;
+            this.Title = Strings.TitleRedline;
+            SetBodyControl(new RedlineMainCtrl());
+        }
+
+        private void lstLayersOnMap_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            btnRemoveLayerFromMap.Enabled = btnEditStyle.Enabled = btnEditObjects.Enabled = (lstLayersOnMap.SelectedItems.Count == 1);
+        }
+
+        private void lstRedlineLayers_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            btnDeleteRedlineStore.Enabled = btnAddToMap.Enabled = (lstRedlineLayers.SelectedItems.Count == 1);
+        }
+
+        private void btnDeleteRedlineStore_Click(object sender, EventArgs e)
+        {
+            if (lstRedlineLayers.SelectedItems.Count == 1)
+            {
+                var item = lstRedlineLayers.SelectedItems[0];
+                var layer = item.Tag as RedlineLayer;
+                if (layer != null)
+                {
+                    var mgr = GetRedlineManager();
+                    mgr.DeleteLayer(layer);
+                    lstRedlineLayers.Items.Remove(item);
+                }
+            }
+        }
+
+        private void btnAddToMap_Click(object sender, EventArgs e)
+        {
+            if (lstRedlineLayers.SelectedItems.Count == 1)
+            {
+                var item = lstRedlineLayers.SelectedItems[0];
+                var layer = item.Tag as RedlineLayer;
+                if (layer != null)
+                {
+                    var mgr = GetRedlineManager();
+                    mgr.AddLayerToMap(layer);
+                    lstRedlineLayers.Items.Remove(item);
+
+                    AddRedlineLayerOnMap(layer);
+                    _viewer.RefreshMap();
+                }
+            }
+        }
+
+        private void btnRemoveLayerFromMap_Click(object sender, EventArgs e)
+        {
+            if (lstLayersOnMap.SelectedItems.Count == 1)
+            {
+                var item = lstLayersOnMap.SelectedItems[0];
+                var layer = item.Tag as RedlineLayer;
+                if (layer != null)
+                {
+                    var mgr = GetRedlineManager();
+                    mgr.RemoveLayerFromMap(layer);
+
+                    lstLayersOnMap.Items.Remove(item);
+
+                    AddAvailableRedlineLayer(layer);
+                    _viewer.RefreshMap();
+                    SetBodyControl(new RedlineMainCtrl());
+                }
+            }
+        }
+
+        private void btnEditStyle_Click(object sender, EventArgs e)
+        {
+            if (lstLayersOnMap.SelectedItems.Count == 1)
+            {
+                var item = lstLayersOnMap.SelectedItems[0];
+                var layer = item.Tag as RedlineLayer;
+                if (layer != null)
+                {
+                    var style = _manager.GetLayerStyle(layer);
+                    using (var diag = new RedlineStyleDialog(style))
+                    {
+                        if (diag.ShowDialog() == DialogResult.OK)
+                        {
+                            _manager.UpdateLayerStyle(layer, diag.GetUpdatedStyle());
+                            _viewer.RefreshMap();
+                        }
+                    }
+                }
+            }
+        }
+
+        private void btnEditObjects_Click(object sender, EventArgs e)
+        {
+            if (lstLayersOnMap.SelectedItems.Count == 1)
+            {
+                var item = lstLayersOnMap.SelectedItems[0];
+                var layer = item.Tag as RedlineLayer;
+                if (layer != null)
+                {
+                    var control = new RedlineEditingCtrl(_viewer, layer);
+                    SetBodyControl(control);
+                }
+            }
+        }
+
+        private void SetBodyControl(Control c)
+        {
+            ClearBody();
+            c.Dock = DockStyle.Fill;
+            mainBody.Controls.Add(c);
+        }
+
+        private void ClearBody()
+        {
+            List<Control> controls = new List<Control>();
+            foreach (Control cnt in mainBody.Controls)
+                controls.Add(cnt);
+            mainBody.Controls.Clear();
+            foreach (Control cnt in controls)
+                cnt.Dispose();
+        }
+
+        private string GetName()
+        {
+            return "RedlineLayer";
+        }
+
+        private void AddAvailableRedlineLayer(RedlineLayer layer)
+        {
+            ListViewItem item = new ListViewItem(layer.Name);
+            item.Name = layer.Name;
+            item.Tag = layer;
+            item.ImageIndex = 0;
+            item.StateImageIndex = 0;
+            lstRedlineLayers.Items.Add(item);
+
+            lstLayersOnMap.Items.RemoveByKey(layer.Name);
+        }
+
+        private RedlineManager _manager;
+
+        private RedlineManager GetRedlineManager()
+        {
+            if (_manager == null)
+            {
+                _manager = new RedlineManager(_viewer);
+            }
+            return _manager;
+        }
+
+        private void AddRedlineLayerOnMap(RedlineLayer layer)
+        {
+            ListViewItem item = new ListViewItem(layer.Name);
+            item.Name = layer.Name;
+            item.Tag = layer;
+            item.ImageIndex = 0;
+            item.StateImageIndex = 0;
+            lstLayersOnMap.Items.Add(item);
+
+            lstRedlineLayers.Items.RemoveByKey(layer.Name);
+        }
+
+        private void btnNew_Click(object sender, EventArgs e)
+        {
+            var mgr = GetRedlineManager();
+            var p = GetCreateParams();
+            bool bAddedToMap = false;
+            var layerInfo = mgr.CreateRedlineLayer(p, out bAddedToMap);
+            if (bAddedToMap)
+                AddRedlineLayerOnMap(layerInfo);
+            else
+                AddAvailableRedlineLayer(layerInfo);
+        }
+
+        private CreateRedlineLayerParams GetCreateParams()
+        {
+            //TODO: Popup UI dialog for user to enter this information if desired
+            return new CreateRedlineLayerParams()
+            {
+                AddToMap = true,
+                Format = RedlineDataStoreFormat.SDF,
+                GeometryTypes = MgFeatureGeometricType.Point | MgFeatureGeometricType.Curve | MgFeatureGeometricType.Surface,
+                Name = GetName(),
+                Style = RedlineStyle.CreateDefault()
+            };
+        }
+
+        private void btnRefreshAvailableLayers_Click(object sender, EventArgs e)
+        {
+            lstRedlineLayers.Clear();
+            var mgr = GetRedlineManager();
+            MgMapBase map = _viewer.GetMap();
+            MgLayerCollection layers = map.GetLayers();
+            foreach (var layer in mgr.GetAvailableLayers())
+            {
+                //Omit those already on the map
+                if (layers.IndexOf(layer.SystemName) >= 0)
+                    continue;
+
+                AddAvailableRedlineLayer(layer);
+            }
+        }
+
+        private void btnRefreshLayersOnMap_Click(object sender, EventArgs e)
+        {
+            lstLayersOnMap.Clear();
+            var mgr = GetRedlineManager();
+            MgMapBase map = _viewer.GetMap();
+            MgLayerCollection layers = map.GetLayers();
+            foreach (var layer in mgr.GetAvailableLayers())
+            {
+                //Omit those not on the map
+                if (layers.IndexOf(layer.SystemName) < 0)
+                    continue;
+
+                AddRedlineLayerOnMap(layer);
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgRedlineControlImpl.resx	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,589 @@
+<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>3, 16</value>
+  </metadata>
+  <data name=">>lstRedlineLayers.Name" xml:space="preserve">
+    <value>lstRedlineLayers</value>
+  </data>
+  <data name=">>lstRedlineLayers.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lstRedlineLayers.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lstRedlineLayers.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name=">>toolStrip1.Name" xml:space="preserve">
+    <value>toolStrip1</value>
+  </data>
+  <data name=">>toolStrip1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStrip1.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>toolStrip1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>277, 110</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="groupBox1.Text" xml:space="preserve">
+    <value>Available Redline Layers</value>
+  </data>
+  <data name=">>groupBox1.Name" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>groupBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox1.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="lstRedlineLayers.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <metadata name="layerIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>108, 16</value>
+  </metadata>
+  <data name="layerIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACe
+        BwAAAk1TRnQBSQFMAwEBAAEYAQABGAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
+        AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
+        AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
+        AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
+        AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
+        AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
+        AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
+        AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
+        AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
+        AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
+        ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
+        AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
+        ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
+        AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
+        AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
+        AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
+        AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
+        AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
+        AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
+        AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
+        ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
+        AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
+        ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
+        ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
+        AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
+        AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
+        AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
+        ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
+        Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA///AAkAAbwCDQG8OgABvAEN
+        AYsCCQGLAQ0BvDYAAbwBDQGLBgkBiwENAbwyAAG8AQ0BiwrwAQ0yAAGuCvIBtAGuAfAyAAHwAa4BtAbz
+        AbUBrgHwNgAB8AGuAbUC9AG7AbQB8DoAAfACtAHw/wA4AAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB
+        AQABAQUAAYAXAAP/AQAC/wYAAv8GAAL/BgAC/wYAAf4BHwYAAfgBBwYAAeABAQYAAYABAQYAAYABAQYA
+        AYABBwYAAeABHwYAAfgBfwYAAv8GAAL/BgAC/wYAAv8GAAs=
+</value>
+  </data>
+  <data name="lstRedlineLayers.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 41</value>
+  </data>
+  <data name="lstRedlineLayers.Size" type="System.Drawing.Size, System.Drawing">
+    <value>271, 66</value>
+  </data>
+  <data name="lstRedlineLayers.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>lstRedlineLayers.Name" xml:space="preserve">
+    <value>lstRedlineLayers</value>
+  </data>
+  <data name=">>lstRedlineLayers.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lstRedlineLayers.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lstRedlineLayers.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>3, 16</value>
+  </metadata>
+  <data name="toolStrip1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 16</value>
+  </data>
+  <data name="toolStrip1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>271, 25</value>
+  </data>
+  <data name="toolStrip1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="toolStrip1.Text" xml:space="preserve">
+    <value>toolStrip1</value>
+  </data>
+  <data name=">>toolStrip1.Name" xml:space="preserve">
+    <value>toolStrip1</value>
+  </data>
+  <data name=">>toolStrip1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStrip1.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>toolStrip1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="btnNew.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnNew.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnNew.Text" xml:space="preserve">
+    <value>New</value>
+  </data>
+  <data name="btnNew.ToolTipText" xml:space="preserve">
+    <value>New Redline Layer</value>
+  </data>
+  <data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>6, 25</value>
+  </data>
+  <data name="btnDeleteRedlineStore.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnDeleteRedlineStore.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnDeleteRedlineStore.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnDeleteRedlineStore.Text" xml:space="preserve">
+    <value>Delete</value>
+  </data>
+  <data name="btnDeleteRedlineStore.ToolTipText" xml:space="preserve">
+    <value>Delete selected Redline Layer</value>
+  </data>
+  <data name="btnAddToMap.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnAddToMap.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnAddToMap.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnAddToMap.Text" xml:space="preserve">
+    <value>Add To Map</value>
+  </data>
+  <data name="btnAddToMap.ToolTipText" xml:space="preserve">
+    <value>Add selected Redline Layer to Map</value>
+  </data>
+  <data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>6, 25</value>
+  </data>
+  <data name="btnRefreshAvailableLayers.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnRefreshAvailableLayers.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnRefreshAvailableLayers.Text" xml:space="preserve">
+    <value>Refresh</value>
+  </data>
+  <data name="btnRefreshAvailableLayers.ToolTipText" xml:space="preserve">
+    <value>Refresh list of available redline layers</value>
+  </data>
+  <data name="lstLayersOnMap.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="lstLayersOnMap.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 41</value>
+  </data>
+  <data name="lstLayersOnMap.Size" type="System.Drawing.Size, System.Drawing">
+    <value>271, 67</value>
+  </data>
+  <data name="lstLayersOnMap.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>lstLayersOnMap.Name" xml:space="preserve">
+    <value>lstLayersOnMap</value>
+  </data>
+  <data name=">>lstLayersOnMap.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lstLayersOnMap.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>lstLayersOnMap.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="toolStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>3, 16</value>
+  </metadata>
+  <data name="btnRemoveLayerFromMap.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnRemoveLayerFromMap.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnRemoveLayerFromMap.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnRemoveLayerFromMap.Text" xml:space="preserve">
+    <value>Remove From Map</value>
+  </data>
+  <data name="btnRemoveLayerFromMap.ToolTipText" xml:space="preserve">
+    <value>Remove selected Redline Layer from Map</value>
+  </data>
+  <data name="toolStripSeparator4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>6, 25</value>
+  </data>
+  <data name="btnEditStyle.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnEditStyle.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnEditStyle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnEditStyle.Text" xml:space="preserve">
+    <value>Edit Style</value>
+  </data>
+  <data name="btnEditStyle.ToolTipText" xml:space="preserve">
+    <value>Edit style of selected Redline Layer</value>
+  </data>
+  <data name="btnEditObjects.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnEditObjects.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnEditObjects.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnEditObjects.Text" xml:space="preserve">
+    <value>Add/Edit</value>
+  </data>
+  <data name="btnEditObjects.ToolTipText" xml:space="preserve">
+    <value>Add/Edit redline objects on selected layer</value>
+  </data>
+  <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>6, 25</value>
+  </data>
+  <data name="btnRefreshLayersOnMap.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnRefreshLayersOnMap.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnRefreshLayersOnMap.Text" xml:space="preserve">
+    <value>Refresh</value>
+  </data>
+  <data name="btnRefreshLayersOnMap.ToolTipText" xml:space="preserve">
+    <value>Refresh list of Redline Layers on map</value>
+  </data>
+  <data name="toolStrip2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 16</value>
+  </data>
+  <data name="toolStrip2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>271, 25</value>
+  </data>
+  <data name="toolStrip2.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="toolStrip2.Text" xml:space="preserve">
+    <value>toolStrip2</value>
+  </data>
+  <data name=">>toolStrip2.Name" xml:space="preserve">
+    <value>toolStrip2</value>
+  </data>
+  <data name=">>toolStrip2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStrip2.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>toolStrip2.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 110</value>
+  </data>
+  <data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>277, 111</value>
+  </data>
+  <data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="groupBox2.Text" xml:space="preserve">
+    <value>Redline Layers on Map</value>
+  </data>
+  <data name=">>groupBox2.Name" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>groupBox2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox2.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="mainBody.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="mainBody.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 221</value>
+  </data>
+  <data name="mainBody.Size" type="System.Drawing.Size, System.Drawing">
+    <value>277, 348</value>
+  </data>
+  <data name="mainBody.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name=">>mainBody.Name" xml:space="preserve">
+    <value>mainBody</value>
+  </data>
+  <data name=">>mainBody.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>mainBody.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>mainBody.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>277, 569</value>
+  </data>
+  <data name=">>layerIcons.Name" xml:space="preserve">
+    <value>layerIcons</value>
+  </data>
+  <data name=">>layerIcons.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnNew.Name" xml:space="preserve">
+    <value>btnNew</value>
+  </data>
+  <data name=">>btnNew.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStripSeparator2.Name" xml:space="preserve">
+    <value>toolStripSeparator2</value>
+  </data>
+  <data name=">>toolStripSeparator2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnDeleteRedlineStore.Name" xml:space="preserve">
+    <value>btnDeleteRedlineStore</value>
+  </data>
+  <data name=">>btnDeleteRedlineStore.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnAddToMap.Name" xml:space="preserve">
+    <value>btnAddToMap</value>
+  </data>
+  <data name=">>btnAddToMap.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStripSeparator3.Name" xml:space="preserve">
+    <value>toolStripSeparator3</value>
+  </data>
+  <data name=">>toolStripSeparator3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnRefreshAvailableLayers.Name" xml:space="preserve">
+    <value>btnRefreshAvailableLayers</value>
+  </data>
+  <data name=">>btnRefreshAvailableLayers.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnRemoveLayerFromMap.Name" xml:space="preserve">
+    <value>btnRemoveLayerFromMap</value>
+  </data>
+  <data name=">>btnRemoveLayerFromMap.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnEditStyle.Name" xml:space="preserve">
+    <value>btnEditStyle</value>
+  </data>
+  <data name=">>btnEditStyle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnEditObjects.Name" xml:space="preserve">
+    <value>btnEditObjects</value>
+  </data>
+  <data name=">>btnEditObjects.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStripSeparator1.Name" xml:space="preserve">
+    <value>toolStripSeparator1</value>
+  </data>
+  <data name=">>toolStripSeparator1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnRefreshLayersOnMap.Name" xml:space="preserve">
+    <value>btnRefreshLayersOnMap</value>
+  </data>
+  <data name=">>btnRefreshLayersOnMap.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStripSeparator4.Name" xml:space="preserve">
+    <value>toolStripSeparator4</value>
+  </data>
+  <data name=">>toolStripSeparator4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgRedlineControlImpl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgControlView, OSGeo.MapGuide.Viewer, Version=2.4.1.7610, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
+</root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs	2013-09-24 13:24:19 UTC (rev 7870)
+++ branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.5420
+//     Runtime Version:2.0.50727.5472
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -136,6 +136,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap cross_script {
+            get {
+                object obj = ResourceManager.GetObject("cross-script", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap edit_copy {
             get {
                 object obj = ResourceManager.GetObject("edit_copy", resourceCulture);
@@ -388,6 +395,20 @@
             }
         }
         
+        internal static System.Drawing.Bitmap map__minus {
+            get {
+                object obj = ResourceManager.GetObject("map--minus", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap map__plus {
+            get {
+                object obj = ResourceManager.GetObject("map--plus", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap measure {
             get {
                 object obj = ResourceManager.GetObject("measure", resourceCulture);
@@ -416,6 +437,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap plus {
+            get {
+                object obj = ResourceManager.GetObject("plus", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap PoweredBy_en {
             get {
                 object obj = ResourceManager.GetObject("PoweredBy_en", resourceCulture);
@@ -437,6 +465,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap redline {
+            get {
+                object obj = ResourceManager.GetObject("redline", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap search {
             get {
                 object obj = ResourceManager.GetObject("search", resourceCulture);

Modified: branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx	2013-09-24 13:24:19 UTC (rev 7870)
+++ branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx	2013-09-26 09:05:10 UTC (rev 7871)
@@ -118,208 +118,223 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="icon_select" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_select.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="edit_copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\edit-copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="AreaLayerDef" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\AreaLayerDef.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  <data name="layer_shape_polyline" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\layer-shape-polyline.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="layer_shape_line" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\layer-shape-line.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\info.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="zoom_in" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\zoom-in.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="preview" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\preview.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="initial_center" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\initial-center.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="edit_copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\edit-copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="invoke_url" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\invoke-url.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="select_radius" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\select-radius.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="select_zoom" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\select-zoom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="zoomout" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\zoomout.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  <data name="edit_duplicate" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\edit-duplicate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="select_polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\select-polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="cross-script" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\cross-script.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="select_radius" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\select-radius.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="zoomin" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\zoomin.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name="zoom_out_fixed" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\zoom-out-fixed.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="control" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\control.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="layer_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\layer-small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="view_forward" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\view-forward.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="lc_theme" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\lc_theme.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="lc_dwf" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\lc_dwf.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="overview_map" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\overview-map.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="icon_etc" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_etc.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="lc_broken" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\lc_broken.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="layer_shape" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\layer-shape.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="icon_tasks" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_tasks.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="print" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\print.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="lc_raster" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\lc_raster.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="layer_shape_polyline" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\layer-shape-polyline.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="select_clear" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\select-clear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="AreaLayerDef" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\AreaLayerDef.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="zoomout" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\zoomout.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
   <data name="measure" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\measure.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="select_centre" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\select-centre.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\info.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="icon_loading" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_loading.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="icon_home" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_home.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="edit_paste" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\edit-paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="options" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\options.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="overview_map" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\overview-map.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="layer_small" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\layer-small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="file_print" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\file-print.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="map--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\map--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="icon_pan" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_pan.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="search" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\search.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="grab" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\grab.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  <data name="layer_shape_line" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\layer-shape-line.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="select_features" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\select-features.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="edit_cut" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\edit-cut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="zoom_in_fixed" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\zoom-in-fixed.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="lc_group" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\lc_group.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="layer_shape_polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\layer-shape-polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="view_forward" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\view-forward.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="control-180" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\control-180.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="file_print" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\file-print.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="view_back" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\view-back.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="file_save" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\file-save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="load_package" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\load_package.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="invoke_script" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\invoke-script.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="edit_xml" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\edit-xml.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="edit_paste" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\edit-paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="lc_select" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\lc_select.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="layer_shape_ellipse" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\layer-shape-ellipse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="preview" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\preview.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="ui_tooltip_balloon_bottom" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ui-tooltip-balloon-bottom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="lc_group" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\lc_group.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="grab" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\grab.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
-  <data name="select_clear" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\select-clear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="select_features" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\select-features.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="lc_theme" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\lc_theme.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="control" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\control.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="lc_unselect" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\lc_unselect.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="invoke_script" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\invoke-script.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="edit_duplicate" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\edit-duplicate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="control-180" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\control-180.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="edit_xml" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\edit-xml.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="layer_shape_polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\layer-shape-polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="view_refresh" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\view-refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="edit_cut" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\edit-cut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="PoweredBy_en" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\PoweredBy_en.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="options" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\options.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="icon_pan" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_pan.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="layer_shape_ellipse" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\layer-shape-ellipse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="iconNavigator" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\iconNavigator.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="invoke_url" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\invoke-url.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="AreaRuleTemplate" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\AreaRuleTemplate.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
   </data>
-  <data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="icon_zoomselect" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_zoomselect.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="lc_select" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\lc_select.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="zoom_in_fixed" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\zoom-in-fixed.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="layer_shape" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\layer-shape.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="select_polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\select-polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="zoom_full" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\zoom-full.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="zoomin" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\zoomin.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </data>
   <data name="buffer" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\buffer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="zoom_dynamic" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\zoom-dynamic.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="icon_tasks" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_tasks.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="search" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\search.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="view_refresh" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\view-refresh.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="icon_zoomselect" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_zoomselect.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="icon_home" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\icon_home.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="load_package" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\load_package.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="monitor_status" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\monitor_status.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="file_save" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\file-save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="zoom_full" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\zoom-full.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="view_log" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\view_log.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="AreaRuleTemplate" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\AreaRuleTemplate.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  <data name="zoom_dynamic" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\zoom-dynamic.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="lc_dwf" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\lc_dwf.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="print" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\print.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="icon_select" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_select.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="lc_broken" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\lc_broken.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="select_centre" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\select-centre.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="map--plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\map--plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="icon_loading" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\icon_loading.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="zoom_in" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\zoom-in.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="lc_unselect" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\lc_unselect.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="redline" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\redline.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
 </root>
\ No newline at end of file


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

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,303 @@
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    partial class RedlineEditingCtrl
+    {
+        /// <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 Component 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.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RedlineEditingCtrl));
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.lblRedlineLayerName = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.lblDrawingStatus = new System.Windows.Forms.Label();
+            this.lblRedlineCount = new System.Windows.Forms.Label();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.grdActiveRedlines = new System.Windows.Forms.DataGridView();
+            this.ID = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Text = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.btnEditRedlineText = new System.Windows.Forms.ToolStripButton();
+            this.btnDelete = new System.Windows.Forms.ToolStripButton();
+            this.btnSelectRedlines = new System.Windows.Forms.ToolStripButton();
+            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+            this.btnRefresh = new System.Windows.Forms.ToolStripButton();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.btnDrawLine = new System.Windows.Forms.Button();
+            this.btnDrawCircle = new System.Windows.Forms.Button();
+            this.btnDrawPoint = new System.Windows.Forms.Button();
+            this.btnDrawPolygon = new System.Windows.Forms.Button();
+            this.btnDrawRect = new System.Windows.Forms.Button();
+            this.btnDrawLineString = new System.Windows.Forms.Button();
+            this.drawTooltip = new System.Windows.Forms.ToolTip(this.components);
+            this.chkPromptForLabel = new System.Windows.Forms.CheckBox();
+            this.groupBox1.SuspendLayout();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.grdActiveRedlines)).BeginInit();
+            this.toolStrip1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.chkPromptForLabel);
+            this.groupBox1.Controls.Add(this.lblRedlineLayerName);
+            this.groupBox1.Controls.Add(this.label4);
+            this.groupBox1.Controls.Add(this.lblDrawingStatus);
+            this.groupBox1.Controls.Add(this.lblRedlineCount);
+            this.groupBox1.Controls.Add(this.panel1);
+            this.groupBox1.Controls.Add(this.label2);
+            this.groupBox1.Controls.Add(this.label1);
+            this.groupBox1.Controls.Add(this.btnDrawLine);
+            this.groupBox1.Controls.Add(this.btnDrawCircle);
+            this.groupBox1.Controls.Add(this.btnDrawPoint);
+            this.groupBox1.Controls.Add(this.btnDrawPolygon);
+            this.groupBox1.Controls.Add(this.btnDrawRect);
+            this.groupBox1.Controls.Add(this.btnDrawLineString);
+            resources.ApplyResources(this.groupBox1, "groupBox1");
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.TabStop = false;
+            // 
+            // lblRedlineLayerName
+            // 
+            resources.ApplyResources(this.lblRedlineLayerName, "lblRedlineLayerName");
+            this.lblRedlineLayerName.ForeColor = System.Drawing.SystemColors.ControlText;
+            this.lblRedlineLayerName.Name = "lblRedlineLayerName";
+            // 
+            // label4
+            // 
+            resources.ApplyResources(this.label4, "label4");
+            this.label4.Name = "label4";
+            // 
+            // lblDrawingStatus
+            // 
+            resources.ApplyResources(this.lblDrawingStatus, "lblDrawingStatus");
+            this.lblDrawingStatus.ForeColor = System.Drawing.Color.Red;
+            this.lblDrawingStatus.Name = "lblDrawingStatus";
+            // 
+            // lblRedlineCount
+            // 
+            resources.ApplyResources(this.lblRedlineCount, "lblRedlineCount");
+            this.lblRedlineCount.Name = "lblRedlineCount";
+            // 
+            // panel1
+            // 
+            resources.ApplyResources(this.panel1, "panel1");
+            this.panel1.Controls.Add(this.grdActiveRedlines);
+            this.panel1.Controls.Add(this.toolStrip1);
+            this.panel1.Name = "panel1";
+            // 
+            // grdActiveRedlines
+            // 
+            this.grdActiveRedlines.AllowUserToAddRows = false;
+            this.grdActiveRedlines.AllowUserToDeleteRows = false;
+            this.grdActiveRedlines.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.grdActiveRedlines.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.ID,
+            this.Text});
+            resources.ApplyResources(this.grdActiveRedlines, "grdActiveRedlines");
+            this.grdActiveRedlines.Name = "grdActiveRedlines";
+            this.grdActiveRedlines.ReadOnly = true;
+            this.grdActiveRedlines.SelectionChanged += new System.EventHandler(this.grdActiveRedlines_SelectionChanged);
+            // 
+            // ID
+            // 
+            this.ID.DataPropertyName = "ID";
+            resources.ApplyResources(this.ID, "ID");
+            this.ID.Name = "ID";
+            this.ID.ReadOnly = true;
+            // 
+            // Text
+            // 
+            this.Text.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.Text.DataPropertyName = "Text";
+            resources.ApplyResources(this.Text, "Text");
+            this.Text.Name = "Text";
+            this.Text.ReadOnly = true;
+            // 
+            // toolStrip1
+            // 
+            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.btnEditRedlineText,
+            this.btnDelete,
+            this.btnSelectRedlines,
+            this.toolStripSeparator1,
+            this.btnRefresh});
+            resources.ApplyResources(this.toolStrip1, "toolStrip1");
+            this.toolStrip1.Name = "toolStrip1";
+            // 
+            // btnEditRedlineText
+            // 
+            this.btnEditRedlineText.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            resources.ApplyResources(this.btnEditRedlineText, "btnEditRedlineText");
+            this.btnEditRedlineText.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.edit_xml;
+            this.btnEditRedlineText.Name = "btnEditRedlineText";
+            this.btnEditRedlineText.Click += new System.EventHandler(this.btnEditRedlineText_Click);
+            // 
+            // btnDelete
+            // 
+            this.btnDelete.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            resources.ApplyResources(this.btnDelete, "btnDelete");
+            this.btnDelete.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.cross_script;
+            this.btnDelete.Name = "btnDelete";
+            this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
+            // 
+            // btnSelectRedlines
+            // 
+            this.btnSelectRedlines.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            resources.ApplyResources(this.btnSelectRedlines, "btnSelectRedlines");
+            this.btnSelectRedlines.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.select_features;
+            this.btnSelectRedlines.Name = "btnSelectRedlines";
+            this.btnSelectRedlines.Click += new System.EventHandler(this.btnSelectRedlines_Click);
+            // 
+            // toolStripSeparator1
+            // 
+            this.toolStripSeparator1.Name = "toolStripSeparator1";
+            resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
+            // 
+            // btnRefresh
+            // 
+            this.btnRefresh.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.btnRefresh.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.view_refresh;
+            resources.ApplyResources(this.btnRefresh, "btnRefresh");
+            this.btnRefresh.Name = "btnRefresh";
+            // 
+            // label2
+            // 
+            resources.ApplyResources(this.label2, "label2");
+            this.label2.Name = "label2";
+            // 
+            // label1
+            // 
+            resources.ApplyResources(this.label1, "label1");
+            this.label1.Name = "label1";
+            // 
+            // btnDrawLine
+            // 
+            resources.ApplyResources(this.btnDrawLine, "btnDrawLine");
+            this.btnDrawLine.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.layer_shape_line;
+            this.btnDrawLine.Name = "btnDrawLine";
+            this.drawTooltip.SetToolTip(this.btnDrawLine, resources.GetString("btnDrawLine.ToolTip"));
+            this.btnDrawLine.UseVisualStyleBackColor = true;
+            this.btnDrawLine.Click += new System.EventHandler(this.btnDrawLine_Click);
+            // 
+            // btnDrawCircle
+            // 
+            resources.ApplyResources(this.btnDrawCircle, "btnDrawCircle");
+            this.btnDrawCircle.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.layer_shape_ellipse;
+            this.btnDrawCircle.Name = "btnDrawCircle";
+            this.drawTooltip.SetToolTip(this.btnDrawCircle, resources.GetString("btnDrawCircle.ToolTip"));
+            this.btnDrawCircle.UseVisualStyleBackColor = true;
+            this.btnDrawCircle.Click += new System.EventHandler(this.btnDrawCircle_Click);
+            // 
+            // btnDrawPoint
+            // 
+            resources.ApplyResources(this.btnDrawPoint, "btnDrawPoint");
+            this.btnDrawPoint.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.layer_small;
+            this.btnDrawPoint.Name = "btnDrawPoint";
+            this.drawTooltip.SetToolTip(this.btnDrawPoint, resources.GetString("btnDrawPoint.ToolTip"));
+            this.btnDrawPoint.UseVisualStyleBackColor = true;
+            this.btnDrawPoint.Click += new System.EventHandler(this.btnDrawPoint_Click);
+            // 
+            // btnDrawPolygon
+            // 
+            resources.ApplyResources(this.btnDrawPolygon, "btnDrawPolygon");
+            this.btnDrawPolygon.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.layer_shape_polygon;
+            this.btnDrawPolygon.Name = "btnDrawPolygon";
+            this.drawTooltip.SetToolTip(this.btnDrawPolygon, resources.GetString("btnDrawPolygon.ToolTip"));
+            this.btnDrawPolygon.UseVisualStyleBackColor = true;
+            this.btnDrawPolygon.Click += new System.EventHandler(this.btnDrawPolygon_Click);
+            // 
+            // btnDrawRect
+            // 
+            resources.ApplyResources(this.btnDrawRect, "btnDrawRect");
+            this.btnDrawRect.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.layer_shape;
+            this.btnDrawRect.Name = "btnDrawRect";
+            this.drawTooltip.SetToolTip(this.btnDrawRect, resources.GetString("btnDrawRect.ToolTip"));
+            this.btnDrawRect.UseVisualStyleBackColor = true;
+            this.btnDrawRect.Click += new System.EventHandler(this.btnDrawRect_Click);
+            // 
+            // btnDrawLineString
+            // 
+            resources.ApplyResources(this.btnDrawLineString, "btnDrawLineString");
+            this.btnDrawLineString.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.layer_shape_polyline;
+            this.btnDrawLineString.Name = "btnDrawLineString";
+            this.drawTooltip.SetToolTip(this.btnDrawLineString, resources.GetString("btnDrawLineString.ToolTip"));
+            this.btnDrawLineString.UseVisualStyleBackColor = true;
+            this.btnDrawLineString.Click += new System.EventHandler(this.btnDrawLineString_Click);
+            // 
+            // chkPromptForLabel
+            // 
+            resources.ApplyResources(this.chkPromptForLabel, "chkPromptForLabel");
+            this.chkPromptForLabel.Name = "chkPromptForLabel";
+            this.chkPromptForLabel.UseVisualStyleBackColor = true;
+            // 
+            // RedlineEditingCtrl
+            // 
+            resources.ApplyResources(this, "$this");
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.groupBox1);
+            this.Name = "RedlineEditingCtrl";
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.grdActiveRedlines)).EndInit();
+            this.toolStrip1.ResumeLayout(false);
+            this.toolStrip1.PerformLayout();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.Button btnDrawCircle;
+        private System.Windows.Forms.Button btnDrawRect;
+        private System.Windows.Forms.Button btnDrawPolygon;
+        private System.Windows.Forms.Button btnDrawLineString;
+        private System.Windows.Forms.Button btnDrawLine;
+        private System.Windows.Forms.Button btnDrawPoint;
+        private System.Windows.Forms.Label lblRedlineCount;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.DataGridView grdActiveRedlines;
+        private System.Windows.Forms.ToolStrip toolStrip1;
+        private System.Windows.Forms.ToolStripButton btnEditRedlineText;
+        private System.Windows.Forms.ToolStripButton btnDelete;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripButton btnRefresh;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.ToolTip drawTooltip;
+        private System.Windows.Forms.Label lblDrawingStatus;
+        private System.Windows.Forms.DataGridViewTextBoxColumn ID;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Text;
+        private System.Windows.Forms.Label lblRedlineLayerName;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.ToolStripButton btnSelectRedlines;
+        private System.Windows.Forms.CheckBox chkPromptForLabel;
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,177 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    internal partial class RedlineEditingCtrl : UserControl
+    {
+        private RedlineEditingCtrl()
+        {
+            InitializeComponent();
+            _activeRedlines = new BindingList<RedlineObject>();
+            grdActiveRedlines.DataSource = _activeRedlines;
+        }
+
+        private IMapViewer _viewer;
+        private RedlineLayer _layer;
+        private RedlineEditor _ed;
+
+        public RedlineEditingCtrl(IMapViewer viewer, RedlineLayer layer)
+            : this()
+        {
+            _viewer = viewer;
+            _layer = layer;
+            _viewer.PropertyChanged += OnViewerPropertyChanged;
+            _ed = new RedlineEditor(_viewer, _layer);
+            this.Disposed += OnDisposed;
+            lblRedlineLayerName.Text = _layer.Name;
+        }
+
+        protected override void OnLoad(EventArgs e)
+        {
+            base.OnLoad(e);
+            RefreshActiveRedlineList(false);
+        }
+
+        private void RefreshActiveRedlineList(bool refreshMap)
+        {
+            _activeRedlines.Clear();
+            var redlines = _ed.GetAllFeatures();
+            foreach (var rdl in redlines)
+            {
+                _activeRedlines.Add(rdl);
+            }
+            if (refreshMap)
+                _viewer.RefreshMap();
+        }
+
+        void OnDisposed(object sender, EventArgs e)
+        {
+            _viewer.PropertyChanged -= OnViewerPropertyChanged;
+        }
+
+        void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "DigitizingType")
+            {
+                bool bNotDrawing = (_viewer.DigitizingType == MapDigitizationType.None);
+                btnDrawCircle.Enabled =
+                btnDrawLine.Enabled =
+                btnDrawLineString.Enabled =
+                btnDrawPoint.Enabled =
+                btnDrawPolygon.Enabled =
+                btnDrawRect.Enabled = bNotDrawing;
+
+                lblDrawingStatus.Visible = !bNotDrawing;
+            }
+        }
+
+        private string GetInputRedlineText()
+        {
+            if (chkPromptForLabel.Checked)
+                return TextPrompt.GetValue(Strings.TitleRedline, Strings.SpecifyRedlineText) ?? string.Empty;
+            else
+                return string.Empty;
+        }
+
+        private BindingList<RedlineObject> _activeRedlines;
+
+        private void OnRedlineAdded(int key, string text)
+        {
+            _activeRedlines.Add(new RedlineObject(key, text));
+        }
+
+        private void btnDrawPoint_Click(object sender, EventArgs e)
+        {
+            _ed.AddObject(RedlineGeometryType.Point, GetInputRedlineText, OnRedlineAdded);
+        }
+
+        private void btnDrawLine_Click(object sender, EventArgs e)
+        {
+            _ed.AddObject(RedlineGeometryType.Line, GetInputRedlineText, OnRedlineAdded);
+        }
+
+        private void btnDrawLineString_Click(object sender, EventArgs e)
+        {
+            _ed.AddObject(RedlineGeometryType.LineString, GetInputRedlineText, OnRedlineAdded);
+        }
+
+        private void btnDrawPolygon_Click(object sender, EventArgs e)
+        {
+            _ed.AddObject(RedlineGeometryType.Polygon, GetInputRedlineText, OnRedlineAdded);
+        }
+
+        private void btnDrawRect_Click(object sender, EventArgs e)
+        {
+            _ed.AddObject(RedlineGeometryType.Rectangle, GetInputRedlineText, OnRedlineAdded);
+        }
+
+        private void btnDrawCircle_Click(object sender, EventArgs e)
+        {
+            _ed.AddObject(RedlineGeometryType.Circle, GetInputRedlineText, OnRedlineAdded);
+        }
+
+        private void grdActiveRedlines_SelectionChanged(object sender, EventArgs e)
+        {
+            btnDelete.Enabled = btnEditRedlineText.Enabled = btnSelectRedlines.Enabled = grdActiveRedlines.SelectedRows.Count > 0;
+        }
+
+        private int[] GetSelectedRedlineIds()
+        {
+            List<int> ids = new List<int>();
+            foreach (DataGridViewRow row in grdActiveRedlines.SelectedRows)
+            {
+                var rdl = row.DataBoundItem as RedlineObject;
+                ids.Add(rdl.ID);
+            }
+            return ids.ToArray();
+        }
+
+        private void btnEditRedlineText_Click(object sender, EventArgs e)
+        {
+            string label = TextPrompt.GetValue(Strings.TitleEditRedlineText, Strings.SpecifyRedlineText);
+            if (label != null)
+            {
+                var ids = GetSelectedRedlineIds();
+                _ed.UpdateRedlineText(label, ids);
+                //TODO: Full refresh of list is probably overkill
+                RefreshActiveRedlineList(true);
+            }
+        }
+
+        private void btnDelete_Click(object sender, EventArgs e)
+        {
+            if (MessageBox.Show(Strings.ConfirmDeleteRedlines, Strings.TitleDeleteRedlines, MessageBoxButtons.YesNo) == DialogResult.Yes)
+            {
+                var ids = GetSelectedRedlineIds();
+                _ed.DeleteRedlines(ids);
+                //TODO: Full refresh of list is probably overkill
+                RefreshActiveRedlineList(true);
+            }
+        }
+
+        private void btnSelectRedlines_Click(object sender, EventArgs e)
+        {
+            var ids = GetSelectedRedlineIds();
+            var sel = _viewer.GetSelection();
+            var map = _viewer.GetMap();
+            var layers = map.GetLayers();
+            var lidx = layers.IndexOf(_layer.SystemName);
+            if (lidx >= 0)
+            {
+                var layer = layers.GetItem(lidx);
+                sel.FromXml("");
+                foreach (var id in ids)
+                {
+                    sel.AddFeatureIdInt32(layer, layer.FeatureClassName, id);
+                }
+                _viewer.UpdateSelection();
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditingCtrl.resx	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,729 @@
+<?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>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="chkPromptForLabel.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="chkPromptForLabel.Location" type="System.Drawing.Point, System.Drawing">
+    <value>27, 109</value>
+  </data>
+  <data name="chkPromptForLabel.Size" type="System.Drawing.Size, System.Drawing">
+    <value>169, 17</value>
+  </data>
+  <data name="chkPromptForLabel.TabIndex" type="System.Int32, mscorlib">
+    <value>13</value>
+  </data>
+  <data name="chkPromptForLabel.Text" xml:space="preserve">
+    <value>Prompt for text when complete</value>
+  </data>
+  <data name=">>chkPromptForLabel.Name" xml:space="preserve">
+    <value>chkPromptForLabel</value>
+  </data>
+  <data name=">>chkPromptForLabel.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkPromptForLabel.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>chkPromptForLabel.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="lblRedlineLayerName.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="lblRedlineLayerName.Font" type="System.Drawing.Font, System.Drawing">
+    <value>Microsoft Sans Serif, 8.25pt, style=Bold</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="lblRedlineLayerName.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="lblRedlineLayerName.Location" type="System.Drawing.Point, System.Drawing">
+    <value>65, 26</value>
+  </data>
+  <data name="lblRedlineLayerName.Size" type="System.Drawing.Size, System.Drawing">
+    <value>0, 13</value>
+  </data>
+  <data name="lblRedlineLayerName.TabIndex" type="System.Int32, mscorlib">
+    <value>12</value>
+  </data>
+  <data name=">>lblRedlineLayerName.Name" xml:space="preserve">
+    <value>lblRedlineLayerName</value>
+  </data>
+  <data name=">>lblRedlineLayerName.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblRedlineLayerName.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lblRedlineLayerName.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label4.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>18, 26</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>33, 13</value>
+  </data>
+  <data name="label4.TabIndex" type="System.Int32, mscorlib">
+    <value>11</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Layer</value>
+  </data>
+  <data name=">>label4.Name" xml:space="preserve">
+    <value>label4</value>
+  </data>
+  <data name=">>label4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label4.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>label4.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="lblDrawingStatus.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="lblDrawingStatus.Location" type="System.Drawing.Point, System.Drawing">
+    <value>65, 52</value>
+  </data>
+  <data name="lblDrawingStatus.Size" type="System.Drawing.Size, System.Drawing">
+    <value>97, 13</value>
+  </data>
+  <data name="lblDrawingStatus.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name="lblDrawingStatus.Text" xml:space="preserve">
+    <value>Currently drawing...</value>
+  </data>
+  <data name="lblDrawingStatus.Visible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name=">>lblDrawingStatus.Name" xml:space="preserve">
+    <value>lblDrawingStatus</value>
+  </data>
+  <data name=">>lblDrawingStatus.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblDrawingStatus.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lblDrawingStatus.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="lblRedlineCount.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="lblRedlineCount.Location" type="System.Drawing.Point, System.Drawing">
+    <value>102, 93</value>
+  </data>
+  <data name="lblRedlineCount.Size" type="System.Drawing.Size, System.Drawing">
+    <value>0, 13</value>
+  </data>
+  <data name="lblRedlineCount.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name=">>lblRedlineCount.Name" xml:space="preserve">
+    <value>lblRedlineCount</value>
+  </data>
+  <data name=">>lblRedlineCount.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblRedlineCount.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lblRedlineCount.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="panel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left, Right</value>
+  </data>
+  <metadata name="ID.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="ID.HeaderText" xml:space="preserve">
+    <value>ID</value>
+  </data>
+  <data name="ID.Width" type="System.Int32, mscorlib">
+    <value>40</value>
+  </data>
+  <metadata name="Text.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="Text.HeaderText" xml:space="preserve">
+    <value>Text</value>
+  </data>
+  <data name="grdActiveRedlines.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="grdActiveRedlines.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 25</value>
+  </data>
+  <data name="grdActiveRedlines.Size" type="System.Drawing.Size, System.Drawing">
+    <value>240, 251</value>
+  </data>
+  <data name="grdActiveRedlines.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>grdActiveRedlines.Name" xml:space="preserve">
+    <value>grdActiveRedlines</value>
+  </data>
+  <data name=">>grdActiveRedlines.Type" xml:space="preserve">
+    <value>System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>grdActiveRedlines.Parent" xml:space="preserve">
+    <value>panel1</value>
+  </data>
+  <data name=">>grdActiveRedlines.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>0, 0</value>
+  </metadata>
+  <data name="btnEditRedlineText.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnEditRedlineText.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnEditRedlineText.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnEditRedlineText.Text" xml:space="preserve">
+    <value>Edit Text</value>
+  </data>
+  <data name="btnDelete.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnDelete.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnDelete.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnDelete.Text" xml:space="preserve">
+    <value>Delete</value>
+  </data>
+  <data name="btnSelectRedlines.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnSelectRedlines.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnSelectRedlines.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnSelectRedlines.Text" xml:space="preserve">
+    <value>Select</value>
+  </data>
+  <data name="btnSelectRedlines.ToolTipText" xml:space="preserve">
+    <value>Select the selected redlines on the map</value>
+  </data>
+  <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>6, 25</value>
+  </data>
+  <data name="btnRefresh.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnRefresh.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnRefresh.Text" xml:space="preserve">
+    <value>Refresh</value>
+  </data>
+  <data name="toolStrip1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="toolStrip1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>240, 25</value>
+  </data>
+  <data name="toolStrip1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="toolStrip1.Text" xml:space="preserve">
+    <value>toolStrip1</value>
+  </data>
+  <data name=">>toolStrip1.Name" xml:space="preserve">
+    <value>toolStrip1</value>
+  </data>
+  <data name=">>toolStrip1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStrip1.Parent" xml:space="preserve">
+    <value>panel1</value>
+  </data>
+  <data name=">>toolStrip1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>21, 160</value>
+  </data>
+  <data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>240, 276</value>
+  </data>
+  <data name="panel1.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name=">>panel1.Name" xml:space="preserve">
+    <value>panel1</value>
+  </data>
+  <data name=">>panel1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>panel1.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>panel1.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>18, 134</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>82, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Redline Objects</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>18, 52</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>32, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Draw</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="btnDrawLine.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
+    <value>Popup</value>
+  </data>
+  <data name="btnDrawLine.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="btnDrawLine.Location" type="System.Drawing.Point, System.Drawing">
+    <value>56, 77</value>
+  </data>
+  <data name="btnDrawLine.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <data name="btnDrawLine.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <metadata name="drawTooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>122, 17</value>
+  </metadata>
+  <data name="btnDrawLine.ToolTip" xml:space="preserve">
+    <value>Draw a line</value>
+  </data>
+  <data name=">>btnDrawLine.Name" xml:space="preserve">
+    <value>btnDrawLine</value>
+  </data>
+  <data name=">>btnDrawLine.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnDrawLine.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>btnDrawLine.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="btnDrawCircle.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
+    <value>Popup</value>
+  </data>
+  <data name="btnDrawCircle.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="btnDrawCircle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>172, 77</value>
+  </data>
+  <data name="btnDrawCircle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <data name="btnDrawCircle.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="btnDrawCircle.ToolTip" xml:space="preserve">
+    <value>Draw a circle</value>
+  </data>
+  <data name=">>btnDrawCircle.Name" xml:space="preserve">
+    <value>btnDrawCircle</value>
+  </data>
+  <data name=">>btnDrawCircle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnDrawCircle.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>btnDrawCircle.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="btnDrawPoint.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
+    <value>Popup</value>
+  </data>
+  <data name="btnDrawPoint.Location" type="System.Drawing.Point, System.Drawing">
+    <value>27, 77</value>
+  </data>
+  <data name="btnDrawPoint.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <data name="btnDrawPoint.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="btnDrawPoint.ToolTip" xml:space="preserve">
+    <value>Draw a point</value>
+  </data>
+  <data name=">>btnDrawPoint.Name" xml:space="preserve">
+    <value>btnDrawPoint</value>
+  </data>
+  <data name=">>btnDrawPoint.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnDrawPoint.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>btnDrawPoint.ZOrder" xml:space="preserve">
+    <value>10</value>
+  </data>
+  <data name="btnDrawPolygon.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
+    <value>Popup</value>
+  </data>
+  <data name="btnDrawPolygon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="btnDrawPolygon.Location" type="System.Drawing.Point, System.Drawing">
+    <value>114, 77</value>
+  </data>
+  <data name="btnDrawPolygon.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <data name="btnDrawPolygon.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="btnDrawPolygon.ToolTip" xml:space="preserve">
+    <value>Draw a polygon</value>
+  </data>
+  <data name=">>btnDrawPolygon.Name" xml:space="preserve">
+    <value>btnDrawPolygon</value>
+  </data>
+  <data name=">>btnDrawPolygon.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnDrawPolygon.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>btnDrawPolygon.ZOrder" xml:space="preserve">
+    <value>11</value>
+  </data>
+  <data name="btnDrawRect.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
+    <value>Popup</value>
+  </data>
+  <data name="btnDrawRect.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="btnDrawRect.Location" type="System.Drawing.Point, System.Drawing">
+    <value>143, 77</value>
+  </data>
+  <data name="btnDrawRect.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <data name="btnDrawRect.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="btnDrawRect.ToolTip" xml:space="preserve">
+    <value>Draw a rectangle</value>
+  </data>
+  <data name=">>btnDrawRect.Name" xml:space="preserve">
+    <value>btnDrawRect</value>
+  </data>
+  <data name=">>btnDrawRect.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnDrawRect.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>btnDrawRect.ZOrder" xml:space="preserve">
+    <value>12</value>
+  </data>
+  <data name="btnDrawLineString.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
+    <value>Popup</value>
+  </data>
+  <data name="btnDrawLineString.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="btnDrawLineString.Location" type="System.Drawing.Point, System.Drawing">
+    <value>85, 77</value>
+  </data>
+  <data name="btnDrawLineString.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <data name="btnDrawLineString.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="btnDrawLineString.ToolTip" xml:space="preserve">
+    <value>Draw a line string</value>
+  </data>
+  <data name=">>btnDrawLineString.Name" xml:space="preserve">
+    <value>btnDrawLineString</value>
+  </data>
+  <data name=">>btnDrawLineString.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnDrawLineString.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>btnDrawLineString.ZOrder" xml:space="preserve">
+    <value>13</value>
+  </data>
+  <data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>282, 460</value>
+  </data>
+  <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="groupBox1.Text" xml:space="preserve">
+    <value>Add/Edit Redline Objects</value>
+  </data>
+  <data name=">>groupBox1.Name" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>groupBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox1.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>282, 460</value>
+  </data>
+  <data name=">>ID.Name" xml:space="preserve">
+    <value>ID</value>
+  </data>
+  <data name=">>ID.Type" xml:space="preserve">
+    <value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>Text.Name" xml:space="preserve">
+    <value>Text</value>
+  </data>
+  <data name=">>Text.Type" xml:space="preserve">
+    <value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnEditRedlineText.Name" xml:space="preserve">
+    <value>btnEditRedlineText</value>
+  </data>
+  <data name=">>btnEditRedlineText.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnDelete.Name" xml:space="preserve">
+    <value>btnDelete</value>
+  </data>
+  <data name=">>btnDelete.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnSelectRedlines.Name" xml:space="preserve">
+    <value>btnSelectRedlines</value>
+  </data>
+  <data name=">>btnSelectRedlines.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStripSeparator1.Name" xml:space="preserve">
+    <value>toolStripSeparator1</value>
+  </data>
+  <data name=">>toolStripSeparator1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnRefresh.Name" xml:space="preserve">
+    <value>btnRefresh</value>
+  </data>
+  <data name=">>btnRefresh.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>drawTooltip.Name" xml:space="preserve">
+    <value>drawTooltip</value>
+  </data>
+  <data name=">>drawTooltip.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>RedlineEditingCtrl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditor.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditor.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineEditor.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,293 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    public delegate void RedlineAction(int key, string text);
+    public delegate string RedlineTextFunction();
+
+    internal class RedlineEditor
+    {
+        private IMapViewer _viewer;
+        private RedlineLayer _layer;
+        private MgFeatureService _featSvc;
+        private MgAgfReaderWriter _agfRW;
+        private MgWktReaderWriter _wktRW;
+        private MgGeometryFactory _geomFact;
+
+        public RedlineEditor(IMapViewer viewer, RedlineLayer layer)
+        {
+            _viewer = viewer;
+            _layer = layer;
+            var provider = viewer.GetProvider();
+            _featSvc = (MgFeatureService)provider.CreateService(MgServiceType.FeatureService);
+            _wktRW = new MgWktReaderWriter();
+            _agfRW = new MgAgfReaderWriter();
+            _geomFact = new MgGeometryFactory();
+        }
+
+        public IEnumerable<RedlineObject> GetAllFeatures()
+        {
+            MgMapBase map = _viewer.GetMap();
+            MgLayerCollection layers = map.GetLayers();
+            MgLayerBase redlineLayer = layers.GetItem(_layer.SystemName);
+
+            MgResourceIdentifier resId = new MgResourceIdentifier(redlineLayer.GetFeatureSourceId());
+            MgFeatureReader reader = null;
+            try
+            {
+                reader = _featSvc.SelectFeatures(resId, RedlineSchemaFactory.CLASS_NAME, null);
+
+                //HACK: Another leaky abstraction. SHP will always choose FeatId, so once again
+                //use the class definition to determine the identity property name
+                MgClassDefinition cls = reader.GetClassDefinition();
+                MgPropertyDefinitionCollection idProps = cls.GetIdentityProperties();
+                MgPropertyDefinition keyProp = idProps.GetItem(0);
+                string idName = keyProp.GetName();
+
+                while (reader.ReadNext())
+                {
+                    int id = reader.GetInt32(idName);
+                    string text = reader.IsNull(RedlineSchemaFactory.TEXT_NAME) ? string.Empty : reader.GetString(RedlineSchemaFactory.TEXT_NAME);
+
+                    yield return new RedlineObject(id, text);
+                }
+            }
+            finally
+            {
+                if (reader != null)
+                    reader.Close();
+            }
+        }
+
+        public void AddObject(RedlineGeometryType type, RedlineTextFunction retrieveTextMethod, RedlineAction onRedlineAdded)
+        {
+            switch (type)
+            {
+                case RedlineGeometryType.Point:
+                    AddPoint(retrieveTextMethod, onRedlineAdded);
+                    break;
+                case RedlineGeometryType.Circle:
+                    AddCircle(retrieveTextMethod, onRedlineAdded);
+                    break;
+                case RedlineGeometryType.Line:
+                    AddLine(retrieveTextMethod, onRedlineAdded);
+                    break;
+                case RedlineGeometryType.LineString:
+                    AddLineString(retrieveTextMethod, onRedlineAdded);
+                    break;
+                case RedlineGeometryType.Polygon:
+                    AddPolygon(retrieveTextMethod, onRedlineAdded);
+                    break;
+                case RedlineGeometryType.Rectangle:
+                    AddRectangle(retrieveTextMethod, onRedlineAdded);
+                    break;
+            }
+        }
+
+        internal void DeleteRedlines(int[] ids)
+        {
+            MgMapBase map = _viewer.GetMap();
+            MgLayerCollection layers = map.GetLayers();
+            MgLayerBase redlineLayer = layers.GetItem(_layer.SystemName);
+
+            //HACK: Workaround FeatId leaky abstraction in SHP provider
+            MgClassDefinition cls = redlineLayer.GetClassDefinition();
+            MgPropertyDefinitionCollection idProps = cls.GetIdentityProperties();
+            MgPropertyDefinition idProp = idProps.GetItem(0);
+
+            redlineLayer.ForceRefresh();
+
+            //This lib doesn't reference mg-desktop so the convenience APIs aren't available to us
+            //Gotta go the old verbose route
+            List<string> filters = new List<string>();
+            foreach (int id in ids)
+            {
+                filters.Add(idProp.Name + " = " + id);
+            }
+            string deleteFilter = string.Join(" OR ", filters.ToArray());
+            MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
+            
+            MgDeleteFeatures delete = new MgDeleteFeatures(redlineLayer.FeatureClassName, deleteFilter);
+            commands.Add(delete);
+
+            MgPropertyCollection result = redlineLayer.UpdateFeatures(commands);
+            MgInt32Property deleteResult = result.GetItem(0) as MgInt32Property;
+            if (deleteResult != null && deleteResult.GetValue() > 0)
+            {
+                _viewer.RefreshMap();
+            }
+        }
+
+        internal void UpdateRedlineText(string text, int[] ids)
+        {
+            MgMapBase map = _viewer.GetMap();
+            MgLayerCollection layers = map.GetLayers();
+            MgLayerBase redlineLayer = layers.GetItem(_layer.SystemName);
+
+            //HACK: Workaround FeatId leaky abstraction in SHP provider
+            MgClassDefinition cls = redlineLayer.GetClassDefinition();
+            MgPropertyDefinitionCollection idProps = cls.GetIdentityProperties();
+            MgPropertyDefinition idProp = idProps.GetItem(0);
+
+            redlineLayer.ForceRefresh();
+
+            //This lib doesn't reference mg-desktop so the convenience APIs aren't available to us
+            //Gotta go the old verbose route
+            List<string> filters = new List<string>();
+            foreach (int id in ids)
+            {
+                filters.Add(idProp.Name + " = " + id);
+            }
+            string updateFilter = string.Join(" OR ", filters.ToArray());
+            MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
+            MgPropertyCollection updateValues = new MgPropertyCollection();
+            MgStringProperty updateProp = new MgStringProperty(RedlineSchemaFactory.TEXT_NAME, text);
+            updateValues.Add(updateProp);
+            
+            MgUpdateFeatures update = new MgUpdateFeatures(redlineLayer.FeatureClassName, updateValues, updateFilter);
+            commands.Add(update);
+
+            MgPropertyCollection result = redlineLayer.UpdateFeatures(commands);
+            MgInt32Property updateResult = result.GetItem(0) as MgInt32Property;
+
+            _viewer.RefreshMap();
+        }
+
+        private void InsertRedlineGeometry(string text, MgGeometry geom, RedlineAction onRedlineAdded)
+        {
+            MgPropertyCollection feature = new MgPropertyCollection();
+            MgByteReader agf = _agfRW.Write(geom);
+            MgGeometryProperty geomProp = new MgGeometryProperty(RedlineSchemaFactory.GEOM_NAME, agf);
+            feature.Add(geomProp);
+            MgStringProperty strProp = new MgStringProperty(RedlineSchemaFactory.TEXT_NAME, text);
+            feature.Add(strProp);
+
+            MgMapBase map = _viewer.GetMap();
+            MgLayerCollection layers = map.GetLayers();
+            MgLayerBase redlineLayer = layers.GetItem(_layer.SystemName);
+            MgClassDefinition cls = redlineLayer.GetClassDefinition();
+            MgPropertyDefinitionCollection idProps = cls.GetIdentityProperties();
+            MgPropertyDefinition idProp = idProps.GetItem(0);
+
+            redlineLayer.ForceRefresh();
+
+            //This lib doesn't reference mg-desktop so the convenience APIs aren't available to us
+            //Gotta go the old verbose route
+            MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
+            
+            MgInsertFeatures insert = new MgInsertFeatures(redlineLayer.FeatureClassName, feature);
+            commands.Add(insert);
+
+            MgPropertyCollection result = redlineLayer.UpdateFeatures(commands);
+            //Insert result is a MgFeatureProperty containing an MgFeatureReader
+            MgFeatureProperty insertResult = result.GetItem(0) as MgFeatureProperty;
+            if (insertResult != null)
+            {
+                var reader = insertResult.GetValue();
+                int inserted = 0;
+                int id = -1;
+                if (reader.ReadNext())
+                {
+                    id = reader.GetInt32(idProp.Name);
+                    inserted++;
+                }
+                reader.Close();
+                if (inserted > 0)
+                {
+                    _viewer.RefreshMap();
+                    onRedlineAdded(id, text);
+                }
+            }
+        }
+
+        private void AddRectangle(RedlineTextFunction retrieveTextMethod, RedlineAction onRedlineAdded)
+        {
+            _viewer.DigitizeRectangle((x1, y1, x2, y2) =>
+            {
+                string text = string.Empty;
+                if (retrieveTextMethod != null)
+                    text = retrieveTextMethod();
+                MgGeometry geom = _wktRW.Read(Util.MakeWktPolygon(x1, y1, x2, y2));
+                InsertRedlineGeometry(text, geom, onRedlineAdded);
+            });
+        }
+
+        private void AddPolygon(RedlineTextFunction retrieveTextMethod, RedlineAction onRedlineAdded)
+        {
+            _viewer.DigitizePolygon((coordinates) =>
+            {
+                string text = string.Empty;
+                if (retrieveTextMethod != null)
+                    text = retrieveTextMethod();
+                MgCoordinateCollection coords = new MgCoordinateCollection();
+                for (int i = 0; i < coordinates.GetLength(0); i++)
+                {
+                    coords.Add(_geomFact.CreateCoordinateXY(coordinates[i, 0], coordinates[i, 1]));
+                }
+                coords.Add(_geomFact.CreateCoordinateXY(coordinates[0, 0], coordinates[0, 1]));
+                MgLinearRing ring = _geomFact.CreateLinearRing(coords);
+                MgGeometry poly = _geomFact.CreatePolygon(ring, null);
+                InsertRedlineGeometry(text, poly, onRedlineAdded);
+            });
+        }
+
+        private void AddLineString(RedlineTextFunction retrieveTextMethod, RedlineAction onRedlineAdded)
+        {
+            _viewer.DigitizeLineString((coordinates) =>
+            {
+                string text = string.Empty;
+                if (retrieveTextMethod != null)
+                    text = retrieveTextMethod();
+                MgCoordinateCollection coords = new MgCoordinateCollection();
+                for (int i = 0; i < coordinates.GetLength(0); i++)
+                {
+                    coords.Add(_geomFact.CreateCoordinateXY(coordinates[i, 0], coordinates[i, 1]));
+                }
+                MgGeometry line = _geomFact.CreateLineString(coords);
+                InsertRedlineGeometry(text, line, onRedlineAdded);
+            });
+        }
+
+        private void AddLine(RedlineTextFunction retrieveTextMethod, RedlineAction onRedlineAdded)
+        {
+            _viewer.DigitizeLine((x1, y1, x2, y2) =>
+            {
+                string text = string.Empty;
+                if (retrieveTextMethod != null)
+                    text = retrieveTextMethod();
+                MgCoordinateCollection coords = new MgCoordinateCollection();
+                coords.Add(_geomFact.CreateCoordinateXY(x1, y1));
+                coords.Add(_geomFact.CreateCoordinateXY(x2, y2));
+                MgGeometry line = _geomFact.CreateLineString(coords);
+                InsertRedlineGeometry(text, line, onRedlineAdded);
+            });
+        }
+
+        private void AddPoint(RedlineTextFunction retrieveTextMethod, RedlineAction onRedlineAdded)
+        {
+            _viewer.DigitizePoint((x, y) =>
+            {
+                string text = string.Empty;
+                if (retrieveTextMethod != null)
+                    text = retrieveTextMethod();
+                MgCoordinate coord = _geomFact.CreateCoordinateXY(x, y);
+                MgGeometry point = _geomFact.CreatePoint(coord);
+                InsertRedlineGeometry(text, point, onRedlineAdded);
+            });
+        }
+
+        private void AddCircle(RedlineTextFunction retrieveTextMethod, RedlineAction onRedlineAdded)
+        {
+            _viewer.DigitizeCircle((x, y, r) =>
+            {
+                string text = string.Empty;
+                if (retrieveTextMethod != null)
+                    text = retrieveTextMethod();
+                MgGeometry geom = _wktRW.Read(Util.MakeWktCircle(x, y, r));
+                InsertRedlineGeometry(text, geom, onRedlineAdded);
+            });
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    partial class RedlineMainCtrl
+    {
+        /// <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 Component 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(RedlineMainCtrl));
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            resources.ApplyResources(this.label1, "label1");
+            this.label1.Name = "label1";
+            // 
+            // label2
+            // 
+            resources.ApplyResources(this.label2, "label2");
+            this.label2.Name = "label2";
+            // 
+            // RedlineMainCtrl
+            // 
+            resources.ApplyResources(this, "$this");
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.Name = "RedlineMainCtrl";
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    public partial class RedlineMainCtrl : UserControl
+    {
+        public RedlineMainCtrl()
+        {
+            InitializeComponent();
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineMainCtrl.resx	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,197 @@
+<?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>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left, Right</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>13, 55</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>194, 84</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Click the plus icon to create a new redline layer and add it to the map.
+
+Once on the map, you can edit its style and/or draw redline objects.</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="label2.Font" type="System.Drawing.Font, System.Drawing">
+    <value>Microsoft Sans Serif, 9pt, style=Bold</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>13, 17</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>194, 23</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Redline Overview</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>222, 152</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>RedlineMainCtrl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineManager.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineManager.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineManager.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,814 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Drawing;
+using System.Globalization;
+using System.Xml;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    internal class RedlineManager
+    {
+        private MgResourceService _resSvc;
+        private MgFeatureService _featSvc;
+        private MgMapBase _map;
+        private IMapViewer _viewer;
+        private RedlineRegistry _registry;
+
+        public RedlineManager(IMapViewer viewer)
+        {
+            _map = viewer.GetMap();
+            _viewer = viewer;
+            var provider = _viewer.GetProvider();
+            _resSvc = (MgResourceService)provider.CreateService(MgServiceType.ResourceService);
+            _featSvc = (MgFeatureService)provider.CreateService(MgServiceType.FeatureService);
+            _registry = new RedlineRegistry(SessionID, _resSvc, _featSvc);
+        }
+
+        static string smSessionID;
+
+        static string SessionID
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(smSessionID))
+                {
+                    smSessionID = Guid.NewGuid().ToString();
+                }
+                return smSessionID;
+            }
+        }
+
+        public RedlineLayer CreateRedlineLayer(CreateRedlineLayerParams param, out bool bAddedToMap)
+        {
+            bAddedToMap = false;
+
+            //HACK: SQLite leaky abstraction (hard-coded schema name), SHP probably has some leaks of its own, so we can't assume MarkupSchema:Markup
+            //as the class name interrogate our schema to figure it out
+            MgResourceIdentifier fsId = GenerateRedlineFeatureSourceId(param);
+
+            string className = null;
+            string providerName = null;
+            if (_resSvc.ResourceExists(fsId))
+            {
+                MgFeatureSchemaCollection schemas = _featSvc.DescribeSchema(fsId, string.Empty, null);
+                MgFeatureSchema schema = schemas.GetItem(0);
+                MgClassDefinitionCollection classes = schema.GetClasses();
+                MgClassDefinition cls = classes.GetItem(0);
+                className = schema.Name + ":" + cls.Name;
+            }
+            else
+            {
+                MgFeatureSchema schema = RedlineSchemaFactory.CreateSchema(param.GeometryTypes);
+                MgClassDefinitionCollection classes = schema.GetClasses();
+                MgClassDefinition cls = classes.GetItem(0);
+                className = schema.Name + ":" + cls.Name;
+
+                providerName = "OSGeo.SDF";
+                if (param.Format == RedlineDataStoreFormat.SHP)
+                    providerName = "OSGeo.SHP";
+                else if (param.Format == RedlineDataStoreFormat.SQLite)
+                    providerName = "OSGeo.SQLite";
+
+                MgFileFeatureSourceParams createParams = new MgFileFeatureSourceParams(providerName, RedlineSchemaFactory.SPATIAL_CONTEXT, _map.GetMapSRS(), schema);
+                _featSvc.CreateFeatureSource(fsId, createParams);
+            }
+
+            MgResourceIdentifier ldfId = GenerateRedlineLayerDefinitionId(param);
+            if (!_resSvc.ResourceExists(ldfId))
+            {
+                string layerDefContent = CreateRedlineLayerDefinitionContent(fsId, className, param.Style, param.StyleType);
+                byte[] bytes = Encoding.UTF8.GetBytes(layerDefContent);
+                MgByteSource byteSource = new MgByteSource(bytes, bytes.Length);
+                MgByteReader byteReader = byteSource.GetReader();
+
+                _resSvc.SetResource(ldfId, byteReader, null);
+            }
+
+            if (param.AddToMap)
+            {
+                AddRedlineLayerToMap(ldfId);
+                bAddedToMap = true;
+            }
+
+            var layer = new RedlineLayer(ldfId.Name, fsId.ToString(), ldfId.ToString(), param.GeometryTypes, param.StyleType);
+            //If provider name was set, then we register this layer in the registry. Otherwise it means
+            //the layer already exists and by extension already registered
+            if (providerName != null)
+                _registry.AddRedlineLayer(layer, providerName);
+            return layer;
+        }
+
+        private void AddRedlineLayerToMap(MgResourceIdentifier ldfId)
+        {
+            MgLayerGroup group = null;
+            var layers = _map.GetLayers();
+            var groups = _map.GetLayerGroups();
+            if (groups.Contains(GROUP_NAME))
+            {
+                group = groups.GetItem(GROUP_NAME);
+            }
+            else
+            {
+                group = new MgLayerGroup(GROUP_NAME);
+                group.SetVisible(true);
+                group.SetLegendLabel(Strings.RedlineLayerGroupLabel);
+                group.SetDisplayInLegend(true);
+                groups.Add(group);
+            }
+
+            var provider = _viewer.GetProvider();
+            var newLayer = provider.CreateLayer(ldfId);
+            newLayer.SetDisplayInLegend(true);
+            newLayer.SetName("_" + ldfId.Name);
+            newLayer.SetLegendLabel(ldfId.Name);
+            newLayer.SetSelectable(true);
+            newLayer.SetGroup(group);
+
+            layers.Insert(0, newLayer);
+        }
+
+        private MgResourceIdentifier GenerateRedlineLayerDefinitionId(CreateRedlineLayerParams param)
+        {
+            return new MgResourceIdentifier(ResourceIdPrefix + param.Name + "." + MgResourceType.LayerDefinition);
+        }
+
+        static double SizeInMM(double value, SizeUnit unit)
+        {
+            switch (unit)
+            {
+                case SizeUnit.Points:
+                    return value * 0.352777778;
+                case SizeUnit.Inches:
+                    return value * 25.4;
+                case SizeUnit.Centimeters:
+                    return value * 10;
+                case SizeUnit.Meters:
+                    return value * 1000;
+                default: //assume mm
+                    return value;
+            }
+        }
+
+        static string GetBorderPatternGeometry(LinePattern pattern)
+        {
+            switch (pattern)
+            {
+                case LinePattern.Solid:
+                    return Strings.line_solid;
+                case LinePattern.Dash:
+                    return Strings.line_dash;
+                case LinePattern.Dot:
+                    return Strings.line_dot;
+                case LinePattern.DashDot:
+                    return Strings.line_dashdot;
+                case LinePattern.DashDotDot:
+                    return Strings.line_dashdotdot;
+                case LinePattern.Rail:
+                    return Strings.line_rail;
+                case LinePattern.BORDER:
+                    return Strings.line_border;
+                case LinePattern.DIVIDE:
+                    return Strings.line_divide;
+                case LinePattern.FENCELINE1:
+                    return Strings.line_fenceline1;
+                default:
+                    throw new Exception("Unsupported or unrecognized border pattern: " + pattern.ToString()); 
+            }
+        }
+
+        static string GetFillPatternTemplate(FillPattern pattern)
+        {
+            switch (pattern)
+            {
+                case FillPattern.Solid:
+                    return Strings.area_solid;
+                case FillPattern.Net:
+                    return Strings.area_net;
+                case FillPattern.Line:
+                    return Strings.area_line;
+                case FillPattern.Line_45:
+                    return Strings.area_line_45;
+                case FillPattern.Line_90:
+                    return Strings.area_line_90;
+                case FillPattern.Line_135:
+                    return Strings.area_line_135;
+                case FillPattern.Square:
+                    return Strings.area_square;
+                case FillPattern.Box:
+                    return Strings.area_box;
+                case FillPattern.Cross:
+                    return Strings.area_cross;
+                case FillPattern.Dash:
+                    return Strings.area_dash;
+                case FillPattern.Dolmit:
+                    return Strings.area_dolmit;
+                case FillPattern.Hex:
+                    return Strings.area_hex;
+                case FillPattern.Sacncr:
+                    return Strings.area_sacncr;
+                case FillPattern.Steel:
+                    return Strings.area_steel;
+                default:
+                    throw new Exception("Unsupported or unrecognized fill pattern: " + pattern.ToString());
+            }
+        }
+
+        private string CreateRedlineLayerDefinitionContent(MgResourceIdentifier fsId, string className, RedlineStyle style, RedlineStylizationType type)
+        {
+            double transpc = (100 - style.FillTransparency) / 100;
+            string hexFgTransparency = string.Format("{0:X2}", Convert.ToInt32(255 * transpc)); //Convert % to alpha value
+            string hexBgTransparency = style.FillBackTransparency ? "FF" : "00"; //All or nothing
+            if (type == RedlineStylizationType.Basic)
+            {
+                string template = Strings.markuplayerdefinition;
+                return Util.Substitute(template, 
+                    new string [] {
+                        fsId.ToString(),						                    //<ResourceId> - Feature Source
+                        className,                                                  //<FeatureName> - Class Name
+                        style.LabelSizeUnits.ToString(),						    //<Unit> - Mark Label
+                        style.LabelFontSize.ToString(CultureInfo.InvariantCulture),	//<SizeX> - Mark Label Size
+                        style.LabelFontSize.ToString(CultureInfo.InvariantCulture),	//<SizeY> - Mark Label Size
+                        "FF" + Util.ToHtmlColor(style.LabelForeColor),				//<ForegroundColor> - Mark Label
+                        "FF" + Util.ToHtmlColor(style.LabelBackColor),				//<BackgroundColor> - Mark Label
+                        style.LabelBackStyle.ToString(),						    //<BackgroundStyle> - Mark Label
+                        style.LabelBold.ToString().ToLower(),						//<Bold> - Mark Label
+                        style.LabelItalic.ToString().ToLower(),						//<Bold> - Mark Label
+                        style.LabelUnderline.ToString().ToLower(),					//<Underlined> - Mark Label
+                        style.MarkerSizeUnits.ToString(),						    //<Unit> - Mark
+                        style.MarkerSize.ToString(CultureInfo.InvariantCulture),	//<SizeX> - Mark
+                        style.MarkerSize.ToString(CultureInfo.InvariantCulture),	//<SizeY> - Mark
+                        style.MarkerType.ToString(),							    //<Shape> - Mark
+                        "FF" + Util.ToHtmlColor(style.MarkerColor),					//<ForegroundColor> - Mark
+                        "FF" + Util.ToHtmlColor(style.MarkerColor),					//<Color> - Mark
+                        style.LabelSizeUnits.ToString(),						    //<Unit> - Line Label
+                        style.LabelFontSize.ToString(CultureInfo.InvariantCulture),	//<SizeX> - Line Label Size
+                        style.LabelFontSize.ToString(CultureInfo.InvariantCulture),	//<SizeY> - Line Label Size
+                        "FF" + Util.ToHtmlColor(style.LabelForeColor),				//<ForegroundColor> - Line Label
+                        "FF" + Util.ToHtmlColor(style.LabelBackColor),				//<BackgroundColor> - Line Label
+                        style.LabelBackStyle.ToString(),						    //<BackgroundStyle> - Line Label
+                        style.LabelBold.ToString().ToLower(),                       //<Bold> - Line Label
+                        style.LabelItalic.ToString().ToLower(),                     //<Bold> - Line Label
+                        style.LabelUnderline.ToString().ToLower(),                  //<Underlined> - Line Label
+                        style.LinePattern.ToString(),							    //<LineStyle> - Line
+                        style.LineThickness.ToString(CultureInfo.InvariantCulture),	//<Thickness> - Line
+                        "FF" + Util.ToHtmlColor(style.LineColor),					//<Color> - Line
+                        style.LineSizeUnits.ToString(),						        //<Unit> - Line
+                        style.LabelSizeUnits.ToString(),						    //<Unit> - Polygon Label
+                        style.LabelFontSize.ToString(CultureInfo.InvariantCulture),	//<SizeX> - Polygon Label Size
+                        style.LabelFontSize.ToString(CultureInfo.InvariantCulture),	//<SizeY> - Polygon Label Size
+                        "FF" + Util.ToHtmlColor(style.LabelForeColor),				//<ForegroundColor> - Polygon Label
+                        "FF" + Util.ToHtmlColor(style.LabelBackColor),				//<BackgroundColor> - Polygon Label
+                        style.LabelBackStyle.ToString(),						    //<BackgroundStyle> - Polygon Label
+                        style.LabelBold.ToString().ToLower(),						//<Bold> - Polygon Label
+                        style.LabelItalic.ToString().ToLower(),						//<Bold> - Polygon Label
+                        style.LabelUnderline.ToString().ToLower(),					//<Underlined> - Polygon Label
+                        style.FillPattern.ToString(), 						        //<FillPattern> - Fill
+                        hexFgTransparency + Util.ToHtmlColor(style.FillForeColor), 	//<ForegroundColor> - Fill
+                        hexBgTransparency + Util.ToHtmlColor(style.FillBackColor), 	//<BackgroundColor> - Fill
+                        style.BorderPattern.ToString(),						        //<LineStyle> - Fill
+                        style.BorderThickness.ToString(CultureInfo.InvariantCulture),	//<Thickness> - Fill
+                        "FF" + Util.ToHtmlColor(style.BorderColor), 					//<Color> - Fill
+                        style.BorderSizeUnits.ToString()                                //<Unit> - Fill
+                    }); 					            
+            }
+            else
+            {
+                StringBuilder template = new StringBuilder(Strings.markuplayerdefinition_advanced);
+                double fontHeight = SizeInMM(style.LabelFontSize, style.LabelSizeUnits);
+                string labelForeColor = "FF" + Util.ToHtmlColor(style.LabelForeColor);
+                string labelBackColor = "FF" + Util.ToHtmlColor(style.LabelBackColor);
+
+                //Substitute inner templates first, so their placeholders tokens are also brought in
+                template.Replace("#{FILL_PATTERN_TEMPLATE}", GetFillPatternTemplate(style.FillPattern));
+                template.Replace("#{BORDER_PATTERN_TEMPLATE}", GetBorderPatternGeometry(style.BorderPattern));
+
+                //For non-opaque labels we need to empty the frame fill color
+                if (style.LabelBackStyle == LabelStyle.Opaque)
+                {
+                    template.Replace("#{FRAME_FILL_COLOR}", "0xffffffff");
+                }
+                else
+                {
+                    template.Replace("#{FRAME_FILL_COLOR}", string.Empty);
+                    if (style.LabelBackStyle == LabelStyle.Transparent)
+                    {
+                        labelBackColor = string.Empty;
+                    }
+                }
+
+                //I don't think this is correct wrt to the UI, but this is to replicate the behaviour that we currently have under basic stylization
+                //If fill is solid and background color is fully transparent, comment that portion out of the composite type style as it will interfere
+                //with the area foreground symbol
+                if (style.FillPattern == FillPattern.Solid && hexBgTransparency == "FF")
+                {
+                    template.Replace("#{START_BACKGROUND_FILL}", "<!--");
+                    template.Replace("#{END_BACKGROUND_FILL}", "-->");
+                }
+                else
+                {
+                    template.Replace("#{START_BACKGROUND_FILL}", "");
+                    template.Replace("#{END_BACKGROUND_FILL}", "");
+                }
+
+                //Then do a find/replace of all known tokens
+                template.Replace("#{RESOURCE_ID}", fsId.ToString());
+                template.Replace("#{FEATURE_CLASS}", className);
+                template.Replace("#{FONT_HEIGHT}", fontHeight.ToString(CultureInfo.InvariantCulture));
+                template.Replace("#{LABEL_FORE_COLOR}", labelForeColor);
+                template.Replace("#{LABEL_BACK_COLOR}", labelBackColor);
+                template.Replace("#{BOLD}", style.LabelBold.ToString().ToLower());
+                template.Replace("#{ITALIC}", style.LabelItalic.ToString().ToLower());
+                template.Replace("#{UNDERLINE}", style.LabelUnderline.ToString().ToLower());
+                template.Replace("#{MARKER_GEOMETRY}", GetMarkerGeometry(style.MarkerType));
+                template.Replace("#{MARKER_SIZE_X}", GetMarkerSize(style.MarkerSize, style.MarkerSizeUnits));
+                template.Replace("#{MARKER_SIZE_Y}", GetMarkerSize(style.MarkerSize, style.MarkerSizeUnits));
+                template.Replace("#{MARKER_COLOR}", "FF" + Util.ToHtmlColor(style.MarkerColor));
+                template.Replace("#{LINE_PATTERN_GEOMETRY}", GetLinePatternGeometry(style.LinePattern));
+                template.Replace("#{LINE_THICKNESS}", GetLineThickness(style.LineThickness, style.LineSizeUnits));
+                template.Replace("#{LINE_COLOR}", "FF" + Util.ToHtmlColor(style.LineColor));
+                template.Replace("#{FILL_BACK_COLOR}", hexBgTransparency + Util.ToHtmlColor(style.FillBackColor));
+                template.Replace("#{FILL_FORE_COLOR}", hexFgTransparency + Util.ToHtmlColor(style.FillForeColor));
+                template.Replace("#{BORDER_THICKNESS}", SizeInMM(style.BorderThickness, style.BorderSizeUnits).ToString(CultureInfo.InvariantCulture));
+                template.Replace("#{BORDER_COLOR}", "FF" + Util.ToHtmlColor(style.BorderColor));
+
+                //Fill in the UI values under ExtendedData, so we can read from this element if we need to go back to Edit Style UI
+                template.Replace("#{MG_RESOURCE_ID}", fsId.ToString());
+                template.Replace("#{MG_FEATURE_CLASS}", className);
+                template.Replace("#{MG_FILL_PATTERN}", style.FillPattern.ToString());
+                template.Replace("#{MG_BORDER_PATTERN}", style.BorderPattern.ToString());
+                template.Replace("#{MG_LINE_PATTERN}", style.LinePattern.ToString());
+                template.Replace("#{MG_LABEL_FONT_SIZE}", style.LabelFontSize.ToString(CultureInfo.InvariantCulture));
+                template.Replace("#{MG_LABEL_FONT_UNITS}", style.LabelSizeUnits.ToString());
+                template.Replace("#{MG_LABEL_FORECOLOR}", Util.ToHtmlColor(style.LabelForeColor));
+                template.Replace("#{MG_LABEL_BACKCOLOR}", Util.ToHtmlColor(style.LabelBackColor));
+                template.Replace("#{MG_BOLD}", style.LabelBold.ToString().ToLower());
+                template.Replace("#{MG_ITALIC}", style.LabelItalic.ToString().ToLower());
+                template.Replace("#{MG_UNDERLINE}", style.LabelUnderline.ToString().ToLower());
+                template.Replace("#{MG_MARKER_TYPE}", style.MarkerType.ToString());
+                template.Replace("#{MG_MARKER_SIZE}", style.MarkerSize.ToString(CultureInfo.InvariantCulture));
+                template.Replace("#{MG_MARKER_UNITS}", style.MarkerSizeUnits.ToString());
+                template.Replace("#{MG_MARKER_COLOR}", Util.ToHtmlColor(style.MarkerColor));
+                template.Replace("#{MG_LINE_THICKNESS}", style.LineThickness.ToString(CultureInfo.InvariantCulture));
+                template.Replace("#{MG_LINE_UNITS}", style.LineSizeUnits.ToString());
+                template.Replace("#{MG_LINE_COLOR}", Util.ToHtmlColor(style.LineColor));
+                template.Replace("#{MG_FILL_BACK_COLOR}", Util.ToHtmlColor(style.FillBackColor));
+                template.Replace("#{MG_FILL_FORE_COLOR}", Util.ToHtmlColor(style.FillForeColor));
+                template.Replace("#{MG_FILL_FORE_TRANSPARENCY}", hexFgTransparency);
+                template.Replace("#{MG_FILL_BACK_TRANSPARENCY}", hexBgTransparency);
+                template.Replace("#{MG_BORDER_THICKNESS}", style.BorderThickness.ToString(CultureInfo.InvariantCulture));
+                template.Replace("#{MG_BORDER_UNITS}", style.BorderSizeUnits.ToString());
+                template.Replace("#{MG_BORDER_COLOR}", Util.ToHtmlColor(style.BorderColor));
+                template.Replace("#{MG_LABEL_STYLE}", style.LabelBackStyle.ToString());
+
+                return template.ToString();
+            }
+        }
+
+        static string GetLineThickness(double value, SizeUnit unit)
+        {
+            return SizeInMM(value, unit).ToString(CultureInfo.InvariantCulture);
+        }
+
+        static string GetLinePatternGeometry(LinePattern linePattern)
+        {
+            return GetBorderPatternGeometry(linePattern);
+        }
+
+        static string GetMarkerSize(double value, SizeUnit sizeUnit)
+        {
+            //Halve the resulting size to get approximate same size as it would look under basic stylization
+            return (SizeInMM(value, sizeUnit) / 2.0).ToString(CultureInfo.InvariantCulture);
+        }
+
+        static string GetMarkerGeometry(MarkerType markerType)
+        {
+            /*
+            Square:     M -1.0,-1.0 L 1.0,-1.0 L 1.0,1.0 L -1.0,1.0 L -1.0,-1.0
+            Circle:     M -1,0 A 1,1 0 1 1 1,0 A 1,1 0 1 1 -1,0
+            Triangle:   M -1.0,-1.0 h 2.0 l -1.0,2.0 z
+            Star:       M -0.618033988749895,-0.951056516295154 L 0,-0.502028539715568 L 0.618033988749895,-0.951056516295154 L 0.381966011250105,-0.273457471994639 L 1,0.175570504584946 L 0.23606797749979,0.175570504584946 L 0,0.951056516295154 L -0.23606797749979,0.175570504584946 L -1,0.175570504584946 L -0.381966011250105,-0.273457471994639 L -0.618033988749895,-0.951056516295154
+            Cross:      M -0.190983005625053,-1 L 0.190983005625053,-1 L 0.190983005625053,-0.190983005625053 L 1,-0.190983005625053 L 1,0.190983005625053 L 0.190983005625053,0.190983005625053 L 0.190983005625053,1 L -0.190983005625053,1 L -0.190983005625053,0.190983005625053 L -1,0.190983005625053 L -1,-0.190983005625053 L -0.190983005625053,-0.190983005625053 L -0.190983005625053,-1
+            X:          M -0.459818486524547,-1 L 0,-0.540181513475453 L 0.459818486524547,-1 L 1,-0.459818486524547 L 0.540181513475453,0 L 1,0.459818486524547 L 0.459818486524547,1 L 0,0.540181513475453 L -0.459818486524547,1 L -1,0.459818486524547 L -0.540181513475453,0 L -1,-0.459818486524547 L -0.459818486524547,-1
+            Star-Old:   M -0.707106781186548,0.707106781186548 L 0.707106781186548,-0.707106781186548 M -0.707106781186548,-0.707106781186548 L 0.707106781186548,0.707106781186548 M -1,0 L 1,0 M 0,-1 L 0,1
+            Cross-Old:  M -1,0 L 1,0 M 0,-1 L 0,1
+            X-Old:      M -0.707106781186548,0.707106781186548 L 0.707106781186548,-0.707106781186548 M -0.707106781186548,-0.707106781186548 L 0.707106781186548,0.707106781186548        
+            */
+            switch (markerType)
+            {
+                case MarkerType.Square:
+                    return "M -1.0,-1.0 L 1.0,-1.0 L 1.0,1.0 L -1.0,1.0 L -1.0,-1.0";
+                case MarkerType.Circle:
+                    return "M -1,0 A 1,1 0 1 1 1,0 A 1,1 0 1 1 -1,0";
+                case MarkerType.Triangle:
+                    return "M -1.0,-1.0 h 2.0 l -1.0,2.0 z";
+                case MarkerType.Star:
+                    return "M -0.618033988749895,-0.951056516295154 L 0,-0.502028539715568 L 0.618033988749895,-0.951056516295154 L 0.381966011250105,-0.273457471994639 L 1,0.175570504584946 L 0.23606797749979,0.175570504584946 L 0,0.951056516295154 L -0.23606797749979,0.175570504584946 L -1,0.175570504584946 L -0.381966011250105,-0.273457471994639 L -0.618033988749895,-0.951056516295154";
+                case MarkerType.Cross:
+                    return "M -0.190983005625053,-1 L 0.190983005625053,-1 L 0.190983005625053,-0.190983005625053 L 1,-0.190983005625053 L 1,0.190983005625053 L 0.190983005625053,0.190983005625053 L 0.190983005625053,1 L -0.190983005625053,1 L -0.190983005625053,0.190983005625053 L -1,0.190983005625053 L -1,-0.190983005625053 L -0.190983005625053,-0.190983005625053 L -0.190983005625053,-1";
+                case MarkerType.X:
+                    return "M -0.459818486524547,-1 L 0,-0.540181513475453 L 0.459818486524547,-1 L 1,-0.459818486524547 L 0.540181513475453,0 L 1,0.459818486524547 L 0.459818486524547,1 L 0,0.540181513475453 L -0.459818486524547,1 L -1,0.459818486524547 L -0.540181513475453,0 L -1,-0.459818486524547 L -0.459818486524547,-1";
+                default:
+                    throw new Exception("Unrecognized or unsupported marker type: " + markerType.ToString());
+            }
+        }
+
+        private MgResourceIdentifier GenerateRedlineFeatureSourceId(CreateRedlineLayerParams param)
+        {
+            return new MgResourceIdentifier(ResourceIdPrefix + param.Name + "." + MgResourceType.FeatureSource);
+        }
+
+        public void AddLayerToMap(RedlineLayer layer)
+        {
+            var ldfId = new MgResourceIdentifier(layer.LayerDefinition);
+            AddRedlineLayerToMap(ldfId);
+        }
+
+        public void RemoveLayerFromMap(RedlineLayer layer)
+        {
+            var layers = _map.GetLayers();
+            var lidx = layers.IndexOf("_" + layer.Name);
+            if (lidx >= 0)
+            {
+                layers.RemoveAt(lidx);
+            }
+        }
+
+        public RedlineLayer[] GetAvailableLayers()
+        {
+            return _registry.GetAvailableLayers(_map);
+        }
+
+        public const string GROUP_NAME = "_Markup";
+
+        static string ResourceIdPrefix
+        {
+            get
+            {
+                return "Session:" + SessionID + "//";
+            }
+        }
+
+        static T ParseEnumValue<T>(string value)
+        {
+            return (T)Enum.Parse(typeof(T), value);
+        }
+
+        static string GetNodeValue(XmlElement el, string name)
+        {
+            var child = el.GetElementsByTagName(name)[0];
+            return child.InnerText;
+        }
+
+        public RedlineStyle GetLayerStyle(RedlineLayer layer)
+        {
+            var style = RedlineStyle.CreateDefault();
+
+            var ldfId = new MgResourceIdentifier(layer.LayerDefinition);
+            var br = _resSvc.GetResourceContent(ldfId);
+            var doc = new XmlDocument();
+            doc.LoadXml(br.ToString());
+
+            if (layer.StyleType == RedlineStylizationType.Basic)
+            {
+                var vsr = doc.GetElementsByTagName("VectorScaleRange")[0];
+                var pts = vsr["PointTypeStyle"];
+                var ats = vsr["AreaTypeStyle"];
+                var lts = vsr["LineTypeStyle"];
+
+                if (pts != null)
+                {
+                    var label = (XmlElement)pts.GetElementsByTagName("Label")[0];
+                    var psym = pts.GetElementsByTagName("PointSymbolization2D");
+                    if (psym.Count > 0)
+                    {
+                        var mark = psym[0]["Mark"];
+
+                        style.MarkerSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(mark, "Unit"));
+                        style.MarkerSize = Convert.ToDouble(GetNodeValue(mark, "SizeX"));
+                        style.MarkerType = ParseEnumValue<MarkerType>(GetNodeValue(mark, "Shape"));
+                        style.MarkerColor = Util.FromHtmlColor(GetNodeValue(mark, "ForegroundColor"), false);
+                    }
+                    style.LabelSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(label, "Unit"));
+                    style.LabelFontSize = Convert.ToDouble(GetNodeValue(label, "SizeX"));
+                    style.LabelForeColor = Util.FromHtmlColor(GetNodeValue(label, "ForegroundColor"), false);
+                    style.LabelBackColor = Util.FromHtmlColor(GetNodeValue(label, "BackgroundColor"), false);
+                    style.LabelBackStyle = ParseEnumValue<LabelStyle>(GetNodeValue(label, "BackgroundStyle"));
+                    style.LabelBold = Convert.ToBoolean(GetNodeValue(label, "Bold"));
+                    style.LabelItalic = Convert.ToBoolean(GetNodeValue(label, "Italic"));
+                    style.LabelUnderline = Convert.ToBoolean(GetNodeValue(label, "Underlined"));
+                }
+                if (lts != null)
+                {
+                    var label = (XmlElement)lts.GetElementsByTagName("Label")[0];
+                    
+                    style.LabelSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(label, "Unit"));
+                    style.LabelFontSize = Convert.ToDouble(GetNodeValue(label, "SizeX"));
+                    style.LabelForeColor = Util.FromHtmlColor(GetNodeValue(label, "ForegroundColor"), false);
+                    style.LabelBackColor = Util.FromHtmlColor(GetNodeValue(label, "BackgroundColor"), false);
+                    style.LabelBackStyle = ParseEnumValue<LabelStyle>(GetNodeValue(label, "BackgroundStyle"));
+
+                    if (pts == null)
+                    {
+                        style.LabelBold = Convert.ToBoolean(GetNodeValue(label, "Bold"));
+                        style.LabelItalic = Convert.ToBoolean(GetNodeValue(label, "Italic"));
+                        style.LabelUnderline = Convert.ToBoolean(GetNodeValue(label, "Underlined"));
+                    }
+
+                    var lsym = lts.GetElementsByTagName("LineSymbolization2D");
+                    if (lsym.Count > 0)
+                    {
+                        var line = (XmlElement)lsym[0];
+                        style.LinePattern = ParseEnumValue<LinePattern>(GetNodeValue(line, "LineStyle"));
+                        style.LineThickness = Convert.ToDouble(GetNodeValue(line, "Thickness"));
+                        style.LineColor = Util.FromHtmlColor(GetNodeValue(line, "Color"), false);
+                        style.LineSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(line, "Unit"));
+                    }
+                }
+                if (ats != null)
+                {
+                    var label = (XmlElement)ats.GetElementsByTagName("Label")[0];
+
+                    style.LabelSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(label, "Unit"));
+                    style.LabelFontSize = Convert.ToDouble(GetNodeValue(label, "SizeX"));
+                    style.LabelForeColor = Util.FromHtmlColor(GetNodeValue(label, "ForegroundColor"), false);
+                    style.LabelBackColor = Util.FromHtmlColor(GetNodeValue(label, "BackgroundColor"), false);
+                    style.LabelBackStyle = ParseEnumValue<LabelStyle>(GetNodeValue(label, "BackgroundStyle"));
+
+                    if (pts == null && lts == null)
+                    {
+                        style.LabelBold = Convert.ToBoolean(GetNodeValue(label, "Bold"));
+                        style.LabelItalic = Convert.ToBoolean(GetNodeValue(label, "Italic"));
+                        style.LabelUnderline = Convert.ToBoolean(GetNodeValue(label, "Underlined"));
+                    }
+
+                    var asym = ats.GetElementsByTagName("AreaSymbolization2D");
+                    if (asym.Count > 0)
+                    {
+                        var fill = asym[0]["Fill"];
+                        var stroke = asym[0]["Stroke"];
+
+                        style.FillPattern = ParseEnumValue<FillPattern>(GetNodeValue(fill, "FillPattern"));
+                        style.FillForeColor = Util.FromHtmlColor(GetNodeValue(fill, "ForegroundColor"), false);
+                        style.FillBackColor = Util.FromHtmlColor(GetNodeValue(fill, "BackgroundColor"), false);
+
+                        style.BorderPattern = ParseEnumValue<LinePattern>(GetNodeValue(stroke, "LineStyle"));
+                        style.BorderThickness = Convert.ToDouble(GetNodeValue(stroke, "Thickness"));
+                        style.BorderColor = Util.FromHtmlColor(GetNodeValue(stroke, "Color"));
+                        style.BorderSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(stroke, "Unit"));
+                    }
+                }
+            }
+            else
+            {
+                var extData = doc.GetElementsByTagName("ExtendedData1");
+                if (extData.Count == 1)
+                {
+                    var ext = (XmlElement)extData[0];
+                    style.MarkerColor = Util.FromHtmlColor(GetNodeValue(ext, "MG_MARKER_COLOR"));
+                    style.MarkerType = ParseEnumValue<MarkerType>(GetNodeValue(ext, "MG_MARKER_TYPE"));
+                    style.MarkerSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(ext, "MG_MARKER_UNITS"));
+                    style.MarkerSize = Convert.ToDouble(GetNodeValue(ext, "MG_MARKER_SIZE"));
+                    style.LineColor = Util.FromHtmlColor(GetNodeValue(ext, "MG_LINE_COLOR"));
+                    style.LinePattern = ParseEnumValue<LinePattern>(GetNodeValue(ext, "MG_LINE_PATTERN"));
+                    style.LineSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(ext, "MG_LINE_UNITS"));
+                    style.LineThickness = Convert.ToDouble(GetNodeValue(ext, "MG_LINE_THICKNESS"));
+                    style.FillPattern = ParseEnumValue<FillPattern>(GetNodeValue(ext, "MG_FILL_PATTERN"));
+                    style.FillTransparency = 100 - ((Convert.ToInt32(GetNodeValue(ext, "MG_FILL_FORE_TRANSPARENCY"), 16) / 255.0) * 100.0);
+                    style.FillForeColor = Util.FromHtmlColor(GetNodeValue(ext, "MG_FILL_FORE_COLOR"));
+                    style.FillBackColor = Util.FromHtmlColor(GetNodeValue(ext, "MG_FILL_BACK_COLOR"));
+                    style.FillBackTransparency = (GetNodeValue(ext, "MG_FILL_BACK_TRANSPARENCY") == "FF");
+                    style.BorderPattern = ParseEnumValue<LinePattern>(GetNodeValue(ext, "MG_BORDER_PATTERN"));
+                    style.BorderSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(ext, "MG_BORDER_UNITS"));
+                    style.BorderColor = Util.FromHtmlColor(GetNodeValue(ext, "MG_BORDER_COLOR"));
+                    style.BorderThickness = Convert.ToDouble(GetNodeValue(ext, "MG_BORDER_THICKNESS"));
+                    style.LabelSizeUnits = ParseEnumValue<SizeUnit>(GetNodeValue(ext, "MG_LABEL_FONT_UNITS"));
+                    style.LabelFontSize = Convert.ToDouble(GetNodeValue(ext, "MG_LABEL_FONT_SIZE"));
+                    style.LabelBold = Convert.ToBoolean(GetNodeValue(ext, "MG_BOLD"));
+                    style.LabelItalic = Convert.ToBoolean(GetNodeValue(ext, "MG_ITALIC"));
+                    style.LabelUnderline = Convert.ToBoolean(GetNodeValue(ext, "MG_UNDERLINE"));
+                    style.LabelForeColor = Util.FromHtmlColor(GetNodeValue(ext, "MG_LABEL_FORECOLOR"));
+                    style.LabelBackColor = Util.FromHtmlColor(GetNodeValue(ext, "MG_LABEL_BACKCOLOR"));
+                    style.LabelBackStyle = ParseEnumValue<LabelStyle>(GetNodeValue(ext, "MG_LABEL_STYLE"));
+                }
+            }
+
+            return style;
+        }
+
+        public void DeleteLayer(RedlineLayer layer)
+        {
+            _registry.DeleteLayer(layer);
+        }
+
+        internal void UpdateLayerStyle(RedlineLayer layer, RedlineStyle updatedStyle)
+        {
+            //HACK: SQLite leaky abstraction (hard-coded schema name), SHP probably has some leaks of its own, so we can't assume MarkupSchema:Markup
+            //as the class name interrogate our schema to figure it out
+            MgResourceIdentifier fsId = new MgResourceIdentifier(layer.FeatureSource);
+
+            MgFeatureSchemaCollection schemas = _featSvc.DescribeSchema(fsId, string.Empty, null);
+            MgFeatureSchema schema = schemas.GetItem(0);
+            MgClassDefinitionCollection classes = schema.GetClasses();
+            MgClassDefinition cls = classes.GetItem(0);
+            string className = schema.Name + ":" + cls.Name;
+
+            MgResourceIdentifier ldfId = new MgResourceIdentifier(layer.LayerDefinition);
+
+            string layerDefContent = CreateRedlineLayerDefinitionContent(fsId, className, updatedStyle, layer.StyleType);
+            byte[] bytes = Encoding.UTF8.GetBytes(layerDefContent);
+            MgByteSource byteSource = new MgByteSource(bytes, bytes.Length);
+            MgByteReader byteReader = byteSource.GetReader();
+
+            _resSvc.SetResource(ldfId, byteReader, null);
+        }
+    }
+
+    internal enum RedlineStylizationType : int
+    {
+        Basic = 1,
+        Advanced = 2
+    }
+
+    internal class CreateRedlineLayerParams
+    {
+        public string Name { get; set; }
+        public int GeometryTypes { get; set; }
+        public RedlineDataStoreFormat Format { get; set; }
+        public RedlineStyle Style { get; set; }
+        public bool AddToMap { get; set; }
+        public RedlineStylizationType StyleType { get; set; }
+    }
+
+    internal enum RedlineGeometryType
+    {
+        Point,
+        Line,
+        LineString,
+        Polygon,
+        Circle,
+        Rectangle
+    }
+
+    internal enum RedlineDataStoreFormat
+    {
+        SDF,
+        SHP,
+        SQLite
+    }
+
+    internal enum LabelStyle
+    {
+        Ghosted,
+        Opaque,
+        Transparent
+    }
+
+    internal enum LinePattern
+    {
+        Solid,
+        Dash,
+        Dot,
+        DashDot,
+        DashDotDot,
+        Rail,
+        BORDER,
+        DIVIDE,
+        FENCELINE1
+    }
+
+    internal enum FillPattern
+    {
+        Solid,
+        Net,
+        Line,
+        Line_45,
+        Line_90,
+        Line_135,
+        Square,
+        Box,
+        Cross,
+        Dash,
+        Dolmit,
+        Hex,
+        Sacncr,
+        Steel
+    }
+
+    internal enum MarkerType
+    {
+        Square,
+        Circle,
+        Triangle,
+        Star,
+        Cross,
+        X
+    }
+
+    internal enum SizeUnit
+    {
+        Points,
+        Inches,
+        Millimeters,
+        Centimeters,
+        Meters
+    }
+
+    internal class RedlineStyle
+    {
+        public Color MarkerColor { get; set; }
+        public MarkerType MarkerType { get; set; }
+        public double MarkerSize { get; set; }
+        public SizeUnit MarkerSizeUnits { get; set; }
+        public Color LineColor { get; set; }
+        public LinePattern LinePattern { get; set; }
+        public SizeUnit LineSizeUnits { get; set; }
+        public double LineThickness { get; set; }
+        public FillPattern FillPattern { get; set; }
+        public double FillTransparency { get; set; }
+        public Color FillForeColor { get; set; }
+        public Color FillBackColor { get; set; }
+        public bool FillBackTransparency { get; set; }
+        public LinePattern BorderPattern { get; set; }
+        public double BorderThickness { get; set; }
+        public SizeUnit BorderSizeUnits { get; set; }
+        public Color BorderColor { get; set; }
+        public SizeUnit LabelSizeUnits { get; set; }
+        public double LabelFontSize { get; set; }
+        public bool LabelBold { get; set; }
+        public bool LabelItalic { get; set; }
+        public bool LabelUnderline { get; set; }
+        public Color LabelForeColor { get; set; }
+        public Color LabelBackColor { get; set; }
+        public LabelStyle LabelBackStyle { get; set; }
+
+        internal static RedlineStyle CreateDefault()
+        {
+            return new RedlineStyle()
+            {
+                BorderColor = Color.Red,
+                BorderPattern = LinePattern.Solid,
+                BorderSizeUnits = SizeUnit.Points,
+                BorderThickness = 0,
+                FillBackColor = Color.Black,
+                FillBackTransparency = true,
+                FillForeColor = Color.Red,
+                FillPattern = FillPattern.Solid,
+                FillTransparency = 35,
+                LabelBackColor = Color.White,
+                LabelBackStyle = LabelStyle.Opaque,
+                LabelBold = false,
+                LabelFontSize = 10,
+                LabelForeColor = Color.Black,
+                LabelItalic = false,
+                LabelSizeUnits = SizeUnit.Points,
+                LabelUnderline = false,
+                LineColor = Color.Red,
+                LinePattern = LinePattern.Solid,
+                LineSizeUnits = SizeUnit.Centimeters,
+                LineThickness = 0,
+                MarkerColor = Color.Red,
+                MarkerSize = 10,
+                MarkerSizeUnits = SizeUnit.Points,
+                MarkerType = MarkerType.Square
+            };
+        }
+    }
+
+    internal class RedlineLayer
+    {
+        public string Name { get; private set; }
+
+        public string SystemName { get { return "_" + this.Name; } }
+
+        public string FeatureSource { get; private set; }
+
+        public string LayerDefinition { get; private set; }
+
+        public int GeometryTypes { get; private set; }
+
+        public RedlineStylizationType StyleType { get; private set; }
+
+        public RedlineLayer(string name, string fsId, string layerDef, int geomTypes, RedlineStylizationType styleType)
+        {
+            this.Name = name;
+            this.FeatureSource = fsId;
+            this.LayerDefinition = layerDef;
+            this.GeometryTypes = geomTypes;
+            this.StyleType = styleType;
+        }
+    }
+
+    internal class RedlineObject
+    {
+        public RedlineObject(int id, string text)
+        {
+            this.ID = id;
+            this.Text = text;
+        }
+
+        public int ID { get; private set; }
+
+        public string Text { get; private set; }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineRegistry.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineRegistry.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineRegistry.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,177 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    internal class RedlineRegistry
+    {
+        private MgResourceIdentifier _registryFsId;
+        private MgFeatureService _featSvc;
+        private MgResourceService _resSvc;
+        private string _sessionID;
+
+        public RedlineRegistry(string sessionID, MgResourceService resSvc, MgFeatureService featSvc)
+        {
+            _sessionID = sessionID;
+            _resSvc = resSvc;
+            _featSvc = featSvc;
+        }
+
+        private void Ensure()
+        {
+            if (_registryFsId == null)
+            {
+                _registryFsId = new MgResourceIdentifier("Session:" + _sessionID + "//MarkupRegistry.FeatureSource");
+
+                if (!_resSvc.ResourceExists(_registryFsId))
+                {
+                    //Markup Registry Feature Source Schema
+                    //
+                    //Default
+                    //  MarkupRegistry
+                    //    ResourceId (String, Identity, Not Null)
+                    //    LayerDefintion (String, Not Null)
+                    //    Name (String, Not Null)
+                    //    FdoProvider (String, Not Null)
+                    //    GeometryTypes (Int, Not Null)
+                    MgFeatureSchema schema = new MgFeatureSchema("Default", "");
+                    MgClassDefinition cls = new MgClassDefinition();
+                    cls.SetName("MarkupRegistry");
+
+                    MgDataPropertyDefinition regId = new MgDataPropertyDefinition("ResourceId");
+                    regId.SetDataType(MgPropertyType.String);
+                    regId.SetLength(1024);
+                    regId.SetNullable(false);
+
+                    MgDataPropertyDefinition layerDefId = new MgDataPropertyDefinition("LayerDefinition");
+                    layerDefId.SetDataType(MgPropertyType.String);
+                    layerDefId.SetLength(1024);
+                    layerDefId.SetNullable(false);
+
+                    MgDataPropertyDefinition name = new MgDataPropertyDefinition("Name");
+                    name.SetDataType(MgPropertyType.String);
+                    name.SetLength(512);
+                    name.SetNullable(false);
+
+                    MgDataPropertyDefinition provider = new MgDataPropertyDefinition("FdoProvider");
+                    provider.SetDataType(MgPropertyType.String);
+                    provider.SetLength(512);
+                    provider.SetNullable(false);
+
+                    MgDataPropertyDefinition geomTypes = new MgDataPropertyDefinition("GeometryTypes");
+                    geomTypes.SetDataType(MgPropertyType.Int32);
+                    geomTypes.SetNullable(false);
+
+                    MgDataPropertyDefinition styleType = new MgDataPropertyDefinition("StyleType");
+                    styleType.SetDataType(MgPropertyType.Int32);
+                    styleType.SetNullable(false);
+
+                    MgPropertyDefinitionCollection dataProps = cls.GetProperties();
+                    dataProps.Add(regId);
+                    dataProps.Add(layerDefId);
+                    dataProps.Add(name);
+                    dataProps.Add(provider);
+                    dataProps.Add(geomTypes);
+                    dataProps.Add(styleType);
+
+                    MgPropertyDefinitionCollection idProps = cls.GetIdentityProperties();
+                    idProps.Add(regId);
+
+                    MgClassDefinitionCollection classes = schema.GetClasses();
+                    classes.Add(cls);
+
+                    //No coordinate system required here because we're not storing spatial data
+                    MgFileFeatureSourceParams createSdf = new MgFileFeatureSourceParams("OSGeo.SDF", "Default", "", schema);
+                    _featSvc.CreateFeatureSource(_registryFsId, createSdf);
+                }
+            }
+        }
+
+        private MgResourceIdentifier GetRegistryFeatureSource()
+        {
+            Ensure();
+            return _registryFsId;
+        }
+
+        internal void AddRedlineLayer(RedlineLayer layer, string fdoProvider)
+        {
+            var fsId = GetRegistryFeatureSource();
+            MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
+            MgPropertyCollection insertVals = new MgPropertyCollection();
+
+            MgStringProperty regId = new MgStringProperty("ResourceId", layer.FeatureSource);
+            MgStringProperty ldfId = new MgStringProperty("LayerDefinition", layer.LayerDefinition);
+            MgStringProperty name = new MgStringProperty("Name", layer.Name);
+            MgStringProperty provider = new MgStringProperty("FdoProvider", fdoProvider);
+            MgInt32Property geomTypes = new MgInt32Property("GeometryTypes", layer.GeometryTypes);
+            MgInt32Property styleType = new MgInt32Property("StyleType", (int)layer.StyleType);
+
+            insertVals.Add(regId);
+            insertVals.Add(ldfId);
+            insertVals.Add(name);
+            insertVals.Add(provider);
+            insertVals.Add(geomTypes);
+            insertVals.Add(styleType);
+
+            MgInsertFeatures insert = new MgInsertFeatures("Default:MarkupRegistry", insertVals);
+            commands.Add(insert);
+
+            MgPropertyCollection result = _featSvc.UpdateFeatures(fsId, commands, false);
+            MgFeatureProperty insertResult = result.GetItem(0) as MgFeatureProperty;
+            if (insertResult != null)
+            {
+                MgFeatureReader fr = insertResult.GetValue();
+                fr.Close();
+            }
+        }
+
+        internal RedlineLayer[] GetAvailableLayers(MgMapBase map)
+        {
+            var fsId = GetRegistryFeatureSource();
+            MgLayerCollection mapLayers = map.GetLayers();
+            List<RedlineLayer> layers = new List<RedlineLayer>();
+            MgFeatureReader reader = null;
+            try
+            {
+                reader = _featSvc.SelectFeatures(fsId, "Default:MarkupRegistry", null);
+                while (reader.ReadNext())
+                {
+                    layers.Add(new RedlineLayer(reader.GetString("Name"),
+                                                reader.GetString("ResourceId"),
+                                                reader.GetString("LayerDefinition"),
+                                                reader.GetInt32("GeometryTypes"),
+                                                (RedlineStylizationType)reader.GetInt32("StyleType")));
+                }
+            }
+            finally
+            {
+                if (reader != null)
+                    reader.Close();
+            }
+            return layers.ToArray();
+        }
+
+        internal void DeleteLayer(RedlineLayer layer)
+        {
+            var regId = GetRegistryFeatureSource();
+            MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
+            MgDeleteFeatures delete = new MgDeleteFeatures("Default:MarkupRegistry", "ResourceId = '" + layer.FeatureSource + "'");
+            commands.Add(delete);
+
+            MgPropertyCollection results = _featSvc.UpdateFeatures(regId, commands, false);
+            MgInt32Property deleteResult = results.GetItem(0) as MgInt32Property;
+            if (deleteResult != null && deleteResult.GetValue() > 0)
+            {
+                var ldfId = new MgResourceIdentifier(layer.LayerDefinition);
+                var fsId = new MgResourceIdentifier(layer.FeatureSource);
+
+                if (_resSvc.ResourceExists(ldfId))
+                    _resSvc.DeleteResource(ldfId);
+
+                if (_resSvc.ResourceExists(fsId))
+                    _resSvc.DeleteResource(fsId);
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineSchemaFactory.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineSchemaFactory.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineSchemaFactory.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    public static class RedlineSchemaFactory
+    {
+        public const string SCHEMA_NAME = "MarkupSchema";
+        public const string GEOM_NAME = "Geometry";
+        public const string ID_NAME = "ID";
+        public const string TEXT_NAME = "Text";
+        public const string CLASS_NAME = "Markup";
+        public const string SPATIAL_CONTEXT = "Default";
+
+        public static MgDataPropertyDefinition CreateIDProperty()
+        {
+            MgDataPropertyDefinition id = new MgDataPropertyDefinition(ID_NAME);
+            id.SetDataType(MgPropertyType.Int32);
+            id.SetReadOnly(true);
+            id.SetNullable(false);
+            id.SetAutoGeneration(true);
+
+            return id;
+        }
+
+        public static MgDataPropertyDefinition CreateTextProperty(int length)
+        {
+            MgDataPropertyDefinition text = new MgDataPropertyDefinition(TEXT_NAME);
+            text.SetDataType(MgPropertyType.String);
+            text.SetLength(length);
+
+            return text;
+        }
+
+        public static MgGeometricPropertyDefinition CreateGeometryProperty(int geomType)
+        {
+            MgGeometricPropertyDefinition geom = new MgGeometricPropertyDefinition(GEOM_NAME);
+            geom.SetGeometryTypes(geomType);
+            geom.SetHasElevation(false);
+            geom.SetHasMeasure(false);
+            geom.SetReadOnly(false);
+            geom.SetSpatialContextAssociation(SPATIAL_CONTEXT);
+
+            return geom;
+        }
+
+        public static MgClassDefinition CreateClass(int geomType)
+        {
+            MgClassDefinition cls = new MgClassDefinition();
+            cls.SetName(CLASS_NAME);
+            MgPropertyDefinitionCollection props = cls.GetProperties();
+            MgPropertyDefinitionCollection idProps = cls.GetIdentityProperties();
+
+            MgDataPropertyDefinition id = CreateIDProperty();
+            MgDataPropertyDefinition text = CreateTextProperty(255);
+            MgGeometricPropertyDefinition geom = CreateGeometryProperty(geomType);
+
+            props.Add(id);
+            props.Add(text);
+            props.Add(geom);
+
+            idProps.Add(id);
+            cls.SetDefaultGeometryPropertyName(GEOM_NAME);
+
+            return cls;
+        }
+
+        public static MgFeatureSchema CreateSchema(int geomType)
+        {
+            MgFeatureSchema schema = new MgFeatureSchema();
+            schema.SetName("MarkupSchema");
+            if (geomType == -1)
+                geomType = MgFeatureGeometricType.Point | MgFeatureGeometricType.Curve | MgFeatureGeometricType.Surface;
+
+            MgClassDefinitionCollection classes = schema.GetClasses();
+            MgClassDefinition cls = CreateClass(geomType);
+
+            classes.Add(cls);
+
+            return schema;
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,622 @@
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    partial class RedlineStyleCtrl
+    {
+        /// <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 Component 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.button1 = new System.Windows.Forms.Button();
+            this.comboBox1 = new System.Windows.Forms.ComboBox();
+            this.label5 = new System.Windows.Forms.Label();
+            this.comboBox2 = new System.Windows.Forms.ComboBox();
+            this.label6 = new System.Windows.Forms.Label();
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.label7 = new System.Windows.Forms.Label();
+            this.comboBox3 = new System.Windows.Forms.ComboBox();
+            this.label8 = new System.Windows.Forms.Label();
+            this.button2 = new System.Windows.Forms.Button();
+            this.textBox2 = new System.Windows.Forms.TextBox();
+            this.label9 = new System.Windows.Forms.Label();
+            this.label10 = new System.Windows.Forms.Label();
+            this.comboBox4 = new System.Windows.Forms.ComboBox();
+            this.comboBox5 = new System.Windows.Forms.ComboBox();
+            this.label12 = new System.Windows.Forms.Label();
+            this.button3 = new System.Windows.Forms.Button();
+            this.textBox3 = new System.Windows.Forms.TextBox();
+            this.label13 = new System.Windows.Forms.Label();
+            this.label14 = new System.Windows.Forms.Label();
+            this.label15 = new System.Windows.Forms.Label();
+            this.button4 = new System.Windows.Forms.Button();
+            this.colorDialog = new System.Windows.Forms.ColorDialog();
+            this.comboBox6 = new System.Windows.Forms.ComboBox();
+            this.label16 = new System.Windows.Forms.Label();
+            this.button5 = new System.Windows.Forms.Button();
+            this.textBox4 = new System.Windows.Forms.TextBox();
+            this.label17 = new System.Windows.Forms.Label();
+            this.label18 = new System.Windows.Forms.Label();
+            this.comboBox7 = new System.Windows.Forms.ComboBox();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.groupBox4 = new System.Windows.Forms.GroupBox();
+            this.groupBox5 = new System.Windows.Forms.GroupBox();
+            this.comboBox8 = new System.Windows.Forms.ComboBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.textBox5 = new System.Windows.Forms.TextBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.button6 = new System.Windows.Forms.Button();
+            this.label3 = new System.Windows.Forms.Label();
+            this.button7 = new System.Windows.Forms.Button();
+            this.comboBox9 = new System.Windows.Forms.ComboBox();
+            this.label4 = new System.Windows.Forms.Label();
+            this.checkBox1 = new System.Windows.Forms.CheckBox();
+            this.checkBox2 = new System.Windows.Forms.CheckBox();
+            this.checkBox3 = new System.Windows.Forms.CheckBox();
+            this.groupBox1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.groupBox3.SuspendLayout();
+            this.groupBox4.SuspendLayout();
+            this.groupBox5.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(91, 72);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(75, 23);
+            this.button1.TabIndex = 4;
+            this.button1.UseVisualStyleBackColor = true;
+            // 
+            // comboBox1
+            // 
+            this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox1.FormattingEnabled = true;
+            this.comboBox1.Location = new System.Drawing.Point(91, 19);
+            this.comboBox1.Name = "comboBox1";
+            this.comboBox1.Size = new System.Drawing.Size(119, 21);
+            this.comboBox1.TabIndex = 5;
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Location = new System.Drawing.Point(9, 22);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(67, 13);
+            this.label5.TabIndex = 6;
+            this.label5.Text = "Marker Type";
+            // 
+            // comboBox2
+            // 
+            this.comboBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox2.FormattingEnabled = true;
+            this.comboBox2.Location = new System.Drawing.Point(150, 46);
+            this.comboBox2.Name = "comboBox2";
+            this.comboBox2.Size = new System.Drawing.Size(60, 21);
+            this.comboBox2.TabIndex = 7;
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(9, 49);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(63, 13);
+            this.label6.TabIndex = 8;
+            this.label6.Text = "Marker Size";
+            // 
+            // textBox1
+            // 
+            this.textBox1.Location = new System.Drawing.Point(91, 46);
+            this.textBox1.Name = "textBox1";
+            this.textBox1.Size = new System.Drawing.Size(53, 20);
+            this.textBox1.TabIndex = 9;
+            // 
+            // label7
+            // 
+            this.label7.AutoSize = true;
+            this.label7.Location = new System.Drawing.Point(9, 77);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(67, 13);
+            this.label7.TabIndex = 10;
+            this.label7.Text = "Marker Color";
+            // 
+            // comboBox3
+            // 
+            this.comboBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox3.FormattingEnabled = true;
+            this.comboBox3.Location = new System.Drawing.Point(93, 22);
+            this.comboBox3.Name = "comboBox3";
+            this.comboBox3.Size = new System.Drawing.Size(126, 21);
+            this.comboBox3.TabIndex = 5;
+            // 
+            // label8
+            // 
+            this.label8.AutoSize = true;
+            this.label8.Location = new System.Drawing.Point(11, 80);
+            this.label8.Name = "label8";
+            this.label8.Size = new System.Drawing.Size(31, 13);
+            this.label8.TabIndex = 10;
+            this.label8.Text = "Color";
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(93, 75);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(75, 23);
+            this.button2.TabIndex = 4;
+            this.button2.UseVisualStyleBackColor = true;
+            // 
+            // textBox2
+            // 
+            this.textBox2.Location = new System.Drawing.Point(93, 49);
+            this.textBox2.Name = "textBox2";
+            this.textBox2.Size = new System.Drawing.Size(53, 20);
+            this.textBox2.TabIndex = 9;
+            // 
+            // label9
+            // 
+            this.label9.AutoSize = true;
+            this.label9.Location = new System.Drawing.Point(11, 25);
+            this.label9.Name = "label9";
+            this.label9.Size = new System.Drawing.Size(41, 13);
+            this.label9.TabIndex = 6;
+            this.label9.Text = "Pattern";
+            // 
+            // label10
+            // 
+            this.label10.AutoSize = true;
+            this.label10.Location = new System.Drawing.Point(11, 52);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(56, 13);
+            this.label10.TabIndex = 8;
+            this.label10.Text = "Thickness";
+            // 
+            // comboBox4
+            // 
+            this.comboBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox4.FormattingEnabled = true;
+            this.comboBox4.Location = new System.Drawing.Point(152, 49);
+            this.comboBox4.Name = "comboBox4";
+            this.comboBox4.Size = new System.Drawing.Size(67, 21);
+            this.comboBox4.TabIndex = 7;
+            // 
+            // comboBox5
+            // 
+            this.comboBox5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox5.FormattingEnabled = true;
+            this.comboBox5.Location = new System.Drawing.Point(92, 19);
+            this.comboBox5.Name = "comboBox5";
+            this.comboBox5.Size = new System.Drawing.Size(118, 21);
+            this.comboBox5.TabIndex = 5;
+            // 
+            // label12
+            // 
+            this.label12.AutoSize = true;
+            this.label12.Location = new System.Drawing.Point(10, 77);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(61, 13);
+            this.label12.TabIndex = 10;
+            this.label12.Text = "Foreground";
+            // 
+            // button3
+            // 
+            this.button3.Location = new System.Drawing.Point(92, 72);
+            this.button3.Name = "button3";
+            this.button3.Size = new System.Drawing.Size(75, 23);
+            this.button3.TabIndex = 4;
+            this.button3.UseVisualStyleBackColor = true;
+            // 
+            // textBox3
+            // 
+            this.textBox3.Location = new System.Drawing.Point(92, 46);
+            this.textBox3.Name = "textBox3";
+            this.textBox3.Size = new System.Drawing.Size(53, 20);
+            this.textBox3.TabIndex = 9;
+            // 
+            // label13
+            // 
+            this.label13.AutoSize = true;
+            this.label13.Location = new System.Drawing.Point(10, 22);
+            this.label13.Name = "label13";
+            this.label13.Size = new System.Drawing.Size(41, 13);
+            this.label13.TabIndex = 6;
+            this.label13.Text = "Pattern";
+            // 
+            // label14
+            // 
+            this.label14.AutoSize = true;
+            this.label14.Location = new System.Drawing.Point(10, 49);
+            this.label14.Name = "label14";
+            this.label14.Size = new System.Drawing.Size(72, 13);
+            this.label14.TabIndex = 8;
+            this.label14.Text = "Transparency";
+            // 
+            // label15
+            // 
+            this.label15.AutoSize = true;
+            this.label15.Location = new System.Drawing.Point(10, 106);
+            this.label15.Name = "label15";
+            this.label15.Size = new System.Drawing.Size(65, 13);
+            this.label15.TabIndex = 12;
+            this.label15.Text = "Background";
+            // 
+            // button4
+            // 
+            this.button4.Location = new System.Drawing.Point(92, 101);
+            this.button4.Name = "button4";
+            this.button4.Size = new System.Drawing.Size(75, 23);
+            this.button4.TabIndex = 11;
+            this.button4.UseVisualStyleBackColor = true;
+            // 
+            // comboBox6
+            // 
+            this.comboBox6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox6.FormattingEnabled = true;
+            this.comboBox6.Location = new System.Drawing.Point(94, 19);
+            this.comboBox6.Name = "comboBox6";
+            this.comboBox6.Size = new System.Drawing.Size(126, 21);
+            this.comboBox6.TabIndex = 5;
+            // 
+            // label16
+            // 
+            this.label16.AutoSize = true;
+            this.label16.Location = new System.Drawing.Point(12, 77);
+            this.label16.Name = "label16";
+            this.label16.Size = new System.Drawing.Size(31, 13);
+            this.label16.TabIndex = 10;
+            this.label16.Text = "Color";
+            // 
+            // button5
+            // 
+            this.button5.Location = new System.Drawing.Point(94, 72);
+            this.button5.Name = "button5";
+            this.button5.Size = new System.Drawing.Size(75, 23);
+            this.button5.TabIndex = 4;
+            this.button5.UseVisualStyleBackColor = true;
+            // 
+            // textBox4
+            // 
+            this.textBox4.Location = new System.Drawing.Point(94, 46);
+            this.textBox4.Name = "textBox4";
+            this.textBox4.Size = new System.Drawing.Size(53, 20);
+            this.textBox4.TabIndex = 9;
+            // 
+            // label17
+            // 
+            this.label17.AutoSize = true;
+            this.label17.Location = new System.Drawing.Point(12, 22);
+            this.label17.Name = "label17";
+            this.label17.Size = new System.Drawing.Size(41, 13);
+            this.label17.TabIndex = 6;
+            this.label17.Text = "Pattern";
+            // 
+            // label18
+            // 
+            this.label18.AutoSize = true;
+            this.label18.Location = new System.Drawing.Point(12, 49);
+            this.label18.Name = "label18";
+            this.label18.Size = new System.Drawing.Size(56, 13);
+            this.label18.TabIndex = 8;
+            this.label18.Text = "Thickness";
+            // 
+            // comboBox7
+            // 
+            this.comboBox7.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox7.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox7.FormattingEnabled = true;
+            this.comboBox7.Location = new System.Drawing.Point(153, 46);
+            this.comboBox7.Name = "comboBox7";
+            this.comboBox7.Size = new System.Drawing.Size(67, 21);
+            this.comboBox7.TabIndex = 7;
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.comboBox1);
+            this.groupBox1.Controls.Add(this.label5);
+            this.groupBox1.Controls.Add(this.label7);
+            this.groupBox1.Controls.Add(this.comboBox2);
+            this.groupBox1.Controls.Add(this.button1);
+            this.groupBox1.Controls.Add(this.label6);
+            this.groupBox1.Controls.Add(this.textBox1);
+            this.groupBox1.Location = new System.Drawing.Point(5, 9);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(228, 110);
+            this.groupBox1.TabIndex = 16;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "Point Style";
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.comboBox6);
+            this.groupBox2.Controls.Add(this.label16);
+            this.groupBox2.Controls.Add(this.comboBox7);
+            this.groupBox2.Controls.Add(this.button5);
+            this.groupBox2.Controls.Add(this.label18);
+            this.groupBox2.Controls.Add(this.textBox4);
+            this.groupBox2.Controls.Add(this.label17);
+            this.groupBox2.Location = new System.Drawing.Point(239, 9);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(237, 110);
+            this.groupBox2.TabIndex = 17;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "Line Style";
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Controls.Add(this.label15);
+            this.groupBox3.Controls.Add(this.comboBox5);
+            this.groupBox3.Controls.Add(this.button4);
+            this.groupBox3.Controls.Add(this.label14);
+            this.groupBox3.Controls.Add(this.label13);
+            this.groupBox3.Controls.Add(this.label12);
+            this.groupBox3.Controls.Add(this.textBox3);
+            this.groupBox3.Controls.Add(this.button3);
+            this.groupBox3.Location = new System.Drawing.Point(5, 125);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(229, 131);
+            this.groupBox3.TabIndex = 18;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "Polygon Style - Fill";
+            // 
+            // groupBox4
+            // 
+            this.groupBox4.Controls.Add(this.comboBox3);
+            this.groupBox4.Controls.Add(this.label8);
+            this.groupBox4.Controls.Add(this.comboBox4);
+            this.groupBox4.Controls.Add(this.button2);
+            this.groupBox4.Controls.Add(this.label10);
+            this.groupBox4.Controls.Add(this.textBox2);
+            this.groupBox4.Controls.Add(this.label9);
+            this.groupBox4.Location = new System.Drawing.Point(240, 125);
+            this.groupBox4.Name = "groupBox4";
+            this.groupBox4.Size = new System.Drawing.Size(236, 131);
+            this.groupBox4.TabIndex = 19;
+            this.groupBox4.TabStop = false;
+            this.groupBox4.Text = "Polygon Style - Border";
+            // 
+            // groupBox5
+            // 
+            this.groupBox5.Controls.Add(this.checkBox3);
+            this.groupBox5.Controls.Add(this.checkBox2);
+            this.groupBox5.Controls.Add(this.checkBox1);
+            this.groupBox5.Controls.Add(this.comboBox9);
+            this.groupBox5.Controls.Add(this.label4);
+            this.groupBox5.Controls.Add(this.label2);
+            this.groupBox5.Controls.Add(this.comboBox8);
+            this.groupBox5.Controls.Add(this.button6);
+            this.groupBox5.Controls.Add(this.label1);
+            this.groupBox5.Controls.Add(this.label3);
+            this.groupBox5.Controls.Add(this.textBox5);
+            this.groupBox5.Controls.Add(this.button7);
+            this.groupBox5.Location = new System.Drawing.Point(5, 263);
+            this.groupBox5.Name = "groupBox5";
+            this.groupBox5.Size = new System.Drawing.Size(471, 116);
+            this.groupBox5.TabIndex = 20;
+            this.groupBox5.TabStop = false;
+            this.groupBox5.Text = "Label Style";
+            // 
+            // comboBox8
+            // 
+            this.comboBox8.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox8.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox8.FormattingEnabled = true;
+            this.comboBox8.Location = new System.Drawing.Point(165, 23);
+            this.comboBox8.Name = "comboBox8";
+            this.comboBox8.Size = new System.Drawing.Size(67, 21);
+            this.comboBox8.TabIndex = 10;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(10, 26);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(56, 13);
+            this.label1.TabIndex = 11;
+            this.label1.Text = "Label Size";
+            // 
+            // textBox5
+            // 
+            this.textBox5.Location = new System.Drawing.Point(106, 23);
+            this.textBox5.Name = "textBox5";
+            this.textBox5.Size = new System.Drawing.Size(53, 20);
+            this.textBox5.TabIndex = 12;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(196, 55);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(94, 13);
+            this.label2.TabIndex = 16;
+            this.label2.Text = "Label Background";
+            // 
+            // button6
+            // 
+            this.button6.Location = new System.Drawing.Point(293, 50);
+            this.button6.Name = "button6";
+            this.button6.Size = new System.Drawing.Size(75, 23);
+            this.button6.TabIndex = 15;
+            this.button6.UseVisualStyleBackColor = true;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(10, 55);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(90, 13);
+            this.label3.TabIndex = 14;
+            this.label3.Text = "Label Foreground";
+            // 
+            // button7
+            // 
+            this.button7.Location = new System.Drawing.Point(106, 50);
+            this.button7.Name = "button7";
+            this.button7.Size = new System.Drawing.Size(75, 23);
+            this.button7.TabIndex = 13;
+            this.button7.UseVisualStyleBackColor = true;
+            // 
+            // comboBox9
+            // 
+            this.comboBox9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.comboBox9.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox9.FormattingEnabled = true;
+            this.comboBox9.Location = new System.Drawing.Point(106, 79);
+            this.comboBox9.Name = "comboBox9";
+            this.comboBox9.Size = new System.Drawing.Size(126, 21);
+            this.comboBox9.TabIndex = 20;
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(10, 82);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(59, 13);
+            this.label4.TabIndex = 21;
+            this.label4.Text = "Label Style";
+            // 
+            // checkBox1
+            // 
+            this.checkBox1.Appearance = System.Windows.Forms.Appearance.Button;
+            this.checkBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.checkBox1.Location = new System.Drawing.Point(293, 77);
+            this.checkBox1.Name = "checkBox1";
+            this.checkBox1.Size = new System.Drawing.Size(23, 23);
+            this.checkBox1.TabIndex = 22;
+            this.checkBox1.Text = "B";
+            this.checkBox1.UseVisualStyleBackColor = true;
+            // 
+            // checkBox2
+            // 
+            this.checkBox2.Appearance = System.Windows.Forms.Appearance.Button;
+            this.checkBox2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.checkBox2.Location = new System.Drawing.Point(322, 77);
+            this.checkBox2.Name = "checkBox2";
+            this.checkBox2.Size = new System.Drawing.Size(23, 23);
+            this.checkBox2.TabIndex = 23;
+            this.checkBox2.Text = "I";
+            this.checkBox2.UseVisualStyleBackColor = true;
+            // 
+            // checkBox3
+            // 
+            this.checkBox3.Appearance = System.Windows.Forms.Appearance.Button;
+            this.checkBox3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.checkBox3.Location = new System.Drawing.Point(352, 77);
+            this.checkBox3.Name = "checkBox3";
+            this.checkBox3.Size = new System.Drawing.Size(23, 23);
+            this.checkBox3.TabIndex = 24;
+            this.checkBox3.Text = "U";
+            this.checkBox3.UseVisualStyleBackColor = true;
+            // 
+            // RedlineStyleCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.groupBox5);
+            this.Controls.Add(this.groupBox4);
+            this.Controls.Add(this.groupBox3);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.Name = "RedlineStyleCtrl";
+            this.Size = new System.Drawing.Size(485, 393);
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            this.groupBox3.ResumeLayout(false);
+            this.groupBox3.PerformLayout();
+            this.groupBox4.ResumeLayout(false);
+            this.groupBox4.PerformLayout();
+            this.groupBox5.ResumeLayout(false);
+            this.groupBox5.PerformLayout();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.ComboBox comboBox1;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.ComboBox comboBox2;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.TextBox textBox1;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.ComboBox comboBox3;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.Button button2;
+        private System.Windows.Forms.TextBox textBox2;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.ComboBox comboBox4;
+        private System.Windows.Forms.Label label15;
+        private System.Windows.Forms.Button button4;
+        private System.Windows.Forms.ComboBox comboBox5;
+        private System.Windows.Forms.Label label12;
+        private System.Windows.Forms.Button button3;
+        private System.Windows.Forms.TextBox textBox3;
+        private System.Windows.Forms.Label label13;
+        private System.Windows.Forms.Label label14;
+        private System.Windows.Forms.ColorDialog colorDialog;
+        private System.Windows.Forms.ComboBox comboBox6;
+        private System.Windows.Forms.Label label16;
+        private System.Windows.Forms.Button button5;
+        private System.Windows.Forms.TextBox textBox4;
+        private System.Windows.Forms.Label label17;
+        private System.Windows.Forms.Label label18;
+        private System.Windows.Forms.ComboBox comboBox7;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.GroupBox groupBox4;
+        private System.Windows.Forms.GroupBox groupBox5;
+        private System.Windows.Forms.ComboBox comboBox9;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.ComboBox comboBox8;
+        private System.Windows.Forms.Button button6;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.TextBox textBox5;
+        private System.Windows.Forms.Button button7;
+        private System.Windows.Forms.CheckBox checkBox3;
+        private System.Windows.Forms.CheckBox checkBox2;
+        private System.Windows.Forms.CheckBox checkBox1;
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    public partial class RedlineStyleCtrl : UserControl
+    {
+        public RedlineStyleCtrl()
+        {
+            InitializeComponent();
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleCtrl.resx	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,123 @@
+<?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="colorDialog.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/MapViewer/Redlining/RedlineStyleDialog.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,522 @@
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    partial class RedlineStyleDialog
+    {
+        /// <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.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RedlineStyleDialog));
+            this.grpLabelStyle = new System.Windows.Forms.GroupBox();
+            this.chkUnderline = new System.Windows.Forms.CheckBox();
+            this.chkItalic = new System.Windows.Forms.CheckBox();
+            this.chkBold = new System.Windows.Forms.CheckBox();
+            this.cmbLabelStyle = new System.Windows.Forms.ComboBox();
+            this.label4 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.cmbLabelSizeUnits = new System.Windows.Forms.ComboBox();
+            this.clrLabelBackground = new System.Windows.Forms.Button();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.txtLabelSizeValue = new System.Windows.Forms.TextBox();
+            this.clrLabelForeground = new System.Windows.Forms.Button();
+            this.grpPolygonStyleBorder = new System.Windows.Forms.GroupBox();
+            this.cmbPolyBorderPattern = new System.Windows.Forms.ComboBox();
+            this.label8 = new System.Windows.Forms.Label();
+            this.cmbPolyBorderThicknessUnit = new System.Windows.Forms.ComboBox();
+            this.clrPolyBorder = new System.Windows.Forms.Button();
+            this.label10 = new System.Windows.Forms.Label();
+            this.txtPolyBorderThicknessValue = new System.Windows.Forms.TextBox();
+            this.label9 = new System.Windows.Forms.Label();
+            this.grpPolygonStyleFill = new System.Windows.Forms.GroupBox();
+            this.numFillTransparency = new System.Windows.Forms.NumericUpDown();
+            this.lblPolyFillBackground = new System.Windows.Forms.Label();
+            this.cmbPolyFillPattern = new System.Windows.Forms.ComboBox();
+            this.clrPolyFillBackground = new System.Windows.Forms.Button();
+            this.label14 = new System.Windows.Forms.Label();
+            this.label13 = new System.Windows.Forms.Label();
+            this.label12 = new System.Windows.Forms.Label();
+            this.clrPolyFillForeground = new System.Windows.Forms.Button();
+            this.grpLineStyle = new System.Windows.Forms.GroupBox();
+            this.cmbLinePattern = new System.Windows.Forms.ComboBox();
+            this.label16 = new System.Windows.Forms.Label();
+            this.cmbLineThicknessUnit = new System.Windows.Forms.ComboBox();
+            this.clrLine = new System.Windows.Forms.Button();
+            this.label18 = new System.Windows.Forms.Label();
+            this.txtLineThicknessValue = new System.Windows.Forms.TextBox();
+            this.label17 = new System.Windows.Forms.Label();
+            this.grpPointStyle = new System.Windows.Forms.GroupBox();
+            this.cmbPointMarkerType = new System.Windows.Forms.ComboBox();
+            this.label5 = new System.Windows.Forms.Label();
+            this.label7 = new System.Windows.Forms.Label();
+            this.cmbMarkerSizeUnit = new System.Windows.Forms.ComboBox();
+            this.clrMarker = new System.Windows.Forms.Button();
+            this.label6 = new System.Windows.Forms.Label();
+            this.txtMarkerSizeValue = new System.Windows.Forms.TextBox();
+            this.btnSave = new System.Windows.Forms.Button();
+            this.btnCancel = new System.Windows.Forms.Button();
+            this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+            this.colorDialog = new System.Windows.Forms.ColorDialog();
+            this.chkTransparent = new System.Windows.Forms.CheckBox();
+            this.grpLabelStyle.SuspendLayout();
+            this.grpPolygonStyleBorder.SuspendLayout();
+            this.grpPolygonStyleFill.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.numFillTransparency)).BeginInit();
+            this.grpLineStyle.SuspendLayout();
+            this.grpPointStyle.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // grpLabelStyle
+            // 
+            this.grpLabelStyle.Controls.Add(this.chkUnderline);
+            this.grpLabelStyle.Controls.Add(this.chkItalic);
+            this.grpLabelStyle.Controls.Add(this.chkBold);
+            this.grpLabelStyle.Controls.Add(this.cmbLabelStyle);
+            this.grpLabelStyle.Controls.Add(this.label4);
+            this.grpLabelStyle.Controls.Add(this.label2);
+            this.grpLabelStyle.Controls.Add(this.cmbLabelSizeUnits);
+            this.grpLabelStyle.Controls.Add(this.clrLabelBackground);
+            this.grpLabelStyle.Controls.Add(this.label1);
+            this.grpLabelStyle.Controls.Add(this.label3);
+            this.grpLabelStyle.Controls.Add(this.txtLabelSizeValue);
+            this.grpLabelStyle.Controls.Add(this.clrLabelForeground);
+            resources.ApplyResources(this.grpLabelStyle, "grpLabelStyle");
+            this.grpLabelStyle.Name = "grpLabelStyle";
+            this.grpLabelStyle.TabStop = false;
+            // 
+            // chkUnderline
+            // 
+            resources.ApplyResources(this.chkUnderline, "chkUnderline");
+            this.chkUnderline.Name = "chkUnderline";
+            this.chkUnderline.UseVisualStyleBackColor = true;
+            // 
+            // chkItalic
+            // 
+            resources.ApplyResources(this.chkItalic, "chkItalic");
+            this.chkItalic.Name = "chkItalic";
+            this.chkItalic.UseVisualStyleBackColor = true;
+            // 
+            // chkBold
+            // 
+            resources.ApplyResources(this.chkBold, "chkBold");
+            this.chkBold.Name = "chkBold";
+            this.chkBold.UseVisualStyleBackColor = true;
+            // 
+            // cmbLabelStyle
+            // 
+            resources.ApplyResources(this.cmbLabelStyle, "cmbLabelStyle");
+            this.cmbLabelStyle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbLabelStyle.FormattingEnabled = true;
+            this.cmbLabelStyle.Name = "cmbLabelStyle";
+            // 
+            // label4
+            // 
+            resources.ApplyResources(this.label4, "label4");
+            this.label4.Name = "label4";
+            // 
+            // label2
+            // 
+            resources.ApplyResources(this.label2, "label2");
+            this.label2.Name = "label2";
+            // 
+            // cmbLabelSizeUnits
+            // 
+            resources.ApplyResources(this.cmbLabelSizeUnits, "cmbLabelSizeUnits");
+            this.cmbLabelSizeUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbLabelSizeUnits.FormattingEnabled = true;
+            this.cmbLabelSizeUnits.Name = "cmbLabelSizeUnits";
+            // 
+            // clrLabelBackground
+            // 
+            this.clrLabelBackground.BackColor = System.Drawing.Color.Black;
+            resources.ApplyResources(this.clrLabelBackground, "clrLabelBackground");
+            this.clrLabelBackground.Name = "clrLabelBackground";
+            this.clrLabelBackground.UseVisualStyleBackColor = false;
+            this.clrLabelBackground.Click += new System.EventHandler(this.OnPickColor);
+            // 
+            // label1
+            // 
+            resources.ApplyResources(this.label1, "label1");
+            this.label1.Name = "label1";
+            // 
+            // label3
+            // 
+            resources.ApplyResources(this.label3, "label3");
+            this.label3.Name = "label3";
+            // 
+            // txtLabelSizeValue
+            // 
+            resources.ApplyResources(this.txtLabelSizeValue, "txtLabelSizeValue");
+            this.txtLabelSizeValue.Name = "txtLabelSizeValue";
+            // 
+            // clrLabelForeground
+            // 
+            this.clrLabelForeground.BackColor = System.Drawing.Color.Black;
+            resources.ApplyResources(this.clrLabelForeground, "clrLabelForeground");
+            this.clrLabelForeground.Name = "clrLabelForeground";
+            this.clrLabelForeground.UseVisualStyleBackColor = false;
+            this.clrLabelForeground.Click += new System.EventHandler(this.OnPickColor);
+            // 
+            // grpPolygonStyleBorder
+            // 
+            this.grpPolygonStyleBorder.Controls.Add(this.cmbPolyBorderPattern);
+            this.grpPolygonStyleBorder.Controls.Add(this.label8);
+            this.grpPolygonStyleBorder.Controls.Add(this.cmbPolyBorderThicknessUnit);
+            this.grpPolygonStyleBorder.Controls.Add(this.clrPolyBorder);
+            this.grpPolygonStyleBorder.Controls.Add(this.label10);
+            this.grpPolygonStyleBorder.Controls.Add(this.txtPolyBorderThicknessValue);
+            this.grpPolygonStyleBorder.Controls.Add(this.label9);
+            resources.ApplyResources(this.grpPolygonStyleBorder, "grpPolygonStyleBorder");
+            this.grpPolygonStyleBorder.Name = "grpPolygonStyleBorder";
+            this.grpPolygonStyleBorder.TabStop = false;
+            // 
+            // cmbPolyBorderPattern
+            // 
+            resources.ApplyResources(this.cmbPolyBorderPattern, "cmbPolyBorderPattern");
+            this.cmbPolyBorderPattern.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbPolyBorderPattern.FormattingEnabled = true;
+            this.cmbPolyBorderPattern.Name = "cmbPolyBorderPattern";
+            // 
+            // label8
+            // 
+            resources.ApplyResources(this.label8, "label8");
+            this.label8.Name = "label8";
+            // 
+            // cmbPolyBorderThicknessUnit
+            // 
+            resources.ApplyResources(this.cmbPolyBorderThicknessUnit, "cmbPolyBorderThicknessUnit");
+            this.cmbPolyBorderThicknessUnit.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbPolyBorderThicknessUnit.FormattingEnabled = true;
+            this.cmbPolyBorderThicknessUnit.Name = "cmbPolyBorderThicknessUnit";
+            // 
+            // clrPolyBorder
+            // 
+            this.clrPolyBorder.BackColor = System.Drawing.Color.Black;
+            resources.ApplyResources(this.clrPolyBorder, "clrPolyBorder");
+            this.clrPolyBorder.Name = "clrPolyBorder";
+            this.clrPolyBorder.UseVisualStyleBackColor = false;
+            this.clrPolyBorder.Click += new System.EventHandler(this.OnPickColor);
+            // 
+            // label10
+            // 
+            resources.ApplyResources(this.label10, "label10");
+            this.label10.Name = "label10";
+            // 
+            // txtPolyBorderThicknessValue
+            // 
+            resources.ApplyResources(this.txtPolyBorderThicknessValue, "txtPolyBorderThicknessValue");
+            this.txtPolyBorderThicknessValue.Name = "txtPolyBorderThicknessValue";
+            // 
+            // label9
+            // 
+            resources.ApplyResources(this.label9, "label9");
+            this.label9.Name = "label9";
+            // 
+            // grpPolygonStyleFill
+            // 
+            this.grpPolygonStyleFill.Controls.Add(this.chkTransparent);
+            this.grpPolygonStyleFill.Controls.Add(this.numFillTransparency);
+            this.grpPolygonStyleFill.Controls.Add(this.lblPolyFillBackground);
+            this.grpPolygonStyleFill.Controls.Add(this.cmbPolyFillPattern);
+            this.grpPolygonStyleFill.Controls.Add(this.clrPolyFillBackground);
+            this.grpPolygonStyleFill.Controls.Add(this.label14);
+            this.grpPolygonStyleFill.Controls.Add(this.label13);
+            this.grpPolygonStyleFill.Controls.Add(this.label12);
+            this.grpPolygonStyleFill.Controls.Add(this.clrPolyFillForeground);
+            resources.ApplyResources(this.grpPolygonStyleFill, "grpPolygonStyleFill");
+            this.grpPolygonStyleFill.Name = "grpPolygonStyleFill";
+            this.grpPolygonStyleFill.TabStop = false;
+            // 
+            // numFillTransparency
+            // 
+            resources.ApplyResources(this.numFillTransparency, "numFillTransparency");
+            this.numFillTransparency.Name = "numFillTransparency";
+            // 
+            // lblPolyFillBackground
+            // 
+            resources.ApplyResources(this.lblPolyFillBackground, "lblPolyFillBackground");
+            this.lblPolyFillBackground.Name = "lblPolyFillBackground";
+            // 
+            // cmbPolyFillPattern
+            // 
+            resources.ApplyResources(this.cmbPolyFillPattern, "cmbPolyFillPattern");
+            this.cmbPolyFillPattern.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbPolyFillPattern.FormattingEnabled = true;
+            this.cmbPolyFillPattern.Name = "cmbPolyFillPattern";
+            this.cmbPolyFillPattern.SelectedIndexChanged += new System.EventHandler(this.cmbPolyFillPattern_SelectedIndexChanged);
+            // 
+            // clrPolyFillBackground
+            // 
+            this.clrPolyFillBackground.BackColor = System.Drawing.Color.Black;
+            resources.ApplyResources(this.clrPolyFillBackground, "clrPolyFillBackground");
+            this.clrPolyFillBackground.Name = "clrPolyFillBackground";
+            this.clrPolyFillBackground.UseVisualStyleBackColor = false;
+            this.clrPolyFillBackground.Click += new System.EventHandler(this.OnPickColor);
+            // 
+            // label14
+            // 
+            resources.ApplyResources(this.label14, "label14");
+            this.label14.Name = "label14";
+            // 
+            // label13
+            // 
+            resources.ApplyResources(this.label13, "label13");
+            this.label13.Name = "label13";
+            // 
+            // label12
+            // 
+            resources.ApplyResources(this.label12, "label12");
+            this.label12.Name = "label12";
+            // 
+            // clrPolyFillForeground
+            // 
+            this.clrPolyFillForeground.BackColor = System.Drawing.Color.Black;
+            resources.ApplyResources(this.clrPolyFillForeground, "clrPolyFillForeground");
+            this.clrPolyFillForeground.Name = "clrPolyFillForeground";
+            this.clrPolyFillForeground.UseVisualStyleBackColor = false;
+            this.clrPolyFillForeground.Click += new System.EventHandler(this.OnPickColor);
+            // 
+            // grpLineStyle
+            // 
+            this.grpLineStyle.Controls.Add(this.cmbLinePattern);
+            this.grpLineStyle.Controls.Add(this.label16);
+            this.grpLineStyle.Controls.Add(this.cmbLineThicknessUnit);
+            this.grpLineStyle.Controls.Add(this.clrLine);
+            this.grpLineStyle.Controls.Add(this.label18);
+            this.grpLineStyle.Controls.Add(this.txtLineThicknessValue);
+            this.grpLineStyle.Controls.Add(this.label17);
+            resources.ApplyResources(this.grpLineStyle, "grpLineStyle");
+            this.grpLineStyle.Name = "grpLineStyle";
+            this.grpLineStyle.TabStop = false;
+            // 
+            // cmbLinePattern
+            // 
+            resources.ApplyResources(this.cmbLinePattern, "cmbLinePattern");
+            this.cmbLinePattern.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbLinePattern.FormattingEnabled = true;
+            this.cmbLinePattern.Name = "cmbLinePattern";
+            // 
+            // label16
+            // 
+            resources.ApplyResources(this.label16, "label16");
+            this.label16.Name = "label16";
+            // 
+            // cmbLineThicknessUnit
+            // 
+            resources.ApplyResources(this.cmbLineThicknessUnit, "cmbLineThicknessUnit");
+            this.cmbLineThicknessUnit.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbLineThicknessUnit.FormattingEnabled = true;
+            this.cmbLineThicknessUnit.Name = "cmbLineThicknessUnit";
+            // 
+            // clrLine
+            // 
+            this.clrLine.BackColor = System.Drawing.Color.Black;
+            resources.ApplyResources(this.clrLine, "clrLine");
+            this.clrLine.Name = "clrLine";
+            this.clrLine.UseVisualStyleBackColor = false;
+            this.clrLine.Click += new System.EventHandler(this.OnPickColor);
+            // 
+            // label18
+            // 
+            resources.ApplyResources(this.label18, "label18");
+            this.label18.Name = "label18";
+            // 
+            // txtLineThicknessValue
+            // 
+            resources.ApplyResources(this.txtLineThicknessValue, "txtLineThicknessValue");
+            this.txtLineThicknessValue.Name = "txtLineThicknessValue";
+            // 
+            // label17
+            // 
+            resources.ApplyResources(this.label17, "label17");
+            this.label17.Name = "label17";
+            // 
+            // grpPointStyle
+            // 
+            this.grpPointStyle.Controls.Add(this.cmbPointMarkerType);
+            this.grpPointStyle.Controls.Add(this.label5);
+            this.grpPointStyle.Controls.Add(this.label7);
+            this.grpPointStyle.Controls.Add(this.cmbMarkerSizeUnit);
+            this.grpPointStyle.Controls.Add(this.clrMarker);
+            this.grpPointStyle.Controls.Add(this.label6);
+            this.grpPointStyle.Controls.Add(this.txtMarkerSizeValue);
+            resources.ApplyResources(this.grpPointStyle, "grpPointStyle");
+            this.grpPointStyle.Name = "grpPointStyle";
+            this.grpPointStyle.TabStop = false;
+            // 
+            // cmbPointMarkerType
+            // 
+            resources.ApplyResources(this.cmbPointMarkerType, "cmbPointMarkerType");
+            this.cmbPointMarkerType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbPointMarkerType.FormattingEnabled = true;
+            this.cmbPointMarkerType.Name = "cmbPointMarkerType";
+            // 
+            // label5
+            // 
+            resources.ApplyResources(this.label5, "label5");
+            this.label5.Name = "label5";
+            // 
+            // label7
+            // 
+            resources.ApplyResources(this.label7, "label7");
+            this.label7.Name = "label7";
+            // 
+            // cmbMarkerSizeUnit
+            // 
+            resources.ApplyResources(this.cmbMarkerSizeUnit, "cmbMarkerSizeUnit");
+            this.cmbMarkerSizeUnit.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbMarkerSizeUnit.FormattingEnabled = true;
+            this.cmbMarkerSizeUnit.Name = "cmbMarkerSizeUnit";
+            // 
+            // clrMarker
+            // 
+            this.clrMarker.BackColor = System.Drawing.Color.Black;
+            resources.ApplyResources(this.clrMarker, "clrMarker");
+            this.clrMarker.Name = "clrMarker";
+            this.clrMarker.UseVisualStyleBackColor = false;
+            this.clrMarker.Click += new System.EventHandler(this.OnPickColor);
+            // 
+            // label6
+            // 
+            resources.ApplyResources(this.label6, "label6");
+            this.label6.Name = "label6";
+            // 
+            // txtMarkerSizeValue
+            // 
+            resources.ApplyResources(this.txtMarkerSizeValue, "txtMarkerSizeValue");
+            this.txtMarkerSizeValue.Name = "txtMarkerSizeValue";
+            // 
+            // btnSave
+            // 
+            resources.ApplyResources(this.btnSave, "btnSave");
+            this.btnSave.Name = "btnSave";
+            this.btnSave.UseVisualStyleBackColor = true;
+            this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
+            // 
+            // btnCancel
+            // 
+            resources.ApplyResources(this.btnCancel, "btnCancel");
+            this.btnCancel.Name = "btnCancel";
+            this.btnCancel.UseVisualStyleBackColor = true;
+            this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+            // 
+            // errorProvider
+            // 
+            this.errorProvider.ContainerControl = this;
+            // 
+            // chkTransparent
+            // 
+            resources.ApplyResources(this.chkTransparent, "chkTransparent");
+            this.chkTransparent.Name = "chkTransparent";
+            this.chkTransparent.UseVisualStyleBackColor = true;
+            // 
+            // RedlineStyleDialog
+            // 
+            this.AcceptButton = this.btnSave;
+            resources.ApplyResources(this, "$this");
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ControlBox = false;
+            this.Controls.Add(this.btnCancel);
+            this.Controls.Add(this.btnSave);
+            this.Controls.Add(this.grpLabelStyle);
+            this.Controls.Add(this.grpPolygonStyleBorder);
+            this.Controls.Add(this.grpPolygonStyleFill);
+            this.Controls.Add(this.grpLineStyle);
+            this.Controls.Add(this.grpPointStyle);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.Name = "RedlineStyleDialog";
+            this.grpLabelStyle.ResumeLayout(false);
+            this.grpLabelStyle.PerformLayout();
+            this.grpPolygonStyleBorder.ResumeLayout(false);
+            this.grpPolygonStyleBorder.PerformLayout();
+            this.grpPolygonStyleFill.ResumeLayout(false);
+            this.grpPolygonStyleFill.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.numFillTransparency)).EndInit();
+            this.grpLineStyle.ResumeLayout(false);
+            this.grpLineStyle.PerformLayout();
+            this.grpPointStyle.ResumeLayout(false);
+            this.grpPointStyle.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.GroupBox grpLabelStyle;
+        private System.Windows.Forms.CheckBox chkUnderline;
+        private System.Windows.Forms.CheckBox chkItalic;
+        private System.Windows.Forms.CheckBox chkBold;
+        private System.Windows.Forms.ComboBox cmbLabelStyle;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.ComboBox cmbLabelSizeUnits;
+        private System.Windows.Forms.Button clrLabelBackground;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.TextBox txtLabelSizeValue;
+        private System.Windows.Forms.Button clrLabelForeground;
+        private System.Windows.Forms.GroupBox grpPolygonStyleBorder;
+        private System.Windows.Forms.ComboBox cmbPolyBorderPattern;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.ComboBox cmbPolyBorderThicknessUnit;
+        private System.Windows.Forms.Button clrPolyBorder;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.TextBox txtPolyBorderThicknessValue;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.GroupBox grpPolygonStyleFill;
+        private System.Windows.Forms.Label lblPolyFillBackground;
+        private System.Windows.Forms.ComboBox cmbPolyFillPattern;
+        private System.Windows.Forms.Button clrPolyFillBackground;
+        private System.Windows.Forms.Label label14;
+        private System.Windows.Forms.Label label13;
+        private System.Windows.Forms.Label label12;
+        private System.Windows.Forms.Button clrPolyFillForeground;
+        private System.Windows.Forms.GroupBox grpLineStyle;
+        private System.Windows.Forms.ComboBox cmbLinePattern;
+        private System.Windows.Forms.Label label16;
+        private System.Windows.Forms.ComboBox cmbLineThicknessUnit;
+        private System.Windows.Forms.Button clrLine;
+        private System.Windows.Forms.Label label18;
+        private System.Windows.Forms.TextBox txtLineThicknessValue;
+        private System.Windows.Forms.Label label17;
+        private System.Windows.Forms.GroupBox grpPointStyle;
+        private System.Windows.Forms.ComboBox cmbPointMarkerType;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.ComboBox cmbMarkerSizeUnit;
+        private System.Windows.Forms.Button clrMarker;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.TextBox txtMarkerSizeValue;
+        private System.Windows.Forms.Button btnSave;
+        private System.Windows.Forms.Button btnCancel;
+        private System.Windows.Forms.ErrorProvider errorProvider;
+        private System.Windows.Forms.NumericUpDown numFillTransparency;
+        private System.Windows.Forms.ColorDialog colorDialog;
+        private System.Windows.Forms.CheckBox chkTransparent;
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,133 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Globalization;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    internal partial class RedlineStyleDialog : Form
+    {
+        private RedlineStyleDialog()
+        {
+            InitializeComponent();
+        }
+
+        public RedlineStyleDialog(RedlineStyle style)
+            : this()
+        {
+            InitFromStyle(style);
+        }
+
+        private void InitFromStyle(RedlineStyle style)
+        {
+            cmbLabelSizeUnits.DataSource = Enum.GetValues(typeof(SizeUnit));
+            cmbLineThicknessUnit.DataSource = Enum.GetValues(typeof(SizeUnit));
+            cmbPolyBorderThicknessUnit.DataSource = Enum.GetValues(typeof(SizeUnit));
+            cmbMarkerSizeUnit.DataSource = Enum.GetValues(typeof(SizeUnit));
+
+            cmbLinePattern.DataSource = Enum.GetValues(typeof(LinePattern));
+            cmbPolyBorderPattern.DataSource = Enum.GetValues(typeof(LinePattern));
+            cmbPolyFillPattern.DataSource = Enum.GetValues(typeof(FillPattern));
+
+            cmbPointMarkerType.DataSource = Enum.GetValues(typeof(MarkerType));
+            cmbLabelStyle.DataSource = Enum.GetValues(typeof(LabelStyle));
+
+            numFillTransparency.Value = Convert.ToDecimal(style.FillTransparency);
+
+            cmbLabelSizeUnits.SelectedItem = style.LabelSizeUnits;
+            cmbLineThicknessUnit.SelectedItem = style.LineSizeUnits;
+            cmbPolyBorderThicknessUnit.SelectedItem = style.BorderSizeUnits;
+            cmbMarkerSizeUnit.SelectedItem = style.MarkerSizeUnits;
+            cmbLinePattern.SelectedItem = style.LinePattern;
+            cmbPolyBorderPattern.SelectedItem = style.BorderPattern;
+            cmbPolyFillPattern.SelectedItem = style.FillPattern;
+            cmbPointMarkerType.SelectedItem = style.MarkerType;
+            cmbLabelStyle.SelectedItem = style.LabelBackStyle;
+
+            clrLabelBackground.BackColor = style.LabelBackColor;
+            clrLabelForeground.BackColor = style.LabelForeColor;
+            
+            chkTransparent.Checked = style.FillBackTransparency;
+
+            clrPolyFillBackground.BackColor = style.FillBackColor;
+            clrPolyFillForeground.BackColor = style.FillForeColor;
+            clrLine.BackColor = style.LineColor;
+            clrMarker.BackColor = style.MarkerColor;
+            clrPolyBorder.BackColor = style.BorderColor;
+
+            txtLabelSizeValue.Text = style.LabelFontSize.ToString(CultureInfo.InvariantCulture);
+            txtLineThicknessValue.Text = style.LineThickness.ToString(CultureInfo.InvariantCulture);
+            txtMarkerSizeValue.Text = style.MarkerSize.ToString(CultureInfo.InvariantCulture);
+            txtPolyBorderThicknessValue.Text = style.BorderThickness.ToString(CultureInfo.InvariantCulture);
+
+            chkBold.Checked = style.LabelBold;
+            chkItalic.Checked = style.LabelItalic;
+            chkUnderline.Checked = style.LabelUnderline;
+        }
+
+        private void btnCancel_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.Cancel;
+        }
+
+        private void btnSave_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.OK;
+        }
+
+        internal RedlineStyle GetUpdatedStyle()
+        {
+            var style = RedlineStyle.CreateDefault();
+
+            style.LabelSizeUnits = (SizeUnit)cmbLabelSizeUnits.SelectedItem;
+            style.LineSizeUnits = (SizeUnit)cmbLineThicknessUnit.SelectedItem;
+            style.BorderSizeUnits = (SizeUnit)cmbPolyBorderThicknessUnit.SelectedItem;
+            style.MarkerSizeUnits = (SizeUnit)cmbMarkerSizeUnit.SelectedItem;
+            style.LinePattern = (LinePattern)cmbLinePattern.SelectedItem;
+            style.BorderPattern = (LinePattern)cmbPolyBorderPattern.SelectedItem;
+            style.FillPattern = (FillPattern)cmbPolyFillPattern.SelectedItem;
+            style.MarkerType = (MarkerType)cmbPointMarkerType.SelectedItem;
+            style.LabelBackStyle = (LabelStyle)cmbLabelStyle.SelectedItem;
+
+            style.LabelBackColor = clrLabelBackground.BackColor;
+            style.LabelForeColor = clrLabelForeground.BackColor;
+            style.FillBackColor = clrPolyFillBackground.BackColor;
+            style.FillForeColor = clrPolyFillForeground.BackColor;
+            style.LineColor = clrLine.BackColor;
+            style.MarkerColor = clrMarker.BackColor;
+            style.BorderColor = clrPolyBorder.BackColor;
+
+            style.FillTransparency = Math.Min(100.0, Convert.ToDouble(numFillTransparency.Value));
+
+            style.LabelFontSize = Convert.ToDouble(txtLabelSizeValue.Text);
+            style.LineThickness = Convert.ToDouble(txtLineThicknessValue.Text);
+            style.MarkerSize = Convert.ToDouble(txtMarkerSizeValue.Text);
+            style.BorderThickness = Convert.ToDouble(txtPolyBorderThicknessValue.Text);
+
+            style.LabelBold = chkBold.Checked;
+            style.LabelItalic = chkItalic.Checked;
+            style.LabelUnderline = chkUnderline.Checked;
+
+            return style;
+        }
+
+        private void OnPickColor(object sender, EventArgs e)
+        {
+            var btn = (Button)sender;
+            if (colorDialog.ShowDialog() == DialogResult.OK)
+            {
+                btn.BackColor = colorDialog.Color;
+            }
+        }
+
+        private void cmbPolyFillPattern_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            var pat = (FillPattern)cmbPolyFillPattern.SelectedItem;
+            lblPolyFillBackground.Visible = clrPolyFillBackground.Visible = chkTransparent.Visible = (pat != FillPattern.Solid);
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/RedlineStyleDialog.resx	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,1377 @@
+<?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>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="chkUnderline.Appearance" type="System.Windows.Forms.Appearance, System.Windows.Forms">
+    <value>Button</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="chkUnderline.Font" type="System.Drawing.Font, System.Drawing">
+    <value>Microsoft Sans Serif, 8.25pt, style=Underline</value>
+  </data>
+  <data name="chkUnderline.Location" type="System.Drawing.Point, System.Drawing">
+    <value>352, 77</value>
+  </data>
+  <data name="chkUnderline.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="chkUnderline.TabIndex" type="System.Int32, mscorlib">
+    <value>24</value>
+  </data>
+  <data name="chkUnderline.Text" xml:space="preserve">
+    <value>U</value>
+  </data>
+  <data name=">>chkUnderline.Name" xml:space="preserve">
+    <value>chkUnderline</value>
+  </data>
+  <data name=">>chkUnderline.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkUnderline.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>chkUnderline.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="chkItalic.Appearance" type="System.Windows.Forms.Appearance, System.Windows.Forms">
+    <value>Button</value>
+  </data>
+  <data name="chkItalic.Font" type="System.Drawing.Font, System.Drawing">
+    <value>Microsoft Sans Serif, 8.25pt, style=Italic</value>
+  </data>
+  <data name="chkItalic.Location" type="System.Drawing.Point, System.Drawing">
+    <value>322, 77</value>
+  </data>
+  <data name="chkItalic.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <data name="chkItalic.TabIndex" type="System.Int32, mscorlib">
+    <value>23</value>
+  </data>
+  <data name="chkItalic.Text" xml:space="preserve">
+    <value>I</value>
+  </data>
+  <data name=">>chkItalic.Name" xml:space="preserve">
+    <value>chkItalic</value>
+  </data>
+  <data name=">>chkItalic.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkItalic.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>chkItalic.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="chkBold.Appearance" type="System.Windows.Forms.Appearance, System.Windows.Forms">
+    <value>Button</value>
+  </data>
+  <data name="chkBold.Font" type="System.Drawing.Font, System.Drawing">
+    <value>Microsoft Sans Serif, 8.25pt, style=Bold</value>
+  </data>
+  <data name="chkBold.Location" type="System.Drawing.Point, System.Drawing">
+    <value>293, 77</value>
+  </data>
+  <data name="chkBold.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 23</value>
+  </data>
+  <data name="chkBold.TabIndex" type="System.Int32, mscorlib">
+    <value>22</value>
+  </data>
+  <data name="chkBold.Text" xml:space="preserve">
+    <value>B</value>
+  </data>
+  <data name=">>chkBold.Name" xml:space="preserve">
+    <value>chkBold</value>
+  </data>
+  <data name=">>chkBold.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkBold.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>chkBold.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="cmbLabelStyle.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbLabelStyle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>106, 79</value>
+  </data>
+  <data name="cmbLabelStyle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>161, 21</value>
+  </data>
+  <data name="cmbLabelStyle.TabIndex" type="System.Int32, mscorlib">
+    <value>20</value>
+  </data>
+  <data name=">>cmbLabelStyle.Name" xml:space="preserve">
+    <value>cmbLabelStyle</value>
+  </data>
+  <data name=">>cmbLabelStyle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbLabelStyle.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>cmbLabelStyle.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="label4.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>10, 82</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>59, 13</value>
+  </data>
+  <data name="label4.TabIndex" type="System.Int32, mscorlib">
+    <value>21</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Label Style</value>
+  </data>
+  <data name=">>label4.Name" xml:space="preserve">
+    <value>label4</value>
+  </data>
+  <data name=">>label4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label4.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>label4.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>196, 55</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>16</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Label Background</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="cmbLabelSizeUnits.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbLabelSizeUnits.Location" type="System.Drawing.Point, System.Drawing">
+    <value>165, 23</value>
+  </data>
+  <data name="cmbLabelSizeUnits.Size" type="System.Drawing.Size, System.Drawing">
+    <value>102, 21</value>
+  </data>
+  <data name="cmbLabelSizeUnits.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name=">>cmbLabelSizeUnits.Name" xml:space="preserve">
+    <value>cmbLabelSizeUnits</value>
+  </data>
+  <data name=">>cmbLabelSizeUnits.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbLabelSizeUnits.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>cmbLabelSizeUnits.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="clrLabelBackground.Location" type="System.Drawing.Point, System.Drawing">
+    <value>293, 50</value>
+  </data>
+  <data name="clrLabelBackground.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 23</value>
+  </data>
+  <data name="clrLabelBackground.TabIndex" type="System.Int32, mscorlib">
+    <value>15</value>
+  </data>
+  <data name=">>clrLabelBackground.Name" xml:space="preserve">
+    <value>clrLabelBackground</value>
+  </data>
+  <data name=">>clrLabelBackground.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>clrLabelBackground.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>clrLabelBackground.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>10, 26</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>56, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>11</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Label Size</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>10, 55</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>90, 13</value>
+  </data>
+  <data name="label3.TabIndex" type="System.Int32, mscorlib">
+    <value>14</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Label Foreground</value>
+  </data>
+  <data name=">>label3.Name" xml:space="preserve">
+    <value>label3</value>
+  </data>
+  <data name=">>label3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label3.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>label3.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="txtLabelSizeValue.Location" type="System.Drawing.Point, System.Drawing">
+    <value>106, 23</value>
+  </data>
+  <data name="txtLabelSizeValue.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 20</value>
+  </data>
+  <data name="txtLabelSizeValue.TabIndex" type="System.Int32, mscorlib">
+    <value>12</value>
+  </data>
+  <data name=">>txtLabelSizeValue.Name" xml:space="preserve">
+    <value>txtLabelSizeValue</value>
+  </data>
+  <data name=">>txtLabelSizeValue.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtLabelSizeValue.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>txtLabelSizeValue.ZOrder" xml:space="preserve">
+    <value>10</value>
+  </data>
+  <data name="clrLabelForeground.Location" type="System.Drawing.Point, System.Drawing">
+    <value>106, 50</value>
+  </data>
+  <data name="clrLabelForeground.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 23</value>
+  </data>
+  <data name="clrLabelForeground.TabIndex" type="System.Int32, mscorlib">
+    <value>13</value>
+  </data>
+  <data name=">>clrLabelForeground.Name" xml:space="preserve">
+    <value>clrLabelForeground</value>
+  </data>
+  <data name=">>clrLabelForeground.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>clrLabelForeground.Parent" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>clrLabelForeground.ZOrder" xml:space="preserve">
+    <value>11</value>
+  </data>
+  <data name="grpLabelStyle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 266</value>
+  </data>
+  <data name="grpLabelStyle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>506, 116</value>
+  </data>
+  <data name="grpLabelStyle.TabIndex" type="System.Int32, mscorlib">
+    <value>25</value>
+  </data>
+  <data name="grpLabelStyle.Text" xml:space="preserve">
+    <value>Label Style</value>
+  </data>
+  <data name=">>grpLabelStyle.Name" xml:space="preserve">
+    <value>grpLabelStyle</value>
+  </data>
+  <data name=">>grpLabelStyle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>grpLabelStyle.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>grpLabelStyle.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="cmbPolyBorderPattern.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbPolyBorderPattern.Location" type="System.Drawing.Point, System.Drawing">
+    <value>93, 22</value>
+  </data>
+  <data name="cmbPolyBorderPattern.Size" type="System.Drawing.Size, System.Drawing">
+    <value>146, 21</value>
+  </data>
+  <data name="cmbPolyBorderPattern.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name=">>cmbPolyBorderPattern.Name" xml:space="preserve">
+    <value>cmbPolyBorderPattern</value>
+  </data>
+  <data name=">>cmbPolyBorderPattern.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbPolyBorderPattern.Parent" xml:space="preserve">
+    <value>grpPolygonStyleBorder</value>
+  </data>
+  <data name=">>cmbPolyBorderPattern.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label8.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label8.Location" type="System.Drawing.Point, System.Drawing">
+    <value>11, 80</value>
+  </data>
+  <data name="label8.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label8.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>Color</value>
+  </data>
+  <data name=">>label8.Name" xml:space="preserve">
+    <value>label8</value>
+  </data>
+  <data name=">>label8.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label8.Parent" xml:space="preserve">
+    <value>grpPolygonStyleBorder</value>
+  </data>
+  <data name=">>label8.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="cmbPolyBorderThicknessUnit.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbPolyBorderThicknessUnit.Location" type="System.Drawing.Point, System.Drawing">
+    <value>152, 49</value>
+  </data>
+  <data name="cmbPolyBorderThicknessUnit.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 21</value>
+  </data>
+  <data name="cmbPolyBorderThicknessUnit.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name=">>cmbPolyBorderThicknessUnit.Name" xml:space="preserve">
+    <value>cmbPolyBorderThicknessUnit</value>
+  </data>
+  <data name=">>cmbPolyBorderThicknessUnit.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbPolyBorderThicknessUnit.Parent" xml:space="preserve">
+    <value>grpPolygonStyleBorder</value>
+  </data>
+  <data name=">>cmbPolyBorderThicknessUnit.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="clrPolyBorder.Location" type="System.Drawing.Point, System.Drawing">
+    <value>93, 75</value>
+  </data>
+  <data name="clrPolyBorder.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 23</value>
+  </data>
+  <data name="clrPolyBorder.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name=">>clrPolyBorder.Name" xml:space="preserve">
+    <value>clrPolyBorder</value>
+  </data>
+  <data name=">>clrPolyBorder.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>clrPolyBorder.Parent" xml:space="preserve">
+    <value>grpPolygonStyleBorder</value>
+  </data>
+  <data name=">>clrPolyBorder.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="label10.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label10.Location" type="System.Drawing.Point, System.Drawing">
+    <value>11, 52</value>
+  </data>
+  <data name="label10.Size" type="System.Drawing.Size, System.Drawing">
+    <value>56, 13</value>
+  </data>
+  <data name="label10.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>Thickness</value>
+  </data>
+  <data name=">>label10.Name" xml:space="preserve">
+    <value>label10</value>
+  </data>
+  <data name=">>label10.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label10.Parent" xml:space="preserve">
+    <value>grpPolygonStyleBorder</value>
+  </data>
+  <data name=">>label10.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="txtPolyBorderThicknessValue.Location" type="System.Drawing.Point, System.Drawing">
+    <value>93, 49</value>
+  </data>
+  <data name="txtPolyBorderThicknessValue.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 20</value>
+  </data>
+  <data name="txtPolyBorderThicknessValue.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name=">>txtPolyBorderThicknessValue.Name" xml:space="preserve">
+    <value>txtPolyBorderThicknessValue</value>
+  </data>
+  <data name=">>txtPolyBorderThicknessValue.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtPolyBorderThicknessValue.Parent" xml:space="preserve">
+    <value>grpPolygonStyleBorder</value>
+  </data>
+  <data name=">>txtPolyBorderThicknessValue.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="label9.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label9.Location" type="System.Drawing.Point, System.Drawing">
+    <value>11, 25</value>
+  </data>
+  <data name="label9.Size" type="System.Drawing.Size, System.Drawing">
+    <value>41, 13</value>
+  </data>
+  <data name="label9.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>Pattern</value>
+  </data>
+  <data name=">>label9.Name" xml:space="preserve">
+    <value>label9</value>
+  </data>
+  <data name=">>label9.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label9.Parent" xml:space="preserve">
+    <value>grpPolygonStyleBorder</value>
+  </data>
+  <data name=">>label9.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="grpPolygonStyleBorder.Location" type="System.Drawing.Point, System.Drawing">
+    <value>262, 128</value>
+  </data>
+  <data name="grpPolygonStyleBorder.Size" type="System.Drawing.Size, System.Drawing">
+    <value>256, 131</value>
+  </data>
+  <data name="grpPolygonStyleBorder.TabIndex" type="System.Int32, mscorlib">
+    <value>24</value>
+  </data>
+  <data name="grpPolygonStyleBorder.Text" xml:space="preserve">
+    <value>Polygon Style - Border</value>
+  </data>
+  <data name=">>grpPolygonStyleBorder.Name" xml:space="preserve">
+    <value>grpPolygonStyleBorder</value>
+  </data>
+  <data name=">>grpPolygonStyleBorder.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>grpPolygonStyleBorder.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>grpPolygonStyleBorder.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="chkTransparent.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="chkTransparent.Location" type="System.Drawing.Point, System.Drawing">
+    <value>148, 105</value>
+  </data>
+  <data name="chkTransparent.Size" type="System.Drawing.Size, System.Drawing">
+    <value>83, 17</value>
+  </data>
+  <data name="chkTransparent.TabIndex" type="System.Int32, mscorlib">
+    <value>14</value>
+  </data>
+  <data name="chkTransparent.Text" xml:space="preserve">
+    <value>Transparent</value>
+  </data>
+  <data name=">>chkTransparent.Name" xml:space="preserve">
+    <value>chkTransparent</value>
+  </data>
+  <data name=">>chkTransparent.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkTransparent.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>chkTransparent.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="numFillTransparency.Location" type="System.Drawing.Point, System.Drawing">
+    <value>150, 47</value>
+  </data>
+  <data name="numFillTransparency.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 20</value>
+  </data>
+  <data name="numFillTransparency.TabIndex" type="System.Int32, mscorlib">
+    <value>13</value>
+  </data>
+  <data name=">>numFillTransparency.Name" xml:space="preserve">
+    <value>numFillTransparency</value>
+  </data>
+  <data name=">>numFillTransparency.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numFillTransparency.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>numFillTransparency.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="lblPolyFillBackground.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="lblPolyFillBackground.Location" type="System.Drawing.Point, System.Drawing">
+    <value>10, 106</value>
+  </data>
+  <data name="lblPolyFillBackground.Size" type="System.Drawing.Size, System.Drawing">
+    <value>65, 13</value>
+  </data>
+  <data name="lblPolyFillBackground.TabIndex" type="System.Int32, mscorlib">
+    <value>12</value>
+  </data>
+  <data name="lblPolyFillBackground.Text" xml:space="preserve">
+    <value>Background</value>
+  </data>
+  <data name=">>lblPolyFillBackground.Name" xml:space="preserve">
+    <value>lblPolyFillBackground</value>
+  </data>
+  <data name=">>lblPolyFillBackground.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblPolyFillBackground.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>lblPolyFillBackground.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="cmbPolyFillPattern.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbPolyFillPattern.Location" type="System.Drawing.Point, System.Drawing">
+    <value>92, 19</value>
+  </data>
+  <data name="cmbPolyFillPattern.Size" type="System.Drawing.Size, System.Drawing">
+    <value>133, 21</value>
+  </data>
+  <data name="cmbPolyFillPattern.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name=">>cmbPolyFillPattern.Name" xml:space="preserve">
+    <value>cmbPolyFillPattern</value>
+  </data>
+  <data name=">>cmbPolyFillPattern.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbPolyFillPattern.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>cmbPolyFillPattern.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="clrPolyFillBackground.Location" type="System.Drawing.Point, System.Drawing">
+    <value>92, 101</value>
+  </data>
+  <data name="clrPolyFillBackground.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 23</value>
+  </data>
+  <data name="clrPolyFillBackground.TabIndex" type="System.Int32, mscorlib">
+    <value>11</value>
+  </data>
+  <data name=">>clrPolyFillBackground.Name" xml:space="preserve">
+    <value>clrPolyFillBackground</value>
+  </data>
+  <data name=">>clrPolyFillBackground.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>clrPolyFillBackground.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>clrPolyFillBackground.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="label14.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label14.Location" type="System.Drawing.Point, System.Drawing">
+    <value>10, 49</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>129, 13</value>
+  </data>
+  <data name="label14.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>Foreground Transparency</value>
+  </data>
+  <data name=">>label14.Name" xml:space="preserve">
+    <value>label14</value>
+  </data>
+  <data name=">>label14.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label14.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>label14.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="label13.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label13.Location" type="System.Drawing.Point, System.Drawing">
+    <value>10, 22</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>41, 13</value>
+  </data>
+  <data name="label13.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Pattern</value>
+  </data>
+  <data name=">>label13.Name" xml:space="preserve">
+    <value>label13</value>
+  </data>
+  <data name=">>label13.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label13.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>label13.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="label12.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label12.Location" type="System.Drawing.Point, System.Drawing">
+    <value>10, 77</value>
+  </data>
+  <data name="label12.Size" type="System.Drawing.Size, System.Drawing">
+    <value>61, 13</value>
+  </data>
+  <data name="label12.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>Foreground</value>
+  </data>
+  <data name=">>label12.Name" xml:space="preserve">
+    <value>label12</value>
+  </data>
+  <data name=">>label12.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label12.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>label12.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="clrPolyFillForeground.Location" type="System.Drawing.Point, System.Drawing">
+    <value>92, 72</value>
+  </data>
+  <data name="clrPolyFillForeground.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 23</value>
+  </data>
+  <data name="clrPolyFillForeground.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name=">>clrPolyFillForeground.Name" xml:space="preserve">
+    <value>clrPolyFillForeground</value>
+  </data>
+  <data name=">>clrPolyFillForeground.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>clrPolyFillForeground.Parent" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>clrPolyFillForeground.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="grpPolygonStyleFill.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 128</value>
+  </data>
+  <data name="grpPolygonStyleFill.Size" type="System.Drawing.Size, System.Drawing">
+    <value>244, 131</value>
+  </data>
+  <data name="grpPolygonStyleFill.TabIndex" type="System.Int32, mscorlib">
+    <value>23</value>
+  </data>
+  <data name="grpPolygonStyleFill.Text" xml:space="preserve">
+    <value>Polygon Style - Fill</value>
+  </data>
+  <data name=">>grpPolygonStyleFill.Name" xml:space="preserve">
+    <value>grpPolygonStyleFill</value>
+  </data>
+  <data name=">>grpPolygonStyleFill.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>grpPolygonStyleFill.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>grpPolygonStyleFill.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="cmbLinePattern.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbLinePattern.Location" type="System.Drawing.Point, System.Drawing">
+    <value>94, 19</value>
+  </data>
+  <data name="cmbLinePattern.Size" type="System.Drawing.Size, System.Drawing">
+    <value>146, 21</value>
+  </data>
+  <data name="cmbLinePattern.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name=">>cmbLinePattern.Name" xml:space="preserve">
+    <value>cmbLinePattern</value>
+  </data>
+  <data name=">>cmbLinePattern.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbLinePattern.Parent" xml:space="preserve">
+    <value>grpLineStyle</value>
+  </data>
+  <data name=">>cmbLinePattern.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label16.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label16.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 77</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label16.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>Color</value>
+  </data>
+  <data name=">>label16.Name" xml:space="preserve">
+    <value>label16</value>
+  </data>
+  <data name=">>label16.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label16.Parent" xml:space="preserve">
+    <value>grpLineStyle</value>
+  </data>
+  <data name=">>label16.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="cmbLineThicknessUnit.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbLineThicknessUnit.Location" type="System.Drawing.Point, System.Drawing">
+    <value>153, 46</value>
+  </data>
+  <data name="cmbLineThicknessUnit.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 21</value>
+  </data>
+  <data name="cmbLineThicknessUnit.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name=">>cmbLineThicknessUnit.Name" xml:space="preserve">
+    <value>cmbLineThicknessUnit</value>
+  </data>
+  <data name=">>cmbLineThicknessUnit.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbLineThicknessUnit.Parent" xml:space="preserve">
+    <value>grpLineStyle</value>
+  </data>
+  <data name=">>cmbLineThicknessUnit.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="clrLine.Location" type="System.Drawing.Point, System.Drawing">
+    <value>94, 72</value>
+  </data>
+  <data name="clrLine.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 23</value>
+  </data>
+  <data name="clrLine.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name=">>clrLine.Name" xml:space="preserve">
+    <value>clrLine</value>
+  </data>
+  <data name=">>clrLine.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>clrLine.Parent" xml:space="preserve">
+    <value>grpLineStyle</value>
+  </data>
+  <data name=">>clrLine.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="label18.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label18.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 49</value>
+  </data>
+  <data name="label18.Size" type="System.Drawing.Size, System.Drawing">
+    <value>56, 13</value>
+  </data>
+  <data name="label18.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>Thickness</value>
+  </data>
+  <data name=">>label18.Name" xml:space="preserve">
+    <value>label18</value>
+  </data>
+  <data name=">>label18.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label18.Parent" xml:space="preserve">
+    <value>grpLineStyle</value>
+  </data>
+  <data name=">>label18.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="txtLineThicknessValue.Location" type="System.Drawing.Point, System.Drawing">
+    <value>94, 46</value>
+  </data>
+  <data name="txtLineThicknessValue.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 20</value>
+  </data>
+  <data name="txtLineThicknessValue.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name=">>txtLineThicknessValue.Name" xml:space="preserve">
+    <value>txtLineThicknessValue</value>
+  </data>
+  <data name=">>txtLineThicknessValue.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtLineThicknessValue.Parent" xml:space="preserve">
+    <value>grpLineStyle</value>
+  </data>
+  <data name=">>txtLineThicknessValue.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="label17.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label17.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 22</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>41, 13</value>
+  </data>
+  <data name="label17.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Pattern</value>
+  </data>
+  <data name=">>label17.Name" xml:space="preserve">
+    <value>label17</value>
+  </data>
+  <data name=">>label17.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label17.Parent" xml:space="preserve">
+    <value>grpLineStyle</value>
+  </data>
+  <data name=">>label17.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="grpLineStyle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>261, 12</value>
+  </data>
+  <data name="grpLineStyle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>257, 110</value>
+  </data>
+  <data name="grpLineStyle.TabIndex" type="System.Int32, mscorlib">
+    <value>22</value>
+  </data>
+  <data name="grpLineStyle.Text" xml:space="preserve">
+    <value>Line Style</value>
+  </data>
+  <data name=">>grpLineStyle.Name" xml:space="preserve">
+    <value>grpLineStyle</value>
+  </data>
+  <data name=">>grpLineStyle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>grpLineStyle.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>grpLineStyle.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="cmbPointMarkerType.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbPointMarkerType.Location" type="System.Drawing.Point, System.Drawing">
+    <value>91, 19</value>
+  </data>
+  <data name="cmbPointMarkerType.Size" type="System.Drawing.Size, System.Drawing">
+    <value>134, 21</value>
+  </data>
+  <data name="cmbPointMarkerType.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name=">>cmbPointMarkerType.Name" xml:space="preserve">
+    <value>cmbPointMarkerType</value>
+  </data>
+  <data name=">>cmbPointMarkerType.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbPointMarkerType.Parent" xml:space="preserve">
+    <value>grpPointStyle</value>
+  </data>
+  <data name=">>cmbPointMarkerType.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label5.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>9, 22</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="label5.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Marker Type</value>
+  </data>
+  <data name=">>label5.Name" xml:space="preserve">
+    <value>label5</value>
+  </data>
+  <data name=">>label5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label5.Parent" xml:space="preserve">
+    <value>grpPointStyle</value>
+  </data>
+  <data name=">>label5.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label7.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label7.Location" type="System.Drawing.Point, System.Drawing">
+    <value>9, 77</value>
+  </data>
+  <data name="label7.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="label7.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>Marker Color</value>
+  </data>
+  <data name=">>label7.Name" xml:space="preserve">
+    <value>label7</value>
+  </data>
+  <data name=">>label7.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label7.Parent" xml:space="preserve">
+    <value>grpPointStyle</value>
+  </data>
+  <data name=">>label7.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="cmbMarkerSizeUnit.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbMarkerSizeUnit.Location" type="System.Drawing.Point, System.Drawing">
+    <value>150, 46</value>
+  </data>
+  <data name="cmbMarkerSizeUnit.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 21</value>
+  </data>
+  <data name="cmbMarkerSizeUnit.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name=">>cmbMarkerSizeUnit.Name" xml:space="preserve">
+    <value>cmbMarkerSizeUnit</value>
+  </data>
+  <data name=">>cmbMarkerSizeUnit.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbMarkerSizeUnit.Parent" xml:space="preserve">
+    <value>grpPointStyle</value>
+  </data>
+  <data name=">>cmbMarkerSizeUnit.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="clrMarker.Location" type="System.Drawing.Point, System.Drawing">
+    <value>91, 72</value>
+  </data>
+  <data name="clrMarker.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 23</value>
+  </data>
+  <data name="clrMarker.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name=">>clrMarker.Name" xml:space="preserve">
+    <value>clrMarker</value>
+  </data>
+  <data name=">>clrMarker.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>clrMarker.Parent" xml:space="preserve">
+    <value>grpPointStyle</value>
+  </data>
+  <data name=">>clrMarker.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="label6.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label6.Location" type="System.Drawing.Point, System.Drawing">
+    <value>9, 49</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label6.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Marker Size</value>
+  </data>
+  <data name=">>label6.Name" xml:space="preserve">
+    <value>label6</value>
+  </data>
+  <data name=">>label6.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label6.Parent" xml:space="preserve">
+    <value>grpPointStyle</value>
+  </data>
+  <data name=">>label6.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="txtMarkerSizeValue.Location" type="System.Drawing.Point, System.Drawing">
+    <value>91, 46</value>
+  </data>
+  <data name="txtMarkerSizeValue.Size" type="System.Drawing.Size, System.Drawing">
+    <value>53, 20</value>
+  </data>
+  <data name="txtMarkerSizeValue.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name=">>txtMarkerSizeValue.Name" xml:space="preserve">
+    <value>txtMarkerSizeValue</value>
+  </data>
+  <data name=">>txtMarkerSizeValue.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtMarkerSizeValue.Parent" xml:space="preserve">
+    <value>grpPointStyle</value>
+  </data>
+  <data name=">>txtMarkerSizeValue.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="grpPointStyle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 12</value>
+  </data>
+  <data name="grpPointStyle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>243, 110</value>
+  </data>
+  <data name="grpPointStyle.TabIndex" type="System.Int32, mscorlib">
+    <value>21</value>
+  </data>
+  <data name="grpPointStyle.Text" xml:space="preserve">
+    <value>Point Style</value>
+  </data>
+  <data name=">>grpPointStyle.Name" xml:space="preserve">
+    <value>grpPointStyle</value>
+  </data>
+  <data name=">>grpPointStyle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>grpPointStyle.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>grpPointStyle.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="btnSave.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Bottom, Right</value>
+  </data>
+  <data name="btnSave.Location" type="System.Drawing.Point, System.Drawing">
+    <value>362, 392</value>
+  </data>
+  <data name="btnSave.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnSave.TabIndex" type="System.Int32, mscorlib">
+    <value>26</value>
+  </data>
+  <data name="btnSave.Text" xml:space="preserve">
+    <value>Save</value>
+  </data>
+  <data name=">>btnSave.Name" xml:space="preserve">
+    <value>btnSave</value>
+  </data>
+  <data name=">>btnSave.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnSave.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnSave.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Bottom, Right</value>
+  </data>
+  <data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
+    <value>443, 392</value>
+  </data>
+  <data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
+    <value>27</value>
+  </data>
+  <data name="btnCancel.Text" xml:space="preserve">
+    <value>Cancel</value>
+  </data>
+  <data name=">>btnCancel.Name" xml:space="preserve">
+    <value>btnCancel</value>
+  </data>
+  <data name=">>btnCancel.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnCancel.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnCancel.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>530, 427</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Redline Style</value>
+  </data>
+  <data name=">>errorProvider.Name" xml:space="preserve">
+    <value>errorProvider</value>
+  </data>
+  <data name=">>errorProvider.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ErrorProvider, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>colorDialog.Name" xml:space="preserve">
+    <value>colorDialog</value>
+  </data>
+  <data name=">>colorDialog.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ColorDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>RedlineStyleDialog</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <metadata name="colorDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>140, 17</value>
+  </metadata>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,87 @@
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    partial class TextPrompt
+    {
+        /// <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(TextPrompt));
+            this.lblPrompt = new System.Windows.Forms.Label();
+            this.txtValue = new System.Windows.Forms.TextBox();
+            this.btnOK = new System.Windows.Forms.Button();
+            this.btnCancel = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // lblPrompt
+            // 
+            resources.ApplyResources(this.lblPrompt, "lblPrompt");
+            this.lblPrompt.Name = "lblPrompt";
+            // 
+            // txtValue
+            // 
+            resources.ApplyResources(this.txtValue, "txtValue");
+            this.txtValue.Name = "txtValue";
+            // 
+            // btnOK
+            // 
+            resources.ApplyResources(this.btnOK, "btnOK");
+            this.btnOK.Name = "btnOK";
+            this.btnOK.UseVisualStyleBackColor = true;
+            this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+            // 
+            // btnCancel
+            // 
+            this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+            resources.ApplyResources(this.btnCancel, "btnCancel");
+            this.btnCancel.Name = "btnCancel";
+            this.btnCancel.UseVisualStyleBackColor = true;
+            this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+            // 
+            // TextPrompt
+            // 
+            this.AcceptButton = this.btnOK;
+            resources.ApplyResources(this, "$this");
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.CancelButton = this.btnCancel;
+            this.ControlBox = false;
+            this.Controls.Add(this.btnCancel);
+            this.Controls.Add(this.btnOK);
+            this.Controls.Add(this.txtValue);
+            this.Controls.Add(this.lblPrompt);
+            this.Name = "TextPrompt";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label lblPrompt;
+        private System.Windows.Forms.TextBox txtValue;
+        private System.Windows.Forms.Button btnOK;
+        private System.Windows.Forms.Button btnCancel;
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Viewer.Redlining
+{
+    public partial class TextPrompt : Form
+    {
+        private TextPrompt()
+        {
+            InitializeComponent();
+        }
+
+        public static string GetValue(string title, string prompt)
+        {
+            return GetValue(title, prompt, null, null);
+        }
+
+        public static string GetValue(string title, string prompt, string okLabel, string cancelLabel)
+        {
+            using (var diag = new TextPrompt())
+            {
+                diag.Text = title;
+                diag.lblPrompt.Text = prompt;
+                if (!string.IsNullOrEmpty(okLabel))
+                    diag.btnOK.Text = okLabel;
+                if (!string.IsNullOrEmpty(cancelLabel))
+                    diag.btnCancel.Text = cancelLabel;
+
+                if (diag.ShowDialog() == DialogResult.OK)
+                    return diag.txtValue.Text;
+                else
+                    return null;
+            }
+        }
+
+        private void btnCancel_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.Cancel;
+        }
+
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.OK;
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Redlining/TextPrompt.resx	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,237 @@
+<?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>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="lblPrompt.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="lblPrompt.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 9</value>
+  </data>
+  <data name="lblPrompt.Size" type="System.Drawing.Size, System.Drawing">
+    <value>0, 13</value>
+  </data>
+  <data name="lblPrompt.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>lblPrompt.Name" xml:space="preserve">
+    <value>lblPrompt</value>
+  </data>
+  <data name=">>lblPrompt.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblPrompt.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>lblPrompt.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="txtValue.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="txtValue.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 36</value>
+  </data>
+  <data name="txtValue.Size" type="System.Drawing.Size, System.Drawing">
+    <value>402, 20</value>
+  </data>
+  <data name="txtValue.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>txtValue.Name" xml:space="preserve">
+    <value>txtValue</value>
+  </data>
+  <data name=">>txtValue.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtValue.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>txtValue.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
+    <value>258, 64</value>
+  </data>
+  <data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnOK.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="btnOK.Text" xml:space="preserve">
+    <value>OK</value>
+  </data>
+  <data name=">>btnOK.Name" xml:space="preserve">
+    <value>btnOK</value>
+  </data>
+  <data name=">>btnOK.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnOK.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnOK.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
+    <value>339, 64</value>
+  </data>
+  <data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="btnCancel.Text" xml:space="preserve">
+    <value>Cancel</value>
+  </data>
+  <data name=">>btnCancel.Name" xml:space="preserve">
+    <value>btnCancel</value>
+  </data>
+  <data name=">>btnCancel.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnCancel.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnCancel.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>426, 99</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Prompt</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>TextPrompt</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_box.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_box.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_box.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,278 @@
+<SymbolInstance>
+              <CompoundSymbolDefinition>
+                <Name>BOX</Name>
+                <Description>area_box.templ</Description>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>BOX</Name>
+                    <Description>area_box.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.25,0.0 h 0.25 M 0.25,0.25 h 0.25 M 0.0,0.5 h 0.25 M 0.0,0.75 h 0.25</Geometry>
+                        <ScaleX>%SCALEX0%</ScaleX>
+                        <ScaleY>%SCALEY0%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP0%</LineCap>
+                        <LineJoin>%LINEJOIN0%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%</Angle>
+                      <RepeatX>3.80996370910131</RepeatX>
+                      <RepeatY>7.61992741820259</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>BOX</Name>
+                    <Description>area_box.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,-0.5 h 0.25 M 0.0,-0.75 h 0.25</Geometry>
+                        <ScaleX>%SCALEX1%</ScaleX>
+                        <ScaleY>%SCALEY1%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP1%</LineCap>
+                        <LineJoin>%LINEJOIN1%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%+90.0</Angle>
+                      <RepeatX>3.80996370910131</RepeatX>
+                      <RepeatY>7.61992741820259</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>BOX</Name>
+                    <Description>area_box.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 10.0 M 0.0,-0.25 h 10.0</Geometry>
+                        <ScaleX>%SCALEX2%</ScaleX>
+                        <ScaleY>%SCALEY2%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP2%</LineCap>
+                        <LineJoin>%LINEJOIN2%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%+90.0</Angle>
+                      <RepeatX>76.1998548364051</RepeatX>
+                      <RepeatY>7.61992741820259</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX2</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY2</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP2</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN2</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+              </CompoundSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>SCALEX0</ParameterIdentifier>
+                  <ParameterValue>7.62000717755513</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>SCALEY0</ParameterIdentifier>
+                  <ParameterValue>7.62000717755513</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>LINECAP0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>LINEJOIN0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>SCALEX1</ParameterIdentifier>
+                  <ParameterValue>7.62000717755513</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>SCALEY1</ParameterIdentifier>
+                  <ParameterValue>7.62000717755513</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>LINECAP1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>LINEJOIN1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>SCALEX2</ParameterIdentifier>
+                  <ParameterValue>7.62000717755513</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>SCALEY2</ParameterIdentifier>
+                  <ParameterValue>7.62000717755513</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>LINECAP2</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>BOX</SymbolName>
+                  <ParameterIdentifier>LINEJOIN2</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_cross.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_cross.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_cross.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,192 @@
+<SymbolInstance>
+              <CompoundSymbolDefinition>
+                <Name>CROSS</Name>
+                <Description>area_cross.templ</Description>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>CROSS</Name>
+                    <Description>area_cross.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 0.125 M 0.25,0.25 h 0.125</Geometry>
+                        <ScaleX>%SCALEX0%</ScaleX>
+                        <ScaleY>%SCALEY0%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP0%</LineCap>
+                        <LineJoin>%LINEJOIN0%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%</Angle>
+                      <RepeatX>6.77326238585342</RepeatX>
+                      <RepeatY>6.77326238585342</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>CROSS</Name>
+                    <Description>area_cross.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M -0.0625,-0.0625 h 0.125 M 0.1875,0.1875 h 0.125</Geometry>
+                        <ScaleX>%SCALEX1%</ScaleX>
+                        <ScaleY>%SCALEY1%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP1%</LineCap>
+                        <LineJoin>%LINEJOIN1%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%+90.0</Angle>
+                      <RepeatX>6.77326238585342</RepeatX>
+                      <RepeatY>6.77326238585342</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+              </CompoundSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>SCALEX0</ParameterIdentifier>
+                  <ParameterValue>13.5465375316712</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>SCALEY0</ParameterIdentifier>
+                  <ParameterValue>13.5465375316712</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>LINECAP0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>LINEJOIN0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>SCALEX1</ParameterIdentifier>
+                  <ParameterValue>13.5465375316712</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>SCALEY1</ParameterIdentifier>
+                  <ParameterValue>13.5465375316712</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>LINECAP1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>CROSS</SymbolName>
+                  <ParameterIdentifier>LINEJOIN1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_dash.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_dash.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_dash.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,97 @@
+<SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>DASH</Name>
+                <Description>area_dash.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 0.125 M 0.125,0.125 h 0.125</Geometry>
+                    <ScaleX>%SCALEX0%</ScaleX>
+                    <ScaleY>%SCALEY0%</ScaleY>
+                    <LineColor>%HATCHCOLOR%</LineColor>
+                    <LineCap>%LINECAP0%</LineCap>
+                    <LineJoin>%LINEJOIN0%</LineJoin>
+                  </Path>
+                </Graphics>
+                <AreaUsage>
+                  <Angle>%HATCHANGLE%</Angle>
+                  <RepeatX>2.54</RepeatX>
+                  <RepeatY>2.54</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>HATCHCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>&Hatch Color</DisplayName>
+                    <Description>Color for the hatch style</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HATCHANGLE</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Hatch &Angle</DisplayName>
+                    <Description>Rotation angle for the hatch style</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX0</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY0</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP0</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN0</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>DASH</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DASH</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DASH</SymbolName>
+                  <ParameterIdentifier>SCALEX0</ParameterIdentifier>
+                  <ParameterValue>10.1600203200407</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DASH</SymbolName>
+                  <ParameterIdentifier>SCALEY0</ParameterIdentifier>
+                  <ParameterValue>10.1600203200407</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DASH</SymbolName>
+                  <ParameterIdentifier>LINECAP0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DASH</SymbolName>
+                  <ParameterIdentifier>LINEJOIN0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_dolmit.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_dolmit.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_dolmit.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,192 @@
+<SymbolInstance>
+              <CompoundSymbolDefinition>
+                <Name>DOLMIT</Name>
+                <Description>area_dolmit.templ</Description>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>DOLMIT</Name>
+                    <Description>area_dolmit.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 10.0</Geometry>
+                        <ScaleX>%SCALEX0%</ScaleX>
+                        <ScaleY>%SCALEY0%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP0%</LineCap>
+                        <LineJoin>%LINEJOIN0%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%</Angle>
+                      <RepeatX>99.9998</RepeatX>
+                      <RepeatY>2.499995</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>DOLMIT</Name>
+                    <Description>area_dolmit.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 0.35355</Geometry>
+                        <ScaleX>%SCALEX1%</ScaleX>
+                        <ScaleY>%SCALEY1%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP1%</LineCap>
+                        <LineJoin>%LINEJOIN1%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%+45.0</Angle>
+                      <RepeatX>10.599928</RepeatX>
+                      <RepeatY>7.071106</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+              </CompoundSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>SCALEX0</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>SCALEY0</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>LINECAP0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>LINEJOIN0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>SCALEX1</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>SCALEY1</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>LINECAP1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>DOLMIT</SymbolName>
+                  <ParameterIdentifier>LINEJOIN1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_hex.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_hex.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_hex.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,278 @@
+<SymbolInstance>
+              <CompoundSymbolDefinition>
+                <Name>HEX</Name>
+                <Description>area_hex.templ</Description>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>HEX</Name>
+                    <Description>area_hex.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 0.125</Geometry>
+                        <ScaleX>%SCALEX0%</ScaleX>
+                        <ScaleY>%SCALEY0%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP%</LineCap>
+                        <LineJoin>%LINEJOIN%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%</Angle>
+                      <RepeatX>3.92220142033867</RepeatX>
+                      <RepeatY>2.26448421206766</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>HEX</Name>
+                    <Description>area_hex.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0625,-0.1 h 0.125</Geometry>
+                        <ScaleX>%SCALEX1%</ScaleX>
+                        <ScaleY>%SCALEY1%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP1%</LineCap>
+                        <LineJoin>%LINEJOIN1%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%+60.0</Angle>
+                      <RepeatX>3.92220142033867</RepeatX>
+                      <RepeatY>2.26448421206766</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>HEX</Name>
+                    <Description>area_hex.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 0.125</Geometry>
+                        <ScaleX>%SCALEX2%</ScaleX>
+                        <ScaleY>%SCALEY2%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP2%</LineCap>
+                        <LineJoin>%LINEJOIN2%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%+120.0</Angle>
+                      <RepeatX>3.92220142033867</RepeatX>
+                      <RepeatY>2.26448421206766</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX2</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY2</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP2</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN2</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+              </CompoundSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>SCALEX0</ParameterIdentifier>
+                  <ParameterValue>10.4590475991256</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>SCALEY0</ParameterIdentifier>
+                  <ParameterValue>10.4590475991257</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>LINECAP</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>LINEJOIN</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>SCALEX1</ParameterIdentifier>
+                  <ParameterValue>10.4590475991256</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>SCALEY1</ParameterIdentifier>
+                  <ParameterValue>10.4590475991257</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>LINECAP1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>LINEJOIN1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>SCALEX2</ParameterIdentifier>
+                  <ParameterValue>10.4590475991256</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>SCALEY2</ParameterIdentifier>
+                  <ParameterValue>10.4590475991257</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>LINECAP2</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>HEX</SymbolName>
+                  <ParameterIdentifier>LINEJOIN2</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,97 @@
+<SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>LINE</Name>
+                <Description>area_line.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 10.0</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%HATCHCOLOR%</LineColor>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <AreaUsage>
+                  <Angle>%HATCHANGLE%</Angle>
+                  <RepeatX>99.9998</RepeatX>
+                  <RepeatY>2.54</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>HATCHCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>&Hatch Color</DisplayName>
+                    <Description>Color for the hatch style</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HATCHANGLE</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Hatch &Angle</DisplayName>
+                    <Description>Rotation angle for the hatch style</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>SCALEX</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>SCALEY</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>LINECAP</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>LINEJOIN</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_135.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_135.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_135.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,97 @@
+<SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>LINE</Name>
+                <Description>area_line_135.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 10.0</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%HATCHCOLOR%</LineColor>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <AreaUsage>
+                  <Angle>%HATCHANGLE%+135</Angle>
+                  <RepeatX>99.9998</RepeatX>
+                  <RepeatY>2.54</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>HATCHCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>&Hatch Color</DisplayName>
+                    <Description>Color for the hatch style</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HATCHANGLE</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Hatch &Angle</DisplayName>
+                    <Description>Rotation angle for the hatch style</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>SCALEX</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>SCALEY</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>LINECAP</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>LINEJOIN</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_45.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_45.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_45.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,97 @@
+<SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>LINE</Name>
+                <Description>area_line_45.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 10.0</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%HATCHCOLOR%</LineColor>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <AreaUsage>
+                  <Angle>%HATCHANGLE%+45</Angle>
+                  <RepeatX>99.9998</RepeatX>
+                  <RepeatY>2.54</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>HATCHCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>&Hatch Color</DisplayName>
+                    <Description>Color for the hatch style</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HATCHANGLE</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Hatch &Angle</DisplayName>
+                    <Description>Rotation angle for the hatch style</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>SCALEX</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>SCALEY</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>LINECAP</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>LINEJOIN</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_90.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_90.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_line_90.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,97 @@
+<SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>LINE</Name>
+                <Description>area_line_90.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 10.0</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%HATCHCOLOR%</LineColor>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <AreaUsage>
+                  <Angle>%HATCHANGLE%+90</Angle>
+                  <RepeatX>99.9998</RepeatX>
+                  <RepeatY>2.54</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>HATCHCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>&Hatch Color</DisplayName>
+                    <Description>Color for the hatch style</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HATCHANGLE</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Hatch &Angle</DisplayName>
+                    <Description>Rotation angle for the hatch style</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>SCALEX</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>SCALEY</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>LINECAP</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE</SymbolName>
+                  <ParameterIdentifier>LINEJOIN</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_net.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_net.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_net.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,192 @@
+<SymbolInstance>
+              <CompoundSymbolDefinition>
+                <Name>AREA_SYMBOL_FOREGROUND</Name>
+                <Description>area_net.templ</Description>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>NET</Name>
+                    <Description>area_net.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 10.0</Geometry>
+                        <ScaleX>%SCALEX0%</ScaleX>
+                        <ScaleY>%SCALEY0%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP0%</LineCap>
+                        <LineJoin>%LINEJOIN0%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%</Angle>
+                      <RepeatX>99.9998</RepeatX>
+                      <RepeatY>1.2500102</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>NET</Name>
+                    <Description>area_net.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 10.0</Geometry>
+                        <ScaleX>%SCALEX1%</ScaleX>
+                        <ScaleY>%SCALEY1%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP1%</LineCap>
+                        <LineJoin>%LINEJOIN1%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%+90.0</Angle>
+                      <RepeatX>99.9998</RepeatX>
+                      <RepeatY>1.2500102</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+              </CompoundSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>SCALEX0</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>SCALEY0</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>LINECAP0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>LINEJOIN0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>SCALEX1</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>SCALEY1</ParameterIdentifier>
+                  <ParameterValue>10</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>LINECAP1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>NET</SymbolName>
+                  <ParameterIdentifier>LINEJOIN1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_sacncr.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_sacncr.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_sacncr.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,192 @@
+<SymbolInstance>
+              <CompoundSymbolDefinition>
+                <Name>SACNCR</Name>
+                <Description>area_sacncr.templ</Description>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>SACNCR</Name>
+                    <Description>area_sacncr.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.04688,-0.04688 h 0.0</Geometry>
+                        <ScaleX>%SCALEX0%</ScaleX>
+                        <ScaleY>%SCALEY0%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP0%</LineCap>
+                        <LineJoin>%LINEJOIN0%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%</Angle>
+                      <RepeatX>2.35727583605734</RepeatX>
+                      <RepeatY>2.35727583605734</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>45.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>SACNCR</Name>
+                    <Description>area_sacncr.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 10.0</Geometry>
+                        <ScaleX>%SCALEX1%</ScaleX>
+                        <ScaleY>%SCALEY1%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP1%</LineCap>
+                        <LineJoin>%LINEJOIN1%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%</Angle>
+                      <RepeatX>251.44531053558</RepeatX>
+                      <RepeatY>2.35727583605734</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>45.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+              </CompoundSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>45.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>SCALEX0</ParameterIdentifier>
+                  <ParameterValue>25.1445813427207</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>SCALEY0</ParameterIdentifier>
+                  <ParameterValue>25.1445813427207</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>LINECAP0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>LINEJOIN0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>SCALEX1</ParameterIdentifier>
+                  <ParameterValue>25.1445813427207</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>SCALEY1</ParameterIdentifier>
+                  <ParameterValue>25.1445813427207</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>LINECAP1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SACNCR</SymbolName>
+                  <ParameterIdentifier>LINEJOIN1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_solid.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_solid.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_solid.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+<SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>AREA_SYMBOL_FOREGROUND</Name>
+                <Description>area_solid.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 100.0 v 100.0 h -100.0 z</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <FillColor>%FILLCOLOR%</FillColor>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <AreaUsage>
+                  <RepeatX>100.0</RepeatX>
+                  <RepeatY>100.0</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>FILLCOLOR</Identifier>
+                    <DefaultValue>0xffbfbfbf</DefaultValue>
+                    <DisplayName>&Fill Color</DisplayName>
+                    <Description>Fill Color</Description>
+                    <DataType>FillColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>AREA_SYMBOL_FOREGROUND</SymbolName>
+                  <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_square.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_square.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_square.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,192 @@
+<SymbolInstance>
+              <CompoundSymbolDefinition>
+                <Name>SQUARE</Name>
+                <Description>area_square.templ</Description>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>SQUARE</Name>
+                    <Description>area_square.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 0.125</Geometry>
+                        <ScaleX>%SCALEX0%</ScaleX>
+                        <ScaleY>%SCALEY0%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP0%</LineCap>
+                        <LineJoin>%LINEJOIN0%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%</Angle>
+                      <RepeatX>1.01599983752261</RepeatX>
+                      <RepeatY>0.5080050800508</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY0</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN0</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+                <SimpleSymbol>
+                  <SimpleSymbolDefinition>
+                    <Name>SQUARE</Name>
+                    <Description>area_square.templ</Description>
+                    <Graphics>
+                      <Path>
+                        <Geometry>M 0.0,0.0 h 0.125</Geometry>
+                        <ScaleX>%SCALEX1%</ScaleX>
+                        <ScaleY>%SCALEY1%</ScaleY>
+                        <LineColor>%HATCHCOLOR%</LineColor>
+                        <LineCap>%LINECAP1%</LineCap>
+                        <LineJoin>%LINEJOIN1%</LineJoin>
+                      </Path>
+                    </Graphics>
+                    <AreaUsage>
+                      <Angle>%HATCHANGLE%+90.0</Angle>
+                      <RepeatX>1.01599983752261</RepeatX>
+                      <RepeatY>0.5080050800508</RepeatY>
+                    </AreaUsage>
+                    <ParameterDefinition>
+                      <Parameter>
+                        <Identifier>HATCHCOLOR</Identifier>
+                        <DefaultValue>0xff000000</DefaultValue>
+                        <DisplayName>&Hatch Color</DisplayName>
+                        <Description>Color for the hatch style</Description>
+                        <DataType>LineColor</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>HATCHANGLE</Identifier>
+                        <DefaultValue>0.0</DefaultValue>
+                        <DisplayName>Hatch &Angle</DisplayName>
+                        <Description>Rotation angle for the hatch style</Description>
+                        <DataType>Angle</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEX1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleX</DisplayName>
+                        <Description>Path ScaleX</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>SCALEY1</Identifier>
+                        <DefaultValue>1.0</DefaultValue>
+                        <DisplayName>Path ScaleY</DisplayName>
+                        <Description>Path ScaleY</Description>
+                        <DataType>Real</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINECAP1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Cap</DisplayName>
+                        <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                      <Parameter>
+                        <Identifier>LINEJOIN1</Identifier>
+                        <DefaultValue>'Round'</DefaultValue>
+                        <DisplayName>Line Join</DisplayName>
+                        <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                        <DataType>String</DataType>
+                      </Parameter>
+                    </ParameterDefinition>
+                  </SimpleSymbolDefinition>
+                  <RenderingPass>0</RenderingPass>
+                </SimpleSymbol>
+              </CompoundSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>SCALEX0</ParameterIdentifier>
+                  <ParameterValue>4.0640074781054</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>SCALEY0</ParameterIdentifier>
+                  <ParameterValue>4.0640074781054</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>LINECAP0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>LINEJOIN0</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>SCALEX1</ParameterIdentifier>
+                  <ParameterValue>4.0640074781054</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>SCALEY1</ParameterIdentifier>
+                  <ParameterValue>4.0640074781054</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>LINECAP1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>SQUARE</SymbolName>
+                  <ParameterIdentifier>LINEJOIN1</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/area_steel.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/area_steel.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/area_steel.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,99 @@
+<SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>STEEL</Name>
+                <Description>area_steel.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 10.0 M 0.04419,0.04419 h 10.0</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%HATCHCOLOR%</LineColor>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <AreaUsage>
+                  <Angle>%HATCHANGLE%</Angle>
+                  <RepeatX>140.181311233755</RepeatX>
+                  <RepeatY>1.75228419348407</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>HATCHCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>&Hatch Color</DisplayName>
+                    <Description>Color for the hatch style</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HATCHANGLE</Identifier>
+                    <DefaultValue>45.0</DefaultValue>
+                    <DisplayName>Hatch &Angle</DisplayName>
+                    <Description>Rotation angle for the hatch style</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>STEEL</SymbolName>
+                  <ParameterIdentifier>HATCHCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>STEEL</SymbolName>
+                  <ParameterIdentifier>HATCHANGLE</ParameterIdentifier>
+                  <ParameterValue>45.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>STEEL</SymbolName>
+                  <ParameterIdentifier>SCALEX</ParameterIdentifier>
+                  <ParameterValue>14.0181591596938</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>STEEL</SymbolName>
+                  <ParameterIdentifier>SCALEY</ParameterIdentifier>
+                  <ParameterValue>14.0181591596938</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>STEEL</SymbolName>
+                  <ParameterIdentifier>LINECAP</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>STEEL</SymbolName>
+                  <ParameterIdentifier>LINEJOIN</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Area</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/cross-script.png
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/MapViewer/Resources/cross-script.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_border.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_border.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_border.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_border.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0,0 L 5,0 M 7.5,0 L 12.5,0 M 15,0 L 15,0 </Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>12.7</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>0.67733468800271</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>0.67733468800271</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dash.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dash.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dash.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_dash.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0,0 L 6,0</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>1.666621</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>0.166666666666667</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>0.166666666666667</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dashdot.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dashdot.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dashdot.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_dashdot.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0,0 L 5,0 M 7.5,0 L 7.5,0 </Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>3.302</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>0.270931879530363</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>0.0507995157437665</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dashdotdot.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dashdotdot.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dashdotdot.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_dashdotdot.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0,0 L 40,0 M 80,0 L 120,0 M 160,0 L 200,0 M 240,0 L 320,0 </Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>7.62</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>0.0198437896875794</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>0.00211667090000846</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_divide.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_divide.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_divide.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_divide.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0,0 L 5,0 M 7.5,0 L 7.5,0 M 10,0 L 10,0 </Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>7.93758064516129</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>0.63500127000254</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>0.63500127000254</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dot.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dot.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_dot.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_dot.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0,0 L 0,0 </Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>2.54</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>6.3500127000254</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>6.3500127000254</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_fenceline1.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_fenceline1.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_fenceline1.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,101 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_fenceline1.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 2.5,0 A 1,1 0 0 0 4.5,-3.67394039744206e-016 M 4.5,-3.67394039744206e-016 A 1,1 0 0 0 2.5,2.44929359829471e-016 </Geometry>
+                    <ScaleX>%SCALEX0%</ScaleX>
+                    <ScaleY>%SCALEY0%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP0%</LineCap>
+                    <LineJoin>%LINEJOIN0%</LineJoin>
+                  </Path>
+                  <Path>
+                    <Geometry>M 0,0 L 2.5,0 M 4.5,0 L 14.5,0 </Geometry>
+                    <ScaleX>%SCALEX1%</ScaleX>
+                    <ScaleY>%SCALEY1%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP1%</LineCap>
+                    <LineJoin>%LINEJOIN1%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>6.35</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX0</Identifier>
+                    <DefaultValue>0.437928074693012</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY0</Identifier>
+                    <DefaultValue>0.437928074693012</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP0</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN0</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX1</Identifier>
+                    <DefaultValue>0.437928074693012</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY1</Identifier>
+                    <DefaultValue>0.437928074693012</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP1</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN1</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_rail.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_rail.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_rail.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,101 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_rail.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 2.0,0 l 0,2.5 M 2.0,0 l 0,-2.5 </Geometry>
+                    <ScaleX>%SCALEX0%</ScaleX>
+                    <ScaleY>%SCALEY0%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP0%</LineCap>
+                    <LineJoin>%LINEJOIN0%</LineJoin>
+                  </Path>
+                  <Path>
+                    <Geometry>M 0,0 L 9,0</Geometry>
+                    <ScaleX>%SCALEX1%</ScaleX>
+                    <ScaleY>%SCALEY1%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP1%</LineCap>
+                    <LineJoin>%LINEJOIN1%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>6.35</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX0</Identifier>
+                    <DefaultValue>0.705556966669489</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY0</Identifier>
+                    <DefaultValue>0.70555696666949</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP0</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN0</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX1</Identifier>
+                    <DefaultValue>0.705556966669489</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY1</Identifier>
+                    <DefaultValue>0.70555696666949</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP1</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN1</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/line_solid.templ
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/line_solid.templ	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/line_solid.templ	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,63 @@
+<SimpleSymbolDefinition>
+                <Name>LINE_SYMBOL</Name>
+                <Description>line_solid.templ</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 4.0</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineWeightScalable>false</LineWeightScalable>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <LineUsage>
+                  <Repeat>0.9999726</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>ff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/map--minus.png
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/MapViewer/Resources/map--minus.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/map--plus.png
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/MapViewer/Resources/map--plus.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/markupfeaturesource.xml
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/markupfeaturesource.xml	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/markupfeaturesource.xml	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FeatureSource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="FeatureSource-1.0.0.xsd">
+  <Provider>%s</Provider>
+  <Parameter>
+    <Name>%s</Name>
+    <Value>%%MG_DATA_FILE_PATH%%%s</Value>
+  </Parameter>
+  %s
+</FeatureSource>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/markuplayerdefinition.xml
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/markuplayerdefinition.xml	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/markuplayerdefinition.xml	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<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>%s</ResourceId>
+    <FeatureName>%s</FeatureName>
+    <FeatureNameType>FeatureClass</FeatureNameType>
+    <PropertyMapping>
+      <Name>Text</Name>
+      <Value>Text</Value>
+    </PropertyMapping>
+    <Geometry>Geometry</Geometry>
+    <VectorScaleRange>
+      <PointTypeStyle>
+        <DisplayAsText>false</DisplayAsText>
+        <AllowOverpost>false</AllowOverpost>
+        <PointRule>
+          <LegendLabel></LegendLabel>
+          <Label>
+            <Unit>%s</Unit>
+            <SizeContext>DeviceUnits</SizeContext>
+            <SizeX>%s</SizeX>
+            <SizeY>%s</SizeY>
+            <Rotation>0</Rotation>
+            <Text>"Text"</Text>
+            <FontName>Arial</FontName>
+            <ForegroundColor>%s</ForegroundColor>
+            <BackgroundColor>%s</BackgroundColor>
+            <BackgroundStyle>%s</BackgroundStyle>
+            <HorizontalAlignment>'Center'</HorizontalAlignment>
+            <VerticalAlignment>'Baseline'</VerticalAlignment>
+            <Bold>%s</Bold>
+            <Italic>%s</Italic>
+            <Underlined>%s</Underlined>
+          </Label>
+          <PointSymbolization2D>
+            <Mark>
+              <Unit>%s</Unit>
+              <SizeContext>DeviceUnits</SizeContext>
+              <SizeX>%s</SizeX>
+              <SizeY>%s</SizeY>
+              <Rotation>0</Rotation>
+              <Shape>%s</Shape>
+              <Fill>
+                <FillPattern>Solid</FillPattern>
+                <ForegroundColor>%s</ForegroundColor>
+                <BackgroundColor>FFFFFFFF</BackgroundColor>
+              </Fill>
+              <Edge>
+                <LineStyle>Solid</LineStyle>
+                <Thickness>0.0</Thickness>
+                <Color>%s</Color>
+                <Unit>Centimeters</Unit>
+              </Edge>
+            </Mark>
+          </PointSymbolization2D>
+        </PointRule>
+      </PointTypeStyle>
+      <LineTypeStyle>
+        <LineRule>
+          <LegendLabel></LegendLabel>
+          <Label>
+            <Unit>%s</Unit>
+            <SizeContext>DeviceUnits</SizeContext>
+            <SizeX>%s</SizeX>
+            <SizeY>%s</SizeY>
+            <Rotation>0</Rotation>
+            <Text>"Text"</Text>
+            <FontName>Arial</FontName>
+            <ForegroundColor>%s</ForegroundColor>
+            <BackgroundColor>%s</BackgroundColor>
+            <BackgroundStyle>%s</BackgroundStyle>
+            <HorizontalAlignment>'Center'</HorizontalAlignment>
+            <VerticalAlignment>'Baseline'</VerticalAlignment>
+            <Bold>%s</Bold>
+            <Italic>%s</Italic>
+            <Underlined>%s</Underlined>
+          </Label>
+          <LineSymbolization2D>
+            <LineStyle>%s</LineStyle>
+            <Thickness>%s</Thickness>
+            <Color>%s</Color>
+            <Unit>%s</Unit>
+          </LineSymbolization2D>
+        </LineRule>
+      </LineTypeStyle>
+      <AreaTypeStyle>
+        <AreaRule>
+          <LegendLabel></LegendLabel>
+          <Label>
+            <Unit>%s</Unit>
+            <SizeContext>DeviceUnits</SizeContext>
+            <SizeX>%s</SizeX>
+            <SizeY>%s</SizeY>
+            <Rotation>0</Rotation>
+            <Text>"Text"</Text>
+            <FontName>Arial</FontName>
+            <ForegroundColor>%s</ForegroundColor>
+            <BackgroundColor>%s</BackgroundColor>
+            <BackgroundStyle>%s</BackgroundStyle>
+            <HorizontalAlignment>'Center'</HorizontalAlignment>
+            <VerticalAlignment>Halfline</VerticalAlignment>
+            <Bold>%s</Bold>
+            <Italic>%s</Italic>
+            <Underlined>%s</Underlined>
+          </Label>
+          <AreaSymbolization2D>
+            <Fill>
+              <FillPattern>%s</FillPattern>
+              <ForegroundColor>%s</ForegroundColor>
+              <BackgroundColor>%s</BackgroundColor>
+            </Fill>
+            <Stroke>
+              <LineStyle>%s</LineStyle>
+              <Thickness>%s</Thickness>
+              <Color>%s</Color>
+              <Unit>%s</Unit>
+            </Stroke>
+          </AreaSymbolization2D>
+        </AreaRule>
+      </AreaTypeStyle>
+    </VectorScaleRange>
+  </VectorLayerDefinition>
+</LayerDefinition>

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/markuplayerdefinition_advanced.xml
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Resources/markuplayerdefinition_advanced.xml	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Resources/markuplayerdefinition_advanced.xml	2013-09-26 09:05:10 UTC (rev 7871)
@@ -0,0 +1,1111 @@
+<?xml version="1.0"?>
+<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.4.0" xsi:noNamespaceSchemaLocation="LayerDefinition-2.4.0.xsd">
+  <VectorLayerDefinition>
+    <ResourceId>#{RESOURCE_ID}</ResourceId>
+    <FeatureName>#{FEATURE_CLASS}</FeatureName>
+    <FeatureNameType>FeatureClass</FeatureNameType>
+    <PropertyMapping>
+      <Name>Text</Name>
+      <Value>Text</Value>
+    </PropertyMapping>
+    <Geometry>Geometry</Geometry>
+    <VectorScaleRange>
+      <!-- Point Style -->
+      <CompositeTypeStyle>
+        <CompositeRule>
+          <LegendLabel />
+          <CompositeSymbolization>
+            <!-- Point symbol -->
+            <SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>Square</Name>
+                <Description>Default Point Symbol</Description>
+                <Graphics>
+                  <Path>
+                    <!-- 
+                    Square:     M -1.0,-1.0 L 1.0,-1.0 L 1.0,1.0 L -1.0,1.0 L -1.0,-1.0
+                    Circle:     M -1,0 A 1,1 0 1 1 1,0 A 1,1 0 1 1 -1,0
+                    Triangle:   M -1.0,-1.0 h 2.0 l -1.0,2.0 z
+                    Star:       M -0.618033988749895,-0.951056516295154 L 0,-0.502028539715568 L 0.618033988749895,-0.951056516295154 L 0.381966011250105,-0.273457471994639 L 1,0.175570504584946 L 0.23606797749979,0.175570504584946 L 0,0.951056516295154 L -0.23606797749979,0.175570504584946 L -1,0.175570504584946 L -0.381966011250105,-0.273457471994639 L -0.618033988749895,-0.951056516295154
+                    Cross:      M -0.190983005625053,-1 L 0.190983005625053,-1 L 0.190983005625053,-0.190983005625053 L 1,-0.190983005625053 L 1,0.190983005625053 L 0.190983005625053,0.190983005625053 L 0.190983005625053,1 L -0.190983005625053,1 L -0.190983005625053,0.190983005625053 L -1,0.190983005625053 L -1,-0.190983005625053 L -0.190983005625053,-0.190983005625053 L -0.190983005625053,-1
+                    X:          M -0.459818486524547,-1 L 0,-0.540181513475453 L 0.459818486524547,-1 L 1,-0.459818486524547 L 0.540181513475453,0 L 1,0.459818486524547 L 0.459818486524547,1 L 0,0.540181513475453 L -0.459818486524547,1 L -1,0.459818486524547 L -0.540181513475453,0 L -1,-0.459818486524547 L -0.459818486524547,-1
+                    Star-Old:   M -0.707106781186548,0.707106781186548 L 0.707106781186548,-0.707106781186548 M -0.707106781186548,-0.707106781186548 L 0.707106781186548,0.707106781186548 M -1,0 L 1,0 M 0,-1 L 0,1
+                    Cross-Old:  M -1,0 L 1,0 M 0,-1 L 0,1
+                    X-Old:      M -0.707106781186548,0.707106781186548 L 0.707106781186548,-0.707106781186548 M -0.707106781186548,-0.707106781186548 L 0.707106781186548,0.707106781186548
+                    -->
+                    <Geometry>#{MARKER_GEOMETRY}</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <FillColor>%FILLCOLOR%</FillColor>
+                    <LineColor>%LINECOLOR%</LineColor>
+                    <LineWeight>%LINEWEIGHT%</LineWeight>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <PointUsage>
+                  <Angle>%ROTATION%</Angle>
+                </PointUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>FILLCOLOR</Identifier>
+                    <DefaultValue>0xffffffff</DefaultValue>
+                    <DisplayName>&Fill Color</DisplayName>
+                    <Description>Fill Color</Description>
+                    <DataType>FillColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>Line &Color</DisplayName>
+                    <Description>Line Color</Description>
+                    <DataType>LineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEWEIGHT</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>Line &Thickness</DisplayName>
+                    <Description>Line Thickness</Description>
+                    <DataType>LineWeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>ROTATION</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>&Rotation</DisplayName>
+                    <Description>Rotation</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                    <DataType>String</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>Square</SymbolName>
+                  <ParameterIdentifier>SCALEX</ParameterIdentifier>
+                  <ParameterValue>#{MARKER_SIZE_X}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>Square</SymbolName>
+                  <ParameterIdentifier>SCALEY</ParameterIdentifier>
+                  <ParameterValue>#{MARKER_SIZE_Y}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>Square</SymbolName>
+                  <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{MARKER_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>Square</SymbolName>
+                  <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{MARKER_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>Square</SymbolName>
+                  <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>Square</SymbolName>
+                  <ParameterIdentifier>ROTATION</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>Square</SymbolName>
+                  <ParameterIdentifier>LINECAP</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>Square</SymbolName>
+                  <ParameterIdentifier>LINEJOIN</ParameterIdentifier>
+                  <ParameterValue>'Round'</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Point</UsageContext>
+              <GeometryContext>Point</GeometryContext>
+            </SymbolInstance>
+            <!-- Point label -->
+            <SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>MTEXT</Name>
+                <Description>Default MTEXT Symbol</Description>
+                <Graphics>
+                  <Text>
+                    <Content>%CONTENT%</Content>
+                    <FontName>%FONTNAME%</FontName>
+                    <Bold>%BOLD%</Bold>
+                    <Italic>%ITALIC%</Italic>
+                    <Underlined>%UNDERLINED%</Underlined>
+                    <Overlined>%OVERLINED%</Overlined>
+                    <Height>%FONTHEIGHT%</Height>
+                    <PositionX>7.5+%TEXTPOSITIONX%</PositionX>
+                    <PositionY>%TEXTPOSITIONY%</PositionY>
+                    <HorizontalAlignment>%HORIZONTALALIGNMENT%</HorizontalAlignment>
+                    <VerticalAlignment>%VERTICALALIGNMENT%</VerticalAlignment>
+                    <Justification>%JUSTIFICATION%</Justification>
+                    <LineSpacing>%LINESPACING%</LineSpacing>
+                    <TextColor>%TEXTCOLOR%</TextColor>
+                    <GhostColor>%GHOSTCOLOR%</GhostColor>
+                    <Frame>
+                      <LineColor>%FRAMELINECOLOR%</LineColor>
+                      <FillColor>%FRAMEFILLCOLOR%</FillColor>
+                      <OffsetX>0.0</OffsetX>
+                      <OffsetY>0.0</OffsetY>
+                    </Frame>
+                    <Markup>'MTEXT'</Markup>
+                  </Text>
+                </Graphics>
+                <PointUsage>
+                  <Angle>%ROTATION%</Angle>
+                </PointUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>CONTENT</Identifier>
+                    <DefaultValue>'text'</DefaultValue>
+                    <DisplayName>T&ext</DisplayName>
+                    <Description>Text</Description>
+                    <DataType>Content</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FONTNAME</Identifier>
+                    <DefaultValue>'Arial'</DefaultValue>
+                    <DisplayName>&Font Name</DisplayName>
+                    <Description>Font Name</Description>
+                    <DataType>FontName</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FONTHEIGHT</Identifier>
+                    <DefaultValue>4.0</DefaultValue>
+                    <DisplayName>Font &Size</DisplayName>
+                    <Description>Font Size</Description>
+                    <DataType>FontHeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>BOLD</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Bold</DisplayName>
+                    <Description>Bold</Description>
+                    <DataType>Bold</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>ITALIC</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Italic</DisplayName>
+                    <Description>Italic</Description>
+                    <DataType>Italic</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>UNDERLINED</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Underlined</DisplayName>
+                    <Description>Underlined</Description>
+                    <DataType>Underlined</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>OVERLINED</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Overlined</DisplayName>
+                    <Description>Overlined</Description>
+                    <DataType>Overlined</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>JUSTIFICATION</Identifier>
+                    <DefaultValue>'FromAlignment'</DefaultValue>
+                    <DisplayName>Justification</DisplayName>
+                    <Description>Justification</Description>
+                    <DataType>Justification</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINESPACING</Identifier>
+                    <DefaultValue>1.05</DefaultValue>
+                    <DisplayName>Line Spacing</DisplayName>
+                    <Description>Line Spacing</Description>
+                    <DataType>LineSpacing</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>GHOSTCOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Ghost Color</DisplayName>
+                    <Description>Ghost Color</Description>
+                    <DataType>GhostColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FRAMELINECOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Frame Line Color</DisplayName>
+                    <Description>Frame Line Color</Description>
+                    <DataType>FrameLineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FRAMEFILLCOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Frame Fill Color</DisplayName>
+                    <Description>Frame Fill Color</Description>
+                    <DataType>FrameFillColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>Text Color</DisplayName>
+                    <Description>Text Color</Description>
+                    <DataType>TextColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>ROTATION</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>&Rotation</DisplayName>
+                    <Description>Rotation</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HORIZONTALALIGNMENT</Identifier>
+                    <DefaultValue>'Center'</DefaultValue>
+                    <DisplayName>Hori&zontal Alignment</DisplayName>
+                    <Description>Horizontal Alignment</Description>
+                    <DataType>HorizontalAlignment</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>VERTICALALIGNMENT</Identifier>
+                    <DefaultValue>'Halfline'</DefaultValue>
+                    <DisplayName>&Vertical Alignment</DisplayName>
+                    <Description>Vertical Alignment</Description>
+                    <DataType>VerticalAlignment</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTPOSITIONX</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>PositionX</DisplayName>
+                    <Description>PositionX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTPOSITIONY</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>PositionY</DisplayName>
+                    <Description>PositionY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FONTHEIGHT</ParameterIdentifier>
+                  <ParameterValue>#{FONT_HEIGHT}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{LABEL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>GHOSTCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{LABEL_BACK_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>CONTENT</ParameterIdentifier>
+                  <ParameterValue>Text</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FONTNAME</ParameterIdentifier>
+                  <ParameterValue>'Arial'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>BOLD</ParameterIdentifier>
+                  <ParameterValue>#{BOLD}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>ITALIC</ParameterIdentifier>
+                  <ParameterValue>#{ITALIC}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>UNDERLINED</ParameterIdentifier>
+                  <ParameterValue>#{UNDERLINE}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>OVERLINED</ParameterIdentifier>
+                  <ParameterValue>false</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>JUSTIFICATION</ParameterIdentifier>
+                  <ParameterValue>'FromAlignment'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>LINESPACING</ParameterIdentifier>
+                  <ParameterValue>1.05</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FRAMELINECOLOR</ParameterIdentifier>
+                  <ParameterValue />
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FRAMEFILLCOLOR</ParameterIdentifier>
+                  <ParameterValue>#{FRAME_FILL_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>ROTATION</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>HORIZONTALALIGNMENT</ParameterIdentifier>
+                  <ParameterValue>'Center'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>VERTICALALIGNMENT</ParameterIdentifier>
+                  <ParameterValue>'Halfline'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTPOSITIONX</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTPOSITIONY</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <DrawLast>true</DrawLast>
+              <CheckExclusionRegion>false</CheckExclusionRegion>
+              <AddToExclusionRegion>false</AddToExclusionRegion>
+              <PositioningAlgorithm>'Default'</PositioningAlgorithm>
+              <UsageContext>Point</UsageContext>
+              <GeometryContext>Point</GeometryContext>
+            </SymbolInstance>
+          </CompositeSymbolization>
+        </CompositeRule>
+      </CompositeTypeStyle>
+      <!-- Line style -->
+      <CompositeTypeStyle>
+        <CompositeRule>
+          <LegendLabel />
+          <CompositeSymbolization>
+            <!-- Line Label -->
+            <SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>MTEXT</Name>
+                <Description>Default MTEXT Symbol</Description>
+                <Graphics>
+                  <Text>
+                    <Content>%CONTENT%</Content>
+                    <FontName>%FONTNAME%</FontName>
+                    <Bold>%BOLD%</Bold>
+                    <Italic>%ITALIC%</Italic>
+                    <Underlined>%UNDERLINED%</Underlined>
+                    <Overlined>%OVERLINED%</Overlined>
+                    <Height>%FONTHEIGHT%</Height>
+                    <PositionX>%TEXTPOSITIONX%</PositionX>
+                    <PositionY>%TEXTPOSITIONY%</PositionY>
+                    <HorizontalAlignment>%HORIZONTALALIGNMENT%</HorizontalAlignment>
+                    <VerticalAlignment>%VERTICALALIGNMENT%</VerticalAlignment>
+                    <Justification>%JUSTIFICATION%</Justification>
+                    <LineSpacing>%LINESPACING%</LineSpacing>
+                    <TextColor>%TEXTCOLOR%</TextColor>
+                    <GhostColor>%GHOSTCOLOR%</GhostColor>
+                    <Frame>
+                      <LineColor>%FRAMELINECOLOR%</LineColor>
+                      <FillColor>%FRAMEFILLCOLOR%</FillColor>
+                      <OffsetX>0.0</OffsetX>
+                      <OffsetY>0.0</OffsetY>
+                    </Frame>
+                    <Markup>'MTEXT'</Markup>
+                  </Text>
+                </Graphics>
+                <LineUsage>
+                  <AngleControl>'FromAngle'</AngleControl>
+                  <Angle>%ROTATION%</Angle>
+                  <Repeat>1.0</Repeat>
+                </LineUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>CONTENT</Identifier>
+                    <DefaultValue>'text'</DefaultValue>
+                    <DisplayName>T&ext</DisplayName>
+                    <Description>Text</Description>
+                    <DataType>Content</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FONTNAME</Identifier>
+                    <DefaultValue>'Arial'</DefaultValue>
+                    <DisplayName>&Font Name</DisplayName>
+                    <Description>Font Name</Description>
+                    <DataType>FontName</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FONTHEIGHT</Identifier>
+                    <DefaultValue>4.0</DefaultValue>
+                    <DisplayName>Font &Size</DisplayName>
+                    <Description>Font Size</Description>
+                    <DataType>FontHeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>BOLD</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Bold</DisplayName>
+                    <Description>Bold</Description>
+                    <DataType>Bold</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>ITALIC</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Italic</DisplayName>
+                    <Description>Italic</Description>
+                    <DataType>Italic</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>UNDERLINED</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Underlined</DisplayName>
+                    <Description>Underlined</Description>
+                    <DataType>Underlined</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>OVERLINED</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Overlined</DisplayName>
+                    <Description>Overlined</Description>
+                    <DataType>Overlined</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>JUSTIFICATION</Identifier>
+                    <DefaultValue>'FromAlignment'</DefaultValue>
+                    <DisplayName>Justification</DisplayName>
+                    <Description>Justification</Description>
+                    <DataType>Justification</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINESPACING</Identifier>
+                    <DefaultValue>1.05</DefaultValue>
+                    <DisplayName>Line Spacing</DisplayName>
+                    <Description>Line Spacing</Description>
+                    <DataType>LineSpacing</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>GHOSTCOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Ghost Color</DisplayName>
+                    <Description>Ghost Color</Description>
+                    <DataType>GhostColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FRAMELINECOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Frame Line Color</DisplayName>
+                    <Description>Frame Line Color</Description>
+                    <DataType>FrameLineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FRAMEFILLCOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Frame Fill Color</DisplayName>
+                    <Description>Frame Fill Color</Description>
+                    <DataType>FrameFillColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>Text Color</DisplayName>
+                    <Description>Text Color</Description>
+                    <DataType>TextColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>VERTICALALIGNMENT</Identifier>
+                    <DefaultValue>'Halfline'</DefaultValue>
+                    <DisplayName>&Vertical Alignment</DisplayName>
+                    <Description>Vertical Alignment</Description>
+                    <DataType>VerticalAlignment</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>ROTATION</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>&Rotation</DisplayName>
+                    <Description>Rotation</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HORIZONTALALIGNMENT</Identifier>
+                    <DefaultValue>'Center'</DefaultValue>
+                    <DisplayName>Hori&zontal Alignment</DisplayName>
+                    <Description>Horizontal Alignment</Description>
+                    <DataType>HorizontalAlignment</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>VERTICALALIGNMENT</Identifier>
+                    <DefaultValue>'Halfline'</DefaultValue>
+                    <DisplayName>&Vertical Alignment</DisplayName>
+                    <Description>Vertical Alignment</Description>
+                    <DataType>VerticalAlignment</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTPOSITIONX</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>PositionX</DisplayName>
+                    <Description>PositionX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTPOSITIONY</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>PositionY</DisplayName>
+                    <Description>PositionY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FONTHEIGHT</ParameterIdentifier>
+                  <ParameterValue>#{FONT_HEIGHT}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{LABEL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>GHOSTCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{LABEL_BACK_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>CONTENT</ParameterIdentifier>
+                  <ParameterValue>Text</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FONTNAME</ParameterIdentifier>
+                  <ParameterValue>'Arial'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>BOLD</ParameterIdentifier>
+                  <ParameterValue>#{BOLD}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>ITALIC</ParameterIdentifier>
+                  <ParameterValue>#{ITALIC}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>UNDERLINED</ParameterIdentifier>
+                  <ParameterValue>#{UNDERLINE}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>OVERLINED</ParameterIdentifier>
+                  <ParameterValue>false</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>JUSTIFICATION</ParameterIdentifier>
+                  <ParameterValue>'FromAlignment'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>LINESPACING</ParameterIdentifier>
+                  <ParameterValue>1.05</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FRAMELINECOLOR</ParameterIdentifier>
+                  <ParameterValue />
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FRAMEFILLCOLOR</ParameterIdentifier>
+                  <ParameterValue>#{FRAME_FILL_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>ROTATION</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>HORIZONTALALIGNMENT</ParameterIdentifier>
+                  <ParameterValue>'Center'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>VERTICALALIGNMENT</ParameterIdentifier>
+                  <ParameterValue>'Halfline'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTPOSITIONX</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTPOSITIONY</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <DrawLast>true</DrawLast>
+              <CheckExclusionRegion>false</CheckExclusionRegion>
+              <AddToExclusionRegion>false</AddToExclusionRegion>
+              <PositioningAlgorithm>'PathLabels'</PositioningAlgorithm>
+              <UsageContext>Line</UsageContext>
+              <GeometryContext>LineString</GeometryContext>
+            </SymbolInstance>
+            <!-- Line pattern symbol -->
+            <SymbolInstance>
+              #{LINE_PATTERN_GEOMETRY}
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>LINE_SYMBOL</SymbolName>
+                  <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+                  <ParameterValue>#{LINE_THICKNESS}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE_SYMBOL</SymbolName>
+                  <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{LINE_COLOR}</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Line</UsageContext>
+              <GeometryContext>LineString</GeometryContext>
+            </SymbolInstance>
+          </CompositeSymbolization>
+        </CompositeRule>
+      </CompositeTypeStyle>
+      <!-- Polygon Style -->
+      <CompositeTypeStyle>
+        <CompositeRule>
+          <LegendLabel />
+          <CompositeSymbolization>
+            <!-- Polygon Background Fill -->
+            #{START_BACKGROUND_FILL}
+            <SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>AREA_SYMBOL_BACKGROUND</Name>
+                <Description>Polygon background fill</Description>
+                <Graphics>
+                  <Path>
+                    <Geometry>M 0.0,0.0 h 100.0 v 100.0 h -100.0 z</Geometry>
+                    <ScaleX>%SCALEX%</ScaleX>
+                    <ScaleY>%SCALEY%</ScaleY>
+                    <FillColor>%FILLCOLOR%</FillColor>
+                    <LineCap>%LINECAP%</LineCap>
+                    <LineJoin>%LINEJOIN%</LineJoin>
+                  </Path>
+                </Graphics>
+                <AreaUsage>
+                  <RepeatX>100.0</RepeatX>
+                  <RepeatY>100.0</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>FILLCOLOR</Identifier>
+                    <DefaultValue>0xffbfbfbf</DefaultValue>
+                    <DisplayName>&Fill Color</DisplayName>
+                    <Description>Fill Color</Description>
+                    <DataType>FillColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEX</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleX</DisplayName>
+                    <Description>Path ScaleX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>SCALEY</Identifier>
+                    <DefaultValue>1.0</DefaultValue>
+                    <DisplayName>Path ScaleY</DisplayName>
+                    <Description>Path ScaleY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINECAP</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Cap</DisplayName>
+                    <Description>The cap type to use at the ends of each segment in the path outline.  This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINEJOIN</Identifier>
+                    <DefaultValue>'Round'</DefaultValue>
+                    <DisplayName>Line Join</DisplayName>
+                    <Description>The join type to use at each vertex in the path outline.  This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>AREA_SYMBOL_BACKGROUND</SymbolName>
+                  <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{FILL_BACK_COLOR}</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
+            #{END_BACKGROUND_FILL}
+            <!-- Polygon Fill Pattern -->
+            #{FILL_PATTERN_TEMPLATE}
+            <!-- Polygon border -->
+            <SymbolInstance>
+              #{BORDER_PATTERN_TEMPLATE}
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>LINE_SYMBOL</SymbolName>
+                  <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+                  <ParameterValue>#{BORDER_THICKNESS}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>LINE_SYMBOL</SymbolName>
+                  <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{BORDER_COLOR}</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <UsageContext>Line</UsageContext>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
+            <!-- Polygon Label -->
+            <SymbolInstance>
+              <SimpleSymbolDefinition>
+                <Name>MTEXT</Name>
+                <Description>Default MTEXT Symbol</Description>
+                <Graphics>
+                  <Text>
+                    <Content>%CONTENT%</Content>
+                    <FontName>%FONTNAME%</FontName>
+                    <Bold>%BOLD%</Bold>
+                    <Italic>%ITALIC%</Italic>
+                    <Underlined>%UNDERLINED%</Underlined>
+                    <Overlined>%OVERLINED%</Overlined>
+                    <Height>%FONTHEIGHT%</Height>
+                    <PositionX>%TEXTPOSITIONX%</PositionX>
+                    <PositionY>%TEXTPOSITIONY%</PositionY>
+                    <HorizontalAlignment>%HORIZONTALALIGNMENT%</HorizontalAlignment>
+                    <VerticalAlignment>%VERTICALALIGNMENT%</VerticalAlignment>
+                    <Justification>%JUSTIFICATION%</Justification>
+                    <LineSpacing>%LINESPACING%</LineSpacing>
+                    <TextColor>%TEXTCOLOR%</TextColor>
+                    <GhostColor>%GHOSTCOLOR%</GhostColor>
+                    <Frame>
+                      <LineColor>%FRAMELINECOLOR%</LineColor>
+                      <FillColor>%FRAMEFILLCOLOR%</FillColor>
+                      <OffsetX>0.0</OffsetX>
+                      <OffsetY>0.0</OffsetY>
+                    </Frame>
+                    <Markup>'MTEXT'</Markup>
+                  </Text>
+                </Graphics>
+                <AreaUsage>
+                  <Angle>%ROTATION%</Angle>
+                  <RepeatX>100.0</RepeatX>
+                  <RepeatY>100.0</RepeatY>
+                </AreaUsage>
+                <ParameterDefinition>
+                  <Parameter>
+                    <Identifier>CONTENT</Identifier>
+                    <DefaultValue>'text'</DefaultValue>
+                    <DisplayName>T&ext</DisplayName>
+                    <Description>Text</Description>
+                    <DataType>Content</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FONTNAME</Identifier>
+                    <DefaultValue>'Arial'</DefaultValue>
+                    <DisplayName>&Font Name</DisplayName>
+                    <Description>Font Name</Description>
+                    <DataType>FontName</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FONTHEIGHT</Identifier>
+                    <DefaultValue>4.0</DefaultValue>
+                    <DisplayName>Font &Size</DisplayName>
+                    <Description>Font Size</Description>
+                    <DataType>FontHeight</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>BOLD</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Bold</DisplayName>
+                    <Description>Bold</Description>
+                    <DataType>Bold</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>ITALIC</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Italic</DisplayName>
+                    <Description>Italic</Description>
+                    <DataType>Italic</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>UNDERLINED</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Underlined</DisplayName>
+                    <Description>Underlined</Description>
+                    <DataType>Underlined</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>OVERLINED</Identifier>
+                    <DefaultValue>false</DefaultValue>
+                    <DisplayName>Overlined</DisplayName>
+                    <Description>Overlined</Description>
+                    <DataType>Overlined</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>JUSTIFICATION</Identifier>
+                    <DefaultValue>'FromAlignment'</DefaultValue>
+                    <DisplayName>Justification</DisplayName>
+                    <Description>Justification</Description>
+                    <DataType>Justification</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>LINESPACING</Identifier>
+                    <DefaultValue>1.05</DefaultValue>
+                    <DisplayName>Line Spacing</DisplayName>
+                    <Description>Line Spacing</Description>
+                    <DataType>LineSpacing</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>GHOSTCOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Ghost Color</DisplayName>
+                    <Description>Ghost Color</Description>
+                    <DataType>GhostColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FRAMELINECOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Frame Line Color</DisplayName>
+                    <Description>Frame Line Color</Description>
+                    <DataType>FrameLineColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>FRAMEFILLCOLOR</Identifier>
+                    <DefaultValue />
+                    <DisplayName>Frame Fill Color</DisplayName>
+                    <Description>Frame Fill Color</Description>
+                    <DataType>FrameFillColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTCOLOR</Identifier>
+                    <DefaultValue>0xff000000</DefaultValue>
+                    <DisplayName>Text Color</DisplayName>
+                    <Description>Text Color</Description>
+                    <DataType>TextColor</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>VERTICALALIGNMENT</Identifier>
+                    <DefaultValue>'Halfline'</DefaultValue>
+                    <DisplayName>&Vertical Alignment</DisplayName>
+                    <Description>Vertical Alignment</Description>
+                    <DataType>VerticalAlignment</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>ROTATION</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>&Rotation</DisplayName>
+                    <Description>Rotation</Description>
+                    <DataType>Angle</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>HORIZONTALALIGNMENT</Identifier>
+                    <DefaultValue>'Center'</DefaultValue>
+                    <DisplayName>Hori&zontal Alignment</DisplayName>
+                    <Description>Horizontal Alignment</Description>
+                    <DataType>HorizontalAlignment</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>VERTICALALIGNMENT</Identifier>
+                    <DefaultValue>'Halfline'</DefaultValue>
+                    <DisplayName>&Vertical Alignment</DisplayName>
+                    <Description>Vertical Alignment</Description>
+                    <DataType>VerticalAlignment</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTPOSITIONX</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>PositionX</DisplayName>
+                    <Description>PositionX</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                  <Parameter>
+                    <Identifier>TEXTPOSITIONY</Identifier>
+                    <DefaultValue>0.0</DefaultValue>
+                    <DisplayName>PositionY</DisplayName>
+                    <Description>PositionY</Description>
+                    <DataType>Real</DataType>
+                  </Parameter>
+                </ParameterDefinition>
+              </SimpleSymbolDefinition>
+              <ParameterOverrides>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FONTHEIGHT</ParameterIdentifier>
+                  <ParameterValue>#{FONT_HEIGHT}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{LABEL_FORE_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>GHOSTCOLOR</ParameterIdentifier>
+                  <ParameterValue>0x#{LABEL_BACK_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>CONTENT</ParameterIdentifier>
+                  <ParameterValue>Text</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FONTNAME</ParameterIdentifier>
+                  <ParameterValue>'Arial'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>BOLD</ParameterIdentifier>
+                  <ParameterValue>#{BOLD}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>ITALIC</ParameterIdentifier>
+                  <ParameterValue>#{ITALIC}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>UNDERLINED</ParameterIdentifier>
+                  <ParameterValue>#{UNDERLINE}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>OVERLINED</ParameterIdentifier>
+                  <ParameterValue>false</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>JUSTIFICATION</ParameterIdentifier>
+                  <ParameterValue>'FromAlignment'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>LINESPACING</ParameterIdentifier>
+                  <ParameterValue>1.05</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FRAMELINECOLOR</ParameterIdentifier>
+                  <ParameterValue />
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>FRAMEFILLCOLOR</ParameterIdentifier>
+                  <ParameterValue>#{FRAME_FILL_COLOR}</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>ROTATION</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>HORIZONTALALIGNMENT</ParameterIdentifier>
+                  <ParameterValue>'Center'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>VERTICALALIGNMENT</ParameterIdentifier>
+                  <ParameterValue>'Halfline'</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTPOSITIONX</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+                <Override>
+                  <SymbolName>MTEXT</SymbolName>
+                  <ParameterIdentifier>TEXTPOSITIONY</ParameterIdentifier>
+                  <ParameterValue>0.0</ParameterValue>
+                </Override>
+              </ParameterOverrides>
+              <DrawLast>true</DrawLast>
+              <CheckExclusionRegion>false</CheckExclusionRegion>
+              <AddToExclusionRegion>false</AddToExclusionRegion>
+              <PositioningAlgorithm>'Default'</PositioningAlgorithm>
+              <GeometryContext>Polygon</GeometryContext>
+            </SymbolInstance>
+          </CompositeSymbolization>
+        </CompositeRule>
+      </CompositeTypeStyle>
+    </VectorScaleRange>
+    <ExtendedData1>
+      <!-- To be able to init the Edit Redline Style UI from this Layer Definition, store the style settings here -->
+      <MG_RESOURCE_ID>#{MG_RESOURCE_ID}</MG_RESOURCE_ID>
+      <MG_FEATURE_CLASS>#{MG_FEATURE_CLASS}</MG_FEATURE_CLASS>
+      <MG_FILL_PATTERN>#{MG_FILL_PATTERN}</MG_FILL_PATTERN>
+      <MG_BORDER_PATTERN>#{MG_BORDER_PATTERN}</MG_BORDER_PATTERN>
+      <MG_LINE_PATTERN>#{MG_LINE_PATTERN}</MG_LINE_PATTERN>
+      <MG_LABEL_FONT_SIZE>#{MG_LABEL_FONT_SIZE}</MG_LABEL_FONT_SIZE>
+      <MG_LABEL_FONT_UNITS>#{MG_LABEL_FONT_UNITS}</MG_LABEL_FONT_UNITS>
+      <MG_LABEL_FORECOLOR>#{MG_LABEL_FORECOLOR}</MG_LABEL_FORECOLOR>
+      <MG_LABEL_BACKCOLOR>#{MG_LABEL_BACKCOLOR}</MG_LABEL_BACKCOLOR>
+      <MG_LABEL_STYLE>#{MG_LABEL_STYLE}</MG_LABEL_STYLE>
+      <MG_BOLD>#{MG_BOLD}</MG_BOLD>
+      <MG_ITALIC>#{MG_ITALIC}</MG_ITALIC>
+      <MG_UNDERLINE>#{MG_UNDERLINE}</MG_UNDERLINE>
+      <MG_MARKER_TYPE>#{MG_MARKER_TYPE}</MG_MARKER_TYPE>
+      <MG_MARKER_SIZE>#{MG_MARKER_SIZE}</MG_MARKER_SIZE>
+      <MG_MARKER_UNITS>#{MG_MARKER_UNITS}</MG_MARKER_UNITS>
+      <MG_MARKER_COLOR>#{MG_MARKER_COLOR}</MG_MARKER_COLOR>
+      <MG_LINE_THICKNESS>#{MG_LINE_THICKNESS}</MG_LINE_THICKNESS>
+      <MG_LINE_UNITS>#{MG_LINE_UNITS}</MG_LINE_UNITS>
+      <MG_LINE_COLOR>#{MG_LINE_COLOR}</MG_LINE_COLOR>
+      <MG_FILL_BACK_COLOR>#{MG_FILL_BACK_COLOR}</MG_FILL_BACK_COLOR>
+      <MG_FILL_FORE_COLOR>#{MG_FILL_FORE_COLOR}</MG_FILL_FORE_COLOR>
+      <MG_FILL_FORE_TRANSPARENCY>#{MG_FILL_FORE_TRANSPARENCY}</MG_FILL_FORE_TRANSPARENCY>
+      <MG_FILL_BACK_TRANSPARENCY>#{MG_FILL_BACK_TRANSPARENCY}</MG_FILL_BACK_TRANSPARENCY>
+      <MG_BORDER_THICKNESS>#{MG_BORDER_THICKNESS}</MG_BORDER_THICKNESS>
+      <MG_BORDER_UNITS>#{MG_BORDER_UNITS}</MG_BORDER_UNITS>
+      <MG_BORDER_COLOR>#{MG_BORDER_COLOR}</MG_BORDER_COLOR>
+    </ExtendedData1>
+  </VectorLayerDefinition>
+</LayerDefinition>

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/plus.png
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/MapViewer/Resources/plus.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/2.4/MgDev/Desktop/MapViewer/Resources/redline.png
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/MapViewer/Resources/redline.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Modified: branches/2.4/MgDev/Desktop/MapViewer/Strings.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Strings.Designer.cs	2013-09-24 13:24:19 UTC (rev 7870)
+++ branches/2.4/MgDev/Desktop/MapViewer/Strings.Designer.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.5420
+//     Runtime Version:2.0.50727.5472
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -61,6 +61,287 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <CompoundSymbolDefinition>
+        ///                <Name>BOX</Name>
+        ///                <Description>area_box.templ</Description>
+        ///                <SimpleSymbol>
+        ///                  <SimpleSymbolDefinition>
+        ///                    <Name>BOX</Name>
+        ///                    <Description>area_box.templ</Description>
+        ///                    <Graphics>
+        ///                      <Path>
+        ///                        <Geometry>M 0.25,0.0 h 0.25 M 0.25,0.25 h 0.25 M 0.0,0.5 h 0.25 M 0.0,0.75 h 0.25</Geometry>
+        ///   [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_box {
+            get {
+                return ResourceManager.GetString("area_box", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <CompoundSymbolDefinition>
+        ///                <Name>CROSS</Name>
+        ///                <Description>area_cross.templ</Description>
+        ///                <SimpleSymbol>
+        ///                  <SimpleSymbolDefinition>
+        ///                    <Name>CROSS</Name>
+        ///                    <Description>area_cross.templ</Description>
+        ///                    <Graphics>
+        ///                      <Path>
+        ///                        <Geometry>M 0.0,0.0 h 0.125 M 0.25,0.25 h 0.125</Geometry>
+        ///                        <Sca [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_cross {
+            get {
+                return ResourceManager.GetString("area_cross", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <SimpleSymbolDefinition>
+        ///                <Name>DASH</Name>
+        ///                <Description>area_dash.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0.0,0.0 h 0.125 M 0.125,0.125 h 0.125</Geometry>
+        ///                    <ScaleX>%SCALEX0%</ScaleX>
+        ///                    <ScaleY>%SCALEY0%</ScaleY>
+        ///                    <LineColor>%HATCHCOLOR%</LineColor>
+        ///                    <LineCap>%LINECAP0%</LineCap>
+        ///                    [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_dash {
+            get {
+                return ResourceManager.GetString("area_dash", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <CompoundSymbolDefinition>
+        ///                <Name>DOLMIT</Name>
+        ///                <Description>area_dolmit.templ</Description>
+        ///                <SimpleSymbol>
+        ///                  <SimpleSymbolDefinition>
+        ///                    <Name>DOLMIT</Name>
+        ///                    <Description>area_dolmit.templ</Description>
+        ///                    <Graphics>
+        ///                      <Path>
+        ///                        <Geometry>M 0.0,0.0 h 10.0</Geometry>
+        ///                        <ScaleX>%SCALEX0%</Sc [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_dolmit {
+            get {
+                return ResourceManager.GetString("area_dolmit", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <CompoundSymbolDefinition>
+        ///                <Name>HEX</Name>
+        ///                <Description>area_hex.templ</Description>
+        ///                <SimpleSymbol>
+        ///                  <SimpleSymbolDefinition>
+        ///                    <Name>HEX</Name>
+        ///                    <Description>area_hex.templ</Description>
+        ///                    <Graphics>
+        ///                      <Path>
+        ///                        <Geometry>M 0.0,0.0 h 0.125</Geometry>
+        ///                        <ScaleX>%SCALEX0%</ScaleX>
+        ///     [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_hex {
+            get {
+                return ResourceManager.GetString("area_hex", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <SimpleSymbolDefinition>
+        ///                <Name>LINE</Name>
+        ///                <Description>area_line.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0.0,0.0 h 10.0</Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%HATCHCOLOR%</LineColor>
+        ///                    <LineCap>%LINECAP%</LineCap>
+        ///                    <LineJoin>%LINEJOIN%</Lin [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_line {
+            get {
+                return ResourceManager.GetString("area_line", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <SimpleSymbolDefinition>
+        ///                <Name>LINE</Name>
+        ///                <Description>area_line_135.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0.0,0.0 h 10.0</Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%HATCHCOLOR%</LineColor>
+        ///                    <LineCap>%LINECAP%</LineCap>
+        ///                    <LineJoin>%LINEJOIN%< [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_line_135 {
+            get {
+                return ResourceManager.GetString("area_line_135", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <SimpleSymbolDefinition>
+        ///                <Name>LINE</Name>
+        ///                <Description>area_line_45.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0.0,0.0 h 10.0</Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%HATCHCOLOR%</LineColor>
+        ///                    <LineCap>%LINECAP%</LineCap>
+        ///                    <LineJoin>%LINEJOIN%</ [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_line_45 {
+            get {
+                return ResourceManager.GetString("area_line_45", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <SimpleSymbolDefinition>
+        ///                <Name>LINE</Name>
+        ///                <Description>area_line_90.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0.0,0.0 h 10.0</Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%HATCHCOLOR%</LineColor>
+        ///                    <LineCap>%LINECAP%</LineCap>
+        ///                    <LineJoin>%LINEJOIN%</ [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_line_90 {
+            get {
+                return ResourceManager.GetString("area_line_90", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <CompoundSymbolDefinition>
+        ///                <Name>AREA_SYMBOL_FOREGROUND</Name>
+        ///                <Description>area_net.templ</Description>
+        ///                <SimpleSymbol>
+        ///                  <SimpleSymbolDefinition>
+        ///                    <Name>NET</Name>
+        ///                    <Description>area_net.templ</Description>
+        ///                    <Graphics>
+        ///                      <Path>
+        ///                        <Geometry>M 0.0,0.0 h 10.0</Geometry>
+        ///                        <ScaleX>%SCALE [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_net {
+            get {
+                return ResourceManager.GetString("area_net", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <CompoundSymbolDefinition>
+        ///                <Name>SACNCR</Name>
+        ///                <Description>area_sacncr.templ</Description>
+        ///                <SimpleSymbol>
+        ///                  <SimpleSymbolDefinition>
+        ///                    <Name>SACNCR</Name>
+        ///                    <Description>area_sacncr.templ</Description>
+        ///                    <Graphics>
+        ///                      <Path>
+        ///                        <Geometry>M 0.04688,-0.04688 h 0.0</Geometry>
+        ///                        <ScaleX>%SCAL [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_sacncr {
+            get {
+                return ResourceManager.GetString("area_sacncr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <SimpleSymbolDefinition>
+        ///                <Name>AREA_SYMBOL_FOREGROUND</Name>
+        ///                <Description>area_solid.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0.0,0.0 h 100.0 v 100.0 h -100.0 z</Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <FillColor>%FILLCOLOR%</FillColor>
+        ///                    <LineCap>%LINECAP%</LineCap>
+        ///        [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_solid {
+            get {
+                return ResourceManager.GetString("area_solid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <CompoundSymbolDefinition>
+        ///                <Name>SQUARE</Name>
+        ///                <Description>area_square.templ</Description>
+        ///                <SimpleSymbol>
+        ///                  <SimpleSymbolDefinition>
+        ///                    <Name>SQUARE</Name>
+        ///                    <Description>area_square.templ</Description>
+        ///                    <Graphics>
+        ///                      <Path>
+        ///                        <Geometry>M 0.0,0.0 h 0.125</Geometry>
+        ///                        <ScaleX>%SCALEX0%</S [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_square {
+            get {
+                return ResourceManager.GetString("area_square", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SymbolInstance>
+        ///              <SimpleSymbolDefinition>
+        ///                <Name>STEEL</Name>
+        ///                <Description>area_steel.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0.0,0.0 h 10.0 M 0.04419,0.04419 h 10.0</Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%HATCHCOLOR%</LineColor>
+        ///                    <LineCap>%LINECAP%</LineCap>
+        ///                   [rest of string was truncated]";.
+        /// </summary>
+        internal static string area_steel {
+            get {
+                return ResourceManager.GetString("area_steel", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Click to finish.
         /// </summary>
         internal static string CircleDigitizationPrompt {
@@ -70,6 +351,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Are you sure you want to delete the selected redline objects?.
+        /// </summary>
+        internal static string ConfirmDeleteRedlines {
+            get {
+                return ResourceManager.GetString("ConfirmDeleteRedlines", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to {0} features in layer.
         /// </summary>
         internal static string CountFormat {
@@ -286,6 +576,178 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_border.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0,0 L 5,0 M 7.5,0 L 12.5,0 M 15,0 L 15,0 </Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                    <LineWeight>%LINEWEIGHT%</LineWeight>
+        ///                    <LineWeightSc [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_border {
+            get {
+                return ResourceManager.GetString("line_border", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_dash.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0,0 L 6,0</Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                    <LineWeight>%LINEWEIGHT%</LineWeight>
+        ///                    <LineWeightScalable>false</LineWeightScalable>
+        /// [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_dash {
+            get {
+                return ResourceManager.GetString("line_dash", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_dashdot.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0,0 L 5,0 M 7.5,0 L 7.5,0 </Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                    <LineWeight>%LINEWEIGHT%</LineWeight>
+        ///                    <LineWeightScalable>false</ [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_dashdot {
+            get {
+                return ResourceManager.GetString("line_dashdot", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_dashdotdot.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0,0 L 40,0 M 80,0 L 120,0 M 160,0 L 200,0 M 240,0 L 320,0 </Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                    <LineWeight>%LINEWEIGHT%</LineWeight>
+        ///             [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_dashdotdot {
+            get {
+                return ResourceManager.GetString("line_dashdotdot", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_divide.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0,0 L 5,0 M 7.5,0 L 7.5,0 M 10,0 L 10,0 </Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                    <LineWeight>%LINEWEIGHT%</LineWeight>
+        ///                    <LineWeightSca [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_divide {
+            get {
+                return ResourceManager.GetString("line_divide", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_dot.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0,0 L 0,0 </Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                    <LineWeight>%LINEWEIGHT%</LineWeight>
+        ///                    <LineWeightScalable>false</LineWeightScalable>
+        /// [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_dot {
+            get {
+                return ResourceManager.GetString("line_dot", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_fenceline1.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 2.5,0 A 1,1 0 0 0 4.5,-3.67394039744206e-016 M 4.5,-3.67394039744206e-016 A 1,1 0 0 0 2.5,2.44929359829471e-016 </Geometry>
+        ///                    <ScaleX>%SCALEX0%</ScaleX>
+        ///                    <ScaleY>%SCALEY0%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_fenceline1 {
+            get {
+                return ResourceManager.GetString("line_fenceline1", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_rail.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 2.0,0 l 0,2.5 M 2.0,0 l 0,-2.5 </Geometry>
+        ///                    <ScaleX>%SCALEX0%</ScaleX>
+        ///                    <ScaleY>%SCALEY0%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                    <LineWeight>%LINEWEIGHT%</LineWeight>
+        ///                    <LineWeightScalable>fal [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_rail {
+            get {
+                return ResourceManager.GetString("line_rail", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <SimpleSymbolDefinition>
+        ///                <Name>LINE_SYMBOL</Name>
+        ///                <Description>line_solid.templ</Description>
+        ///                <Graphics>
+        ///                  <Path>
+        ///                    <Geometry>M 0.0,0.0 h 4.0</Geometry>
+        ///                    <ScaleX>%SCALEX%</ScaleX>
+        ///                    <ScaleY>%SCALEY%</ScaleY>
+        ///                    <LineColor>%LINECOLOR%</LineColor>
+        ///                    <LineWeight>%LINEWEIGHT%</LineWeight>
+        ///                    <LineWeightScalable>false</LineWeightScala [rest of string was truncated]";.
+        /// </summary>
+        internal static string line_solid {
+            get {
+                return ResourceManager.GetString("line_solid", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Click to finish.
         /// </summary>
         internal static string LineDigitizationPrompt {
@@ -304,6 +766,62 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to <?xml version="1.0" encoding="utf-8"?>
+        ///<FeatureSource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="FeatureSource-1.0.0.xsd">
+        ///  <Provider>%s</Provider>
+        ///  <Parameter>
+        ///    <Name>%s</Name>
+        ///    <Value>%%MG_DATA_FILE_PATH%%%s</Value>
+        ///  </Parameter>
+        ///  %s
+        ///</FeatureSource>.
+        /// </summary>
+        internal static string markupfeaturesource {
+            get {
+                return ResourceManager.GetString("markupfeaturesource", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <?xml version="1.0" encoding="UTF-8"?>
+        ///
+        ///<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>%s</ResourceId>
+        ///    <FeatureName>%s</FeatureName>
+        ///    <FeatureNameType>FeatureClass</FeatureNameType>
+        ///    <PropertyMapping>
+        ///      <Name>Text</Name>
+        ///      <Value>Text</Value>
+        ///    </PropertyMapping>
+        ///    <Geometry>Geometry</Geometr [rest of string was truncated]";.
+        /// </summary>
+        internal static string markuplayerdefinition {
+            get {
+                return ResourceManager.GetString("markuplayerdefinition", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to <?xml version="1.0"?>
+        ///<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.4.0" xsi:noNamespaceSchemaLocation="LayerDefinition-2.4.0.xsd">
+        ///  <VectorLayerDefinition>
+        ///    <ResourceId>#{RESOURCE_ID}</ResourceId>
+        ///    <FeatureName>#{FEATURE_CLASS}</FeatureName>
+        ///    <FeatureNameType>FeatureClass</FeatureNameType>
+        ///    <PropertyMapping>
+        ///      <Name>Text</Name>
+        ///      <Value>Text</Value>
+        ///    </PropertyMapping>
+        ///    <Geometry>Geometry</ [rest of string was truncated]";.
+        /// </summary>
+        internal static string markuplayerdefinition_advanced {
+            get {
+                return ResourceManager.GetString("markuplayerdefinition_advanced", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to File.
         /// </summary>
         internal static string MenuFile {
@@ -412,6 +930,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Redline Layers.
+        /// </summary>
+        internal static string RedlineLayerGroupLabel {
+            get {
+                return ResourceManager.GetString("RedlineLayerGroupLabel", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Set Language.
         /// </summary>
         internal static string SetLanguage {
@@ -421,6 +948,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Specify the text for the selected redline(s).
+        /// </summary>
+        internal static string SpecifyRedlineText {
+            get {
+                return ResourceManager.GetString("SpecifyRedlineText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to {0} features selected.
         /// </summary>
         internal static string StatFeaturesSelected {
@@ -808,6 +1344,24 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Delete Redlines.
+        /// </summary>
+        internal static string TitleDeleteRedlines {
+            get {
+                return ResourceManager.GetString("TitleDeleteRedlines", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Edit Redline Text.
+        /// </summary>
+        internal static string TitleEditRedlineText {
+            get {
+                return ResourceManager.GetString("TitleEditRedlineText", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Error.
         /// </summary>
         internal static string TitleError {
@@ -844,6 +1398,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Redline.
+        /// </summary>
+        internal static string TitleRedline {
+            get {
+                return ResourceManager.GetString("TitleRedline", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Search.
         /// </summary>
         internal static string TitleSearch {

Modified: branches/2.4/MgDev/Desktop/MapViewer/Strings.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Strings.resx	2013-09-24 13:24:19 UTC (rev 7870)
+++ branches/2.4/MgDev/Desktop/MapViewer/Strings.resx	2013-09-26 09:05:10 UTC (rev 7871)
@@ -402,4 +402,101 @@
   <data name="TitleSearch" xml:space="preserve">
     <value>Search</value>
   </data>
+  <data name="TitleRedline" xml:space="preserve">
+    <value>Redline</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="area_box" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_box.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_cross" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_cross.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_dash" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_dash.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_dolmit" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_dolmit.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_hex" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_hex.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_line" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_line.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_line_135" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_line_135.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_line_45" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_line_45.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_line_90" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_line_90.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_net" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_net.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_sacncr" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_sacncr.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_solid" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_solid.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_square" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_square.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="area_steel" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\area_steel.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_border" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_border.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_dash" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_dash.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_dashdot" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_dashdot.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_dashdotdot" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_dashdotdot.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_divide" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_divide.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_dot" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_dot.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_fenceline1" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_fenceline1.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_rail" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_rail.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="line_solid" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\line_solid.templ;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="markupfeaturesource" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\markupfeaturesource.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="markuplayerdefinition" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\markuplayerdefinition.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="markuplayerdefinition_advanced" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\markuplayerdefinition_advanced.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
+  </data>
+  <data name="RedlineLayerGroupLabel" xml:space="preserve">
+    <value>Redline Layers</value>
+  </data>
+  <data name="ConfirmDeleteRedlines" xml:space="preserve">
+    <value>Are you sure you want to delete the selected redline objects?</value>
+  </data>
+  <data name="SpecifyRedlineText" xml:space="preserve">
+    <value>Specify the text for the selected redline(s)</value>
+  </data>
+  <data name="TitleDeleteRedlines" xml:space="preserve">
+    <value>Delete Redlines</value>
+  </data>
+  <data name="TitleEditRedlineText" xml:space="preserve">
+    <value>Edit Redline Text</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/Util.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Util.cs	2013-09-24 13:24:19 UTC (rev 7870)
+++ branches/2.4/MgDev/Desktop/MapViewer/Util.cs	2013-09-26 09:05:10 UTC (rev 7871)
@@ -22,6 +22,41 @@
             return "POLYGON((" + x1str + " " + y1str + ", " + x2str + " " + y1str + ", " + x2str + " " + y2str + ", " + x1str + " " + y2str + ", " + x1str + " " + y1str + "))"; //NOXLATE
         }
 
+        /// <summary>
+        /// Perform sprintf-style substitution of the given template with the given values.
+        /// </summary>
+        /// <param name="templ"></param>
+        /// <param name="vals"></param>
+        /// <returns></returns>
+        public static string Substitute(String templ, String[] vals)
+        {
+            StringBuilder res = new StringBuilder();
+            int index = 0, val = 0;
+            bool found;
+            do
+            {
+                found = false;
+                int i = templ.IndexOf('%', index);
+                if(i != -1)
+                {
+                    found = true;
+                    res.Append(templ.Substring(index, i - index));
+                    if(i < templ.Length - 1)
+                    {
+                        if(templ[i+1] == '%')
+                            res.Append('%');
+                        else if(templ[i+1] == 's')
+                            res.Append(vals[val ++]);
+                        else
+                            res.Append('@');    //add a character illegal in jscript so we know the template was incorrect
+                        index = i + 2;
+                    }
+                }
+            } while(found);
+            res.Append(templ.Substring(index));
+            return res.ToString();
+        }
+
         public static string ToHtmlColor(Color color)
         {
             return String.Format("{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B); //NOXLATE
@@ -34,6 +69,19 @@
 
         public static Color FromHtmlColor(string html)
         {
+            return FromHtmlColor(html, true);
+        }
+
+        public static Color FromHtmlColor(string html, bool keepAlpha)
+        {
+            //Replace alpha if discarding
+            if (!keepAlpha && html.Length == 8)
+                html = "FF" + html.Substring(2);
+
+            //Put stubbed alpha if missing
+            if (html.Length == 6)
+                html = "FF" + html;
+
             int rgb = int.Parse(html, System.Globalization.NumberStyles.HexNumber);
             return Color.FromArgb(rgb);
         }

Modified: branches/2.4/MgDev/Desktop/MgAppLayout/Sheboygan.AppLayout
===================================================================
--- branches/2.4/MgDev/Desktop/MgAppLayout/Sheboygan.AppLayout	2013-09-24 13:24:19 UTC (rev 7870)
+++ branches/2.4/MgDev/Desktop/MgAppLayout/Sheboygan.AppLayout	2013-09-26 09:05:10 UTC (rev 7871)
@@ -79,6 +79,10 @@
             <ShowLabel>false</ShowLabel>
           </ItemBase>
           <ItemBase xsi:type="CommandItem">
+            <ComponentID>Redline</ComponentID>
+            <ShowLabel>false</ShowLabel>
+          </ItemBase>
+          <ItemBase xsi:type="CommandItem">
             <ComponentID>Measure</ComponentID>
             <ShowLabel>false</ShowLabel>
           </ItemBase>
@@ -181,6 +185,10 @@
             <ShowLabel>false</ShowLabel>
           </ItemBase>
           <ItemBase xsi:type="CommandItem">
+            <ComponentID>Redline</ComponentID>
+            <ShowLabel>false</ShowLabel>
+          </ItemBase>
+          <ItemBase xsi:type="CommandItem">
             <ComponentID>Query</ComponentID>
             <ShowLabel>false</ShowLabel>
           </ItemBase>
@@ -251,6 +259,10 @@
             <ShowLabel>false</ShowLabel>
           </ItemBase>
           <ItemBase xsi:type="CommandItem">
+            <ComponentID>Redline</ComponentID>
+            <ShowLabel>false</ShowLabel>
+          </ItemBase>
+          <ItemBase xsi:type="CommandItem">
             <ComponentID>Measure</ComponentID>
             <ShowLabel>false</ShowLabel>
           </ItemBase>
@@ -293,6 +305,10 @@
           <ShowLabel>false</ShowLabel>
         </ItemBase>
         <ItemBase xsi:type="CommandItem">
+          <ComponentID>Redline</ComponentID>
+          <ShowLabel>false</ShowLabel>
+        </ItemBase>
+        <ItemBase xsi:type="CommandItem">
           <ComponentID>Query</ComponentID>
           <ShowLabel>false</ShowLabel>
         </ItemBase>
@@ -336,6 +352,16 @@
       </Properties>
     </ComponentDefinition>
     <ComponentDefinition>
+      <ComponentID>Redline</ComponentID>
+      <ClassName>OSGeo.MapGuide.Viewer.MgRedlineComponent</ClassName>
+      <Properties>
+        <NameValue>
+          <Name>Target</Name>
+          <Value>enum:OSGeo.MapGuide.Viewer.MgViewerTarget:TaskPane</Value>
+        </NameValue>
+      </Properties>
+    </ComponentDefinition>
+    <ComponentDefinition>
       <ComponentID>SelectRadius</ComponentID>
       <ClassName>OSGeo.MapGuide.Viewer.MgCircleSelectComponent</ClassName>
     </ComponentDefinition>

Modified: branches/2.4/MgDev/Desktop/MgAppLayout/SheboyganTiled.AppLayout
===================================================================
--- branches/2.4/MgDev/Desktop/MgAppLayout/SheboyganTiled.AppLayout	2013-09-24 13:24:19 UTC (rev 7870)
+++ branches/2.4/MgDev/Desktop/MgAppLayout/SheboyganTiled.AppLayout	2013-09-26 09:05:10 UTC (rev 7871)
@@ -79,6 +79,10 @@
             <ShowLabel>false</ShowLabel>
           </ItemBase>
           <ItemBase xsi:type="CommandItem">
+            <ComponentID>Redline</ComponentID>
+            <ShowLabel>false</ShowLabel>
+          </ItemBase>
+          <ItemBase xsi:type="CommandItem">
             <ComponentID>Measure</ComponentID>
             <ShowLabel>false</ShowLabel>
           </ItemBase>
@@ -177,6 +181,10 @@
             <ShowLabel>false</ShowLabel>
           </ItemBase>
           <ItemBase xsi:type="CommandItem">
+            <ComponentID>Redline</ComponentID>
+            <ShowLabel>false</ShowLabel>
+          </ItemBase>
+          <ItemBase xsi:type="CommandItem">
             <ComponentID>Measure</ComponentID>
             <ShowLabel>false</ShowLabel>
           </ItemBase>
@@ -281,6 +289,10 @@
           <ShowLabel>false</ShowLabel>
         </ItemBase>
         <ItemBase xsi:type="CommandItem">
+          <ComponentID>Redline</ComponentID>
+          <ShowLabel>false</ShowLabel>
+        </ItemBase>
+        <ItemBase xsi:type="CommandItem">
           <ComponentID>Measure</ComponentID>
           <ShowLabel>false</ShowLabel>
         </ItemBase>
@@ -324,6 +336,16 @@
       </Properties>
     </ComponentDefinition>
     <ComponentDefinition>
+      <ComponentID>Redline</ComponentID>
+      <ClassName>OSGeo.MapGuide.Viewer.MgRedlineComponent</ClassName>
+      <Properties>
+        <NameValue>
+          <Name>Target</Name>
+          <Value>enum:OSGeo.MapGuide.Viewer.MgViewerTarget:TaskPane</Value>
+        </NameValue>
+      </Properties>
+    </ComponentDefinition>
+    <ComponentDefinition>
       <ComponentID>SelectRadius</ComponentID>
       <ClassName>OSGeo.MapGuide.Viewer.MgCircleSelectComponent</ClassName>
     </ComponentDefinition>



More information about the mapguide-commits mailing list