[mapguide-commits] r6612 - in branches/2.4/MgDev/Desktop: MapViewer MapViewer/Properties MapViewer/Resources MapViewer/Tasks MapViewerTest MapViewerTest/Properties MapViewerTest/Resources

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri May 4 13:59:22 EDT 2012


Author: jng
Date: 2012-05-04 10:59:22 -0700 (Fri, 04 May 2012)
New Revision: 6612

Added:
   branches/2.4/MgDev/Desktop/MapViewer/BaseInteractionComponents.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgMeasureComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/Resources/icon_home.gif
   branches/2.4/MgDev/Desktop/MapViewer/Resources/icon_tasks.gif
   branches/2.4/MgDev/Desktop/MapViewer/Resources/load_package.gif
   branches/2.4/MgDev/Desktop/MapViewer/Resources/monitor_status.gif
   branches/2.4/MgDev/Desktop/MapViewer/Resources/view_log.gif
   branches/2.4/MgDev/Desktop/MapViewer/Tasks/
   branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.cs
   branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.resx
   branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.cs
   branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.resx
   branches/2.4/MgDev/Desktop/MapViewerTest/Resources/icon_home.gif
   branches/2.4/MgDev/Desktop/MapViewerTest/Resources/icon_tasks.gif
Removed:
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferControl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgMeasureControl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryControl.cs
   branches/2.4/MgDev/Desktop/MapViewerTest/Form1.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewerTest/Form1.cs
   branches/2.4/MgDev/Desktop/MapViewerTest/Form1.resx
Modified:
   branches/2.4/MgDev/Desktop/MapViewer/IMapViewer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.resx
   branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx
   branches/2.4/MgDev/Desktop/MapViewerTest/MapViewerTest.csproj
   branches/2.4/MgDev/Desktop/MapViewerTest/Program.cs
   branches/2.4/MgDev/Desktop/MapViewerTest/Properties/Resources.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewerTest/Properties/Resources.resx
Log:
Another mg-desktop mega-submission:
 - Componentize all the existing map functionality. All the existing functionality now exists in the form of MgComponent derived classes that can be dragged and dropped into a form from the VS toolbox:
   - Zoom In
   - Zoom Out
   - Zoom Extents
   - Select
   - Select Radius
   - Select Polygon
   - Refresh Map
   - Clear Selection
   - Tooltip toggle
   - Copy Map
   - Pan
 - Add new components:
   - Viewer Options
   - Load Package
   - Zoom to Selection
 - Add a MgTaskPane control which serves as the contextual parent container for UI-based components (Query, Measure, Buffer, Viewer Options)

As a result of this componentization, a mg-desktop viewer application can be assembled together drag-and-drop style with the WinForms designer with minimal amount of code (kind of like ... a Web Layout). The MapViewerTest application has been updated to reflect this.


Added: branches/2.4/MgDev/Desktop/MapViewer/BaseInteractionComponents.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/BaseInteractionComponents.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/BaseInteractionComponents.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,399 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    [ToolboxItem(true)]
+    public class MgCopyMapComponent : MgComponent
+    {
+        public MgCopyMapComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextCopyMap;
+            this.Icon = Properties.Resources.edit_copy;
+        }
+
+        public override void Invoke()
+        {
+            this.Viewer.CopyMap();
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgZoomInComponent : MgMapActiveToolComponent
+    {
+        public MgZoomInComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextZoomIn;
+            this.Icon = Properties.Resources.zoom_in_fixed;
+        }
+
+        protected override MapActiveTool Tool
+        {
+            get
+            {
+                return MapActiveTool.ZoomIn;
+            }
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgZoomOutComponent : MgComponent //We derive from MgComponent instead of MgMapActiveToolComponent because we have special invocation logic
+    {
+        public MgZoomOutComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextZoomOut;
+            this.Icon = Properties.Resources.zoom_out_fixed;
+        }
+
+        public ZoomOutMode ZoomOutMode
+        {
+            get;
+            set;
+        }
+
+        protected override void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "ActiveTool")
+            {
+                var state = (this.Viewer.ActiveTool == MapActiveTool.ZoomOut);
+                foreach (var l in _listeners)
+                    l.SetActive(state);
+            }
+            base.OnViewerPropertyChanged(sender, e);
+        }
+
+        public override void Invoke()
+        {
+            var viewer = this.Viewer;
+            if (this.ZoomOutMode == ZoomOutMode.ClickToZoom)
+            {
+                viewer.ActiveTool = MapActiveTool.ZoomOut;
+            }
+            else
+            {
+                var map = viewer.GetMap();
+                var centerPt = map.ViewCenter;
+                var centerCoord = centerPt.Coordinate;
+
+                viewer.ZoomToView(centerCoord.X, centerCoord.Y, map.ViewScale * viewer.ZoomOutFactor, true);
+            }
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgZoomToSelectionComponent : MgComponent
+    {
+        private MgAgfReaderWriter _agfRw;
+
+        public MgZoomToSelectionComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextZoomToSelection;
+            this.Icon = Properties.Resources.icon_zoomselect;
+            this.Disposed += new EventHandler(OnDisposed);
+        }
+
+        void OnDisposed(object sender, EventArgs e)
+        {
+            if (_agfRw != null)
+                _agfRw.Dispose();
+
+            _agfRw = null;
+        }
+
+        public override void Invoke()
+        {
+            var viewer = this.Viewer;
+            var sel = viewer.GetSelection();
+            var selLayers = sel.GetLayers();
+
+            if (selLayers == null)
+            {
+                MessageBox.Show(Properties.Resources.TextNoSelection);
+                return;
+            }
+
+            //This doesn't work :(
+            //
+            //var provider = viewer.GetProvider();
+            //var featSvc = (MgFeatureService)provider.CreateService(MgServiceType.FeatureService);
+            //var ext = sel.GetExtents(featSvc);
+            //var ll = ext.LowerLeftCoordinate;
+            //var ur = ext.UpperRightCoordinate;
+            //viewer.ZoomToExtents(ll.X, ll.Y, ur.X, ur.Y);
+            MgEnvelope env = new MgEnvelope();
+            if (_agfRw == null)
+                _agfRw = new MgAgfReaderWriter();
+            for (var i = 0; i < selLayers.GetCount(); i++)
+            {
+                var layer = selLayers.GetItem(i);
+                var fr = sel.GetSelectedFeatures(layer, layer.FeatureClassName, false);
+                try
+                {
+                    string geomName = layer.GetFeatureGeometryName();
+                    while (fr.ReadNext())
+                    {
+                        if (!fr.IsNull(geomName))
+                        {
+                            MgByteReader agf = null;
+                            MgGeometry geom = null;
+                            try 
+                            {
+                                agf = fr.GetGeometry(geomName);
+                                geom = _agfRw.Read(agf);
+                                env.ExpandToInclude(geom.Envelope());
+                            } 
+                            finally 
+                            {
+                                if (agf != null)
+                                {
+                                    agf.Dispose();
+                                    agf = null;
+                                }
+                                if (geom != null)
+                                {
+                                    geom.Dispose();
+                                    geom = null;
+                                }
+                            }
+                        }
+                    }
+                }
+                finally
+                {
+                    fr.Close();
+                }
+            }
+            var ll = env.LowerLeftCoordinate;
+            var ur = env.UpperRightCoordinate;
+            viewer.ZoomToExtents(ll.X, ll.Y, ur.X, ur.Y);
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgInitialViewComponent : MgComponent
+    {
+        public MgInitialViewComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextZoomExtents;
+            this.Icon = Properties.Resources.zoom_full;
+        }
+
+        public override void Invoke()
+        {
+            this.Viewer.InitialMapView();
+        }
+    }
+
+    [ToolboxItem(false)]
+    public class MgMapActiveToolComponent : MgComponent
+    {
+        protected override void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            base.OnViewerPropertyChanged(sender, e);
+            if (e.PropertyName == "ActiveTool")
+            {
+                ViewerActiveToolChanged(this.Viewer.ActiveTool);
+            }
+        }
+
+        protected virtual MapActiveTool Tool { get { throw new NotImplementedException(); } }
+
+        public override void Invoke()
+        {
+            this.Viewer.ActiveTool = this.Tool;
+        }
+
+        private void ViewerActiveToolChanged(MapActiveTool activeTool) 
+        {
+            var state = (this.Tool == activeTool);
+            foreach (var l in _listeners)
+            {
+                l.SetActive(state);
+            }
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgSelectComponent : MgMapActiveToolComponent
+    {
+        public MgSelectComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextSelect;
+            this.Icon = Properties.Resources.select_features;
+        }
+
+        protected override MapActiveTool Tool
+        {
+            get
+            {
+                return MapActiveTool.Select;
+            }
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgCircleSelectComponent : MgComponent
+    {
+        private MgWktReaderWriter _wktRw; //We lazy init this to avoid complications with the WinForms designer
+
+        public MgCircleSelectComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextSelectRadius;
+            this.Icon = Properties.Resources.select_radius;
+            this.Disposed += new EventHandler(OnDisposed);
+        }
+
+        void OnDisposed(object sender, EventArgs e)
+        {
+            if (_wktRw != null)
+            {
+                _wktRw.Dispose();
+                _wktRw = null;
+            }
+        }
+
+        static string MakeWktCircle(double x, double y, double r)
+        {
+            return "CURVEPOLYGON ((" + (x - r) + " " + y + " (CIRCULARARCSEGMENT (" + x + " " + (y - r) + ", " + (x + r) + " " + y + "), CIRCULARARCSEGMENT (" + x + " " + (y + r) + ", " + (x - r) + " " + y + "))))";
+        }
+
+        public override void Invoke()
+        {
+            var viewer = this.Viewer;
+            viewer.DigitizeCircle((x, y, r) =>
+            {
+                if (_wktRw == null)
+                    _wktRw = new MgWktReaderWriter();
+
+                MgGeometry geom = _wktRw.Read(MakeWktCircle(x, y, r));
+                viewer.SelectByGeometry(geom);
+            });
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgPolygonSelectComponent : MgComponent
+    {
+        private MgGeometryFactory _geomFact; //We lazy init this to avoid complications with the WinForms designer
+
+        public MgPolygonSelectComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextSelectPolygon;
+            this.Icon = Properties.Resources.select_polygon;
+            this.Disposed += new EventHandler(OnDisposed);
+        }
+
+        void OnDisposed(object sender, EventArgs e)
+        {
+            if (_geomFact != null)
+            {
+                _geomFact.Dispose();
+                _geomFact = null;
+            }
+        }
+
+        public override void Invoke()
+        {
+            var viewer = this.Viewer;
+            viewer.DigitizePolygon((coordinates) =>
+            {
+                if (_geomFact == null)
+                    _geomFact = new MgGeometryFactory();
+
+                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);
+                viewer.SelectByGeometry(poly);
+            });
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgPanComponent : MgMapActiveToolComponent
+    {
+        public MgPanComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextPan;
+            this.Icon = Properties.Resources.icon_pan;
+        }
+
+        protected override MapActiveTool Tool
+        {
+            get
+            {
+                return MapActiveTool.Pan;
+            }
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgClearSelectionComponent : MgComponent
+    {
+        public MgClearSelectionComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextClearSelection;
+            this.Icon = Properties.Resources.select_clear;
+        }
+
+        public override void Invoke()
+        {
+            this.Viewer.ClearSelection();
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgRefreshMapComponent : MgComponent
+    {
+        public MgRefreshMapComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextRefreshMap;
+            this.Icon = Properties.Resources.view_refresh;
+        }
+
+        public override void Invoke()
+        {
+            this.Viewer.RefreshMap();
+        }
+    }
+
+    [ToolboxItem(true)]
+    public class MgTooltipToggleComponent : MgComponent
+    {
+        public MgTooltipToggleComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextEnableTooltips;
+            this.Icon = Properties.Resources.ui_tooltip_balloon_bottom;
+        }
+
+        public override void Invoke()
+        {
+            var viewer = this.Viewer;
+            viewer.FeatureTooltipsEnabled = !viewer.FeatureTooltipsEnabled;
+
+            if (viewer.FeatureTooltipsEnabled)
+            {
+                this.Label = this.ToolTipText = Properties.Resources.TextDisableTooltips;
+                this.Icon = Properties.Resources.ui_tooltip_balloon_bottom;
+            }
+            else
+            {
+                this.Label = this.ToolTipText = Properties.Resources.TextEnableTooltips;
+                this.Icon = Properties.Resources.ui_tooltip_balloon_bottom;
+            }
+            //Update subscribers
+            foreach (var l in _listeners)
+            {
+                l.SetText(this.Label);
+                l.SetIcon(this.Icon);
+            }
+        }
+    }
+}

Modified: branches/2.4/MgDev/Desktop/MapViewer/IMapViewer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/IMapViewer.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/IMapViewer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -266,6 +266,18 @@
         /// <param name="urx"></param>
         /// <param name="ury"></param>
         void ZoomToExtents(double llx, double lly, double urx, double ury);
+
+        /// <summary>
+        /// Gets or sets whether to show vertex coordinates when digitizing
+        /// </summary>
+        bool ShowVertexCoordinatesWhenDigitizing { get; set; }
+
+        /// <summary>
+        /// Gets or sets whether to convert tiled layers to non-tiled layers. This is a workaround
+        /// setting for tiled maps to be displayed as viewer support for tiled layers is still not
+        /// implemented
+        /// </summary>
+        bool ConvertTiledGroupsToNonTiled { get; set; }
     }
 
     /// <summary>

Modified: branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj	2012-05-04 17:59:22 UTC (rev 6612)
@@ -53,11 +53,15 @@
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Data" />
+    <Reference Include="System.Design" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="BaseInteractionComponents.cs">
+      <SubType>Component</SubType>
+    </Compile>
     <Compile Include="Debug.Designer.cs">
       <AutoGen>True</AutoGen>
       <DesignTime>True</DesignTime>
@@ -72,7 +76,7 @@
     <Compile Include="MgComponent.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="MgBufferControl.cs">
+    <Compile Include="MgBufferComponent.cs">
       <SubType>Component</SubType>
     </Compile>
     <Compile Include="MgBufferControlImpl.cs">
@@ -87,6 +91,9 @@
     <Compile Include="MgDefaultToolbar.cs">
       <SubType>Component</SubType>
     </Compile>
+    <Compile Include="MgGenericInvokeComponent.cs">
+      <SubType>Component</SubType>
+    </Compile>
     <Compile Include="MgInvokeComponent.cs">
       <SubType>Component</SubType>
     </Compile>
@@ -96,6 +103,9 @@
     <Compile Include="MgLineMeasureControlImpl.Designer.cs">
       <DependentUpon>MgLineMeasureControlImpl.cs</DependentUpon>
     </Compile>
+    <Compile Include="MgLoadPackageComponent.cs">
+      <SubType>Component</SubType>
+    </Compile>
     <Compile Include="MgMapViewer.cs">
       <SubType>Component</SubType>
     </Compile>
@@ -107,7 +117,7 @@
       <DependentUpon>MgLegend.cs</DependentUpon>
     </Compile>
     <Compile Include="MgMapViewerProvider.cs" />
-    <Compile Include="MgMeasureControl.cs">
+    <Compile Include="MgMeasureComponent.cs">
       <SubType>Component</SubType>
     </Compile>
     <Compile Include="MgPropertyPane.cs">
@@ -116,7 +126,7 @@
     <Compile Include="MgPropertyPane.Designer.cs">
       <DependentUpon>MgPropertyPane.cs</DependentUpon>
     </Compile>
-    <Compile Include="MgQueryControl.cs">
+    <Compile Include="MgQueryComponent.cs">
       <SubType>Component</SubType>
     </Compile>
     <Compile Include="MgQueryControlImpl.cs">
@@ -132,12 +142,33 @@
       <DependentUpon>MgQueryResultsDialog.cs</DependentUpon>
     </Compile>
     <Compile Include="MgReadOnlyStream.cs" />
+    <Compile Include="MgTaskPane.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="MgTaskPane.Designer.cs">
+      <DependentUpon>MgTaskPane.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MgViewerOptionsComponent.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="MgViewerOptionsControlImpl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="MgViewerOptionsControlImpl.Designer.cs">
+      <DependentUpon>MgViewerOptionsControlImpl.cs</DependentUpon>
+    </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Properties\Resources.Designer.cs">
       <AutoGen>True</AutoGen>
       <DesignTime>True</DesignTime>
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
+    <Compile Include="Tasks\MgTaskPaneStub.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Tasks\MgTaskPaneStub.Designer.cs">
+      <DependentUpon>MgTaskPaneStub.cs</DependentUpon>
+    </Compile>
     <Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
   </ItemGroup>
   <ItemGroup>
@@ -163,10 +194,19 @@
     <EmbeddedResource Include="MgQueryResultsDialog.resx">
       <DependentUpon>MgQueryResultsDialog.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="MgTaskPane.resx">
+      <DependentUpon>MgTaskPane.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MgViewerOptionsControlImpl.resx">
+      <DependentUpon>MgViewerOptionsControlImpl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <EmbeddedResource Include="Tasks\MgTaskPaneStub.resx">
+      <DependentUpon>MgTaskPaneStub.cs</DependentUpon>
+    </EmbeddedResource>
   </ItemGroup>
   <ItemGroup>
     <None Include="Resources\lc_broken.gif" />
@@ -356,6 +396,11 @@
   </ItemGroup>
   <ItemGroup>
     <Content Include="Resources\AreaLayerDef.txt" />
+    <None Include="Resources\view_log.gif" />
+    <None Include="Resources\monitor_status.gif" />
+    <None Include="Resources\load_package.gif" />
+    <None Include="Resources\icon_home.gif" />
+    <None Include="Resources\icon_tasks.gif" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

Added: branches/2.4/MgDev/Desktop/MapViewer/MgBufferComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferComponent.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferComponent.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    /// <summary>
+    /// A generic component that generates buffers from selected features on the map
+    /// </summary>
+    [ToolboxItem(true)]
+    public class MgBufferComponent : MgViewerComponent
+    {
+        public MgBufferComponent()
+        {
+            this.Icon = Properties.Resources.buffer;
+            this.Label = Properties.Resources.TitleBuffer;
+            this.DefaultLayerName = "Buffer 1";
+            this.DefaultBufferUnits = MeasurementUnit.Meters;
+        }
+
+        [Description("The default name of the buffer layer that is created")]
+        public string DefaultLayerName { get; set; }
+
+        [Description("The default buffer unit selection")]
+        public MeasurementUnit DefaultBufferUnits { get; set; }
+
+        protected override MgControlImpl CreateControlImpl()
+        {
+            return new MgBufferControlImpl(this.Viewer, this.DefaultLayerName, this.DefaultBufferUnits);
+        }
+    }
+}

Deleted: branches/2.4/MgDev/Desktop/MapViewer/MgBufferControl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferControl.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferControl.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ComponentModel;
-
-namespace OSGeo.MapGuide.Viewer
-{
-    /// <summary>
-    /// A generic component that generates buffers from selected features on the map
-    /// </summary>
-    [ToolboxItem(true)]
-    public class MgBufferControl : MgViewerComponent
-    {
-        public MgBufferControl()
-        {
-            this.Icon = Properties.Resources.buffer;
-            this.Label = Properties.Resources.TitleBuffer;
-        }
-
-        protected override MgControlImpl CreateControlImpl()
-        {
-            return new MgBufferControlImpl(this.Viewer);
-        }
-
-        protected override void SubscribeViewerEvents(IMapViewer viewer)
-        {
-            base.SubscribeViewerEvents(viewer);
-        }
-
-        protected override void UnsubscribeViewerEvents(IMapViewer viewer)
-        {
-            base.UnsubscribeViewerEvents(viewer);
-        }
-    }
-}

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.Designer.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -71,8 +71,8 @@
             // 
             // groupBox1
             // 
-            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.groupBox1.Controls.Add(this.lstLayers);
             this.groupBox1.Controls.Add(this.label2);
             this.groupBox1.Controls.Add(this.cmbUnits);
@@ -88,9 +88,9 @@
             // 
             // lstLayers
             // 
-            this.lstLayers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.lstLayers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.lstLayers.FormattingEnabled = true;
             this.lstLayers.Location = new System.Drawing.Point(9, 126);
             this.lstLayers.Name = "lstLayers";
@@ -108,8 +108,8 @@
             // 
             // cmbUnits
             // 
-            this.cmbUnits.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.cmbUnits.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.cmbUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbUnits.FormattingEnabled = true;
             this.cmbUnits.Location = new System.Drawing.Point(105, 66);
@@ -119,6 +119,7 @@
             // 
             // numBufferDistance
             // 
+            this.numBufferDistance.DecimalPlaces = 7;
             this.numBufferDistance.Location = new System.Drawing.Point(9, 67);
             this.numBufferDistance.Maximum = new decimal(new int[] {
             100000,
@@ -156,8 +157,8 @@
             // 
             // groupBox2
             // 
-            this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.groupBox2.Controls.Add(this.btnFillBackColor);
             this.groupBox2.Controls.Add(this.pnlFillBackColor);
             this.groupBox2.Controls.Add(this.label10);
@@ -263,8 +264,8 @@
             // 
             // groupBox3
             // 
-            this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.groupBox3.Controls.Add(this.numLineThickness);
             this.groupBox3.Controls.Add(this.cmbBorderPattern);
             this.groupBox3.Controls.Add(this.label6);
@@ -352,9 +353,9 @@
             // 
             // groupBox4
             // 
-            this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.groupBox4.Controls.Add(this.chkMergeBuffers);
             this.groupBox4.Controls.Add(this.txtBufferLayer);
             this.groupBox4.Controls.Add(this.label9);
@@ -393,7 +394,7 @@
             this.label9.TabIndex = 0;
             this.label9.Text = "Buffer Layer Name:";
             // 
-            // MgBufferControl
+            // MgBufferControlImpl
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
@@ -402,7 +403,7 @@
             this.Controls.Add(this.groupBox3);
             this.Controls.Add(this.groupBox2);
             this.Controls.Add(this.groupBox1);
-            this.Name = "MgBufferControl";
+            this.Name = "MgBufferControlImpl";
             this.Size = new System.Drawing.Size(232, 601);
             this.groupBox1.ResumeLayout(false);
             this.groupBox1.PerformLayout();

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -16,7 +16,7 @@
         private MgFeatureService _featSvc;
         private string _sessionId;
 
-        public MgBufferControlImpl(IMapViewer viewer)
+        public MgBufferControlImpl(IMapViewer viewer, string defaultLayerName, MeasurementUnit units)
         {
             InitializeComponent();
             this.Title = Properties.Resources.TitleBuffer;
@@ -27,7 +27,7 @@
             _featSvc = (MgFeatureService)provider.CreateService(MgServiceType.FeatureService);
 
             cmbUnits.DataSource = Enum.GetValues(typeof(MeasurementUnit));
-            cmbUnits.SelectedItem = MeasurementUnit.Kilometers;
+            cmbUnits.SelectedItem = units;
             cmbBorderPattern.DataSource = Enum.GetValues(typeof(StockPattern));
             cmbFillPattern.DataSource = Enum.GetValues(typeof(StockPattern));
 
@@ -41,6 +41,8 @@
             numFillTransparency.Value = 50;
             numLineThickness.Value = 1;
 
+            txtBufferLayer.Text = defaultLayerName;
+
             _viewer.SelectionChanged += new EventHandler(OnViewerSelectedChanged);
             OnViewerSelectedChanged(this, EventArgs.Empty);
         }
@@ -90,296 +92,304 @@
 
         private void btnCreate_Click(object sender, EventArgs e)
         {
-            var layerName = txtBufferLayer.Text.Trim();
-            if (string.IsNullOrEmpty(layerName))
+            btnCreate.Enabled = false;
+            try
             {
-                MessageBox.Show("Please enter a name for this layer");
-                return;
-            }
+                var layerName = txtBufferLayer.Text.Trim();
+                if (string.IsNullOrEmpty(layerName))
+                {
+                    MessageBox.Show("Please enter a name for this layer");
+                    return;
+                }
 
-            if (lstLayers.SelectedItems.Count == 0)
-            {
-                MessageBox.Show("Please include one or more layers to create a buffer from");
-                return;
-            }
+                if (lstLayers.SelectedItems.Count == 0)
+                {
+                    MessageBox.Show("Please include one or more layers to create a buffer from");
+                    return;
+                }
 
-            var map = _viewer.GetMap();
-            var layers = map.GetLayers();
-            var provider = _viewer.GetProvider();
+                var map = _viewer.GetMap();
+                var layers = map.GetLayers();
+                var provider = _viewer.GetProvider();
 
-            //From here, it's the same logic as buffer.aspx in .net MapGuide AJAX viewer
-            MgResourceIdentifier fsId = new MgResourceIdentifier("Session:" + _sessionId + "//" + txtBufferLayer.Text + "_Buffer.FeatureSource");
-            MgResourceIdentifier ldfId = new MgResourceIdentifier("Session:" + _sessionId + "//" + txtBufferLayer.Text + "_Buffer.LayerDefinition");
+                //From here, it's the same logic as buffer.aspx in .net MapGuide AJAX viewer
+                MgResourceIdentifier fsId = new MgResourceIdentifier("Session:" + _sessionId + "//" + txtBufferLayer.Text + "_Buffer.FeatureSource");
+                MgResourceIdentifier ldfId = new MgResourceIdentifier("Session:" + _sessionId + "//" + txtBufferLayer.Text + "_Buffer.LayerDefinition");
 
-            MgLayerBase layer = FindLayer(layers, txtBufferLayer.Text);
-            string[] layerNames = GetLayerNames();
+                MgLayerBase layer = FindLayer(layers, txtBufferLayer.Text);
+                string[] layerNames = GetLayerNames();
 
-            double distance = Convert.ToDouble(numBufferDistance.Value);
-            MeasurementUnit bUnits = (MeasurementUnit)cmbUnits.SelectedItem;
-            switch (bUnits)
-            {
-                case MeasurementUnit.Feet:
-                    distance *= 0.30480;
-                    break;
-                case MeasurementUnit.Kilometers:
-                    distance *= 1000;
-                    break;
-                case MeasurementUnit.Miles:
-                    distance *= 1609.35;
-                    break;
-            }
+                double distance = Convert.ToDouble(numBufferDistance.Value);
+                MeasurementUnit bUnits = (MeasurementUnit)cmbUnits.SelectedItem;
+                switch (bUnits)
+                {
+                    case MeasurementUnit.Feet:
+                        distance *= 0.30480;
+                        break;
+                    case MeasurementUnit.Kilometers:
+                        distance *= 1000;
+                        break;
+                    case MeasurementUnit.Miles:
+                        distance *= 1609.35;
+                        break;
+                }
 
-            String srsDefMap = GetMapSrs(map);
-            MgCoordinateSystem srsMap = provider.GetMapCoordinateSystem();
-            string mapSrsUnits = "";
-            bool arbitraryMapSrs = (srsMap.GetType() == MgCoordinateSystemType.Arbitrary);
-            if (arbitraryMapSrs)
-                mapSrsUnits = srsMap.GetUnits();
+                String srsDefMap = GetMapSrs(map);
+                MgCoordinateSystem srsMap = provider.GetMapCoordinateSystem();
+                string mapSrsUnits = "";
+                bool arbitraryMapSrs = (srsMap.GetType() == MgCoordinateSystemType.Arbitrary);
+                if (arbitraryMapSrs)
+                    mapSrsUnits = srsMap.GetUnits();
 
-            String xtrans = String.Format("{0:x2}", ((int)(255 * Convert.ToInt32(numFillTransparency.Value) / 100)));
-            var lineColor = ToHtmlColor(pnlBorderColor.BackColor);
-            var foreColor = ToHtmlColor(pnlFillColor.BackColor);
-            var backColor = ToHtmlColor(pnlFillBackColor.BackColor);
-            String layerTempl = string.Format(Properties.Resources.AreaLayerDef,
-                    fsId.ToString(),
-                    "BufferSchema:Buffer",
-                    "GEOM",
-                    cmbFillPattern.SelectedItem,
-                    xtrans + foreColor,
-                    ((0 != 1/*transparent*/) ? "ff" : "00") + backColor,
-                    cmbBorderPattern.SelectedItem,
-                    numLineThickness.Value.ToString(NumberFormatInfo.InvariantInfo),
-                    lineColor
-            );
-            byte[] bytes = Encoding.UTF8.GetBytes(layerTempl);
-            MgByteSource src = new MgByteSource(bytes, bytes.Length);
-            MgByteReader layerDefContent = src.GetReader();
-            _resSvc.SetResource(ldfId, layerDefContent, null);
+                String xtrans = String.Format("{0:x2}", ((int)(255 * Convert.ToInt32(numFillTransparency.Value) / 100)));
+                var lineColor = ToHtmlColor(pnlBorderColor.BackColor);
+                var foreColor = ToHtmlColor(pnlFillColor.BackColor);
+                var backColor = ToHtmlColor(pnlFillBackColor.BackColor);
+                String layerTempl = string.Format(Properties.Resources.AreaLayerDef,
+                        fsId.ToString(),
+                        "BufferSchema:Buffer",
+                        "GEOM",
+                        cmbFillPattern.SelectedItem,
+                        xtrans + foreColor,
+                        ((0 != 1/*transparent*/) ? "ff" : "00") + backColor,
+                        cmbBorderPattern.SelectedItem,
+                        numLineThickness.Value.ToString(NumberFormatInfo.InvariantInfo),
+                        lineColor
+                );
+                byte[] bytes = Encoding.UTF8.GetBytes(layerTempl);
+                MgByteSource src = new MgByteSource(bytes, bytes.Length);
+                MgByteReader layerDefContent = src.GetReader();
+                _resSvc.SetResource(ldfId, layerDefContent, null);
 
-            bool newBuffer = false;
-            if (layer == null)
-            {
-                newBuffer = true;
+                bool newBuffer = false;
+                if (layer == null)
+                {
+                    newBuffer = true;
 
-                //Targetting a new layer. create a data source for it
-                //
-                MgClassDefinition classDef = new MgClassDefinition();
+                    //Targetting a new layer. create a data source for it
+                    //
+                    MgClassDefinition classDef = new MgClassDefinition();
 
-                classDef.SetName("Buffer");
-                classDef.SetDescription("Feature class for buffer layer");
-                classDef.SetDefaultGeometryPropertyName("GEOM");
+                    classDef.SetName("Buffer");
+                    classDef.SetDescription("Feature class for buffer layer");
+                    classDef.SetDefaultGeometryPropertyName("GEOM");
 
-                //Set KEY property
-                MgDataPropertyDefinition prop = new MgDataPropertyDefinition("KEY");
-                prop.SetDataType(MgPropertyType.Int32);
-                prop.SetAutoGeneration(true);
-                prop.SetReadOnly(true);
-                classDef.GetIdentityProperties().Add(prop);
-                classDef.GetProperties().Add(prop);
+                    //Set KEY property
+                    MgDataPropertyDefinition prop = new MgDataPropertyDefinition("KEY");
+                    prop.SetDataType(MgPropertyType.Int32);
+                    prop.SetAutoGeneration(true);
+                    prop.SetReadOnly(true);
+                    classDef.GetIdentityProperties().Add(prop);
+                    classDef.GetProperties().Add(prop);
 
-                //Set ID property. Hold this segment ID
-                prop = new MgDataPropertyDefinition("ID");
-                prop.SetDataType(MgPropertyType.Int32);
-                classDef.GetProperties().Add(prop);
+                    //Set ID property. Hold this segment ID
+                    prop = new MgDataPropertyDefinition("ID");
+                    prop.SetDataType(MgPropertyType.Int32);
+                    classDef.GetProperties().Add(prop);
 
-                //Set geometry property
-                MgGeometricPropertyDefinition geomProp = new MgGeometricPropertyDefinition("GEOM");
-                //prop.SetGeometryTypes(MgFeatureGeometricType.mfgtSurface); //TODO use the constant when exposed
-                geomProp.SetGeometryTypes(4);
-                classDef.GetProperties().Add(geomProp);
+                    //Set geometry property
+                    MgGeometricPropertyDefinition geomProp = new MgGeometricPropertyDefinition("GEOM");
+                    //prop.SetGeometryTypes(MgFeatureGeometricType.mfgtSurface); //TODO use the constant when exposed
+                    geomProp.SetGeometryTypes(4);
+                    classDef.GetProperties().Add(geomProp);
 
-                //Create the schema
-                MgFeatureSchema schema = new MgFeatureSchema("BufferSchema", "Temporary buffer schema");
-                schema.GetClasses().Add(classDef);
+                    //Create the schema
+                    MgFeatureSchema schema = new MgFeatureSchema("BufferSchema", "Temporary buffer schema");
+                    schema.GetClasses().Add(classDef);
 
-                //finally, creation of the feature source
-                MgCreateSdfParams sdfParams = new MgCreateSdfParams("LatLong", map.GetMapSRS(), schema);
-                _featSvc.CreateFeatureSource(fsId, sdfParams);
+                    //finally, creation of the feature source
+                    MgCreateSdfParams sdfParams = new MgCreateSdfParams("LatLong", map.GetMapSRS(), schema);
+                    _featSvc.CreateFeatureSource(fsId, sdfParams);
 
-                //Add layer to map
-                layer = provider.CreateLayer(ldfId);
-                layer.SetName(txtBufferLayer.Text);
-                layer.SetLegendLabel(txtBufferLayer.Text);
-                layer.SetDisplayInLegend(true);
-                layer.SetSelectable(true);
-                layers.Insert(0, layer);
-            }
-            else
-            {
-                //data source already exist. clear its content
-                //
-                ClearDataSource(_featSvc, fsId, "BufferSchema:Buffer");
-            }
+                    //Add layer to map
+                    layer = provider.CreateLayer(ldfId);
+                    layer.SetName(txtBufferLayer.Text);
+                    layer.SetLegendLabel(txtBufferLayer.Text);
+                    layer.SetDisplayInLegend(true);
+                    layer.SetSelectable(true);
+                    layers.Insert(0, layer);
+                }
+                else
+                {
+                    //data source already exist. clear its content
+                    //
+                    ClearDataSource(_featSvc, fsId, "BufferSchema:Buffer");
+                }
 
-            var sel = _viewer.GetSelection();
-            var selLayers = sel.GetLayers();
+                var sel = _viewer.GetSelection();
+                var selLayers = sel.GetLayers();
 
-            MgAgfReaderWriter agfRW = new MgAgfReaderWriter();
-            MgGeometryCollection bufferGeometries = new MgGeometryCollection();
-            MgGeometry geomBuffer;
+                MgAgfReaderWriter agfRW = new MgAgfReaderWriter();
+                MgGeometryCollection bufferGeometries = new MgGeometryCollection();
+                MgGeometry geomBuffer;
 
-            MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
-            int featId = 0;
+                MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
+                int featId = 0;
 
-            MgBatchPropertyCollection propCollection = new MgBatchPropertyCollection();
+                MgBatchPropertyCollection propCollection = new MgBatchPropertyCollection();
 
-            int excludedLayers = 0;
-            MgCoordinateSystem srsDs = null;
-            MgGeometryCollection inputGeometries = new MgGeometryCollection();
+                int excludedLayers = 0;
+                MgCoordinateSystem srsDs = null;
+                MgGeometryCollection inputGeometries = new MgGeometryCollection();
 
-            int bufferFeatures = 0;
-            for (int li = 0; li < selLayers.GetCount(); li++)
-            {
-                MgLayerBase selLayer = selLayers.GetItem(li);
-                bool inputLayer = false;
-                String selLayerName = selLayer.GetName();
-                for (int il = 0; il < layerNames.Length; il++)
+                int bufferFeatures = 0;
+                for (int li = 0; li < selLayers.GetCount(); li++)
                 {
-                    if (layerNames[il].Equals(selLayerName))
+                    MgLayerBase selLayer = selLayers.GetItem(li);
+                    bool inputLayer = false;
+                    String selLayerName = selLayer.GetName();
+                    for (int il = 0; il < layerNames.Length; il++)
                     {
-                        inputLayer = true;
-                        break;
+                        if (layerNames[il].Equals(selLayerName))
+                        {
+                            inputLayer = true;
+                            break;
+                        }
                     }
-                }
-                if (inputLayer == false)
-                {
-                    continue;
-                }
+                    if (inputLayer == false)
+                    {
+                        continue;
+                    }
 
-                // get the data source SRS
-                //
-                MgResourceIdentifier featSourceId = new MgResourceIdentifier(selLayer.GetFeatureSourceId());
-                MgSpatialContextReader ctxs = _featSvc.GetSpatialContexts(featSourceId, false);
-                String srsDefDs = "";
-                if (ctxs != null && ctxs.ReadNext())
-                    srsDefDs = ctxs.GetCoordinateSystemWkt();
+                    // get the data source SRS
+                    //
+                    MgResourceIdentifier featSourceId = new MgResourceIdentifier(selLayer.GetFeatureSourceId());
+                    MgSpatialContextReader ctxs = _featSvc.GetSpatialContexts(featSourceId, false);
+                    String srsDefDs = "";
+                    if (ctxs != null && ctxs.ReadNext())
+                        srsDefDs = ctxs.GetCoordinateSystemWkt();
 
-                if (srsDefDs == null || srsDefDs.Length == 0)
-                {
-                    excludedLayers++;
-                    continue;
-                }
+                    if (srsDefDs == null || srsDefDs.Length == 0)
+                    {
+                        excludedLayers++;
+                        continue;
+                    }
 
-                var srsFactory = new MgCoordinateSystemFactory();
-                srsDs = srsFactory.Create(srsDefDs);
-                bool arbitraryDsSrs = (srsDs.GetType() == MgCoordinateSystemType.Arbitrary);
-                String dsSrsUnits = "";
+                    var srsFactory = new MgCoordinateSystemFactory();
+                    srsDs = srsFactory.Create(srsDefDs);
+                    bool arbitraryDsSrs = (srsDs.GetType() == MgCoordinateSystemType.Arbitrary);
+                    String dsSrsUnits = "";
 
-                if (arbitraryDsSrs)
-                    dsSrsUnits = srsDs.GetUnits();
+                    if (arbitraryDsSrs)
+                        dsSrsUnits = srsDs.GetUnits();
 
-                // exclude layer if:
-                //  the map is non-arbitrary and the layer is arbitrary or vice-versa
-                //     or
-                //  layer and map are both arbitrary but have different units
-                //
-                if ((arbitraryDsSrs != arbitraryMapSrs) || (arbitraryDsSrs && (dsSrsUnits != mapSrsUnits)))
-                {
-                    excludedLayers++;
-                    continue;
-                }
+                    // exclude layer if:
+                    //  the map is non-arbitrary and the layer is arbitrary or vice-versa
+                    //     or
+                    //  layer and map are both arbitrary but have different units
+                    //
+                    if ((arbitraryDsSrs != arbitraryMapSrs) || (arbitraryDsSrs && (dsSrsUnits != mapSrsUnits)))
+                    {
+                        excludedLayers++;
+                        continue;
+                    }
 
-                // calculate distance in the data source SRS units
-                //
-                double dist = srsDs.ConvertMetersToCoordinateSystemUnits(distance);
+                    // calculate distance in the data source SRS units
+                    //
+                    double dist = srsDs.ConvertMetersToCoordinateSystemUnits(distance);
 
-                // calculate great circle unless data source srs is arbitrary
-                MgCoordinateSystemMeasure measure;
-                if (!arbitraryDsSrs)
-                    measure = srsDs.GetMeasure();
-                else
-                    measure = null;
+                    // calculate great circle unless data source srs is arbitrary
+                    MgCoordinateSystemMeasure measure;
+                    if (!arbitraryDsSrs)
+                        measure = srsDs.GetMeasure();
+                    else
+                        measure = null;
 
-                // create a SRS transformer if necessary
-                MgCoordinateSystemTransform srsXform;
-                if (!srsDefDs.Equals(srsDefMap))
-                    srsXform = srsFactory.GetTransform(srsDs, srsMap);
-                else
-                    srsXform = null;
+                    // create a SRS transformer if necessary
+                    MgCoordinateSystemTransform srsXform;
+                    if (!srsDefDs.Equals(srsDefMap))
+                        srsXform = srsFactory.GetTransform(srsDs, srsMap);
+                    else
+                        srsXform = null;
 
-                String featureClassName = selLayer.GetFeatureClassName();
-                String filter = sel.GenerateFilter(selLayer, featureClassName);
-                if (filter == null || filter.Length == 0)
-                    continue;
+                    String featureClassName = selLayer.GetFeatureClassName();
+                    String filter = sel.GenerateFilter(selLayer, featureClassName);
+                    if (filter == null || filter.Length == 0)
+                        continue;
 
-                MgFeatureQueryOptions query = new MgFeatureQueryOptions();
-                query.SetFilter(filter);
+                    MgFeatureQueryOptions query = new MgFeatureQueryOptions();
+                    query.SetFilter(filter);
 
-                MgResourceIdentifier featureSource = new MgResourceIdentifier(selLayer.GetFeatureSourceId());
+                    MgResourceIdentifier featureSource = new MgResourceIdentifier(selLayer.GetFeatureSourceId());
 
-                MgFeatureReader features = _featSvc.SelectFeatures(featureSource, featureClassName, query);
+                    MgFeatureReader features = _featSvc.SelectFeatures(featureSource, featureClassName, query);
 
-                if (features.ReadNext())
-                {
-                    MgClassDefinition classDef = features.GetClassDefinition();
-                    String geomPropName = classDef.GetDefaultGeometryPropertyName();
-
-                    do
+                    if (features.ReadNext())
                     {
-                        MgByteReader geomReader = features.GetGeometry(geomPropName);
-                        MgGeometry geom = agfRW.Read(geomReader);
+                        MgClassDefinition classDef = features.GetClassDefinition();
+                        String geomPropName = classDef.GetDefaultGeometryPropertyName();
 
-                        if (!chkMergeBuffers.Checked)
+                        do
                         {
-                            geomBuffer = geom.Buffer(dist, measure);
-                            if (geomBuffer != null)
+                            MgByteReader geomReader = features.GetGeometry(geomPropName);
+                            MgGeometry geom = agfRW.Read(geomReader);
+
+                            if (!chkMergeBuffers.Checked)
                             {
+                                geomBuffer = geom.Buffer(dist, measure);
+                                if (geomBuffer != null)
+                                {
+                                    if (srsXform != null)
+                                        geomBuffer = (MgGeometry)geomBuffer.Transform(srsXform);
+                                    AddFeatureToCollection(propCollection, agfRW, featId++, geomBuffer);
+                                    bufferFeatures++;
+                                }
+                            }
+                            else
+                            {
                                 if (srsXform != null)
-                                    geomBuffer = (MgGeometry)geomBuffer.Transform(srsXform);
-                                AddFeatureToCollection(propCollection, agfRW, featId++, geomBuffer);
-                                bufferFeatures++;
+                                    geom = (MgGeometry)geom.Transform(srsXform);
+                                inputGeometries.Add(geom);
                             }
                         }
+                        while (features.ReadNext());
+
+                        features.Close();
+                    }
+                }
+
+                if (chkMergeBuffers.Checked)
+                {
+                    if (inputGeometries.GetCount() > 0)
+                    {
+                        double dist = srsMap.ConvertMetersToCoordinateSystemUnits(distance);
+                        MgCoordinateSystemMeasure measure;
+                        if (!arbitraryMapSrs)
+                            measure = srsMap.GetMeasure();
                         else
+                            measure = null;
+
+                        MgGeometryFactory geomFactory = new MgGeometryFactory();
+                        geomBuffer = geomFactory.CreateMultiGeometry(inputGeometries).Buffer(dist, measure);
+                        if (geomBuffer != null)
                         {
-                            if (srsXform != null)
-                                geom = (MgGeometry)geom.Transform(srsXform);
-                            inputGeometries.Add(geom);
+                            AddFeatureToCollection(propCollection, agfRW, featId, geomBuffer);
+                            bufferFeatures = 1;
                         }
                     }
-                    while (features.ReadNext());
-
-                    features.Close();
                 }
-            }
 
-            if (chkMergeBuffers.Checked)
-            {
-                if (inputGeometries.GetCount() > 0)
+                if (propCollection.GetCount() > 0)
                 {
-                    double dist = srsMap.ConvertMetersToCoordinateSystemUnits(distance);
-                    MgCoordinateSystemMeasure measure;
-                    if (!arbitraryMapSrs)
-                        measure = srsMap.GetMeasure();
-                    else
-                        measure = null;
+                    commands.Add(new MgInsertFeatures("BufferSchema:Buffer", propCollection));
 
-                    MgGeometryFactory geomFactory = new MgGeometryFactory();
-                    geomBuffer = geomFactory.CreateMultiGeometry(inputGeometries).Buffer(dist, measure);
-                    if (geomBuffer != null)
-                    {
-                        AddFeatureToCollection(propCollection, agfRW, featId, geomBuffer);
-                        bufferFeatures = 1;
-                    }
+                    //Insert the features in the temporary data source
+                    //
+                    ReleaseReader(_featSvc.UpdateFeatures(fsId, commands, false), commands);
                 }
-            }
 
-            if (propCollection.GetCount() > 0)
-            {
-                commands.Add(new MgInsertFeatures("BufferSchema:Buffer", propCollection));
+                // Save the new map state
+                //
+                layer.ForceRefresh();
+                _viewer.RefreshMap();
 
-                //Insert the features in the temporary data source
-                //
-                ReleaseReader(_featSvc.UpdateFeatures(fsId, commands, false), commands);
+                //build report message
+                MessageBox.Show("Buffer layer (" + txtBufferLayer.Text + ") " + (newBuffer ? "created" : "updated"));
             }
-
-            // Save the new map state
-            //
-            layer.ForceRefresh();
-            _viewer.RefreshMap();
-
-            //build report message
-            MessageBox.Show("Buffer layer (" + txtBufferLayer.Text + ") " + (newBuffer ? "created" : "updated"));
+            finally
+            {
+                btnCreate.Enabled = true;
+            }
         }
 
         private string[] GetLayerNames()

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.resx	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -112,12 +112,12 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="colorPicker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="colorPicker.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

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -19,6 +19,14 @@
 
         /// <summary>
         /// Gets whether to disable invocation entry points (eg. buttons, menus, etc) to this component when the
+        /// viewer is digitizing
+        /// </summary>
+        [Category("MapGuide Component Properties")]
+        [Description("Disables this component while the digitizing is happening")]
+        public virtual bool DisableWhenDigitizing { get { return true; } }
+
+        /// <summary>
+        /// Gets whether to disable invocation entry points (eg. buttons, menus, etc) to this component when the
         /// viewer is busy
         /// </summary>
         [Category("MapGuide Component Properties")]
@@ -63,27 +71,33 @@
             }
         }
 
-        /// <summary>
-        /// Subscribes to viewer events
-        /// </summary>
-        /// <param name="viewer"></param>
         protected virtual void SubscribeViewerEvents(IMapViewer viewer)
         {
             if (viewer != null)
                 viewer.PropertyChanged += OnViewerPropertyChanged;
         }
 
-        public event ViewerBusyStateEventHandler ViewerBusyStateChanged;
-
-        void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
+        protected virtual void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
             if (e.PropertyName == "IsBusy")
             {
                 var busy = this.Viewer.IsBusy;
                 Trace.TraceInformation("Dispatching busy state event to " + _listeners.Count + " listeners");
-                foreach (var l in _listeners)
-                    l.SetBusy(busy);
+                if (this.DisableWhenMapIsLoading)
+                {
+                    foreach (var l in _listeners)
+                        l.SetDisabled(busy);
+                }
             }
+            else if (e.PropertyName == "DigitizingType")
+            {
+                var bDigitizing = (this.Viewer.DigitizingType != MapDigitizationType.None);
+                if (this.DisableWhenDigitizing)
+                {
+                    foreach (var l in _listeners)
+                        l.SetDisabled(bDigitizing);
+                }
+            }
         }
 
         /// <summary>
@@ -96,14 +110,14 @@
                 viewer.PropertyChanged -= OnViewerPropertyChanged;
         }
 
-        private List<IMapViewerBusyStateListener> _listeners = new List<IMapViewerBusyStateListener>();
+        protected List<IButtonStateListener> _listeners = new List<IButtonStateListener>();
 
-        public void AddListener(IMapViewerBusyStateListener listener)
+        public void AddListener(IButtonStateListener listener)
         {
             _listeners.Add(listener);
         }
 
-        public void RemoveListener(IMapViewerBusyStateListener listener)
+        public void RemoveListener(IButtonStateListener listener)
         {
             _listeners.Remove(listener);
         }
@@ -119,9 +133,12 @@
 
     public delegate void ViewerBusyStateEventHandler(bool busy);
 
-    public interface IMapViewerBusyStateListener
+    public interface IButtonStateListener
     {
-        void SetBusy(bool busy);
+        void SetDisabled(bool busy);
+        void SetActive(bool outlined);
+        void SetText(string text);
+        void SetIcon(Image icon);
     }
 
     /// <summary>
@@ -132,7 +149,7 @@
         /// <summary>
         /// Display the UI view within the specified parent container
         /// </summary>
-        ParentContainer,
+        TaskPane,
         /// <summary>
         /// Display the UI view within a new window
         /// </summary>
@@ -143,11 +160,11 @@
     /// The base class of all UI-based components
     /// </summary>
     [ToolboxItem(false)]
-    public class MgViewerComponent : MgComponent
+    public class MgViewerComponent : MgComponent, ISupportInitialize
     {
         protected MgViewerComponent()
         {
-            this.ParentContainer = null;
+            this.TaskPane = null;
             this.Target = MgViewerTarget.NewWindow;
         }
 
@@ -155,8 +172,8 @@
         /// 
         /// </summary>
         [Category("MapGuide Component Properties")]
-        [Description("The control which will house this component")]
-        public Control ParentContainer
+        [Description("The task pane which will host the UI view")]
+        public MgTaskPane TaskPane
         {
             get;
             set;
@@ -175,8 +192,9 @@
             get { return _target; }
             set
             {
-                if (value == MgViewerTarget.ParentContainer && this.ParentContainer == null)
-                    throw new ArgumentException("Must specify a parent container");
+                //Must have a task pane assigned, but we suppress this check during initialization
+                if (!_init && (value == MgViewerTarget.TaskPane && this.TaskPane == null))
+                    throw new ArgumentException("Target: No task pane assigned");
                 _target = value;
             }
         }
@@ -191,26 +209,84 @@
         {
             var control = CreateControlImpl();
             control.Dock = DockStyle.Fill;
-            if (this.Target == MgViewerTarget.ParentContainer)
+            if (this.Target == MgViewerTarget.TaskPane)
             {
-                this.ParentContainer.Controls.Clear();
-                this.ParentContainer.Controls.Add(control);
+                new TaskPaneContentCloser(this.TaskPane, control);
             }
             else //New Window
             {
-                var form = new Form();
-                Rectangle screenRectangle = form.RectangleToScreen(form.ClientRectangle);
-                int titleHeight = screenRectangle.Top - form.Top;
-                form.Width = control.PreferredSize.Width;
-                form.Height = control.PreferredSize.Height + titleHeight + 10; //HACK: height calculation is imperfect, so pad out
-                form.Text = control.Title;
-                form.Controls.Add(control);
+                new NewWindowContentCloser(control);
+            }
+        }
 
+        class TaskPaneContentCloser : IContentCloser
+        {
+            private MgTaskPane _taskPane;
+            private MgControlImpl _control;
+
+            public TaskPaneContentCloser(MgTaskPane taskPane, MgControlImpl control)
+            {
+                _taskPane = taskPane;
+                _control = control;
+
+                _control.Closer = this;
+                _taskPane.SetContent(_control);
+            }
+
+            public void Close()
+            {
+                _taskPane.LoadInitialTask();
+            }
+        }
+
+        class NewWindowContentCloser : IContentCloser 
+        {
+            private Form _frm;
+            private MgControlImpl _control;
+
+            public NewWindowContentCloser(MgControlImpl control)
+            {
+                _frm = new Form();
+                _control = control;
+                Rectangle screenRectangle = _frm.RectangleToScreen(_frm.ClientRectangle);
+                int titleHeight = screenRectangle.Top - _frm.Top;
+                _frm.Width = _control.PreferredSize.Width;
+                _frm.Height = _control.PreferredSize.Height + titleHeight + 10; //HACK: height calculation is imperfect, so pad out
+                _frm.Text = _control.Title;
+                _frm.Controls.Add(_control);
+                _control.Closer = this;
+
                 if (control.ModalWindow)
-                    form.ShowDialog();
+                    _frm.ShowDialog();
                 else
-                    form.Show();
+                    _frm.Show();
             }
+
+            public void Close()
+            {
+                if (_control.ModalWindow)
+                    _frm.DialogResult = DialogResult.OK;
+                else
+                    _frm.Close();
+
+                if (!_control.IsDisposed)
+                    _control.Dispose();
+            }
         }
+
+        private bool _init = true;
+
+        public void BeginInit()
+        {
+            _init = true;
+        }
+
+        public void EndInit()
+        {
+            _init = false;
+            //Now it's safe to check that task pane must be assigned if target is task pane
+            if (this.TaskPane == null && this.Target == MgViewerTarget.TaskPane)
+                throw new InvalidOperationException("EndInit: No task pane assigned");
+        }
     }
 }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -24,5 +24,21 @@
         /// in a new window. Only applies if parent component shows this component in a new window
         /// </summary>
         public virtual bool ModalWindow { get; set; }
+
+        public IContentCloser Closer { get; set; }
+
+        /// <summary>
+        /// Raises the <see cref="ContentClosed"/> event
+        /// </summary>
+        protected void Close()
+        {
+            if (this.Closer != null)
+                this.Closer.Close();
+        }
     }
+
+    public interface IContentCloser
+    {
+        void Close();
+    }
 }

Added: branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    [ToolboxItem(true)]
+    public class MgGenericInvokeComponent : MgComponent
+    {
+        public MgGenericInvokeComponent()
+        {
+            this.Icon = Properties.Resources.invoke_script;
+        }
+
+        public event EventHandler Invoked;
+
+        public override void Invoke()
+        {
+            var h = this.Invoked;
+            if (h != null)
+                h(this, EventArgs.Empty);
+        }
+    }
+}

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -6,15 +6,27 @@
 using System.Drawing;
 using System.Windows.Forms.Design;
 using System.Diagnostics;
+using System.ComponentModel.Design;
 
 namespace OSGeo.MapGuide.Viewer
 {
     /// <summary>
+    /// Defines UI controls that support MapGuide Viewer component invocation
+    /// </summary>
+    public interface IInvokeViewerComponent : IComponent
+    {
+        /// <summary>
+        /// Gets or sets the target component to be invoked
+        /// </summary>
+        MgComponent TargetComponent { get; set; }
+    }
+
+    /// <summary>
     /// A specialized instance of <see cref="T:System.Windows.Forms.ToolStripButton"/> that can
     /// invoke the assigned <see cref="T:OSGeo.MapGuide.Viewer.MgComponent"/> instance.
     /// </summary>
     [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip)]
-    public class MgInvokeComponentButton : ToolStripButton, IMapViewerBusyStateListener
+    public class MgInvokeComponentButton : ToolStripButton, IButtonStateListener, IInvokeViewerComponent
     {
         private MgComponent _component;
 
@@ -51,10 +63,25 @@
             base.OnClick(e);
         }
 
-        public void SetBusy(bool busy)
+        public void SetDisabled(bool busy)
         {
             this.Enabled = !busy;
         }
+
+        public void SetActive(bool outlined)
+        {
+            this.Checked = outlined;
+        }
+
+        public void SetText(string text)
+        {
+            this.Text = text;
+        }
+
+        public void SetIcon(Image icon)
+        {
+            this.Image = icon;
+        }
     }
 
     /// <summary>
@@ -62,7 +89,7 @@
     /// invoke the assigned <see cref="T:OSGeo.MapGuide.Viewer.MgComponent"/> instance.
     /// </summary>
     [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ContextMenuStrip | ToolStripItemDesignerAvailability.MenuStrip)]
-    public class MgInvokeComponentMenuStripItem : ToolStripMenuItem, IMapViewerBusyStateListener
+    public class MgInvokeComponentMenuItem : ToolStripMenuItem, IButtonStateListener, IInvokeViewerComponent
     {
         private MgComponent _component;
 
@@ -99,9 +126,24 @@
             base.OnClick(e);
         }
 
-        public void SetBusy(bool busy)
+        public void SetDisabled(bool busy)
         {
             this.Enabled = !busy;
         }
+
+        public void SetActive(bool outlined)
+        {
+            this.Checked = outlined;
+        }
+
+        public void SetText(string text)
+        {
+            this.Text = text;
+        }
+
+        public void SetIcon(Image icon)
+        {
+            this.Image = icon;
+        }
     }
 }

Added: branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using System.ComponentModel;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    [ToolboxItem(true)]
+    public class MgLoadPackageComponent : MgComponent
+    {
+        public MgLoadPackageComponent() 
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextLoadPackage;
+            this.Icon = Properties.Resources.load_package;
+        }
+
+        public override void Invoke()
+        {
+            using (var open = new OpenFileDialog())
+            {
+                open.Title = Properties.Resources.TextLoadPackage;
+                open.Filter = "*.mgp|*.mgp";
+                if (open.ShowDialog() == DialogResult.OK)
+                {
+                    var viewer = this.Viewer;
+                    var provider = viewer.GetProvider();
+                    var resSvc = (MgResourceService)provider.CreateService(MgServiceType.ResourceService);
+                    var source = new MgByteSource(open.FileName);
+                    var br = source.GetReader();
+
+                    resSvc.ApplyResourcePackage(br);
+                    MessageBox.Show(Properties.Resources.TextLoadPackage);
+                }
+            }
+        }
+    }
+}

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -17,6 +17,7 @@
     /// <summary>
     /// A map viewer component
     /// </summary>
+    [ToolboxItem(true)]
     public class MgMapViewer : Control, IMapViewer
     {
         private BackgroundWorker renderWorker;

Added: branches/2.4/MgDev/Desktop/MapViewer/MgMeasureComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgMeasureComponent.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgMeasureComponent.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    /// <summary>
+    /// A generic component for measuring
+    /// </summary>
+    [ToolboxItem(true)]
+    public class MgMeasureComponent : MgViewerComponent
+    {
+        public MgMeasureComponent()
+        {
+            this.Icon = Properties.Resources.measure;
+            this.Label = Properties.Resources.TitleMeasure;
+            this.MeasureMode = MeasureMode.Line;
+            this.PreferredUnits = MeasurementUnit.Meters;
+        }
+
+        protected override MgControlImpl CreateControlImpl()
+        {
+            switch (_measureMode)
+            {
+                case MeasureMode.Line:
+                    return new MgLineMeasureControlImpl(this.Viewer, this.PreferredUnits);
+                default:
+                    throw new NotImplementedException();
+            }
+        }
+
+        [Category("MapGuide Component Properties")]
+        [Description("The default units to measure in")]
+        [DefaultValue(MeasurementUnit.Meters)]
+        public MeasurementUnit PreferredUnits
+        {
+            get;
+            set;
+        }
+
+        private MeasureMode _measureMode;
+
+        [Category("MapGuide Component Properties")]
+        [DefaultValue(MeasureMode.Line)]
+        [Browsable(true)]
+        [Description("The mode of measurement")]
+        public MeasureMode MeasureMode
+        {
+            get { return _measureMode; }
+            set 
+            {
+                if (value == MeasureMode.Area)
+                    throw new NotImplementedException("This mode is not yet implemented");
+                _measureMode = value; 
+            }
+        }
+    }
+
+    /// <summary>
+    /// Defines the valid types of measurements that can be done by the <see cref="T:OSGeo.MapGuide.Viewer.MgMeasureControl"/> component
+    /// </summary>
+    public enum MeasureMode
+    {
+        /// <summary>
+        /// Measure distance by tracing 1 or more line segments
+        /// </summary>
+        Line,
+        /// <summary>
+        /// Measure area by tracing a polygon
+        /// </summary>
+        Area
+    }
+}

Deleted: branches/2.4/MgDev/Desktop/MapViewer/MgMeasureControl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgMeasureControl.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgMeasureControl.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -1,74 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ComponentModel;
-
-namespace OSGeo.MapGuide.Viewer
-{
-    /// <summary>
-    /// A generic component for measuring
-    /// </summary>
-    [ToolboxItem(true)]
-    public class MgMeasureControl : MgViewerComponent
-    {
-        public MgMeasureControl()
-        {
-            this.Icon = Properties.Resources.measure;
-            this.Label = Properties.Resources.TitleMeasure;
-            this.MeasureMode = MeasureMode.Line;
-            this.PreferredUnits = MeasurementUnit.Meters;
-        }
-
-        protected override MgControlImpl CreateControlImpl()
-        {
-            switch (_measureMode)
-            {
-                case MeasureMode.Line:
-                    return new MgLineMeasureControlImpl(this.Viewer, this.PreferredUnits);
-                default:
-                    throw new NotImplementedException();
-            }
-        }
-
-        [Category("MapGuide Component Properties")]
-        [Description("The default units to measure in")]
-        [DefaultValue(MeasurementUnit.Meters)]
-        public MeasurementUnit PreferredUnits
-        {
-            get;
-            set;
-        }
-
-        private MeasureMode _measureMode;
-
-        [Category("MapGuide Component Properties")]
-        [DefaultValue(MeasureMode.Line)]
-        [Browsable(true)]
-        [Description("The mode of measurement")]
-        public MeasureMode MeasureMode
-        {
-            get { return _measureMode; }
-            set 
-            {
-                if (value == MeasureMode.Area)
-                    throw new NotImplementedException("This mode is not yet implemented");
-                _measureMode = value; 
-            }
-        }
-    }
-
-    /// <summary>
-    /// Defines the valid types of measurements that can be done by the <see cref="T:OSGeo.MapGuide.Viewer.MgMeasureControl"/> component
-    /// </summary>
-    public enum MeasureMode
-    {
-        /// <summary>
-        /// Measure distance by tracing 1 or more line segments
-        /// </summary>
-        Line,
-        /// <summary>
-        /// Measure area by tracing a polygon
-        /// </summary>
-        Area
-    }
-}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgQueryComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryComponent.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryComponent.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    /// <summary>
+    /// A generic feature query component
+    /// </summary>
+    [ToolboxItem(true)]
+    public class MgQueryComponent : MgViewerComponent
+    {
+        public MgQueryComponent()
+        {
+            this.Icon = Properties.Resources.search;
+            this.Label = Properties.Resources.TitleQuery;
+        }
+
+        protected override MgControlImpl CreateControlImpl()
+        {
+            return new MgQueryControlImpl(this.Viewer);
+        }
+    }
+}

Deleted: branches/2.4/MgDev/Desktop/MapViewer/MgQueryControl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryControl.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryControl.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ComponentModel;
-
-namespace OSGeo.MapGuide.Viewer
-{
-    /// <summary>
-    /// A generic feature query component
-    /// </summary>
-    [ToolboxItem(true)]
-    public class MgQueryControl : MgViewerComponent
-    {
-        public MgQueryControl()
-        {
-            this.Icon = Properties.Resources.search;
-            this.Label = Properties.Resources.TitleQuery;
-        }
-
-        protected override MgControlImpl CreateControlImpl()
-        {
-            return new MgQueryControlImpl(this.Viewer);
-        }
-
-        protected override void SubscribeViewerEvents(IMapViewer viewer)
-        {
-            base.SubscribeViewerEvents(viewer);
-        }
-
-        protected override void UnsubscribeViewerEvents(IMapViewer viewer)
-        {
-            base.UnsubscribeViewerEvents(viewer);
-        }
-    }
-}

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.Designer.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -29,6 +29,7 @@
         private void InitializeComponent()
         {
             this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.lnkRefreshLayers = new System.Windows.Forms.LinkLabel();
             this.label1 = new System.Windows.Forms.Label();
             this.cmbLayer = new System.Windows.Forms.ComboBox();
             this.groupBox2 = new System.Windows.Forms.GroupBox();
@@ -40,6 +41,7 @@
             this.label2 = new System.Windows.Forms.Label();
             this.chkPropFilterEnabled = new System.Windows.Forms.CheckBox();
             this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.lblSpatialFilterGeomSet = new System.Windows.Forms.Label();
             this.spatialFilterButtonPanel = new System.Windows.Forms.FlowLayoutPanel();
             this.btnRectangle = new System.Windows.Forms.Button();
             this.btnPolygon = new System.Windows.Forms.Button();
@@ -57,6 +59,7 @@
             // 
             // groupBox1
             // 
+            this.groupBox1.Controls.Add(this.lnkRefreshLayers);
             this.groupBox1.Controls.Add(this.label1);
             this.groupBox1.Controls.Add(this.cmbLayer);
             this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
@@ -67,6 +70,17 @@
             this.groupBox1.TabStop = false;
             this.groupBox1.Text = "Layer";
             // 
+            // lnkRefreshLayers
+            // 
+            this.lnkRefreshLayers.AutoSize = true;
+            this.lnkRefreshLayers.Location = new System.Drawing.Point(97, 20);
+            this.lnkRefreshLayers.Name = "lnkRefreshLayers";
+            this.lnkRefreshLayers.Size = new System.Drawing.Size(50, 13);
+            this.lnkRefreshLayers.TabIndex = 2;
+            this.lnkRefreshLayers.TabStop = true;
+            this.lnkRefreshLayers.Text = "(Refresh)";
+            this.lnkRefreshLayers.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkRefreshLayers_LinkClicked);
+            // 
             // label1
             // 
             this.label1.AutoSize = true;
@@ -78,8 +92,8 @@
             // 
             // cmbLayer
             // 
-            this.cmbLayer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.cmbLayer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.cmbLayer.DisplayMember = "Name";
             this.cmbLayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbLayer.FormattingEnabled = true;
@@ -108,8 +122,8 @@
             // 
             // txtValue
             // 
-            this.txtValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.txtValue.Location = new System.Drawing.Point(16, 145);
             this.txtValue.Name = "txtValue";
             this.txtValue.Size = new System.Drawing.Size(231, 20);
@@ -126,8 +140,8 @@
             // 
             // cmbOperator
             // 
-            this.cmbOperator.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.cmbOperator.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.cmbOperator.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbOperator.FormattingEnabled = true;
             this.cmbOperator.Location = new System.Drawing.Point(16, 101);
@@ -146,8 +160,8 @@
             // 
             // cmbProperty
             // 
-            this.cmbProperty.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.cmbProperty.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.cmbProperty.DisplayMember = "Name";
             this.cmbProperty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbProperty.FormattingEnabled = true;
@@ -177,6 +191,7 @@
             // 
             // groupBox3
             // 
+            this.groupBox3.Controls.Add(this.lblSpatialFilterGeomSet);
             this.groupBox3.Controls.Add(this.spatialFilterButtonPanel);
             this.groupBox3.Controls.Add(this.chkSpatialFilter);
             this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top;
@@ -187,11 +202,22 @@
             this.groupBox3.TabStop = false;
             this.groupBox3.Text = "Spatial Filter";
             // 
+            // lblSpatialFilterGeomSet
+            // 
+            this.lblSpatialFilterGeomSet.AutoSize = true;
+            this.lblSpatialFilterGeomSet.ForeColor = System.Drawing.Color.Red;
+            this.lblSpatialFilterGeomSet.Location = new System.Drawing.Point(90, 20);
+            this.lblSpatialFilterGeomSet.Name = "lblSpatialFilterGeomSet";
+            this.lblSpatialFilterGeomSet.Size = new System.Drawing.Size(144, 13);
+            this.lblSpatialFilterGeomSet.TabIndex = 3;
+            this.lblSpatialFilterGeomSet.Text = "Spatial Filter Geometry drawn";
+            this.lblSpatialFilterGeomSet.Visible = false;
+            // 
             // spatialFilterButtonPanel
             // 
-            this.spatialFilterButtonPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.spatialFilterButtonPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.spatialFilterButtonPanel.Controls.Add(this.btnRectangle);
             this.spatialFilterButtonPanel.Controls.Add(this.btnPolygon);
             this.spatialFilterButtonPanel.Controls.Add(this.btnClear);
@@ -261,8 +287,8 @@
             // 
             // numResults
             // 
-            this.numResults.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.numResults.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
             this.numResults.Location = new System.Drawing.Point(143, 398);
             this.numResults.Maximum = new decimal(new int[] {
             10000,
@@ -278,7 +304,7 @@
             0,
             0});
             // 
-            // MgQueryControl
+            // MgQueryControlImpl
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
@@ -288,7 +314,7 @@
             this.Controls.Add(this.groupBox3);
             this.Controls.Add(this.groupBox2);
             this.Controls.Add(this.groupBox1);
-            this.Name = "MgQueryControl";
+            this.Name = "MgQueryControlImpl";
             this.Size = new System.Drawing.Size(266, 431);
             this.groupBox1.ResumeLayout(false);
             this.groupBox1.PerformLayout();
@@ -325,5 +351,7 @@
         private System.Windows.Forms.Button btnExecute;
         private System.Windows.Forms.Label label5;
         private System.Windows.Forms.NumericUpDown numResults;
+        private System.Windows.Forms.LinkLabel lnkRefreshLayers;
+        private System.Windows.Forms.Label lblSpatialFilterGeomSet;
     }
 }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -86,6 +86,7 @@
             {
                 ClearFilterGeometry();
                 _filterGeometry = _wktRw.Read(MakeWktPolygon(llx, lly, urx, ury));
+                lblSpatialFilterGeomSet.Visible = true;
             });
         }
 
@@ -102,6 +103,7 @@
                 coords.Add(_geomFact.CreateCoordinateXY(coordinates[0, 0], coordinates[0, 1]));
                 MgLinearRing ring = _geomFact.CreateLinearRing(coords);
                 _filterGeometry = _geomFact.CreatePolygon(ring, null);
+                lblSpatialFilterGeomSet.Visible = true;
             });
         }
 
@@ -109,6 +111,7 @@
         {
             if (_filterGeometry != null)
                 _filterGeometry.Dispose();
+            lblSpatialFilterGeomSet.Visible = false;
         }
 
         private void btnClear_Click(object sender, EventArgs e)
@@ -189,6 +192,21 @@
 
             return sb.ToString();
         }
+
+        private void lnkRefreshLayers_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+        {
+            _layers.Clear();
+            var map = _viewer.GetMap();
+            var layers = map.GetLayers();
+            for (var i = 0; i < layers.GetCount(); i++)
+            {
+                _layers.Add(layers.GetItem(i));
+            }
+            if (cmbLayer.SelectedIndex != 0)
+                cmbLayer.SelectedIndex = 0;
+            else
+                cmbLayer_SelectedIndexChanged(this, EventArgs.Empty);
+        }
     }
 
     public enum QueryOperator

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.resx	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -112,9 +112,9 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.Designer.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -103,8 +103,8 @@
             // 
             this.bgGridLoader.WorkerReportsProgress = true;
             this.bgGridLoader.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bgGridLoader_DoWork);
+            this.bgGridLoader.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bgGridLoader_RunWorkerCompleted);
             this.bgGridLoader.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bgGridLoader_ProgressChanged);
-            this.bgGridLoader.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bgGridLoader_RunWorkerCompleted);
             // 
             // MgQueryResultsDialog
             // 
@@ -118,6 +118,7 @@
             this.ShowIcon = false;
             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
             this.Text = "Query Results";
+            this.TopMost = true;
             this.toolStrip1.ResumeLayout(false);
             this.toolStrip1.PerformLayout();
             this.statusStrip1.ResumeLayout(false);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.resx	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -112,18 +112,18 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <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=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
-  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>122, 17</value>
   </metadata>
-  <metadata name="bgGridLoader.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="bgGridLoader.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>238, 17</value>
   </metadata>
 </root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,88 @@
+namespace OSGeo.MapGuide.Viewer
+{
+    partial class MgTaskPane
+    {
+        /// <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.rootContainer = new System.Windows.Forms.Panel();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.lblTitle = new System.Windows.Forms.Label();
+            this.panel1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // rootContainer
+            // 
+            this.rootContainer.AutoScroll = true;
+            this.rootContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.rootContainer.Location = new System.Drawing.Point(0, 26);
+            this.rootContainer.Name = "rootContainer";
+            this.rootContainer.Size = new System.Drawing.Size(263, 513);
+            this.rootContainer.TabIndex = 1;
+            // 
+            // panel1
+            // 
+            this.panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
+            this.panel1.Controls.Add(this.lblTitle);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(263, 26);
+            this.panel1.TabIndex = 2;
+            // 
+            // lblTitle
+            // 
+            this.lblTitle.BackColor = System.Drawing.Color.DarkGray;
+            this.lblTitle.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.lblTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lblTitle.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
+            this.lblTitle.Location = new System.Drawing.Point(0, 0);
+            this.lblTitle.Name = "lblTitle";
+            this.lblTitle.Size = new System.Drawing.Size(263, 26);
+            this.lblTitle.TabIndex = 0;
+            this.lblTitle.Text = "Task Pane";
+            this.lblTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // MgTaskPane
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.rootContainer);
+            this.Controls.Add(this.panel1);
+            this.Name = "MgTaskPane";
+            this.Size = new System.Drawing.Size(263, 539);
+            this.panel1.ResumeLayout(false);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Panel rootContainer;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Label lblTitle;
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,57 @@
+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.Tasks;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    public partial class MgTaskPane : UserControl
+    {
+        public MgTaskPane()
+        {
+            InitializeComponent();
+        }
+
+        public Control InitialTask
+        {
+            get;
+            set;
+        }
+
+        public void LoadInitialTask()
+        {
+            this.SetContent(this.InitialTask);
+        }
+
+        internal void SetContent(Control c)
+        {
+            c.Dock = DockStyle.Top; //This allows for scrolling
+            rootContainer.Controls.Clear();
+            rootContainer.Controls.Add(c);
+            var mgc = c as MgControlImpl;
+            if (mgc != null)
+                lblTitle.Text = mgc.Title;
+            else
+                lblTitle.Text = Properties.Resources.TextTaskPane;
+        }
+
+        protected override void OnLoad(EventArgs e)
+        {
+            if (this.InitialTask == null)
+            {
+                this.InitialTask = new MgTaskPaneStub();
+            }
+            LoadInitialTask();
+            base.OnLoad(e);
+        }
+
+        private void btnInitialTask_Click(object sender, EventArgs e)
+        {
+            LoadInitialTask();
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,120 @@
+<?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>
+</root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsComponent.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsComponent.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+using System.Xml.Serialization;
+using System.IO;
+using System.Diagnostics;
+using System.Drawing;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    [ToolboxItem(true)]
+    public class MgViewerOptionsComponent : MgViewerComponent
+    {
+        public MgViewerOptionsComponent()
+        {
+            this.Label = this.ToolTipText = Properties.Resources.TextViewerOptions;
+            this.Icon = Properties.Resources.options;
+            this.PreferencesDirectory = string.Empty;
+        }
+        
+        [Description("The directory where the preferences are saved to and loaded from")]
+        public string PreferencesDirectory
+        {
+            get;
+            set;
+        }
+
+        protected override void SubscribeViewerEvents(IMapViewer viewer)
+        {
+            base.SubscribeViewerEvents(viewer);
+            //This is a new viewer instance. So load our prefs and apply settings to this viewer
+            var ser = new XmlSerializer(typeof(MgViewerOptions));
+            var path = Path.Combine(this.PreferencesDirectory, MgViewerOptions.FILENAME);
+            if (File.Exists(path))
+            {
+                using (var stream = File.OpenRead(path))
+                {
+                    try
+                    {
+                        var options = (MgViewerOptions)ser.Deserialize(stream);
+                        //Apply settings
+                        viewer.ShowVertexCoordinatesWhenDigitizing = options.ShowVertexCoordinates;
+                        viewer.SelectionColor = ColorTranslator.FromHtml(options.SelectionColor);
+                        viewer.ZoomInFactor = options.ZoomInFactor;
+                        viewer.ZoomOutFactor = options.ZoomOutFactor;
+                        viewer.ConvertTiledGroupsToNonTiled = options.ConvertTiledLayersToNonTiled;
+                        Trace.TraceInformation("Applied viewer settings from: " + path);
+                    }
+                    catch { }
+                }
+            }
+            else
+            {
+                Trace.TraceInformation("No viewer settings found in " + path + ". Doing nothing");
+            }
+        }
+
+        protected override MgControlImpl CreateControlImpl()
+        {
+            return new MgViewerOptionsControlImpl(this.Viewer, this.PreferencesDirectory);
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,191 @@
+namespace OSGeo.MapGuide.Viewer
+{
+    partial class MgViewerOptionsControlImpl
+    {
+        /// <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.label1 = new System.Windows.Forms.Label();
+            this.lblSelectionColor = new System.Windows.Forms.Label();
+            this.btnPickSelectionColor = new System.Windows.Forms.Button();
+            this.colorDialog = new System.Windows.Forms.ColorDialog();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.chkConvertTiledToNonTiled = new System.Windows.Forms.CheckBox();
+            this.numZoomInFactor = new System.Windows.Forms.NumericUpDown();
+            this.numZoomOutFactor = new System.Windows.Forms.NumericUpDown();
+            this.chkShowVertexCoordinates = new System.Windows.Forms.CheckBox();
+            this.btnSave = new System.Windows.Forms.Button();
+            ((System.ComponentModel.ISupportInitialize)(this.numZoomInFactor)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.numZoomOutFactor)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(19, 16);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(113, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Viewer Selection Color";
+            // 
+            // lblSelectionColor
+            // 
+            this.lblSelectionColor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.lblSelectionColor.Location = new System.Drawing.Point(157, 16);
+            this.lblSelectionColor.Name = "lblSelectionColor";
+            this.lblSelectionColor.Size = new System.Drawing.Size(82, 13);
+            this.lblSelectionColor.TabIndex = 1;
+            this.lblSelectionColor.Text = "                         ";
+            // 
+            // btnPickSelectionColor
+            // 
+            this.btnPickSelectionColor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnPickSelectionColor.Location = new System.Drawing.Point(250, 11);
+            this.btnPickSelectionColor.Name = "btnPickSelectionColor";
+            this.btnPickSelectionColor.Size = new System.Drawing.Size(27, 23);
+            this.btnPickSelectionColor.TabIndex = 2;
+            this.btnPickSelectionColor.Text = "...";
+            this.btnPickSelectionColor.UseVisualStyleBackColor = true;
+            this.btnPickSelectionColor.Click += new System.EventHandler(this.btnPickSelectionColor_Click);
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(19, 42);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(79, 13);
+            this.label2.TabIndex = 3;
+            this.label2.Text = "Zoom In Factor";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(19, 68);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(87, 13);
+            this.label3.TabIndex = 4;
+            this.label3.Text = "Zoom Out Factor";
+            // 
+            // chkConvertTiledToNonTiled
+            // 
+            this.chkConvertTiledToNonTiled.AutoSize = true;
+            this.chkConvertTiledToNonTiled.Location = new System.Drawing.Point(22, 92);
+            this.chkConvertTiledToNonTiled.Name = "chkConvertTiledToNonTiled";
+            this.chkConvertTiledToNonTiled.Size = new System.Drawing.Size(247, 17);
+            this.chkConvertTiledToNonTiled.TabIndex = 5;
+            this.chkConvertTiledToNonTiled.Text = "Display tiled layers as non-tiled (requires restart)";
+            this.chkConvertTiledToNonTiled.UseVisualStyleBackColor = true;
+            // 
+            // numZoomInFactor
+            // 
+            this.numZoomInFactor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.numZoomInFactor.DecimalPlaces = 7;
+            this.numZoomInFactor.Location = new System.Drawing.Point(157, 40);
+            this.numZoomInFactor.Maximum = new decimal(new int[] {
+            1000,
+            0,
+            0,
+            0});
+            this.numZoomInFactor.Name = "numZoomInFactor";
+            this.numZoomInFactor.Size = new System.Drawing.Size(120, 20);
+            this.numZoomInFactor.TabIndex = 6;
+            // 
+            // numZoomOutFactor
+            // 
+            this.numZoomOutFactor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.numZoomOutFactor.DecimalPlaces = 7;
+            this.numZoomOutFactor.Location = new System.Drawing.Point(157, 66);
+            this.numZoomOutFactor.Maximum = new decimal(new int[] {
+            1000,
+            0,
+            0,
+            0});
+            this.numZoomOutFactor.Name = "numZoomOutFactor";
+            this.numZoomOutFactor.Size = new System.Drawing.Size(120, 20);
+            this.numZoomOutFactor.TabIndex = 7;
+            // 
+            // chkShowVertexCoordinates
+            // 
+            this.chkShowVertexCoordinates.AutoSize = true;
+            this.chkShowVertexCoordinates.Location = new System.Drawing.Point(22, 116);
+            this.chkShowVertexCoordinates.Name = "chkShowVertexCoordinates";
+            this.chkShowVertexCoordinates.Size = new System.Drawing.Size(217, 17);
+            this.chkShowVertexCoordinates.TabIndex = 8;
+            this.chkShowVertexCoordinates.Text = "Show Vertex Coordinates when digitizing";
+            this.chkShowVertexCoordinates.UseVisualStyleBackColor = true;
+            // 
+            // btnSave
+            // 
+            this.btnSave.Location = new System.Drawing.Point(22, 149);
+            this.btnSave.Name = "btnSave";
+            this.btnSave.Size = new System.Drawing.Size(75, 23);
+            this.btnSave.TabIndex = 9;
+            this.btnSave.Text = "Save Changes";
+            this.btnSave.UseVisualStyleBackColor = true;
+            this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
+            // 
+            // MgViewerOptionsControlImpl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.btnSave);
+            this.Controls.Add(this.chkShowVertexCoordinates);
+            this.Controls.Add(this.numZoomOutFactor);
+            this.Controls.Add(this.numZoomInFactor);
+            this.Controls.Add(this.chkConvertTiledToNonTiled);
+            this.Controls.Add(this.label3);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.btnPickSelectionColor);
+            this.Controls.Add(this.lblSelectionColor);
+            this.Controls.Add(this.label1);
+            this.Name = "MgViewerOptionsControlImpl";
+            this.Size = new System.Drawing.Size(295, 183);
+            ((System.ComponentModel.ISupportInitialize)(this.numZoomInFactor)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.numZoomOutFactor)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label lblSelectionColor;
+        private System.Windows.Forms.Button btnPickSelectionColor;
+        private System.Windows.Forms.ColorDialog colorDialog;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.CheckBox chkConvertTiledToNonTiled;
+        private System.Windows.Forms.NumericUpDown numZoomInFactor;
+        private System.Windows.Forms.NumericUpDown numZoomOutFactor;
+        private System.Windows.Forms.CheckBox chkShowVertexCoordinates;
+        private System.Windows.Forms.Button btnSave;
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using System.Xml.Serialization;
+using System.IO;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    public partial class MgViewerOptionsControlImpl : MgControlImpl
+    {
+        private IMapViewer _viewer;
+        private string _saveDirectory;
+
+        internal MgViewerOptionsControlImpl(IMapViewer viewer, string saveDirectory)
+        {
+            InitializeComponent();
+            this.Title = Properties.Resources.TitleViewerOptions;
+            this.ModalWindow = true;
+            _viewer = viewer;
+            _saveDirectory = saveDirectory;
+
+            lblSelectionColor.BackColor = _viewer.SelectionColor;
+            chkShowVertexCoordinates.Checked = _viewer.ShowVertexCoordinatesWhenDigitizing;
+            chkConvertTiledToNonTiled.Checked = _viewer.ConvertTiledGroupsToNonTiled;
+            numZoomInFactor.Value = Convert.ToDecimal(_viewer.ZoomInFactor);
+            numZoomOutFactor.Value = Convert.ToDecimal(_viewer.ZoomOutFactor);
+        }
+
+        private void btnPickSelectionColor_Click(object sender, EventArgs e)
+        {
+            if (colorDialog.ShowDialog() == DialogResult.OK)
+            {
+                lblSelectionColor.BackColor = colorDialog.Color;
+            }
+        }
+
+        private void btnSave_Click(object sender, EventArgs e)
+        {
+            var options = new MgViewerOptions();
+            _viewer.SelectionColor = lblSelectionColor.BackColor;
+            options.SelectionColor = ColorTranslator.ToHtml(_viewer.SelectionColor);
+            options.ShowVertexCoordinates = _viewer.ShowVertexCoordinatesWhenDigitizing = chkShowVertexCoordinates.Checked;
+            options.ConvertTiledLayersToNonTiled = _viewer.ConvertTiledGroupsToNonTiled = chkConvertTiledToNonTiled.Checked;
+            options.ZoomInFactor = _viewer.ZoomInFactor = Convert.ToDouble(numZoomInFactor.Value);
+            options.ZoomOutFactor = _viewer.ZoomOutFactor = Convert.ToDouble(numZoomOutFactor.Value);
+
+            var ser = new XmlSerializer(typeof(MgViewerOptions));
+            using (var stream = File.OpenWrite(Path.Combine(_saveDirectory, MgViewerOptions.FILENAME)))
+            {
+                ser.Serialize(stream, options);
+            }
+            MessageBox.Show(Properties.Resources.TextOptionsSaved);
+            base.Close();
+        }
+    }
+    
+    [Serializable]
+    public class MgViewerOptions
+    {
+        public const string FILENAME = "MgViewerOptions.xml";
+
+        [XmlElement]
+        public string SelectionColor { get; set; }
+
+        [XmlElement]
+        public bool ShowVertexCoordinates { get; set; }
+
+        [XmlElement]
+        public bool ConvertTiledLayersToNonTiled { get; set; }
+
+        [XmlElement]
+        public double ZoomInFactor { get; set; }
+
+        [XmlElement]
+        public double ZoomOutFactor { get; set; }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -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

Modified: branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -196,6 +196,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap icon_home {
+            get {
+                object obj = ResourceManager.GetObject("icon_home", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap icon_loading {
             get {
                 object obj = ResourceManager.GetObject("icon_loading", resourceCulture);
@@ -217,6 +224,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap icon_tasks {
+            get {
+                object obj = ResourceManager.GetObject("icon_tasks", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap icon_zoomselect {
             get {
                 object obj = ResourceManager.GetObject("icon_zoomselect", resourceCulture);
@@ -350,6 +364,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap load_package {
+            get {
+                object obj = ResourceManager.GetObject("load_package", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap measure {
             get {
                 object obj = ResourceManager.GetObject("measure", resourceCulture);
@@ -357,6 +378,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap monitor_status {
+            get {
+                object obj = ResourceManager.GetObject("monitor_status", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap options {
             get {
                 object obj = ResourceManager.GetObject("options", resourceCulture);
@@ -532,6 +560,42 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Load Package.
+        /// </summary>
+        internal static string TextLoadPackage {
+            get {
+                return ResourceManager.GetString("TextLoadPackage", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Nothing is selected.
+        /// </summary>
+        internal static string TextNoSelection {
+            get {
+                return ResourceManager.GetString("TextNoSelection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Options Saved.
+        /// </summary>
+        internal static string TextOptionsSaved {
+            get {
+                return ResourceManager.GetString("TextOptionsSaved", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Package Loaded.
+        /// </summary>
+        internal static string TextPackageLoaded {
+            get {
+                return ResourceManager.GetString("TextPackageLoaded", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Pan.
         /// </summary>
         internal static string TextPan {
@@ -541,6 +605,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Plot to DWF.
+        /// </summary>
+        internal static string TextPlotToDwf {
+            get {
+                return ResourceManager.GetString("TextPlotToDwf", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Refresh Map.
         /// </summary>
         internal static string TextRefreshMap {
@@ -577,6 +650,24 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Task Pane.
+        /// </summary>
+        internal static string TextTaskPane {
+            get {
+                return ResourceManager.GetString("TextTaskPane", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Viewer Options.
+        /// </summary>
+        internal static string TextViewerOptions {
+            get {
+                return ResourceManager.GetString("TextViewerOptions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Zoom Extents.
         /// </summary>
         internal static string TextZoomExtents {
@@ -604,6 +695,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Zoom to Selection.
+        /// </summary>
+        internal static string TextZoomToSelection {
+            get {
+                return ResourceManager.GetString("TextZoomToSelection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Buffer.
         /// </summary>
         internal static string TitleBuffer {
@@ -631,6 +731,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Viewer Options.
+        /// </summary>
+        internal static string TitleViewerOptions {
+            get {
+                return ResourceManager.GetString("TitleViewerOptions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Tooltips are enabled. Click to disable.
         /// </summary>
         internal static string TooltipDisableTooltips {
@@ -669,6 +778,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap view_log {
+            get {
+                object obj = ResourceManager.GetObject("view_log", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap view_refresh {
             get {
                 object obj = ResourceManager.GetObject("view_refresh", resourceCulture);

Modified: branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -117,263 +117,305 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <data name="TextDigitizePolygon" xml:space="preserve">
-    <value>Digitize Polygon</value>
-  </data>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <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="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="TextDigitizeLine" xml:space="preserve">
-    <value>Digitize Line</value>
+  <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="TextSelectRadius" xml:space="preserve">
-    <value>Select Radius</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_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="TextZoomOut" xml:space="preserve">
+    <value>Zoom Out</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 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="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 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="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 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="TextDigitizeRectangle" xml:space="preserve">
-    <value>Digitize Rectangle</value>
+  <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="TextClearSelection" xml:space="preserve">
-    <value>Clear Selection</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>
-  <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="TextDigitizeCircle" xml:space="preserve">
     <value>Digitize Circle</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 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="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_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="TooltipDisableTooltips" xml:space="preserve">
-    <value>Tooltips are enabled. Click to disable</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="TooltipEnableTooltips" xml:space="preserve">
-    <value>Tooltips are disabled. Click to enable</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="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 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="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 name="TextDigitizePolygon" xml:space="preserve">
+    <value>Digitize Polygon</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="TextSelectRadius" xml:space="preserve">
+    <value>Select Radius</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>
+  <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="TextPan" xml:space="preserve">
     <value>Pan</value>
   </data>
-  <data name="TextZoomOut" xml:space="preserve">
-    <value>Zoom Out</value>
+  <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="TextDigitizeLineString" xml:space="preserve">
-    <value>Digitize Line String</value>
+  <data name="TextDigitizeLine" xml:space="preserve">
+    <value>Digitize Line</value>
   </data>
   <data name="TextZoomIn" xml:space="preserve">
     <value>Zoom In</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 name="TextDigitizeLineString" xml:space="preserve">
+    <value>Digitize Line String</value>
   </data>
-  <data name="TextZoomExtents" xml:space="preserve">
-    <value>Zoom Extents</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="TextDisableTooltips" xml:space="preserve">
+    <value>Disable Tooltips</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>
+  <data name="TextSelectPolygon" xml:space="preserve">
+    <value>Select Polygon</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="TitleViewerOptions" xml:space="preserve">
+    <value>Viewer Options</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="TextPlotToDwf" xml:space="preserve">
+    <value>Plot to DWF</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>
+  <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="TextDigitizePoint" xml:space="preserve">
+    <value>Digitize Point</value>
+  </data>
   <data name="TextCopyMap" xml:space="preserve">
     <value>Copy map to clipboard</value>
   </data>
-  <data name="TextDisableTooltips" xml:space="preserve">
-    <value>Disable Tooltips</value>
+  <data name="CountFormat" xml:space="preserve">
+    <value>{0} features in layer</value>
   </data>
-  <data name="TextEnableTooltips" xml:space="preserve">
-    <value>Enable Tooltips</value>
+  <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="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="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_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 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="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="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="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="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="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="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="TooltipDisableTooltips" xml:space="preserve">
+    <value>Tooltips are enabled. Click to disable</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>
   <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="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_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="TextClearSelection" xml:space="preserve">
+    <value>Clear Selection</value>
+  </data>
+  <data name="TextEnableTooltips" xml:space="preserve">
+    <value>Enable Tooltips</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>
-  <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 name="TextDigitizeRectangle" xml:space="preserve">
+    <value>Digitize Rectangle</value>
   </data>
-  <data name="TextSelectPolygon" xml:space="preserve">
-    <value>Select Polygon</value>
+  <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="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="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="TextSelect" xml:space="preserve">
-    <value>Select</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_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="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="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="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="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="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="TextRefreshMap" xml:space="preserve">
     <value>Refresh Map</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 name="TextZoomExtents" xml:space="preserve">
+    <value>Zoom Extents</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 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="TextDigitizePoint" xml:space="preserve">
-    <value>Digitize Point</value>
+  <data name="TextSelect" xml:space="preserve">
+    <value>Select</value>
   </data>
+  <data name="TitleQuery" xml:space="preserve">
+    <value>Query</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>
-  <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 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="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 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="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="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="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="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="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="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="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="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="TitleBuffer" xml:space="preserve">
+    <value>Buffer</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>
-  <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="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="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="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="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="TitleMeasure" xml:space="preserve">
+    <value>Measure</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 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="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="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 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="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 name="TooltipEnableTooltips" xml:space="preserve">
+    <value>Tooltips are disabled. Click to enable</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="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="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="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="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="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="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 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="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 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="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 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>
   <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="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="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="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 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="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="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="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="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="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 name="TextLoadPackage" xml:space="preserve">
+    <value>Load Package</value>
   </data>
-  <data name="CountFormat" xml:space="preserve">
-    <value>{0} features in layer</value>
+  <data name="TextPackageLoaded" xml:space="preserve">
+    <value>Package Loaded</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 name="TextTaskPane" xml:space="preserve">
+    <value>Task Pane</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="TextViewerOptions" xml:space="preserve">
+    <value>Viewer Options</value>
   </data>
-  <data name="TitleBuffer" xml:space="preserve">
-    <value>Buffer</value>
+  <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="TitleMeasure" xml:space="preserve">
-    <value>Measure</value>
+  <data name="TextOptionsSaved" xml:space="preserve">
+    <value>Options Saved</value>
   </data>
-  <data name="TitleQuery" xml:space="preserve">
-    <value>Query</value>
+  <data name="TextNoSelection" xml:space="preserve">
+    <value>Nothing is selected</value>
   </data>
+  <data name="TextZoomToSelection" xml:space="preserve">
+    <value>Zoom to Selection</value>
+  </data>
 </root>
\ No newline at end of file

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


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

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


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

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


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

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


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

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


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


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

Added: branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,58 @@
+namespace OSGeo.MapGuide.Viewer.Tasks
+{
+    partial class MgTaskPaneStub
+    {
+        /// <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(MgTaskPaneStub));
+            this.label2 = new System.Windows.Forms.Label();
+            this.SuspendLayout();
+            // 
+            // label2
+            // 
+            this.label2.Location = new System.Drawing.Point(17, 15);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(208, 427);
+            this.label2.TabIndex = 1;
+            this.label2.Text = resources.GetString("label2.Text");
+            // 
+            // MgTaskPaneStub
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.label2);
+            this.Name = "MgTaskPaneStub";
+            this.Size = new System.Drawing.Size(243, 465);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label2;
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,20 @@
+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.Tasks
+{
+    [ToolboxItem(false)]
+    internal partial class MgTaskPaneStub : MgControlImpl
+    {
+        public MgTaskPaneStub()
+        {
+            InitializeComponent();
+            this.Title = "About the Task Pane";
+        }
+    }
+}

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

Deleted: branches/2.4/MgDev/Desktop/MapViewerTest/Form1.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/Form1.Designer.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/Form1.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -1,730 +0,0 @@
-namespace MapViewerTest
-{
-    partial class Form1
-    {
-        /// <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(Form1));
-            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
-            this.lblCoords = new System.Windows.Forms.ToolStripStatusLabel();
-            this.lblScale = new System.Windows.Forms.ToolStripStatusLabel();
-            this.lblSelection = new System.Windows.Forms.ToolStripStatusLabel();
-            this.lblSize = new System.Windows.Forms.ToolStripStatusLabel();
-            this.lblLogo = new System.Windows.Forms.ToolStripStatusLabel();
-            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
-            this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.openMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.loadPackageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.quitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.testToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.loadCompactMapViewerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.debugToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.showConnectionPoolStatusToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.purgePooledConnectionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.ctxViewer = new System.Windows.Forms.ContextMenuStrip(this.components);
-            this.refreshMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.initialViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
-            this.btnDigitizePoint = new System.Windows.Forms.ToolStripButton();
-            this.btnDigitizeLine = new System.Windows.Forms.ToolStripButton();
-            this.btnDigitizePolyline = new System.Windows.Forms.ToolStripButton();
-            this.btnDigitizeCircle = new System.Windows.Forms.ToolStripButton();
-            this.btnDigitizeRectangle = new System.Windows.Forms.ToolStripButton();
-            this.btnDigitizePolygon = new System.Windows.Forms.ToolStripButton();
-            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
-            this.btnPlotToDwf = new System.Windows.Forms.ToolStripButton();
-            this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
-            this.toolStripButton4 = new System.Windows.Forms.ToolStripButton();
-            this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
-            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
-            this.splitContainer2 = new System.Windows.Forms.SplitContainer();
-            this.legend = new OSGeo.MapGuide.Viewer.MgLegend();
-            this.ctxGroup = new System.Windows.Forms.ContextMenuStrip(this.components);
-            this.thisIsAGroupContextMenuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.ctxLayer = new System.Windows.Forms.ContextMenuStrip(this.components);
-            this.thisIsALayerContextMenuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.propertyPane = new OSGeo.MapGuide.Viewer.MgPropertyPane();
-            this.viewer = new OSGeo.MapGuide.Viewer.MgMapViewer();
-            this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
-            this.toolbar = new OSGeo.MapGuide.Viewer.MgDefaultToolbar();
-            this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
-            this.mgInvokeComponentButton1 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
-            this.mgBufferControl1 = new OSGeo.MapGuide.Viewer.MgBufferControl();
-            this.mgInvokeComponentButton2 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
-            this.mgMeasureControl1 = new OSGeo.MapGuide.Viewer.MgMeasureControl();
-            this.mgInvokeComponentButton3 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
-            this.mgQueryControl1 = new OSGeo.MapGuide.Viewer.MgQueryControl();
-            this.mgInvokeComponentMenuStripItem1 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem();
-            this.mgInvokeComponentMenuStripItem2 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem();
-            this.mgInvokeComponentMenuStripItem3 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem();
-            this.mgInvokeComponentMenuStripItem4 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem();
-            this.mgInvokeComponentMenuStripItem5 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem();
-            this.mgInvokeComponentMenuStripItem6 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem();
-            this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
-            this.statusStrip1.SuspendLayout();
-            this.menuStrip1.SuspendLayout();
-            this.ctxViewer.SuspendLayout();
-            this.toolStrip1.SuspendLayout();
-            this.splitContainer1.Panel1.SuspendLayout();
-            this.splitContainer1.Panel2.SuspendLayout();
-            this.splitContainer1.SuspendLayout();
-            this.splitContainer2.Panel1.SuspendLayout();
-            this.splitContainer2.Panel2.SuspendLayout();
-            this.splitContainer2.SuspendLayout();
-            this.ctxGroup.SuspendLayout();
-            this.ctxLayer.SuspendLayout();
-            this.toolStripContainer1.ContentPanel.SuspendLayout();
-            this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
-            this.toolStripContainer1.SuspendLayout();
-            this.toolbar.SuspendLayout();
-            this.SuspendLayout();
-            // 
-            // statusStrip1
-            // 
-            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.lblCoords,
-            this.lblScale,
-            this.lblSelection,
-            this.lblSize,
-            this.lblLogo});
-            this.statusStrip1.Location = new System.Drawing.Point(0, 539);
-            this.statusStrip1.Name = "statusStrip1";
-            this.statusStrip1.Size = new System.Drawing.Size(784, 23);
-            this.statusStrip1.TabIndex = 0;
-            this.statusStrip1.Text = "statusStrip1";
-            // 
-            // lblCoords
-            // 
-            this.lblCoords.Name = "lblCoords";
-            this.lblCoords.Size = new System.Drawing.Size(0, 18);
-            this.lblCoords.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-            // 
-            // lblScale
-            // 
-            this.lblScale.Name = "lblScale";
-            this.lblScale.Size = new System.Drawing.Size(0, 18);
-            // 
-            // lblSelection
-            // 
-            this.lblSelection.Name = "lblSelection";
-            this.lblSelection.Size = new System.Drawing.Size(632, 18);
-            this.lblSelection.Spring = true;
-            // 
-            // lblSize
-            // 
-            this.lblSize.Name = "lblSize";
-            this.lblSize.Size = new System.Drawing.Size(0, 18);
-            // 
-            // lblLogo
-            // 
-            this.lblLogo.Image = global::MapViewerTest.Properties.Resources.PoweredBy_en;
-            this.lblLogo.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
-            this.lblLogo.Name = "lblLogo";
-            this.lblLogo.Size = new System.Drawing.Size(137, 18);
-            // 
-            // menuStrip1
-            // 
-            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.fileToolStripMenuItem,
-            this.testToolStripMenuItem,
-            this.toolsToolStripMenuItem,
-            this.debugToolStripMenuItem});
-            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
-            this.menuStrip1.Name = "menuStrip1";
-            this.menuStrip1.Size = new System.Drawing.Size(784, 24);
-            this.menuStrip1.TabIndex = 1;
-            this.menuStrip1.Text = "menuStrip1";
-            // 
-            // fileToolStripMenuItem
-            // 
-            this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.openMapToolStripMenuItem,
-            this.loadPackageToolStripMenuItem,
-            this.quitToolStripMenuItem});
-            this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
-            this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
-            this.fileToolStripMenuItem.Text = "File";
-            // 
-            // openMapToolStripMenuItem
-            // 
-            this.openMapToolStripMenuItem.Name = "openMapToolStripMenuItem";
-            this.openMapToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
-            this.openMapToolStripMenuItem.Text = "Open Map";
-            this.openMapToolStripMenuItem.Click += new System.EventHandler(this.openMapToolStripMenuItem_Click);
-            // 
-            // loadPackageToolStripMenuItem
-            // 
-            this.loadPackageToolStripMenuItem.Name = "loadPackageToolStripMenuItem";
-            this.loadPackageToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
-            this.loadPackageToolStripMenuItem.Text = "Load Package";
-            this.loadPackageToolStripMenuItem.Click += new System.EventHandler(this.loadPackageToolStripMenuItem_Click);
-            // 
-            // quitToolStripMenuItem
-            // 
-            this.quitToolStripMenuItem.Name = "quitToolStripMenuItem";
-            this.quitToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
-            this.quitToolStripMenuItem.Text = "Quit";
-            this.quitToolStripMenuItem.Click += new System.EventHandler(this.quitToolStripMenuItem_Click);
-            // 
-            // testToolStripMenuItem
-            // 
-            this.testToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.loadCompactMapViewerToolStripMenuItem});
-            this.testToolStripMenuItem.Name = "testToolStripMenuItem";
-            this.testToolStripMenuItem.Size = new System.Drawing.Size(41, 20);
-            this.testToolStripMenuItem.Text = "Test";
-            // 
-            // loadCompactMapViewerToolStripMenuItem
-            // 
-            this.loadCompactMapViewerToolStripMenuItem.Name = "loadCompactMapViewerToolStripMenuItem";
-            this.loadCompactMapViewerToolStripMenuItem.Size = new System.Drawing.Size(217, 22);
-            this.loadCompactMapViewerToolStripMenuItem.Text = "Load Compact Map Viewer";
-            this.loadCompactMapViewerToolStripMenuItem.Click += new System.EventHandler(this.loadCompactMapViewerToolStripMenuItem_Click);
-            // 
-            // toolsToolStripMenuItem
-            // 
-            this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.mgInvokeComponentMenuStripItem1,
-            this.mgInvokeComponentMenuStripItem2,
-            this.mgInvokeComponentMenuStripItem3});
-            this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
-            this.toolsToolStripMenuItem.Size = new System.Drawing.Size(48, 20);
-            this.toolsToolStripMenuItem.Text = "Tools";
-            // 
-            // debugToolStripMenuItem
-            // 
-            this.debugToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.showConnectionPoolStatusToolStripMenuItem,
-            this.purgePooledConnectionsToolStripMenuItem});
-            this.debugToolStripMenuItem.Name = "debugToolStripMenuItem";
-            this.debugToolStripMenuItem.Size = new System.Drawing.Size(54, 20);
-            this.debugToolStripMenuItem.Text = "Debug";
-            // 
-            // showConnectionPoolStatusToolStripMenuItem
-            // 
-            this.showConnectionPoolStatusToolStripMenuItem.Name = "showConnectionPoolStatusToolStripMenuItem";
-            this.showConnectionPoolStatusToolStripMenuItem.Size = new System.Drawing.Size(230, 22);
-            this.showConnectionPoolStatusToolStripMenuItem.Text = "Show Connection Pool Status";
-            this.showConnectionPoolStatusToolStripMenuItem.Click += new System.EventHandler(this.showConnectionPoolStatusToolStripMenuItem_Click);
-            // 
-            // purgePooledConnectionsToolStripMenuItem
-            // 
-            this.purgePooledConnectionsToolStripMenuItem.Name = "purgePooledConnectionsToolStripMenuItem";
-            this.purgePooledConnectionsToolStripMenuItem.Size = new System.Drawing.Size(230, 22);
-            this.purgePooledConnectionsToolStripMenuItem.Text = "Purge Pooled Connections";
-            this.purgePooledConnectionsToolStripMenuItem.Click += new System.EventHandler(this.purgePooledConnectionsToolStripMenuItem_Click);
-            // 
-            // ctxViewer
-            // 
-            this.ctxViewer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.refreshMapToolStripMenuItem,
-            this.initialViewToolStripMenuItem,
-            this.toolStripSeparator5,
-            this.mgInvokeComponentMenuStripItem4,
-            this.mgInvokeComponentMenuStripItem5,
-            this.mgInvokeComponentMenuStripItem6});
-            this.ctxViewer.Name = "ctxViewer";
-            this.ctxViewer.Size = new System.Drawing.Size(153, 142);
-            // 
-            // refreshMapToolStripMenuItem
-            // 
-            this.refreshMapToolStripMenuItem.Name = "refreshMapToolStripMenuItem";
-            this.refreshMapToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
-            this.refreshMapToolStripMenuItem.Text = "Refresh Map";
-            this.refreshMapToolStripMenuItem.Click += new System.EventHandler(this.refreshMapToolStripMenuItem_Click);
-            // 
-            // initialViewToolStripMenuItem
-            // 
-            this.initialViewToolStripMenuItem.Name = "initialViewToolStripMenuItem";
-            this.initialViewToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
-            this.initialViewToolStripMenuItem.Text = "Initial View";
-            this.initialViewToolStripMenuItem.Click += new System.EventHandler(this.initialViewToolStripMenuItem_Click);
-            // 
-            // toolStrip1
-            // 
-            this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;
-            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.btnDigitizePoint,
-            this.btnDigitizeLine,
-            this.btnDigitizePolyline,
-            this.btnDigitizeCircle,
-            this.btnDigitizeRectangle,
-            this.btnDigitizePolygon,
-            this.toolStripSeparator1,
-            this.btnPlotToDwf,
-            this.toolStripSeparator2,
-            this.toolStripButton4,
-            this.toolStripSeparator3});
-            this.toolStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
-            this.toolStrip1.Location = new System.Drawing.Point(0, 25);
-            this.toolStrip1.Name = "toolStrip1";
-            this.toolStrip1.Size = new System.Drawing.Size(784, 25);
-            this.toolStrip1.Stretch = true;
-            this.toolStrip1.TabIndex = 2;
-            this.toolStrip1.Text = "toolStrip1";
-            // 
-            // btnDigitizePoint
-            // 
-            this.btnDigitizePoint.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-            this.btnDigitizePoint.Image = global::MapViewerTest.Properties.Resources.layer_small;
-            this.btnDigitizePoint.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.btnDigitizePoint.Name = "btnDigitizePoint";
-            this.btnDigitizePoint.Size = new System.Drawing.Size(23, 22);
-            this.btnDigitizePoint.Text = "Digitize Point";
-            this.btnDigitizePoint.Click += new System.EventHandler(this.btnDigitizePoint_Click);
-            // 
-            // btnDigitizeLine
-            // 
-            this.btnDigitizeLine.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-            this.btnDigitizeLine.Image = global::MapViewerTest.Properties.Resources.layer_shape_line;
-            this.btnDigitizeLine.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.btnDigitizeLine.Name = "btnDigitizeLine";
-            this.btnDigitizeLine.Size = new System.Drawing.Size(23, 22);
-            this.btnDigitizeLine.Text = "Digitize Line";
-            this.btnDigitizeLine.Click += new System.EventHandler(this.btnDigitizeLine_Click);
-            // 
-            // btnDigitizePolyline
-            // 
-            this.btnDigitizePolyline.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-            this.btnDigitizePolyline.Image = global::MapViewerTest.Properties.Resources.layer_shape_polyline;
-            this.btnDigitizePolyline.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.btnDigitizePolyline.Name = "btnDigitizePolyline";
-            this.btnDigitizePolyline.Size = new System.Drawing.Size(23, 22);
-            this.btnDigitizePolyline.Text = "Digitize Line String";
-            this.btnDigitizePolyline.Click += new System.EventHandler(this.btnDigitizePolyline_Click);
-            // 
-            // btnDigitizeCircle
-            // 
-            this.btnDigitizeCircle.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-            this.btnDigitizeCircle.Image = global::MapViewerTest.Properties.Resources.layer_shape_ellipse;
-            this.btnDigitizeCircle.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.btnDigitizeCircle.Name = "btnDigitizeCircle";
-            this.btnDigitizeCircle.Size = new System.Drawing.Size(23, 22);
-            this.btnDigitizeCircle.Text = "Digitize Circle";
-            this.btnDigitizeCircle.Click += new System.EventHandler(this.btnDigitizeCircle_Click);
-            // 
-            // btnDigitizeRectangle
-            // 
-            this.btnDigitizeRectangle.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-            this.btnDigitizeRectangle.Image = global::MapViewerTest.Properties.Resources.layer_shape;
-            this.btnDigitizeRectangle.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.btnDigitizeRectangle.Name = "btnDigitizeRectangle";
-            this.btnDigitizeRectangle.Size = new System.Drawing.Size(23, 22);
-            this.btnDigitizeRectangle.Text = "Digitize Rectangle";
-            this.btnDigitizeRectangle.Click += new System.EventHandler(this.btnDigitizeRectangle_Click);
-            // 
-            // btnDigitizePolygon
-            // 
-            this.btnDigitizePolygon.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-            this.btnDigitizePolygon.Image = global::MapViewerTest.Properties.Resources.layer_shape_polygon;
-            this.btnDigitizePolygon.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.btnDigitizePolygon.Name = "btnDigitizePolygon";
-            this.btnDigitizePolygon.Size = new System.Drawing.Size(23, 22);
-            this.btnDigitizePolygon.Text = "Digitize Polygon";
-            this.btnDigitizePolygon.Click += new System.EventHandler(this.btnDigitizePolygon_Click);
-            // 
-            // toolStripSeparator1
-            // 
-            this.toolStripSeparator1.Name = "toolStripSeparator1";
-            this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
-            // 
-            // btnPlotToDwf
-            // 
-            this.btnPlotToDwf.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-            this.btnPlotToDwf.Image = global::MapViewerTest.Properties.Resources.lc_dwf;
-            this.btnPlotToDwf.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.btnPlotToDwf.Name = "btnPlotToDwf";
-            this.btnPlotToDwf.Size = new System.Drawing.Size(23, 22);
-            this.btnPlotToDwf.Text = "Plot current view to DWF";
-            this.btnPlotToDwf.Click += new System.EventHandler(this.btnPlotToDwf_Click);
-            // 
-            // toolStripSeparator2
-            // 
-            this.toolStripSeparator2.Name = "toolStripSeparator2";
-            this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
-            // 
-            // toolStripButton4
-            // 
-            this.toolStripButton4.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton4.Image")));
-            this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.toolStripButton4.Name = "toolStripButton4";
-            this.toolStripButton4.Size = new System.Drawing.Size(61, 22);
-            this.toolStripButton4.Text = "Profile";
-            this.toolStripButton4.ToolTipText = "Profile current map view";
-            this.toolStripButton4.Click += new System.EventHandler(this.toolStripButton4_Click);
-            // 
-            // toolStripSeparator3
-            // 
-            this.toolStripSeparator3.Name = "toolStripSeparator3";
-            this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25);
-            // 
-            // splitContainer1
-            // 
-            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
-            this.splitContainer1.Location = new System.Drawing.Point(0, 0);
-            this.splitContainer1.Name = "splitContainer1";
-            // 
-            // splitContainer1.Panel1
-            // 
-            this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
-            // 
-            // splitContainer1.Panel2
-            // 
-            this.splitContainer1.Panel2.Controls.Add(this.viewer);
-            this.splitContainer1.Size = new System.Drawing.Size(784, 465);
-            this.splitContainer1.SplitterDistance = 208;
-            this.splitContainer1.TabIndex = 3;
-            // 
-            // splitContainer2
-            // 
-            this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
-            this.splitContainer2.Location = new System.Drawing.Point(0, 0);
-            this.splitContainer2.Name = "splitContainer2";
-            this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
-            // 
-            // splitContainer2.Panel1
-            // 
-            this.splitContainer2.Panel1.Controls.Add(this.legend);
-            // 
-            // splitContainer2.Panel2
-            // 
-            this.splitContainer2.Panel2.Controls.Add(this.propertyPane);
-            this.splitContainer2.Size = new System.Drawing.Size(208, 465);
-            this.splitContainer2.SplitterDistance = 236;
-            this.splitContainer2.TabIndex = 0;
-            // 
-            // legend
-            // 
-            this.legend.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.legend.GroupContextMenu = this.ctxGroup;
-            this.legend.LayerContextMenu = this.ctxLayer;
-            this.legend.Location = new System.Drawing.Point(0, 0);
-            this.legend.Name = "legend";
-            this.legend.Size = new System.Drawing.Size(208, 236);
-            this.legend.TabIndex = 0;
-            this.legend.ThemeCompressionLimit = 25;
-            // 
-            // ctxGroup
-            // 
-            this.ctxGroup.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.thisIsAGroupContextMenuToolStripMenuItem});
-            this.ctxGroup.Name = "ctxGroup";
-            this.ctxGroup.Size = new System.Drawing.Size(228, 26);
-            // 
-            // thisIsAGroupContextMenuToolStripMenuItem
-            // 
-            this.thisIsAGroupContextMenuToolStripMenuItem.Name = "thisIsAGroupContextMenuToolStripMenuItem";
-            this.thisIsAGroupContextMenuToolStripMenuItem.Size = new System.Drawing.Size(227, 22);
-            this.thisIsAGroupContextMenuToolStripMenuItem.Text = "This is a group context menu";
-            this.thisIsAGroupContextMenuToolStripMenuItem.Click += new System.EventHandler(this.thisIsAGroupContextMenuToolStripMenuItem_Click);
-            // 
-            // ctxLayer
-            // 
-            this.ctxLayer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.thisIsALayerContextMenuToolStripMenuItem});
-            this.ctxLayer.Name = "ctxLayer";
-            this.ctxLayer.Size = new System.Drawing.Size(221, 26);
-            // 
-            // thisIsALayerContextMenuToolStripMenuItem
-            // 
-            this.thisIsALayerContextMenuToolStripMenuItem.Name = "thisIsALayerContextMenuToolStripMenuItem";
-            this.thisIsALayerContextMenuToolStripMenuItem.Size = new System.Drawing.Size(220, 22);
-            this.thisIsALayerContextMenuToolStripMenuItem.Text = "This is a layer context menu";
-            this.thisIsALayerContextMenuToolStripMenuItem.Click += new System.EventHandler(this.thisIsALayerContextMenuToolStripMenuItem_Click);
-            // 
-            // propertyPane
-            // 
-            this.propertyPane.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.propertyPane.Location = new System.Drawing.Point(0, 0);
-            this.propertyPane.Name = "propertyPane";
-            this.propertyPane.Size = new System.Drawing.Size(208, 225);
-            this.propertyPane.TabIndex = 0;
-            // 
-            // viewer
-            // 
-            this.viewer.ContextMenuStrip = this.ctxViewer;
-            this.viewer.ConvertTiledGroupsToNonTiled = true;
-            this.viewer.Cursor = System.Windows.Forms.Cursors.Default;
-            this.viewer.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.viewer.Location = new System.Drawing.Point(0, 0);
-            this.viewer.Name = "viewer";
-            this.viewer.SelectionColor = System.Drawing.Color.OrangeRed;
-            this.viewer.Size = new System.Drawing.Size(572, 465);
-            this.viewer.TabIndex = 1;
-            this.viewer.ZoomInFactor = 0.75;
-            this.viewer.ZoomOutFactor = 1.35;
-            // 
-            // toolStripContainer1
-            // 
-            // 
-            // toolStripContainer1.ContentPanel
-            // 
-            this.toolStripContainer1.ContentPanel.Controls.Add(this.splitContainer1);
-            this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(784, 465);
-            this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.toolStripContainer1.Location = new System.Drawing.Point(0, 24);
-            this.toolStripContainer1.Name = "toolStripContainer1";
-            this.toolStripContainer1.Size = new System.Drawing.Size(784, 515);
-            this.toolStripContainer1.TabIndex = 4;
-            this.toolStripContainer1.Text = "toolStripContainer1";
-            // 
-            // toolStripContainer1.TopToolStripPanel
-            // 
-            this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolbar);
-            this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
-            // 
-            // toolbar
-            // 
-            this.toolbar.Dock = System.Windows.Forms.DockStyle.None;
-            this.toolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.toolStripSeparator4,
-            this.mgInvokeComponentButton1,
-            this.mgInvokeComponentButton2,
-            this.mgInvokeComponentButton3});
-            this.toolbar.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
-            this.toolbar.Location = new System.Drawing.Point(0, 0);
-            this.toolbar.Name = "toolbar";
-            this.toolbar.Size = new System.Drawing.Size(784, 25);
-            this.toolbar.Stretch = true;
-            this.toolbar.TabIndex = 1;
-            this.toolbar.Text = "mgDefaultToolbar1";
-            this.toolbar.Viewer = null;
-            this.toolbar.ZoomOutMode = OSGeo.MapGuide.Viewer.ZoomOutMode.AutoZoom;
-            // 
-            // toolStripSeparator4
-            // 
-            this.toolStripSeparator4.Name = "toolStripSeparator4";
-            this.toolStripSeparator4.Size = new System.Drawing.Size(6, 25);
-            // 
-            // mgInvokeComponentButton1
-            // 
-            this.mgInvokeComponentButton1.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton1.Image")));
-            this.mgInvokeComponentButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.mgInvokeComponentButton1.Name = "mgInvokeComponentButton1";
-            this.mgInvokeComponentButton1.Size = new System.Drawing.Size(59, 22);
-            this.mgInvokeComponentButton1.TargetComponent = this.mgBufferControl1;
-            this.mgInvokeComponentButton1.Text = "Buffer";
-            // 
-            // mgBufferControl1
-            // 
-            this.mgBufferControl1.Icon = ((System.Drawing.Image)(resources.GetObject("mgBufferControl1.Icon")));
-            this.mgBufferControl1.Label = "Buffer";
-            this.mgBufferControl1.ParentContainer = null;
-            this.mgBufferControl1.ToolTipText = null;
-            this.mgBufferControl1.Viewer = this.viewer;
-            // 
-            // mgInvokeComponentButton2
-            // 
-            this.mgInvokeComponentButton2.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton2.Image")));
-            this.mgInvokeComponentButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.mgInvokeComponentButton2.Name = "mgInvokeComponentButton2";
-            this.mgInvokeComponentButton2.Size = new System.Drawing.Size(72, 22);
-            this.mgInvokeComponentButton2.TargetComponent = this.mgMeasureControl1;
-            this.mgInvokeComponentButton2.Text = "Measure";
-            // 
-            // mgMeasureControl1
-            // 
-            this.mgMeasureControl1.Icon = ((System.Drawing.Image)(resources.GetObject("mgMeasureControl1.Icon")));
-            this.mgMeasureControl1.Label = "Measure";
-            this.mgMeasureControl1.ParentContainer = null;
-            this.mgMeasureControl1.ToolTipText = null;
-            this.mgMeasureControl1.Viewer = this.viewer;
-            // 
-            // mgInvokeComponentButton3
-            // 
-            this.mgInvokeComponentButton3.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton3.Image")));
-            this.mgInvokeComponentButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.mgInvokeComponentButton3.Name = "mgInvokeComponentButton3";
-            this.mgInvokeComponentButton3.Size = new System.Drawing.Size(59, 22);
-            this.mgInvokeComponentButton3.TargetComponent = this.mgQueryControl1;
-            this.mgInvokeComponentButton3.Text = "Query";
-            // 
-            // mgQueryControl1
-            // 
-            this.mgQueryControl1.Icon = ((System.Drawing.Image)(resources.GetObject("mgQueryControl1.Icon")));
-            this.mgQueryControl1.Label = "Query";
-            this.mgQueryControl1.ParentContainer = null;
-            this.mgQueryControl1.ToolTipText = null;
-            this.mgQueryControl1.Viewer = this.viewer;
-            // 
-            // mgInvokeComponentMenuStripItem1
-            // 
-            this.mgInvokeComponentMenuStripItem1.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuStripItem1.Image")));
-            this.mgInvokeComponentMenuStripItem1.Name = "mgInvokeComponentMenuStripItem1";
-            this.mgInvokeComponentMenuStripItem1.Size = new System.Drawing.Size(152, 22);
-            this.mgInvokeComponentMenuStripItem1.TargetComponent = this.mgBufferControl1;
-            this.mgInvokeComponentMenuStripItem1.Text = "Buffer";
-            // 
-            // mgInvokeComponentMenuStripItem2
-            // 
-            this.mgInvokeComponentMenuStripItem2.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuStripItem2.Image")));
-            this.mgInvokeComponentMenuStripItem2.Name = "mgInvokeComponentMenuStripItem2";
-            this.mgInvokeComponentMenuStripItem2.Size = new System.Drawing.Size(152, 22);
-            this.mgInvokeComponentMenuStripItem2.TargetComponent = this.mgMeasureControl1;
-            this.mgInvokeComponentMenuStripItem2.Text = "Measure";
-            // 
-            // mgInvokeComponentMenuStripItem3
-            // 
-            this.mgInvokeComponentMenuStripItem3.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuStripItem3.Image")));
-            this.mgInvokeComponentMenuStripItem3.Name = "mgInvokeComponentMenuStripItem3";
-            this.mgInvokeComponentMenuStripItem3.Size = new System.Drawing.Size(152, 22);
-            this.mgInvokeComponentMenuStripItem3.TargetComponent = this.mgQueryControl1;
-            this.mgInvokeComponentMenuStripItem3.Text = "Query";
-            // 
-            // mgInvokeComponentMenuStripItem4
-            // 
-            this.mgInvokeComponentMenuStripItem4.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuStripItem4.Image")));
-            this.mgInvokeComponentMenuStripItem4.Name = "mgInvokeComponentMenuStripItem4";
-            this.mgInvokeComponentMenuStripItem4.Size = new System.Drawing.Size(152, 22);
-            this.mgInvokeComponentMenuStripItem4.TargetComponent = this.mgBufferControl1;
-            this.mgInvokeComponentMenuStripItem4.Text = "Buffer";
-            // 
-            // mgInvokeComponentMenuStripItem5
-            // 
-            this.mgInvokeComponentMenuStripItem5.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuStripItem5.Image")));
-            this.mgInvokeComponentMenuStripItem5.Name = "mgInvokeComponentMenuStripItem5";
-            this.mgInvokeComponentMenuStripItem5.Size = new System.Drawing.Size(152, 22);
-            this.mgInvokeComponentMenuStripItem5.TargetComponent = this.mgMeasureControl1;
-            this.mgInvokeComponentMenuStripItem5.Text = "Measure";
-            // 
-            // mgInvokeComponentMenuStripItem6
-            // 
-            this.mgInvokeComponentMenuStripItem6.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuStripItem6.Image")));
-            this.mgInvokeComponentMenuStripItem6.Name = "mgInvokeComponentMenuStripItem6";
-            this.mgInvokeComponentMenuStripItem6.Size = new System.Drawing.Size(152, 22);
-            this.mgInvokeComponentMenuStripItem6.TargetComponent = this.mgQueryControl1;
-            this.mgInvokeComponentMenuStripItem6.Text = "Query";
-            // 
-            // toolStripSeparator5
-            // 
-            this.toolStripSeparator5.Name = "toolStripSeparator5";
-            this.toolStripSeparator5.Size = new System.Drawing.Size(149, 6);
-            // 
-            // Form1
-            // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(784, 562);
-            this.Controls.Add(this.toolStripContainer1);
-            this.Controls.Add(this.statusStrip1);
-            this.Controls.Add(this.menuStrip1);
-            this.MainMenuStrip = this.menuStrip1;
-            this.Name = "Form1";
-            this.Text = "MapGuide Desktop Map Viewer";
-            this.statusStrip1.ResumeLayout(false);
-            this.statusStrip1.PerformLayout();
-            this.menuStrip1.ResumeLayout(false);
-            this.menuStrip1.PerformLayout();
-            this.ctxViewer.ResumeLayout(false);
-            this.toolStrip1.ResumeLayout(false);
-            this.toolStrip1.PerformLayout();
-            this.splitContainer1.Panel1.ResumeLayout(false);
-            this.splitContainer1.Panel2.ResumeLayout(false);
-            this.splitContainer1.ResumeLayout(false);
-            this.splitContainer2.Panel1.ResumeLayout(false);
-            this.splitContainer2.Panel2.ResumeLayout(false);
-            this.splitContainer2.ResumeLayout(false);
-            this.ctxGroup.ResumeLayout(false);
-            this.ctxLayer.ResumeLayout(false);
-            this.toolStripContainer1.ContentPanel.ResumeLayout(false);
-            this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false);
-            this.toolStripContainer1.TopToolStripPanel.PerformLayout();
-            this.toolStripContainer1.ResumeLayout(false);
-            this.toolStripContainer1.PerformLayout();
-            this.toolbar.ResumeLayout(false);
-            this.toolbar.PerformLayout();
-            this.ResumeLayout(false);
-            this.PerformLayout();
-
-        }
-
-        #endregion
-
-        private System.Windows.Forms.StatusStrip statusStrip1;
-        private System.Windows.Forms.MenuStrip menuStrip1;
-        private System.Windows.Forms.ToolStrip toolStrip1;
-        private System.Windows.Forms.SplitContainer splitContainer1;
-        private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem openMapToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem quitToolStripMenuItem;
-        private System.Windows.Forms.ToolStripStatusLabel lblCoords;
-        private System.Windows.Forms.ToolStripStatusLabel lblScale;
-        private System.Windows.Forms.ToolStripStatusLabel lblSelection;
-        private System.Windows.Forms.ToolStripStatusLabel lblSize;
-        private System.Windows.Forms.SplitContainer splitContainer2;
-        private System.Windows.Forms.ToolStripMenuItem loadPackageToolStripMenuItem;
-        private System.Windows.Forms.ToolStripStatusLabel lblLogo;
-        private System.Windows.Forms.ToolStripButton btnDigitizePoint;
-        private System.Windows.Forms.ToolStripButton btnDigitizeLine;
-        private System.Windows.Forms.ToolStripButton btnDigitizePolyline;
-        private System.Windows.Forms.ToolStripButton btnDigitizeCircle;
-        private System.Windows.Forms.ToolStripButton btnDigitizeRectangle;
-        private System.Windows.Forms.ToolStripButton btnDigitizePolygon;
-        private OSGeo.MapGuide.Viewer.MgDefaultToolbar toolbar;
-        private System.Windows.Forms.ToolStripContainer toolStripContainer1;
-        private OSGeo.MapGuide.Viewer.MgMapViewer viewer;
-        private OSGeo.MapGuide.Viewer.MgPropertyPane propertyPane;
-        private System.Windows.Forms.ToolStripButton btnPlotToDwf;
-        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
-        private System.Windows.Forms.ToolStripMenuItem testToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem loadCompactMapViewerToolStripMenuItem;
-        private System.Windows.Forms.ContextMenuStrip ctxGroup;
-        private System.Windows.Forms.ContextMenuStrip ctxLayer;
-        private System.Windows.Forms.ToolStripMenuItem thisIsAGroupContextMenuToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem thisIsALayerContextMenuToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem debugToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem showConnectionPoolStatusToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem purgePooledConnectionsToolStripMenuItem;
-        private OSGeo.MapGuide.Viewer.MgLegend legend;
-        private System.Windows.Forms.ContextMenuStrip ctxViewer;
-        private System.Windows.Forms.ToolStripMenuItem refreshMapToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem initialViewToolStripMenuItem;
-        private System.Windows.Forms.ToolStripButton toolStripButton4;
-        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
-        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
-        private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
-        private OSGeo.MapGuide.Viewer.MgBufferControl mgBufferControl1;
-        private OSGeo.MapGuide.Viewer.MgQueryControl mgQueryControl1;
-        private OSGeo.MapGuide.Viewer.MgMeasureControl mgMeasureControl1;
-        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton1;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton2;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton3;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem mgInvokeComponentMenuStripItem1;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem mgInvokeComponentMenuStripItem2;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem mgInvokeComponentMenuStripItem3;
-        private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem mgInvokeComponentMenuStripItem4;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem mgInvokeComponentMenuStripItem5;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuStripItem mgInvokeComponentMenuStripItem6;
-    }
-}
-

Deleted: branches/2.4/MgDev/Desktop/MapViewerTest/Form1.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/Form1.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/Form1.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -1,455 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using OSGeo.MapGuide;
-using OSGeo.MapGuide.Viewer;
-using OSGeo.MapGuide.Viewer.Desktop;
-
-namespace MapViewerTest
-{
-    public partial class Form1 : Form, IMapStatusBar
-    {
-        private MgServiceFactory fact;
-
-        public Form1()
-        {
-            InitializeComponent();
-        }
-
-        protected override void OnLoad(EventArgs e)
-        {
-            new MapViewerController(viewer, legend, this, propertyPane, toolbar);
-            _agfRW = new MgAgfReaderWriter();
-            _wktRW = new MgWktReaderWriter();
-            _geomFact = new MgGeometryFactory();
-            fact = new MgServiceFactory();
-            base.OnLoad(e);
-        }
-
-        public void SetCursorPositionMessage(string message)
-        {
-            lblCoords.Text = message;
-        }
-
-        public void SetFeatureSelectedMessage(string message)
-        {
-            lblSelection.Text = message;
-        }
-
-        public void SetMapScaleMessage(string message)
-        {
-            lblScale.Text = message;
-        }
-
-        public void SetMapSizeMessage(string message)
-        {
-            lblSize.Text = message;
-        }
-
-        private void btnRefresh_Click(object sender, EventArgs e)
-        {
-            viewer.RefreshMap();
-        }
-
-        private void btnZoomExtents_Click(object sender, EventArgs e)
-        {
-            viewer.InitialMapView();   
-        }
-
-        private void btnZoomOut_Click(object sender, EventArgs e)
-        {
-            viewer.ActiveTool = MapActiveTool.ZoomOut;   
-        }
-
-        private void openMapToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            using (var diag = new ResourceIdDialog())
-            {
-                if (diag.ShowDialog() == DialogResult.OK)
-                {
-                    LoadMap(diag.ResourceID);
-                }
-            }
-        }
-
-        private MgWktReaderWriter _wktRW;
-        private MgAgfReaderWriter _agfRW;
-        private MgGeometryFactory _geomFact;
-        private MgdLayer _redlineLayer;
-        private MgdMap _map;
-
-        public void LoadMap(MgResourceIdentifier resourceId)
-        {
-            //viewer.ConvertTiledGroupsToNonTiled = true;
-            _map = new MgdMap(resourceId);
-            var fact = new MgServiceFactory();
-
-            viewer.Init(
-                new MgDesktopMapViewerProvider(
-                    _map, 
-                    (MgdResourceService)fact.CreateService(MgServiceType.ResourceService), 
-                    (MgRenderingService)fact.CreateService(MgServiceType.RenderingService)));
-            UpdateButtonCheckedState();
-
-            /*
-            //This code fragment is to prove that the viewer will
-            //start with a rendered selection even if a rendering 
-            //operation is in progress
-            var query = new MgFeatureQueryOptions();
-            query.SetFilter("Autogenerated_SDF_ID = 2");
-            var layers = _map.GetLayers();
-            var layer = layers.GetItem("Districts");
-
-            var reader = layer.SelectFeatures(query);
-            var selection = viewer.GetSelection();
-            selection.AddFeatures(layer, reader, 0);
-            reader.Close();
-
-            viewer.UpdateSelection();
-            */
-        }
-
-        private void quitToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            Application.Exit();
-        }
-
-        private void btnPan_Click(object sender, EventArgs e)
-        {
-            viewer.ActiveTool = MapActiveTool.Pan;   
-        }
-
-        private void btnSelect_Click(object sender, EventArgs e)
-        {
-            viewer.ActiveTool = MapActiveTool.Select;
-        }
-
-        private void btnZoom_Click(object sender, EventArgs e)
-        {
-            viewer.ActiveTool = MapActiveTool.ZoomIn;
-        }
-
-        private void btnClearSelection_Click(object sender, EventArgs e)
-        {
-            viewer.ClearSelection();
-        }
-
-        private void loadPackageToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            using (var open = new OpenFileDialog())
-            {
-                open.Filter = "MapGuide Packages (*.mgp)|*.mgp";
-                if (open.ShowDialog() == DialogResult.OK)
-                {
-                    var fact = new MgServiceFactory();
-                    var resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-                    var source = new MgByteSource(open.FileName);
-                    resSvc.ApplyResourcePackage(source.GetReader());
-                    MessageBox.Show("Package Loaded");
-                }
-            }
-        }
-
-        private void CheckRedlineLayer()
-        {
-            if (_redlineLayer == null)
-            {
-                var fact = new MgServiceFactory();
-                var featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
-                var resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
-
-                var sessionId = Guid.NewGuid().ToString();
-                var fsId = new MgResourceIdentifier("Session:" + sessionId + "//Redline.FeatureSource");
-                var ldfId = new MgResourceIdentifier("Session:" + sessionId + "//Redline.LayerDefinition");
-                string featureClass = "Default:Redline";
-                string geometry = "Geometry";
-                string xml = string.Format(Properties.Resources.DebugLayer, fsId.ToString(), featureClass, geometry);
-
-                var schema = new MgFeatureSchema("Default", "Redline schema");
-                var cls = new MgClassDefinition();
-                cls.Name = "Redline";
-
-                var id = new MgDataPropertyDefinition("ID");
-                id.DataType = MgPropertyType.Int32;
-                id.SetAutoGeneration(true);
-
-                var geom = new MgGeometricPropertyDefinition(geometry);
-                geom.SpatialContextAssociation = "Default";
-                geom.GeometryTypes = MgFeatureGeometricType.Curve | MgFeatureGeometricType.Point | MgFeatureGeometricType.Solid | MgFeatureGeometricType.Surface;
-
-                var clsProps = cls.GetProperties();
-                clsProps.Add(id);
-                clsProps.Add(geom);
-                
-                var idProps = cls.GetIdentityProperties();
-                idProps.Add(id);
-
-                cls.DefaultGeometryPropertyName = geometry;
-                var classes = schema.GetClasses();
-                classes.Add(cls);
-
-                //Create the feature source
-                var create = new MgCreateSdfParams("Default", _map.GetMapSRS(), schema);
-                featSvc.CreateFeatureSource(fsId, create);
-
-                //Then the layer definition
-                var bytes = Encoding.UTF8.GetBytes(xml);
-                MgByteSource source = new MgByteSource(bytes, bytes.Length);
-                resSvc.SetResource(ldfId, source.GetReader(), null);
-
-                //Now create the runtime layer and add to map
-                _redlineLayer = new MgdLayer(ldfId, resSvc);
-                _redlineLayer.LegendLabel = "Redlining";
-                _redlineLayer.Name = "Redline";
-                _redlineLayer.Visible = true;
-                _redlineLayer.Selectable = true;
-                _redlineLayer.DisplayInLegend = true;
-
-                var layers = _map.GetLayers();
-                layers.Insert(0, _redlineLayer);
-
-                //System.Diagnostics.Trace.TraceInformation("Created redline layer");
-            }
-        }
-
-        static string MakeWktPolygon(double x1, double y1, double x2, double y2)
-        {
-            return "POLYGON((" + x1 + " " + y1 + ", " + x2 + " " + y1 + ", " + x2 + " " + y2 + ", " + x1 + " " + y2 + ", " + x1 + " " + y1 + "))";
-        }
-
-        static string MakeWktCircle(double x, double y, double r)
-        {
-            return "CURVEPOLYGON ((" + (x - r) + " " + y + " (CIRCULARARCSEGMENT (" + x + " " + (y - r) + ", " + (x + r) + " " + y + "), CIRCULARARCSEGMENT (" + x + " " + (y + r) + ", " + (x - r) + " " + y + "))))";
-        }
-
-        private void btnDigitizePoint_Click(object sender, EventArgs e)
-        {
-            viewer.DigitizePoint(OnPointDigitized);
-        }
-
-        private void OnPointDigitized(double x, double y)
-        {
-            CheckRedlineLayer();
-            MgGeometry point = _geomFact.CreatePoint(_geomFact.CreateCoordinateXY(x, y));
-            InsertRedlineGeometry(point);
-        }
-
-        private void btnDigitizeLine_Click(object sender, EventArgs e)
-        {
-            viewer.DigitizeLine(OnLineDigitized);
-        }
-
-        private void OnLineDigitized(double x1, double y1, double x2, double y2)
-        {
-            CheckRedlineLayer();
-            MgCoordinateCollection coords = new MgCoordinateCollection();
-            coords.Add(_geomFact.CreateCoordinateXY(x1, y1));
-            coords.Add(_geomFact.CreateCoordinateXY(x2, y2));
-            MgGeometry line = _geomFact.CreateLineString(coords);
-            InsertRedlineGeometry(line);
-        }
-
-        private void btnDigitizePolyline_Click(object sender, EventArgs e)
-        {
-            viewer.DigitizeLineString(OnLineStringDigitized);
-        }
-
-        private void OnLineStringDigitized(double[,] coordinates)
-        {
-            CheckRedlineLayer();
-            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(line);
-        }
-
-        private void btnDigitizeCircle_Click(object sender, EventArgs e)
-        {
-            viewer.DigitizeCircle(OnCircleDigitized);
-        }
-
-        private void OnCircleDigitized(double x, double y, double radius)
-        {
-            CheckRedlineLayer();
-            MgGeometry geom = _wktRW.Read(MakeWktCircle(x, y, radius));
-            InsertRedlineGeometry(geom);
-        }
-
-        private void btnDigitizeRectangle_Click(object sender, EventArgs e)
-        {
-            viewer.DigitizeRectangle(OnRectangleDigitized);
-        }
-
-        private void OnRectangleDigitized(double llx, double lly, double urx, double ury)
-        {
-            CheckRedlineLayer();
-            MgGeometry geom = _wktRW.Read(MakeWktPolygon(llx, lly, urx, ury));
-            InsertRedlineGeometry(geom);
-        }
-
-        private void btnDigitizePolygon_Click(object sender, EventArgs e)
-        {
-            viewer.DigitizePolygon(OnPolygonDigitized);
-        }
-
-        private void OnPolygonDigitized(double[,] coordinates)
-        {
-            CheckRedlineLayer();
-            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(poly);
-        }
-
-        private void InsertRedlineGeometry(MgGeometry geom)
-        {
-            MgPropertyCollection feature = new MgPropertyCollection();
-            MgByteReader agf = _agfRW.Write(geom);
-            MgGeometryProperty geomProp = new MgGeometryProperty("Geometry", agf);
-            feature.Add(geomProp);
-
-            _redlineLayer.ForceRefresh();
-            var reader = _redlineLayer.InsertFeatures(feature);
-            int inserted = 0;
-            while (reader.ReadNext())
-            {
-                inserted++;
-            }
-            reader.Close();
-            if (inserted > 0)
-                viewer.RefreshMap();
-        }
-
-        private void viewer_PropertyChanged(object sender, PropertyChangedEventArgs e)
-        {
-            if (e.PropertyName == "IsBusy")
-            {
-                var busy = viewer.IsBusy;
-                btnDigitizeCircle.Enabled
-                                       = btnDigitizeLine.Enabled
-                                       = btnDigitizePoint.Enabled
-                                       = btnDigitizePolygon.Enabled
-                                       = btnDigitizePolyline.Enabled
-                                       = btnDigitizeRectangle.Enabled  = !busy;
-            }
-            else if (e.PropertyName == "ActiveTool" || e.PropertyName == "DigitizingType")
-            {
-                UpdateButtonCheckedState();
-            }
-        }
-
-        private void UpdateButtonCheckedState()
-        {
-            var dt = viewer.DigitizingType;
-            btnDigitizeCircle.Checked = (dt == MapDigitizationType.Circle);
-            btnDigitizeLine.Checked = (dt == MapDigitizationType.Line);
-            btnDigitizePoint.Checked = (dt == MapDigitizationType.Point);
-            btnDigitizePolygon.Checked = (dt == MapDigitizationType.Polygon);
-            btnDigitizePolyline.Checked = (dt == MapDigitizationType.LineString);
-            btnDigitizeRectangle.Checked = (dt == MapDigitizationType.Rectangle);
-        }
-
-        private void btnPlotToDwf_Click(object sender, EventArgs e)
-        {
-            var diag = new ResourceIdDialog();
-            if (diag.ShowDialog() == DialogResult.OK)
-            {
-                var layoutId = diag.ResourceID;
-                using (var save = new SaveFileDialog())
-                {
-                    save.Filter = "DWF Files (*.dwf)|*.dwf";
-                    if (save.ShowDialog() == DialogResult.OK)
-                    {
-                        var renderSvc = (MgRenderingService)viewer.GetProvider().CreateService(MgServiceType.RenderingService);
-                        var map = (MgdMap)viewer.GetMap();
-                        var dwfVer = new MgDwfVersion("6.01", "1.2");
-
-                        var layout = new MgLayout(layoutId, "TestPlot", MgPageUnitsType.Inches);
-                        var plotSpec = new MgPlotSpecification(8.5f, 11.0f, MgPageUnitsType.Inches, 0.5f, 0.5f, 0.5f, 0.5f);
-
-                        var result = renderSvc.GeneratePlot(map, plotSpec, layout, dwfVer);
-                        var sink = new MgByteSink(result);
-                        sink.ToFile(save.FileName);
-
-                        MessageBox.Show("Saved to " + save.FileName);
-                    }
-                }
-            }
-        }
-
-        private void loadCompactMapViewerToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            var map = viewer.GetMap();
-            var resId = map.GetMapDefinition();
-
-            var cv = new CompactViewer();
-            cv.LoadMap(resId);
-            cv.Show();
-        }
-
-        private void thisIsAGroupContextMenuToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            var group = legend.GetSelectedGroup();
-            if (group != null)
-                MessageBox.Show("Selected group is: " + group.Name);
-        }
-
-        private void thisIsALayerContextMenuToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            var layer = legend.GetSelectedLayer();
-            if (layer != null)
-                MessageBox.Show("Selected layer is: " + layer.Name);
-        }
-
-        private void showConnectionPoolStatusToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            var featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
-            var resp = featSvc.QueryCacheInfo();
-
-            new XmlResponseDialog(resp).ShowDialog();
-        }
-
-        private void purgePooledConnectionsToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            using (var diag = new ResourceIdDialog())
-            {
-                if (diag.ShowDialog() == DialogResult.OK)
-                {
-                    var featSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
-                    featSvc.PurgeCache(diag.ResourceID);
-                    MessageBox.Show("Pooled connections purged for: " + diag.ResourceID.ToString());
-                }
-            }
-        }
-
-        private void refreshMapToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            viewer.RefreshMap();
-        }
-
-        private void initialViewToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            viewer.InitialMapView();
-        }
-
-        private void toolStripButton4_Click(object sender, EventArgs e)
-        {
-            var prof = (MgProfilingService)fact.CreateService(MgServiceType.ProfilingService);
-            var opts = new MgRenderingOptions("PNG", 2, new MgColor(viewer.SelectionColor));
-            var result = prof.ProfileRenderDynamicOverlay(_map, (MgdSelection)viewer.GetSelection(), opts);
-            new XmlResponseDialog(result).ShowDialog();
-        }
-    }
-}

Deleted: branches/2.4/MgDev/Desktop/MapViewerTest/Form1.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/Form1.resx	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/Form1.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -1,306 +0,0 @@
-<?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="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>133, 17</value>
-  </metadata>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="mgInvokeComponentMenuStripItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
-        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
-        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
-        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
-        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
-        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
-        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
-</value>
-  </data>
-  <metadata name="mgBufferControl1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>745, 17</value>
-  </metadata>
-  <data name="mgBufferControl1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
-        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
-        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
-        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
-        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
-        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
-        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
-</value>
-  </data>
-  <metadata name="ctxViewer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>641, 17</value>
-  </metadata>
-  <data name="mgInvokeComponentMenuStripItem4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
-        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
-        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
-        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
-        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
-        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
-        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="mgInvokeComponentMenuStripItem5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
-        XEBRGJCjGUXPxCC2Vd1BbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
-        4kAccAMAcR22AO16RYIAAAAASUVORK5CYII=
-</value>
-  </data>
-  <metadata name="mgMeasureControl1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 56</value>
-  </metadata>
-  <data name="mgMeasureControl1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
-        XEBRGJCjGUXPxCC2Vd1BbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
-        4kAccAMAcR22AO16RYIAAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="mgInvokeComponentMenuStripItem6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
-        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
-        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
-        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
-        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
-        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
-        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
-        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
-        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
-        RK5CYII=
-</value>
-  </data>
-  <metadata name="mgQueryControl1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>894, 17</value>
-  </metadata>
-  <data name="mgQueryControl1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
-        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
-        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
-        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
-        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
-        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
-        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
-        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
-        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
-        RK5CYII=
-</value>
-  </data>
-  <data name="mgInvokeComponentMenuStripItem2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
-        XEBRGJCjGUXPxCC2Vd1BbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
-        4kAccAMAcR22AO16RYIAAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="mgInvokeComponentMenuStripItem3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
-        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
-        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
-        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
-        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
-        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
-        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
-        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
-        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
-        RK5CYII=
-</value>
-  </data>
-  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>248, 17</value>
-  </metadata>
-  <data name="toolStripButton4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIISURBVDhPpZP7S1NxGMbPPxKaXVUkMEq8IpKUCoY/hGgI
-        ymqkDYYXcCjDZOANURSjCNGFQUTsl4GXVMxKk62YU4fXQpaIlygHQxBRH8/zwvyaIAYe+HLgnPN8nue9
-        HA3nvDTq63oW/jm13XOwvPTB3DYFY5MH+bXfcN8ygfTSMSSXfESicQDxBqdYHwH29g9w2tnZ3UcguIvN
-        rR3417exuBJE5N1n/wfwLgXEOc38Bc6xNRHb+/y4nm49G0Bnit2zf9H6bkliE/jKuYxrd6oVgDWfjB+K
-        TWeKMyrGEVfowITvD9re/9ABVQrAhh0HHK+ZselMMaN/mvwtDb+aVqkA7HYIwIj3ysfluPTorJnP6Ezx
-        oHsD1s5ZXEktUwCOioB5f1CEPR9+wTG6iuiserTo8dkwng7HT/R+XUPF8xlcTjErAOdMcW6NW8STiwG8
-        7vej8oUPN/PsEv3t8Ao0TZP3T1u8uJRkUgAuSYHtO97oLxmXd5t9Ho8aPTK+GzntqNfrLm2fFoihwYOI
-        xGIF4KjoGBLzY1OrF9k6OOFxnwDC4wxIMX1G0pMhgVyMNyoA13PAtS7OrJk1PrC69LUdQWxuF6IybHrX
-        LRI7JrtZdoDAo1XmbjMyD+tjSXxGcXRmnYg5ttD9QuxDhN0uUgDOmbvNTpPOJaGAo2K36cyaGZvOFIfd
-        KlSA8/zRh9ABIDUG+1JpAAAAAElFTkSuQmCC
-</value>
-  </data>
-  <metadata name="ctxGroup.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>444, 17</value>
-  </metadata>
-  <metadata name="ctxLayer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>545, 17</value>
-  </metadata>
-  <metadata name="toolbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>353, 17</value>
-  </metadata>
-  <data name="mgInvokeComponentButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
-        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
-        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
-        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
-        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
-        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
-        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="mgInvokeComponentButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
-        XEBRGJCjGUXPxCC2Vd1BbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
-        4kAccAMAcR22AO16RYIAAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="mgInvokeComponentButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
-        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
-        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
-        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
-        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
-        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
-        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
-        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
-        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
-        RK5CYII=
-</value>
-  </data>
-</root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/MapViewerTest.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/MapViewerTest.csproj	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/MapViewerTest.csproj	2012-05-04 17:59:22 UTC (rev 6612)
@@ -82,19 +82,19 @@
     <Compile Include="CompactViewer.Designer.cs">
       <DependentUpon>CompactViewer.cs</DependentUpon>
     </Compile>
-    <Compile Include="Form1.cs">
+    <Compile Include="MgAppWindow.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Include="Form1.Designer.cs">
-      <DependentUpon>Form1.cs</DependentUpon>
+    <Compile Include="MgAppWindow.Designer.cs">
+      <DependentUpon>MgAppWindow.cs</DependentUpon>
     </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <EmbeddedResource Include="CompactViewer.resx">
       <DependentUpon>CompactViewer.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="Form1.resx">
-      <DependentUpon>Form1.cs</DependentUpon>
+    <EmbeddedResource Include="MgAppWindow.resx">
+      <DependentUpon>MgAppWindow.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
@@ -201,6 +201,12 @@
   <ItemGroup>
     <None Include="Resources\lc_dwf.gif" />
   </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\icon_home.gif" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\icon_tasks.gif" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

Added: branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,1195 @@
+namespace MapViewerTest
+{
+    partial class MgAppWindow
+    {
+        /// <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(MgAppWindow));
+            this.appMenu = new System.Windows.Forms.MenuStrip();
+            this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.mgInvokeComponentMenuItem14 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgLoadPackageComponent1 = new OSGeo.MapGuide.Viewer.MgLoadPackageComponent();
+            this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
+            this.quitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.mgInvokeComponentMenuItem15 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgBufferComponent1 = new OSGeo.MapGuide.Viewer.MgBufferComponent();
+            this.taskPane = new OSGeo.MapGuide.Viewer.MgTaskPane();
+            this.mapViewer = new OSGeo.MapGuide.Viewer.MgMapViewer();
+            this.appContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.mgInvokeComponentMenuItem4 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgRefreshMapComponent1 = new OSGeo.MapGuide.Viewer.MgRefreshMapComponent();
+            this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentMenuItem5 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgPanComponent1 = new OSGeo.MapGuide.Viewer.MgPanComponent();
+            this.mgInvokeComponentMenuItem6 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgZoomInComponent1 = new OSGeo.MapGuide.Viewer.MgZoomInComponent();
+            this.mgInvokeComponentMenuItem7 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgZoomOutComponent1 = new OSGeo.MapGuide.Viewer.MgZoomOutComponent();
+            this.mgInvokeComponentMenuItem8 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgInitialViewComponent1 = new OSGeo.MapGuide.Viewer.MgInitialViewComponent();
+            this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentMenuItem9 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgSelectComponent1 = new OSGeo.MapGuide.Viewer.MgSelectComponent();
+            this.mgInvokeComponentMenuItem10 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgClearSelectionComponent1 = new OSGeo.MapGuide.Viewer.MgClearSelectionComponent();
+            this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentMenuItem11 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgInvokeComponentMenuItem12 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgMeasureComponent1 = new OSGeo.MapGuide.Viewer.MgMeasureComponent();
+            this.mgInvokeComponentMenuItem13 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgQueryComponent1 = new OSGeo.MapGuide.Viewer.MgQueryComponent();
+            this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentMenuItem19 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgViewerOptionsComponent1 = new OSGeo.MapGuide.Viewer.MgViewerOptionsComponent();
+            this.mgInvokeComponentMenuItem16 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgInvokeComponentMenuItem17 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentMenuItem18 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.appContainer = new System.Windows.Forms.SplitContainer();
+            this.toolStripContainer = new System.Windows.Forms.ToolStripContainer();
+            this.infoPaneViewerContainer = new System.Windows.Forms.SplitContainer();
+            this.infoPaneContainer = new System.Windows.Forms.SplitContainer();
+            this.layersTabs = new System.Windows.Forms.TabControl();
+            this.tabPage1 = new System.Windows.Forms.TabPage();
+            this.legendCtrl = new OSGeo.MapGuide.Viewer.MgLegend();
+            this.propertiesTabs = new System.Windows.Forms.TabControl();
+            this.tabPage3 = new System.Windows.Forms.TabPage();
+            this.propertiesCtrl = new OSGeo.MapGuide.Viewer.MgPropertyPane();
+            this.appToolbar = new System.Windows.Forms.ToolStrip();
+            this.mgInvokeComponentButton1 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.mgCopyMapComponent1 = new OSGeo.MapGuide.Viewer.MgCopyMapComponent();
+            this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentButton2 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.mgInvokeComponentButton3 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.mgInvokeComponentButton4 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentButton5 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.mgInvokeComponentButton6 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.mgCircleSelectComponent1 = new OSGeo.MapGuide.Viewer.MgCircleSelectComponent();
+            this.mgInvokeComponentButton7 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.mgPolygonSelectComponent1 = new OSGeo.MapGuide.Viewer.MgPolygonSelectComponent();
+            this.mgInvokeComponentButton8 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentButton9 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.mgInvokeComponentButton10 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentButton11 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.mgTooltipToggleComponent1 = new OSGeo.MapGuide.Viewer.MgTooltipToggleComponent();
+            this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripSplitButton1 = new System.Windows.Forms.ToolStripSplitButton();
+            this.mgInvokeComponentMenuItem20 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgInvokeComponentMenuItem21 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgInvokeComponentMenuItem22 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.lblLoading = new System.Windows.Forms.ToolStripLabel();
+            this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgInvokeComponentButton15 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.toolStripSplitButton2 = new System.Windows.Forms.ToolStripSplitButton();
+            this.mgInvokeComponentMenuItem23 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.plotToDwfComponent = new OSGeo.MapGuide.Viewer.MgGenericInvokeComponent();
+            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.btnInitialTask = new System.Windows.Forms.ToolStripButton();
+            this.taskMenu = new System.Windows.Forms.ToolStripSplitButton();
+            this.mgInvokeComponentMenuItem1 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgInvokeComponentMenuItem2 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.mgInvokeComponentMenuItem3 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.statusBar = new System.Windows.Forms.StatusStrip();
+            this.lblPosition = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblSelected = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblScale = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblSize = new System.Windows.Forms.ToolStripStatusLabel();
+            this.lblLogo = new System.Windows.Forms.ToolStripStatusLabel();
+            this.mgZoomToSelectionComponent1 = new OSGeo.MapGuide.Viewer.MgZoomToSelectionComponent();
+            this.mgInvokeComponentMenuItem24 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
+            this.appMenu.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.mgBufferComponent1)).BeginInit();
+            this.appContextMenu.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.mgMeasureComponent1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.mgQueryComponent1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.mgViewerOptionsComponent1)).BeginInit();
+            this.appContainer.Panel1.SuspendLayout();
+            this.appContainer.Panel2.SuspendLayout();
+            this.appContainer.SuspendLayout();
+            this.toolStripContainer.ContentPanel.SuspendLayout();
+            this.toolStripContainer.TopToolStripPanel.SuspendLayout();
+            this.toolStripContainer.SuspendLayout();
+            this.infoPaneViewerContainer.Panel1.SuspendLayout();
+            this.infoPaneViewerContainer.Panel2.SuspendLayout();
+            this.infoPaneViewerContainer.SuspendLayout();
+            this.infoPaneContainer.Panel1.SuspendLayout();
+            this.infoPaneContainer.Panel2.SuspendLayout();
+            this.infoPaneContainer.SuspendLayout();
+            this.layersTabs.SuspendLayout();
+            this.tabPage1.SuspendLayout();
+            this.propertiesTabs.SuspendLayout();
+            this.tabPage3.SuspendLayout();
+            this.appToolbar.SuspendLayout();
+            this.toolStrip1.SuspendLayout();
+            this.statusBar.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // appMenu
+            // 
+            this.appMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.fileToolStripMenuItem,
+            this.toolsToolStripMenuItem});
+            this.appMenu.Location = new System.Drawing.Point(0, 0);
+            this.appMenu.Name = "appMenu";
+            this.appMenu.Size = new System.Drawing.Size(1008, 24);
+            this.appMenu.TabIndex = 0;
+            this.appMenu.Text = "menuStrip1";
+            // 
+            // fileToolStripMenuItem
+            // 
+            this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.mgInvokeComponentMenuItem14,
+            this.toolStripSeparator10,
+            this.quitToolStripMenuItem});
+            this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+            this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
+            this.fileToolStripMenuItem.Text = "File";
+            // 
+            // mgInvokeComponentMenuItem14
+            // 
+            this.mgInvokeComponentMenuItem14.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem14.Image")));
+            this.mgInvokeComponentMenuItem14.Name = "mgInvokeComponentMenuItem14";
+            this.mgInvokeComponentMenuItem14.Size = new System.Drawing.Size(147, 22);
+            this.mgInvokeComponentMenuItem14.TargetComponent = this.mgLoadPackageComponent1;
+            this.mgInvokeComponentMenuItem14.Text = "Load Package";
+            this.mgInvokeComponentMenuItem14.ToolTipText = "Load Package";
+            // 
+            // mgLoadPackageComponent1
+            // 
+            this.mgLoadPackageComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgLoadPackageComponent1.Icon")));
+            this.mgLoadPackageComponent1.Label = "Load Package";
+            this.mgLoadPackageComponent1.ToolTipText = "Load Package";
+            this.mgLoadPackageComponent1.Viewer = null;
+            // 
+            // toolStripSeparator10
+            // 
+            this.toolStripSeparator10.Name = "toolStripSeparator10";
+            this.toolStripSeparator10.Size = new System.Drawing.Size(144, 6);
+            // 
+            // quitToolStripMenuItem
+            // 
+            this.quitToolStripMenuItem.Name = "quitToolStripMenuItem";
+            this.quitToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
+            this.quitToolStripMenuItem.Text = "Quit";
+            this.quitToolStripMenuItem.Click += new System.EventHandler(this.quitToolStripMenuItem_Click);
+            // 
+            // toolsToolStripMenuItem
+            // 
+            this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.mgInvokeComponentMenuItem15,
+            this.mgInvokeComponentMenuItem16,
+            this.mgInvokeComponentMenuItem17,
+            this.toolStripSeparator11,
+            this.mgInvokeComponentMenuItem18});
+            this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
+            this.toolsToolStripMenuItem.Size = new System.Drawing.Size(48, 20);
+            this.toolsToolStripMenuItem.Text = "Tools";
+            // 
+            // mgInvokeComponentMenuItem15
+            // 
+            this.mgInvokeComponentMenuItem15.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem15.Image")));
+            this.mgInvokeComponentMenuItem15.Name = "mgInvokeComponentMenuItem15";
+            this.mgInvokeComponentMenuItem15.Size = new System.Drawing.Size(154, 22);
+            this.mgInvokeComponentMenuItem15.TargetComponent = this.mgBufferComponent1;
+            this.mgInvokeComponentMenuItem15.Text = "Buffer";
+            // 
+            // mgBufferComponent1
+            // 
+            this.mgBufferComponent1.DefaultBufferUnits = OSGeo.MapGuide.Viewer.MeasurementUnit.Meters;
+            this.mgBufferComponent1.DefaultLayerName = "Buffer 1";
+            this.mgBufferComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgBufferComponent1.Icon")));
+            this.mgBufferComponent1.Label = "Buffer";
+            this.mgBufferComponent1.Target = OSGeo.MapGuide.Viewer.MgViewerTarget.TaskPane;
+            this.mgBufferComponent1.TaskPane = this.taskPane;
+            this.mgBufferComponent1.ToolTipText = null;
+            this.mgBufferComponent1.Viewer = this.mapViewer;
+            // 
+            // taskPane
+            // 
+            this.taskPane.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.taskPane.Location = new System.Drawing.Point(0, 25);
+            this.taskPane.Name = "taskPane";
+            this.taskPane.Size = new System.Drawing.Size(256, 658);
+            this.taskPane.TabIndex = 0;
+            // 
+            // mapViewer
+            // 
+            this.mapViewer.ContextMenuStrip = this.appContextMenu;
+            this.mapViewer.ConvertTiledGroupsToNonTiled = true;
+            this.mapViewer.Cursor = System.Windows.Forms.Cursors.Default;
+            this.mapViewer.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.mapViewer.Location = new System.Drawing.Point(0, 0);
+            this.mapViewer.Name = "mapViewer";
+            this.mapViewer.SelectionColor = System.Drawing.Color.Blue;
+            this.mapViewer.Size = new System.Drawing.Size(495, 658);
+            this.mapViewer.TabIndex = 0;
+            this.mapViewer.Text = "mgMapViewer1";
+            this.mapViewer.ZoomInFactor = 0.5;
+            this.mapViewer.ZoomOutFactor = 2;
+            this.mapViewer.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(this.OnViewerPropertyChanged);
+            // 
+            // appContextMenu
+            // 
+            this.appContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.mgInvokeComponentMenuItem4,
+            this.toolStripSeparator6,
+            this.mgInvokeComponentMenuItem6,
+            this.mgInvokeComponentMenuItem7,
+            this.mgInvokeComponentMenuItem24,
+            this.mgInvokeComponentMenuItem8,
+            this.toolStripSeparator8,
+            this.mgInvokeComponentMenuItem5,
+            this.mgInvokeComponentMenuItem9,
+            this.mgInvokeComponentMenuItem10,
+            this.toolStripSeparator7,
+            this.mgInvokeComponentMenuItem11,
+            this.mgInvokeComponentMenuItem12,
+            this.mgInvokeComponentMenuItem13,
+            this.toolStripSeparator12,
+            this.mgInvokeComponentMenuItem19});
+            this.appContextMenu.Name = "appContextMenu";
+            this.appContextMenu.Size = new System.Drawing.Size(172, 314);
+            // 
+            // mgInvokeComponentMenuItem4
+            // 
+            this.mgInvokeComponentMenuItem4.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem4.Image")));
+            this.mgInvokeComponentMenuItem4.Name = "mgInvokeComponentMenuItem4";
+            this.mgInvokeComponentMenuItem4.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem4.TargetComponent = this.mgRefreshMapComponent1;
+            this.mgInvokeComponentMenuItem4.Text = "Refresh Map";
+            this.mgInvokeComponentMenuItem4.ToolTipText = "Refresh Map";
+            // 
+            // mgRefreshMapComponent1
+            // 
+            this.mgRefreshMapComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgRefreshMapComponent1.Icon")));
+            this.mgRefreshMapComponent1.Label = "Refresh Map";
+            this.mgRefreshMapComponent1.ToolTipText = "Refresh Map";
+            this.mgRefreshMapComponent1.Viewer = this.mapViewer;
+            // 
+            // toolStripSeparator6
+            // 
+            this.toolStripSeparator6.Name = "toolStripSeparator6";
+            this.toolStripSeparator6.Size = new System.Drawing.Size(151, 6);
+            // 
+            // mgInvokeComponentMenuItem5
+            // 
+            this.mgInvokeComponentMenuItem5.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem5.Image")));
+            this.mgInvokeComponentMenuItem5.Name = "mgInvokeComponentMenuItem5";
+            this.mgInvokeComponentMenuItem5.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem5.TargetComponent = this.mgPanComponent1;
+            this.mgInvokeComponentMenuItem5.Text = "Pan";
+            this.mgInvokeComponentMenuItem5.ToolTipText = "Pan";
+            // 
+            // mgPanComponent1
+            // 
+            this.mgPanComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgPanComponent1.Icon")));
+            this.mgPanComponent1.Label = "Pan";
+            this.mgPanComponent1.ToolTipText = "Pan";
+            this.mgPanComponent1.Viewer = this.mapViewer;
+            // 
+            // mgInvokeComponentMenuItem6
+            // 
+            this.mgInvokeComponentMenuItem6.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem6.Image")));
+            this.mgInvokeComponentMenuItem6.Name = "mgInvokeComponentMenuItem6";
+            this.mgInvokeComponentMenuItem6.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem6.TargetComponent = this.mgZoomInComponent1;
+            this.mgInvokeComponentMenuItem6.Text = "Zoom In";
+            this.mgInvokeComponentMenuItem6.ToolTipText = "Zoom In";
+            // 
+            // mgZoomInComponent1
+            // 
+            this.mgZoomInComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgZoomInComponent1.Icon")));
+            this.mgZoomInComponent1.Label = "Zoom In";
+            this.mgZoomInComponent1.ToolTipText = "Zoom In";
+            this.mgZoomInComponent1.Viewer = this.mapViewer;
+            // 
+            // mgInvokeComponentMenuItem7
+            // 
+            this.mgInvokeComponentMenuItem7.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem7.Image")));
+            this.mgInvokeComponentMenuItem7.Name = "mgInvokeComponentMenuItem7";
+            this.mgInvokeComponentMenuItem7.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem7.TargetComponent = this.mgZoomOutComponent1;
+            this.mgInvokeComponentMenuItem7.Text = "Zoom Out";
+            this.mgInvokeComponentMenuItem7.ToolTipText = "Zoom Out";
+            // 
+            // mgZoomOutComponent1
+            // 
+            this.mgZoomOutComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgZoomOutComponent1.Icon")));
+            this.mgZoomOutComponent1.Label = "Zoom Out";
+            this.mgZoomOutComponent1.ToolTipText = "Zoom Out";
+            this.mgZoomOutComponent1.Viewer = this.mapViewer;
+            this.mgZoomOutComponent1.ZoomOutMode = OSGeo.MapGuide.Viewer.ZoomOutMode.ClickToZoom;
+            // 
+            // mgInvokeComponentMenuItem8
+            // 
+            this.mgInvokeComponentMenuItem8.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem8.Image")));
+            this.mgInvokeComponentMenuItem8.Name = "mgInvokeComponentMenuItem8";
+            this.mgInvokeComponentMenuItem8.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem8.TargetComponent = this.mgInitialViewComponent1;
+            this.mgInvokeComponentMenuItem8.Text = "Zoom Extents";
+            this.mgInvokeComponentMenuItem8.ToolTipText = "Zoom Extents";
+            // 
+            // mgInitialViewComponent1
+            // 
+            this.mgInitialViewComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgInitialViewComponent1.Icon")));
+            this.mgInitialViewComponent1.Label = "Zoom Extents";
+            this.mgInitialViewComponent1.ToolTipText = "Zoom Extents";
+            this.mgInitialViewComponent1.Viewer = this.mapViewer;
+            // 
+            // toolStripSeparator8
+            // 
+            this.toolStripSeparator8.Name = "toolStripSeparator8";
+            this.toolStripSeparator8.Size = new System.Drawing.Size(151, 6);
+            // 
+            // mgInvokeComponentMenuItem9
+            // 
+            this.mgInvokeComponentMenuItem9.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem9.Image")));
+            this.mgInvokeComponentMenuItem9.Name = "mgInvokeComponentMenuItem9";
+            this.mgInvokeComponentMenuItem9.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem9.TargetComponent = this.mgSelectComponent1;
+            this.mgInvokeComponentMenuItem9.Text = "Select";
+            this.mgInvokeComponentMenuItem9.ToolTipText = "Select";
+            // 
+            // mgSelectComponent1
+            // 
+            this.mgSelectComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgSelectComponent1.Icon")));
+            this.mgSelectComponent1.Label = "Select";
+            this.mgSelectComponent1.ToolTipText = "Select";
+            this.mgSelectComponent1.Viewer = this.mapViewer;
+            // 
+            // mgInvokeComponentMenuItem10
+            // 
+            this.mgInvokeComponentMenuItem10.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem10.Image")));
+            this.mgInvokeComponentMenuItem10.Name = "mgInvokeComponentMenuItem10";
+            this.mgInvokeComponentMenuItem10.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem10.TargetComponent = this.mgClearSelectionComponent1;
+            this.mgInvokeComponentMenuItem10.Text = "Clear Selection";
+            this.mgInvokeComponentMenuItem10.ToolTipText = "Clear Selection";
+            // 
+            // mgClearSelectionComponent1
+            // 
+            this.mgClearSelectionComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgClearSelectionComponent1.Icon")));
+            this.mgClearSelectionComponent1.Label = "Clear Selection";
+            this.mgClearSelectionComponent1.ToolTipText = "Clear Selection";
+            this.mgClearSelectionComponent1.Viewer = this.mapViewer;
+            // 
+            // toolStripSeparator7
+            // 
+            this.toolStripSeparator7.Name = "toolStripSeparator7";
+            this.toolStripSeparator7.Size = new System.Drawing.Size(151, 6);
+            // 
+            // mgInvokeComponentMenuItem11
+            // 
+            this.mgInvokeComponentMenuItem11.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem11.Image")));
+            this.mgInvokeComponentMenuItem11.Name = "mgInvokeComponentMenuItem11";
+            this.mgInvokeComponentMenuItem11.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem11.TargetComponent = this.mgBufferComponent1;
+            this.mgInvokeComponentMenuItem11.Text = "Buffer";
+            // 
+            // mgInvokeComponentMenuItem12
+            // 
+            this.mgInvokeComponentMenuItem12.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem12.Image")));
+            this.mgInvokeComponentMenuItem12.Name = "mgInvokeComponentMenuItem12";
+            this.mgInvokeComponentMenuItem12.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem12.TargetComponent = this.mgMeasureComponent1;
+            this.mgInvokeComponentMenuItem12.Text = "Measure";
+            // 
+            // mgMeasureComponent1
+            // 
+            this.mgMeasureComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgMeasureComponent1.Icon")));
+            this.mgMeasureComponent1.Label = "Measure";
+            this.mgMeasureComponent1.Target = OSGeo.MapGuide.Viewer.MgViewerTarget.TaskPane;
+            this.mgMeasureComponent1.TaskPane = this.taskPane;
+            this.mgMeasureComponent1.ToolTipText = null;
+            this.mgMeasureComponent1.Viewer = this.mapViewer;
+            // 
+            // mgInvokeComponentMenuItem13
+            // 
+            this.mgInvokeComponentMenuItem13.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem13.Image")));
+            this.mgInvokeComponentMenuItem13.Name = "mgInvokeComponentMenuItem13";
+            this.mgInvokeComponentMenuItem13.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem13.TargetComponent = this.mgQueryComponent1;
+            this.mgInvokeComponentMenuItem13.Text = "Query";
+            // 
+            // mgQueryComponent1
+            // 
+            this.mgQueryComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgQueryComponent1.Icon")));
+            this.mgQueryComponent1.Label = "Query";
+            this.mgQueryComponent1.Target = OSGeo.MapGuide.Viewer.MgViewerTarget.TaskPane;
+            this.mgQueryComponent1.TaskPane = this.taskPane;
+            this.mgQueryComponent1.ToolTipText = null;
+            this.mgQueryComponent1.Viewer = this.mapViewer;
+            // 
+            // toolStripSeparator12
+            // 
+            this.toolStripSeparator12.Name = "toolStripSeparator12";
+            this.toolStripSeparator12.Size = new System.Drawing.Size(151, 6);
+            // 
+            // mgInvokeComponentMenuItem19
+            // 
+            this.mgInvokeComponentMenuItem19.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem19.Image")));
+            this.mgInvokeComponentMenuItem19.Name = "mgInvokeComponentMenuItem19";
+            this.mgInvokeComponentMenuItem19.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem19.TargetComponent = this.mgViewerOptionsComponent1;
+            this.mgInvokeComponentMenuItem19.Text = "Viewer Options";
+            this.mgInvokeComponentMenuItem19.ToolTipText = "Viewer Options";
+            // 
+            // mgViewerOptionsComponent1
+            // 
+            this.mgViewerOptionsComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgViewerOptionsComponent1.Icon")));
+            this.mgViewerOptionsComponent1.Label = "Viewer Options";
+            this.mgViewerOptionsComponent1.PreferencesDirectory = "";
+            this.mgViewerOptionsComponent1.Target = OSGeo.MapGuide.Viewer.MgViewerTarget.TaskPane;
+            this.mgViewerOptionsComponent1.TaskPane = this.taskPane;
+            this.mgViewerOptionsComponent1.ToolTipText = "Viewer Options";
+            this.mgViewerOptionsComponent1.Viewer = this.mapViewer;
+            // 
+            // mgInvokeComponentMenuItem16
+            // 
+            this.mgInvokeComponentMenuItem16.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem16.Image")));
+            this.mgInvokeComponentMenuItem16.Name = "mgInvokeComponentMenuItem16";
+            this.mgInvokeComponentMenuItem16.Size = new System.Drawing.Size(154, 22);
+            this.mgInvokeComponentMenuItem16.TargetComponent = this.mgMeasureComponent1;
+            this.mgInvokeComponentMenuItem16.Text = "Measure";
+            // 
+            // mgInvokeComponentMenuItem17
+            // 
+            this.mgInvokeComponentMenuItem17.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem17.Image")));
+            this.mgInvokeComponentMenuItem17.Name = "mgInvokeComponentMenuItem17";
+            this.mgInvokeComponentMenuItem17.Size = new System.Drawing.Size(154, 22);
+            this.mgInvokeComponentMenuItem17.TargetComponent = this.mgQueryComponent1;
+            this.mgInvokeComponentMenuItem17.Text = "Query";
+            // 
+            // toolStripSeparator11
+            // 
+            this.toolStripSeparator11.Name = "toolStripSeparator11";
+            this.toolStripSeparator11.Size = new System.Drawing.Size(151, 6);
+            // 
+            // mgInvokeComponentMenuItem18
+            // 
+            this.mgInvokeComponentMenuItem18.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem18.Image")));
+            this.mgInvokeComponentMenuItem18.Name = "mgInvokeComponentMenuItem18";
+            this.mgInvokeComponentMenuItem18.Size = new System.Drawing.Size(154, 22);
+            this.mgInvokeComponentMenuItem18.TargetComponent = this.mgViewerOptionsComponent1;
+            this.mgInvokeComponentMenuItem18.Text = "Viewer Options";
+            this.mgInvokeComponentMenuItem18.ToolTipText = "Viewer Options";
+            // 
+            // appContainer
+            // 
+            this.appContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.appContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
+            this.appContainer.Location = new System.Drawing.Point(0, 24);
+            this.appContainer.Name = "appContainer";
+            // 
+            // appContainer.Panel1
+            // 
+            this.appContainer.Panel1.Controls.Add(this.toolStripContainer);
+            // 
+            // appContainer.Panel2
+            // 
+            this.appContainer.Panel2.Controls.Add(this.taskPane);
+            this.appContainer.Panel2.Controls.Add(this.toolStrip1);
+            this.appContainer.Size = new System.Drawing.Size(1008, 683);
+            this.appContainer.SplitterDistance = 748;
+            this.appContainer.TabIndex = 1;
+            // 
+            // toolStripContainer
+            // 
+            // 
+            // toolStripContainer.ContentPanel
+            // 
+            this.toolStripContainer.ContentPanel.Controls.Add(this.infoPaneViewerContainer);
+            this.toolStripContainer.ContentPanel.Size = new System.Drawing.Size(748, 658);
+            this.toolStripContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.toolStripContainer.Location = new System.Drawing.Point(0, 0);
+            this.toolStripContainer.Name = "toolStripContainer";
+            this.toolStripContainer.Size = new System.Drawing.Size(748, 683);
+            this.toolStripContainer.TabIndex = 0;
+            this.toolStripContainer.Text = "toolStripContainer1";
+            // 
+            // toolStripContainer.TopToolStripPanel
+            // 
+            this.toolStripContainer.TopToolStripPanel.Controls.Add(this.appToolbar);
+            // 
+            // infoPaneViewerContainer
+            // 
+            this.infoPaneViewerContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.infoPaneViewerContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+            this.infoPaneViewerContainer.Location = new System.Drawing.Point(0, 0);
+            this.infoPaneViewerContainer.Name = "infoPaneViewerContainer";
+            // 
+            // infoPaneViewerContainer.Panel1
+            // 
+            this.infoPaneViewerContainer.Panel1.Controls.Add(this.infoPaneContainer);
+            // 
+            // infoPaneViewerContainer.Panel2
+            // 
+            this.infoPaneViewerContainer.Panel2.Controls.Add(this.mapViewer);
+            this.infoPaneViewerContainer.Size = new System.Drawing.Size(748, 658);
+            this.infoPaneViewerContainer.SplitterDistance = 249;
+            this.infoPaneViewerContainer.TabIndex = 0;
+            // 
+            // infoPaneContainer
+            // 
+            this.infoPaneContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.infoPaneContainer.Location = new System.Drawing.Point(0, 0);
+            this.infoPaneContainer.Name = "infoPaneContainer";
+            this.infoPaneContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
+            // 
+            // infoPaneContainer.Panel1
+            // 
+            this.infoPaneContainer.Panel1.Controls.Add(this.layersTabs);
+            // 
+            // infoPaneContainer.Panel2
+            // 
+            this.infoPaneContainer.Panel2.Controls.Add(this.propertiesTabs);
+            this.infoPaneContainer.Size = new System.Drawing.Size(249, 658);
+            this.infoPaneContainer.SplitterDistance = 278;
+            this.infoPaneContainer.TabIndex = 0;
+            // 
+            // layersTabs
+            // 
+            this.layersTabs.Controls.Add(this.tabPage1);
+            this.layersTabs.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.layersTabs.Location = new System.Drawing.Point(0, 0);
+            this.layersTabs.Name = "layersTabs";
+            this.layersTabs.SelectedIndex = 0;
+            this.layersTabs.Size = new System.Drawing.Size(249, 278);
+            this.layersTabs.TabIndex = 0;
+            // 
+            // tabPage1
+            // 
+            this.tabPage1.Controls.Add(this.legendCtrl);
+            this.tabPage1.Location = new System.Drawing.Point(4, 22);
+            this.tabPage1.Name = "tabPage1";
+            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage1.Size = new System.Drawing.Size(241, 252);
+            this.tabPage1.TabIndex = 0;
+            this.tabPage1.Text = "Layers";
+            this.tabPage1.UseVisualStyleBackColor = true;
+            // 
+            // legendCtrl
+            // 
+            this.legendCtrl.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.legendCtrl.GroupContextMenu = null;
+            this.legendCtrl.LayerContextMenu = null;
+            this.legendCtrl.Location = new System.Drawing.Point(3, 3);
+            this.legendCtrl.Name = "legendCtrl";
+            this.legendCtrl.Size = new System.Drawing.Size(235, 246);
+            this.legendCtrl.TabIndex = 0;
+            this.legendCtrl.ThemeCompressionLimit = 0;
+            // 
+            // propertiesTabs
+            // 
+            this.propertiesTabs.Controls.Add(this.tabPage3);
+            this.propertiesTabs.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.propertiesTabs.Location = new System.Drawing.Point(0, 0);
+            this.propertiesTabs.Name = "propertiesTabs";
+            this.propertiesTabs.SelectedIndex = 0;
+            this.propertiesTabs.Size = new System.Drawing.Size(249, 376);
+            this.propertiesTabs.TabIndex = 0;
+            // 
+            // tabPage3
+            // 
+            this.tabPage3.Controls.Add(this.propertiesCtrl);
+            this.tabPage3.Location = new System.Drawing.Point(4, 22);
+            this.tabPage3.Name = "tabPage3";
+            this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage3.Size = new System.Drawing.Size(241, 350);
+            this.tabPage3.TabIndex = 0;
+            this.tabPage3.Text = "Properties";
+            this.tabPage3.UseVisualStyleBackColor = true;
+            // 
+            // propertiesCtrl
+            // 
+            this.propertiesCtrl.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.propertiesCtrl.Location = new System.Drawing.Point(3, 3);
+            this.propertiesCtrl.Name = "propertiesCtrl";
+            this.propertiesCtrl.Size = new System.Drawing.Size(235, 344);
+            this.propertiesCtrl.TabIndex = 0;
+            // 
+            // appToolbar
+            // 
+            this.appToolbar.Dock = System.Windows.Forms.DockStyle.None;
+            this.appToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.mgInvokeComponentButton1,
+            this.toolStripSeparator1,
+            this.mgInvokeComponentButton2,
+            this.mgInvokeComponentButton3,
+            this.mgInvokeComponentButton4,
+            this.toolStripSeparator2,
+            this.mgInvokeComponentButton5,
+            this.mgInvokeComponentButton6,
+            this.mgInvokeComponentButton7,
+            this.mgInvokeComponentButton8,
+            this.toolStripSeparator3,
+            this.mgInvokeComponentButton9,
+            this.mgInvokeComponentButton10,
+            this.toolStripSeparator4,
+            this.mgInvokeComponentButton11,
+            this.toolStripSeparator5,
+            this.toolStripSplitButton1,
+            this.lblLoading,
+            this.toolStripSeparator9,
+            this.mgInvokeComponentButton15,
+            this.toolStripSplitButton2});
+            this.appToolbar.Location = new System.Drawing.Point(0, 0);
+            this.appToolbar.Name = "appToolbar";
+            this.appToolbar.Size = new System.Drawing.Size(748, 25);
+            this.appToolbar.Stretch = true;
+            this.appToolbar.TabIndex = 0;
+            // 
+            // mgInvokeComponentButton1
+            // 
+            this.mgInvokeComponentButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton1.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton1.Image")));
+            this.mgInvokeComponentButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton1.Name = "mgInvokeComponentButton1";
+            this.mgInvokeComponentButton1.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton1.TargetComponent = this.mgCopyMapComponent1;
+            this.mgInvokeComponentButton1.Text = "Copy map to clipboard";
+            this.mgInvokeComponentButton1.ToolTipText = "Copy map to clipboard";
+            // 
+            // mgCopyMapComponent1
+            // 
+            this.mgCopyMapComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgCopyMapComponent1.Icon")));
+            this.mgCopyMapComponent1.Label = "Copy map to clipboard";
+            this.mgCopyMapComponent1.ToolTipText = "Copy map to clipboard";
+            this.mgCopyMapComponent1.Viewer = this.mapViewer;
+            // 
+            // toolStripSeparator1
+            // 
+            this.toolStripSeparator1.Name = "toolStripSeparator1";
+            this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
+            // 
+            // mgInvokeComponentButton2
+            // 
+            this.mgInvokeComponentButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton2.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton2.Image")));
+            this.mgInvokeComponentButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton2.Name = "mgInvokeComponentButton2";
+            this.mgInvokeComponentButton2.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton2.TargetComponent = this.mgZoomInComponent1;
+            this.mgInvokeComponentButton2.Text = "Zoom In";
+            this.mgInvokeComponentButton2.ToolTipText = "Zoom In";
+            // 
+            // mgInvokeComponentButton3
+            // 
+            this.mgInvokeComponentButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton3.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton3.Image")));
+            this.mgInvokeComponentButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton3.Name = "mgInvokeComponentButton3";
+            this.mgInvokeComponentButton3.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton3.TargetComponent = this.mgZoomOutComponent1;
+            this.mgInvokeComponentButton3.Text = "Zoom Out";
+            this.mgInvokeComponentButton3.ToolTipText = "Zoom Out";
+            // 
+            // mgInvokeComponentButton4
+            // 
+            this.mgInvokeComponentButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton4.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton4.Image")));
+            this.mgInvokeComponentButton4.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton4.Name = "mgInvokeComponentButton4";
+            this.mgInvokeComponentButton4.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton4.TargetComponent = this.mgInitialViewComponent1;
+            this.mgInvokeComponentButton4.Text = "Zoom Extents";
+            this.mgInvokeComponentButton4.ToolTipText = "Zoom Extents";
+            // 
+            // toolStripSeparator2
+            // 
+            this.toolStripSeparator2.Name = "toolStripSeparator2";
+            this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
+            // 
+            // mgInvokeComponentButton5
+            // 
+            this.mgInvokeComponentButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton5.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton5.Image")));
+            this.mgInvokeComponentButton5.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton5.Name = "mgInvokeComponentButton5";
+            this.mgInvokeComponentButton5.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton5.TargetComponent = this.mgSelectComponent1;
+            this.mgInvokeComponentButton5.Text = "Select";
+            this.mgInvokeComponentButton5.ToolTipText = "Select";
+            // 
+            // mgInvokeComponentButton6
+            // 
+            this.mgInvokeComponentButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton6.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton6.Image")));
+            this.mgInvokeComponentButton6.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton6.Name = "mgInvokeComponentButton6";
+            this.mgInvokeComponentButton6.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton6.TargetComponent = this.mgCircleSelectComponent1;
+            this.mgInvokeComponentButton6.Text = "Select Radius";
+            this.mgInvokeComponentButton6.ToolTipText = "Select Radius";
+            // 
+            // mgCircleSelectComponent1
+            // 
+            this.mgCircleSelectComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgCircleSelectComponent1.Icon")));
+            this.mgCircleSelectComponent1.Label = "Select Radius";
+            this.mgCircleSelectComponent1.ToolTipText = "Select Radius";
+            this.mgCircleSelectComponent1.Viewer = this.mapViewer;
+            // 
+            // mgInvokeComponentButton7
+            // 
+            this.mgInvokeComponentButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton7.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton7.Image")));
+            this.mgInvokeComponentButton7.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton7.Name = "mgInvokeComponentButton7";
+            this.mgInvokeComponentButton7.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton7.TargetComponent = this.mgPolygonSelectComponent1;
+            this.mgInvokeComponentButton7.Text = "Select Polygon";
+            this.mgInvokeComponentButton7.ToolTipText = "Select Polygon";
+            // 
+            // mgPolygonSelectComponent1
+            // 
+            this.mgPolygonSelectComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgPolygonSelectComponent1.Icon")));
+            this.mgPolygonSelectComponent1.Label = "Select Polygon";
+            this.mgPolygonSelectComponent1.ToolTipText = "Select Polygon";
+            this.mgPolygonSelectComponent1.Viewer = this.mapViewer;
+            // 
+            // mgInvokeComponentButton8
+            // 
+            this.mgInvokeComponentButton8.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton8.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton8.Image")));
+            this.mgInvokeComponentButton8.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton8.Name = "mgInvokeComponentButton8";
+            this.mgInvokeComponentButton8.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton8.TargetComponent = this.mgPanComponent1;
+            this.mgInvokeComponentButton8.Text = "Pan";
+            this.mgInvokeComponentButton8.ToolTipText = "Pan";
+            // 
+            // toolStripSeparator3
+            // 
+            this.toolStripSeparator3.Name = "toolStripSeparator3";
+            this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25);
+            // 
+            // mgInvokeComponentButton9
+            // 
+            this.mgInvokeComponentButton9.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton9.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton9.Image")));
+            this.mgInvokeComponentButton9.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton9.Name = "mgInvokeComponentButton9";
+            this.mgInvokeComponentButton9.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton9.TargetComponent = this.mgClearSelectionComponent1;
+            this.mgInvokeComponentButton9.Text = "Clear Selection";
+            this.mgInvokeComponentButton9.ToolTipText = "Clear Selection";
+            // 
+            // mgInvokeComponentButton10
+            // 
+            this.mgInvokeComponentButton10.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.mgInvokeComponentButton10.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton10.Image")));
+            this.mgInvokeComponentButton10.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton10.Name = "mgInvokeComponentButton10";
+            this.mgInvokeComponentButton10.Size = new System.Drawing.Size(23, 22);
+            this.mgInvokeComponentButton10.TargetComponent = this.mgRefreshMapComponent1;
+            this.mgInvokeComponentButton10.Text = "Refresh Map";
+            this.mgInvokeComponentButton10.ToolTipText = "Refresh Map";
+            // 
+            // toolStripSeparator4
+            // 
+            this.toolStripSeparator4.Name = "toolStripSeparator4";
+            this.toolStripSeparator4.Size = new System.Drawing.Size(6, 25);
+            // 
+            // mgInvokeComponentButton11
+            // 
+            this.mgInvokeComponentButton11.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton11.Image")));
+            this.mgInvokeComponentButton11.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton11.Name = "mgInvokeComponentButton11";
+            this.mgInvokeComponentButton11.Size = new System.Drawing.Size(108, 22);
+            this.mgInvokeComponentButton11.TargetComponent = this.mgTooltipToggleComponent1;
+            this.mgInvokeComponentButton11.Text = "Enable Tooltips";
+            this.mgInvokeComponentButton11.ToolTipText = "Enable Tooltips";
+            // 
+            // mgTooltipToggleComponent1
+            // 
+            this.mgTooltipToggleComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgTooltipToggleComponent1.Icon")));
+            this.mgTooltipToggleComponent1.Label = "Enable Tooltips";
+            this.mgTooltipToggleComponent1.ToolTipText = "Enable Tooltips";
+            this.mgTooltipToggleComponent1.Viewer = this.mapViewer;
+            // 
+            // toolStripSeparator5
+            // 
+            this.toolStripSeparator5.Name = "toolStripSeparator5";
+            this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25);
+            // 
+            // toolStripSplitButton1
+            // 
+            this.toolStripSplitButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.mgInvokeComponentMenuItem20,
+            this.mgInvokeComponentMenuItem21,
+            this.mgInvokeComponentMenuItem22});
+            this.toolStripSplitButton1.Image = global::MapViewerTest.Properties.Resources.icon_tasks;
+            this.toolStripSplitButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripSplitButton1.Name = "toolStripSplitButton1";
+            this.toolStripSplitButton1.Size = new System.Drawing.Size(68, 22);
+            this.toolStripSplitButton1.Text = "Tools";
+            // 
+            // mgInvokeComponentMenuItem20
+            // 
+            this.mgInvokeComponentMenuItem20.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem20.Image")));
+            this.mgInvokeComponentMenuItem20.Name = "mgInvokeComponentMenuItem20";
+            this.mgInvokeComponentMenuItem20.Size = new System.Drawing.Size(119, 22);
+            this.mgInvokeComponentMenuItem20.TargetComponent = this.mgBufferComponent1;
+            this.mgInvokeComponentMenuItem20.Text = "Buffer";
+            // 
+            // mgInvokeComponentMenuItem21
+            // 
+            this.mgInvokeComponentMenuItem21.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem21.Image")));
+            this.mgInvokeComponentMenuItem21.Name = "mgInvokeComponentMenuItem21";
+            this.mgInvokeComponentMenuItem21.Size = new System.Drawing.Size(119, 22);
+            this.mgInvokeComponentMenuItem21.TargetComponent = this.mgMeasureComponent1;
+            this.mgInvokeComponentMenuItem21.Text = "Measure";
+            // 
+            // mgInvokeComponentMenuItem22
+            // 
+            this.mgInvokeComponentMenuItem22.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem22.Image")));
+            this.mgInvokeComponentMenuItem22.Name = "mgInvokeComponentMenuItem22";
+            this.mgInvokeComponentMenuItem22.Size = new System.Drawing.Size(119, 22);
+            this.mgInvokeComponentMenuItem22.TargetComponent = this.mgQueryComponent1;
+            this.mgInvokeComponentMenuItem22.Text = "Query";
+            // 
+            // lblLoading
+            // 
+            this.lblLoading.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+            this.lblLoading.Image = global::MapViewerTest.Properties.Resources.icon_loading;
+            this.lblLoading.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+            this.lblLoading.Name = "lblLoading";
+            this.lblLoading.Size = new System.Drawing.Size(30, 22);
+            this.lblLoading.Visible = false;
+            // 
+            // toolStripSeparator9
+            // 
+            this.toolStripSeparator9.Name = "toolStripSeparator9";
+            this.toolStripSeparator9.Size = new System.Drawing.Size(6, 25);
+            // 
+            // mgInvokeComponentButton15
+            // 
+            this.mgInvokeComponentButton15.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton15.Image")));
+            this.mgInvokeComponentButton15.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.mgInvokeComponentButton15.Name = "mgInvokeComponentButton15";
+            this.mgInvokeComponentButton15.Size = new System.Drawing.Size(107, 22);
+            this.mgInvokeComponentButton15.TargetComponent = this.mgViewerOptionsComponent1;
+            this.mgInvokeComponentButton15.Text = "Viewer Options";
+            this.mgInvokeComponentButton15.ToolTipText = "Viewer Options";
+            // 
+            // toolStripSplitButton2
+            // 
+            this.toolStripSplitButton2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.mgInvokeComponentMenuItem23});
+            this.toolStripSplitButton2.Image = global::MapViewerTest.Properties.Resources.icon_tasks;
+            this.toolStripSplitButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripSplitButton2.Name = "toolStripSplitButton2";
+            this.toolStripSplitButton2.Size = new System.Drawing.Size(81, 22);
+            this.toolStripSplitButton2.Text = "Custom";
+            // 
+            // mgInvokeComponentMenuItem23
+            // 
+            this.mgInvokeComponentMenuItem23.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem23.Image")));
+            this.mgInvokeComponentMenuItem23.Name = "mgInvokeComponentMenuItem23";
+            this.mgInvokeComponentMenuItem23.Size = new System.Drawing.Size(137, 22);
+            this.mgInvokeComponentMenuItem23.TargetComponent = this.plotToDwfComponent;
+            this.mgInvokeComponentMenuItem23.Text = "Plot to DWF";
+            this.mgInvokeComponentMenuItem23.ToolTipText = "Plot to DWF";
+            // 
+            // plotToDwfComponent
+            // 
+            this.plotToDwfComponent.Icon = ((System.Drawing.Image)(resources.GetObject("plotToDwfComponent.Icon")));
+            this.plotToDwfComponent.Label = "Plot to DWF";
+            this.plotToDwfComponent.ToolTipText = "Plot to DWF";
+            this.plotToDwfComponent.Viewer = this.mapViewer;
+            this.plotToDwfComponent.Invoked += new System.EventHandler(this.plotToDwfComponent_Invoked);
+            // 
+            // toolStrip1
+            // 
+            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.btnInitialTask,
+            this.taskMenu});
+            this.toolStrip1.Location = new System.Drawing.Point(0, 0);
+            this.toolStrip1.Name = "toolStrip1";
+            this.toolStrip1.Size = new System.Drawing.Size(256, 25);
+            this.toolStrip1.TabIndex = 1;
+            this.toolStrip1.Text = "toolStrip1";
+            // 
+            // btnInitialTask
+            // 
+            this.btnInitialTask.Image = global::MapViewerTest.Properties.Resources.icon_home;
+            this.btnInitialTask.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.btnInitialTask.Name = "btnInitialTask";
+            this.btnInitialTask.Size = new System.Drawing.Size(83, 22);
+            this.btnInitialTask.Text = "Initial Task";
+            this.btnInitialTask.Click += new System.EventHandler(this.btnInitialTask_Click);
+            // 
+            // taskMenu
+            // 
+            this.taskMenu.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+            this.taskMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.mgInvokeComponentMenuItem1,
+            this.mgInvokeComponentMenuItem2,
+            this.mgInvokeComponentMenuItem3});
+            this.taskMenu.Image = global::MapViewerTest.Properties.Resources.icon_tasks;
+            this.taskMenu.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.taskMenu.Name = "taskMenu";
+            this.taskMenu.Size = new System.Drawing.Size(68, 22);
+            this.taskMenu.Text = "Tasks";
+            // 
+            // mgInvokeComponentMenuItem1
+            // 
+            this.mgInvokeComponentMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem1.Image")));
+            this.mgInvokeComponentMenuItem1.Name = "mgInvokeComponentMenuItem1";
+            this.mgInvokeComponentMenuItem1.Size = new System.Drawing.Size(119, 22);
+            this.mgInvokeComponentMenuItem1.TargetComponent = this.mgBufferComponent1;
+            this.mgInvokeComponentMenuItem1.Text = "Buffer";
+            // 
+            // mgInvokeComponentMenuItem2
+            // 
+            this.mgInvokeComponentMenuItem2.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem2.Image")));
+            this.mgInvokeComponentMenuItem2.Name = "mgInvokeComponentMenuItem2";
+            this.mgInvokeComponentMenuItem2.Size = new System.Drawing.Size(119, 22);
+            this.mgInvokeComponentMenuItem2.TargetComponent = this.mgMeasureComponent1;
+            this.mgInvokeComponentMenuItem2.Text = "Measure";
+            // 
+            // mgInvokeComponentMenuItem3
+            // 
+            this.mgInvokeComponentMenuItem3.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem3.Image")));
+            this.mgInvokeComponentMenuItem3.Name = "mgInvokeComponentMenuItem3";
+            this.mgInvokeComponentMenuItem3.Size = new System.Drawing.Size(119, 22);
+            this.mgInvokeComponentMenuItem3.TargetComponent = this.mgQueryComponent1;
+            this.mgInvokeComponentMenuItem3.Text = "Query";
+            // 
+            // statusBar
+            // 
+            this.statusBar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.lblPosition,
+            this.lblSelected,
+            this.lblScale,
+            this.lblSize,
+            this.lblLogo});
+            this.statusBar.Location = new System.Drawing.Point(0, 707);
+            this.statusBar.Name = "statusBar";
+            this.statusBar.Size = new System.Drawing.Size(1008, 23);
+            this.statusBar.TabIndex = 2;
+            this.statusBar.Text = "statusStrip1";
+            // 
+            // lblPosition
+            // 
+            this.lblPosition.Name = "lblPosition";
+            this.lblPosition.Size = new System.Drawing.Size(0, 18);
+            // 
+            // lblSelected
+            // 
+            this.lblSelected.Name = "lblSelected";
+            this.lblSelected.Size = new System.Drawing.Size(856, 18);
+            this.lblSelected.Spring = true;
+            this.lblSelected.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // lblScale
+            // 
+            this.lblScale.Name = "lblScale";
+            this.lblScale.Size = new System.Drawing.Size(0, 18);
+            // 
+            // lblSize
+            // 
+            this.lblSize.Name = "lblSize";
+            this.lblSize.Size = new System.Drawing.Size(0, 18);
+            // 
+            // lblLogo
+            // 
+            this.lblLogo.Image = global::MapViewerTest.Properties.Resources.PoweredBy_en;
+            this.lblLogo.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+            this.lblLogo.Name = "lblLogo";
+            this.lblLogo.Size = new System.Drawing.Size(137, 18);
+            // 
+            // mgZoomToSelectionComponent1
+            // 
+            this.mgZoomToSelectionComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgZoomToSelectionComponent1.Icon")));
+            this.mgZoomToSelectionComponent1.Label = "Zoom to Selection";
+            this.mgZoomToSelectionComponent1.ToolTipText = "Zoom to Selection";
+            this.mgZoomToSelectionComponent1.Viewer = this.mapViewer;
+            // 
+            // mgInvokeComponentMenuItem24
+            // 
+            this.mgInvokeComponentMenuItem24.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentMenuItem24.Image")));
+            this.mgInvokeComponentMenuItem24.Name = "mgInvokeComponentMenuItem24";
+            this.mgInvokeComponentMenuItem24.Size = new System.Drawing.Size(171, 22);
+            this.mgInvokeComponentMenuItem24.TargetComponent = this.mgZoomToSelectionComponent1;
+            this.mgInvokeComponentMenuItem24.Text = "Zoom to Selection";
+            this.mgInvokeComponentMenuItem24.ToolTipText = "Zoom to Selection";
+            // 
+            // MgAppWindow
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1008, 730);
+            this.Controls.Add(this.appContainer);
+            this.Controls.Add(this.statusBar);
+            this.Controls.Add(this.appMenu);
+            this.Name = "MgAppWindow";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "MapGuide Desktop Viewer";
+            this.appMenu.ResumeLayout(false);
+            this.appMenu.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.mgBufferComponent1)).EndInit();
+            this.appContextMenu.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.mgMeasureComponent1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.mgQueryComponent1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.mgViewerOptionsComponent1)).EndInit();
+            this.appContainer.Panel1.ResumeLayout(false);
+            this.appContainer.Panel2.ResumeLayout(false);
+            this.appContainer.Panel2.PerformLayout();
+            this.appContainer.ResumeLayout(false);
+            this.toolStripContainer.ContentPanel.ResumeLayout(false);
+            this.toolStripContainer.TopToolStripPanel.ResumeLayout(false);
+            this.toolStripContainer.TopToolStripPanel.PerformLayout();
+            this.toolStripContainer.ResumeLayout(false);
+            this.toolStripContainer.PerformLayout();
+            this.infoPaneViewerContainer.Panel1.ResumeLayout(false);
+            this.infoPaneViewerContainer.Panel2.ResumeLayout(false);
+            this.infoPaneViewerContainer.ResumeLayout(false);
+            this.infoPaneContainer.Panel1.ResumeLayout(false);
+            this.infoPaneContainer.Panel2.ResumeLayout(false);
+            this.infoPaneContainer.ResumeLayout(false);
+            this.layersTabs.ResumeLayout(false);
+            this.tabPage1.ResumeLayout(false);
+            this.propertiesTabs.ResumeLayout(false);
+            this.tabPage3.ResumeLayout(false);
+            this.appToolbar.ResumeLayout(false);
+            this.appToolbar.PerformLayout();
+            this.toolStrip1.ResumeLayout(false);
+            this.toolStrip1.PerformLayout();
+            this.statusBar.ResumeLayout(false);
+            this.statusBar.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.SplitContainer appContainer;
+        private System.Windows.Forms.ToolStripContainer toolStripContainer;
+        private System.Windows.Forms.SplitContainer infoPaneViewerContainer;
+        private System.Windows.Forms.SplitContainer infoPaneContainer;
+        private System.Windows.Forms.TabControl layersTabs;
+        private System.Windows.Forms.TabPage tabPage1;
+        private System.Windows.Forms.TabControl propertiesTabs;
+        private System.Windows.Forms.TabPage tabPage3;
+        private System.Windows.Forms.ToolStripStatusLabel lblPosition;
+        private System.Windows.Forms.ToolStripStatusLabel lblSelected;
+        private System.Windows.Forms.ToolStripStatusLabel lblScale;
+        private System.Windows.Forms.ToolStripStatusLabel lblSize;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton1;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton2;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton3;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton4;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton5;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton6;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton7;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton8;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton9;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton10;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton11;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
+        private OSGeo.MapGuide.Viewer.MgCircleSelectComponent mgCircleSelectComponent1;
+        private OSGeo.MapGuide.Viewer.MgClearSelectionComponent mgClearSelectionComponent1;
+        private OSGeo.MapGuide.Viewer.MgCopyMapComponent mgCopyMapComponent1;
+        private OSGeo.MapGuide.Viewer.MgInitialViewComponent mgInitialViewComponent1;
+        private OSGeo.MapGuide.Viewer.MgPanComponent mgPanComponent1;
+        private OSGeo.MapGuide.Viewer.MgPolygonSelectComponent mgPolygonSelectComponent1;
+        private OSGeo.MapGuide.Viewer.MgRefreshMapComponent mgRefreshMapComponent1;
+        private OSGeo.MapGuide.Viewer.MgSelectComponent mgSelectComponent1;
+        private OSGeo.MapGuide.Viewer.MgTooltipToggleComponent mgTooltipToggleComponent1;
+        private OSGeo.MapGuide.Viewer.MgZoomInComponent mgZoomInComponent1;
+        private OSGeo.MapGuide.Viewer.MgZoomOutComponent mgZoomOutComponent1;
+        private System.Windows.Forms.ToolStripStatusLabel lblLogo;
+        protected System.Windows.Forms.MenuStrip appMenu;
+        protected System.Windows.Forms.ToolStrip appToolbar;
+        protected OSGeo.MapGuide.Viewer.MgLegend legendCtrl;
+        protected OSGeo.MapGuide.Viewer.MgPropertyPane propertiesCtrl;
+        protected OSGeo.MapGuide.Viewer.MgMapViewer mapViewer;
+        protected System.Windows.Forms.StatusStrip statusBar;
+        protected System.Windows.Forms.ContextMenuStrip appContextMenu;
+        private OSGeo.MapGuide.Viewer.MgBufferComponent mgBufferComponent1;
+        private OSGeo.MapGuide.Viewer.MgMeasureComponent mgMeasureComponent1;
+        private OSGeo.MapGuide.Viewer.MgQueryComponent mgQueryComponent1;
+        private OSGeo.MapGuide.Viewer.MgTaskPane taskPane;
+        private System.Windows.Forms.ToolStrip toolStrip1;
+        private System.Windows.Forms.ToolStripButton btnInitialTask;
+        private System.Windows.Forms.ToolStripSplitButton taskMenu;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem1;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem2;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem3;
+        private System.Windows.Forms.ToolStripLabel lblLoading;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem4;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem5;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem6;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem7;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem8;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem9;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem10;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem11;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem12;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem13;
+        private OSGeo.MapGuide.Viewer.MgViewerOptionsComponent mgViewerOptionsComponent1;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton15;
+        private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem quitToolStripMenuItem;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem14;
+        private OSGeo.MapGuide.Viewer.MgLoadPackageComponent mgLoadPackageComponent1;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
+        private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem15;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem16;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem17;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator11;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem18;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem19;
+        private OSGeo.MapGuide.Viewer.MgGenericInvokeComponent plotToDwfComponent;
+        private System.Windows.Forms.ToolStripSplitButton toolStripSplitButton1;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem20;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem21;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem22;
+        private System.Windows.Forms.ToolStripSplitButton toolStripSplitButton2;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem23;
+        private OSGeo.MapGuide.Viewer.MgZoomToSelectionComponent mgZoomToSelectionComponent1;
+        private OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem mgInvokeComponentMenuItem24;
+
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,107 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.Viewer;
+using OSGeo.MapGuide;
+
+namespace MapViewerTest
+{
+    public partial class MgAppWindow : Form, IMapStatusBar
+    {
+        public MgAppWindow()
+        {
+            InitializeComponent();
+            taskMenu.DropDownDirection = ToolStripDropDownDirection.BelowLeft;
+        }
+
+        public string MapDefinition
+        {
+            get;
+            set;
+        }
+
+        public void LoadMap(MgMapViewerProvider provider)
+        {
+            mapViewer.Init(provider);
+        }
+
+        protected override void OnLoad(EventArgs e)
+        {
+            if (!this.DesignMode)
+            {
+                new MapViewerController(mapViewer, legendCtrl, this, propertiesCtrl);
+            }
+            base.OnLoad(e);
+        }
+
+        public void SetCursorPositionMessage(string message)
+        {
+            lblPosition.Text = message;
+        }
+
+        public void SetFeatureSelectedMessage(string message)
+        {
+            lblSelected.Text = message;
+        }
+
+        public void SetMapScaleMessage(string message)
+        {
+            lblScale.Text = message;
+        }
+
+        public void SetMapSizeMessage(string message)
+        {
+            lblSize.Text = message;
+        }
+
+        private void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "IsBusy")
+            {
+                lblLoading.Visible = mapViewer.IsBusy;
+            }
+        }
+
+        private void btnInitialTask_Click(object sender, EventArgs e)
+        {
+            taskPane.LoadInitialTask();
+        }
+
+        private void quitToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            Application.Exit();
+        }
+
+        private void plotToDwfComponent_Invoked(object sender, EventArgs e)
+        {
+            var diag = new ResourceIdDialog();
+            if (diag.ShowDialog() == DialogResult.OK)
+            {
+                var layoutId = diag.ResourceID;
+                using (var save = new SaveFileDialog())
+                {
+                    save.Filter = "DWF Files (*.dwf)|*.dwf";
+                    if (save.ShowDialog() == DialogResult.OK)
+                    {
+                        var renderSvc = (MgRenderingService)mapViewer.GetProvider().CreateService(MgServiceType.RenderingService);
+                        var map = (MgdMap)mapViewer.GetMap();
+                        var dwfVer = new MgDwfVersion("6.01", "1.2");
+
+                        var layout = new MgLayout(layoutId, "TestPlot", MgPageUnitsType.Inches);
+                        var plotSpec = new MgPlotSpecification(8.5f, 11.0f, MgPageUnitsType.Inches, 0.5f, 0.5f, 0.5f, 0.5f);
+
+                        var result = renderSvc.GeneratePlot(map, plotSpec, layout, dwfVer);
+                        var sink = new MgByteSink(result);
+                        sink.ToFile(save.FileName);
+
+                        MessageBox.Show("Saved to " + save.FileName);
+                    }
+                }
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -0,0 +1,824 @@
+<?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="appMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="mgInvokeComponentMenuItem15.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
+        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
+        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
+        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
+        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
+        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
+</value>
+  </data>
+  <metadata name="mgBufferComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>446, 134</value>
+  </metadata>
+  <data name="mgBufferComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
+        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
+        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
+        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
+        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
+        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
+</value>
+  </data>
+  <metadata name="appContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>338, 17</value>
+  </metadata>
+  <data name="mgInvokeComponentMenuItem4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGDSURBVDhPY2AAAifP4P+4MEieKAAy4Oev3ygYJAbSHJOc
+        /K2itnX/lClz5PEaBtLw6MlLOIYZYGnvATY4Pq3gT0Nr72yshoAkcktq/99/+AyrARu37jkPksvMr/yP
+        YQjIaSDTQQqAhqyHuQTmAnt/fwEnr5A1IG/ce/AM7BIU79Q0dh3fsmP//zUbdhx28gpeihywyM519Aye
+        D3LJlu37/oMMg8uBAglkclB48iUXl1B+mATMBTC+jXeUoH9owjmQWpAeuAHO3mFgfzt5hYJDHR/Q0jL5
+        A1IL0gNXB9JIkQEwL4Cch+wFWFjAbHJzCxECefPeg6eoXiiva9+3def+/xu27r7g6BW8AtkLsBQKMSx0
+        1frNu44AA/I/KODh6nqmzpMFRQ0ocEChC/TSQpBtMBeAEhHIIFAUw6IRpAclrBrb+mZlFVT9BynYuG3P
+        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4AGftnGBXl
+        O2gAAAAASUVORK5CYII=
+</value>
+  </data>
+  <metadata name="mgRefreshMapComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 95</value>
+  </metadata>
+  <data name="mgRefreshMapComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGDSURBVDhPY2AAAifP4P+4MEieKAAy4Oev3ygYJAbSHJOc
+        /K2itnX/lClz5PEaBtLw6MlLOIYZYGnvATY4Pq3gT0Nr72yshoAkcktq/99/+AyrARu37jkPksvMr/yP
+        YQjIaSDTQQqAhqyHuQTmAnt/fwEnr5A1IG/ce/AM7BIU79Q0dh3fsmP//zUbdhx28gpeihywyM519Aye
+        D3LJlu37/oMMg8uBAglkclB48iUXl1B+mATMBTC+jXeUoH9owjmQWpAeuAHO3mFgfzt5hYJDHR/Q0jL5
+        A1IL0gNXB9JIkQEwL4Cch+wFWFjAbHJzCxECefPeg6eoXiiva9+3def+/xu27r7g6BW8AtkLsBQKMSx0
+        1frNu44AA/I/KODh6nqmzpMFRQ0ocEChC/TSQpBtMBeAEhHIIFAUw6IRpAclrBrb+mZlFVT9BynYuG3P
+        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4AGftnGBXl
+        O2gAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIESURBVDhPnZPNSxtRFMX9T2ppN7axH2SjqaGpsU0TjJJi
+        RhsZm0WaUqVRBCmIMX9BV3Xl0pWgpFAsFNS46aJQsRRqxQkx5sPPmIzGmRhJMsd3B6ZkTCPFgcN9783h
+        9+6cyzQ0VD2vR0aHHS5X9E7zA6Xx5m00Ge4rtKfzat8/1509nGB5+hzTc2GsrG/gWzSm1un5MFrNFjhc
+        XLQupMvNCR8+TuF7LI61ZBo/mVYTKfzYTqra3NvHqzdvQb4ayNDY++F2mwNr2wms7+7hIH8K6fwcTzrs
+        +JXe+avVrTjaLO0gvw7SzXmE2YUv2Nw/QFoUUVEUnBQKKmCD3VytmfAndHOXujDce6j8SaWRyOZQLJWg
+        MMCOeKwCYpkjnX4nU7jLAtZ1cKPxFhJHWewen6CH68cLtwcu90sVQFVTKicifpgBTUcHMDBikr3InErI
+        SrJaKQcCUK3WFsuI/DoA188LX5cjEOWCTgS4fBb+vADy6wDj48FAq8kMuViEzNLXRABtTdnk8nm0mNpA
+        /ppR9vUNRAMjo5DPzlCqVGoksakMDr0DP+CFteOZPgONxvO88JjNORJZgcSyKJfLrEpYXFyC6ZEZvb0e
+        OJ1O+P3++pBgKBQgUDMbLU2HKu3pnG42Go2w2+3w+Xz1IVf9NBrEZrPB673ic/4HYrVar9cFwakT0sTE
+        JC4A2evLqnFhjAkAAAAASUVORK5CYII=
+</value>
+  </data>
+  <metadata name="mgZoomInComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>825, 95</value>
+  </metadata>
+  <data name="mgZoomInComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIESURBVDhPnZPNSxtRFMX9T2ppN7axH2SjqaGpsU0TjJJi
+        RhsZm0WaUqVRBCmIMX9BV3Xl0pWgpFAsFNS46aJQsRRqxQkx5sPPmIzGmRhJMsd3B6ZkTCPFgcN9783h
+        9+6cyzQ0VD2vR0aHHS5X9E7zA6Xx5m00Ge4rtKfzat8/1509nGB5+hzTc2GsrG/gWzSm1un5MFrNFjhc
+        XLQupMvNCR8+TuF7LI61ZBo/mVYTKfzYTqra3NvHqzdvQb4ayNDY++F2mwNr2wms7+7hIH8K6fwcTzrs
+        +JXe+avVrTjaLO0gvw7SzXmE2YUv2Nw/QFoUUVEUnBQKKmCD3VytmfAndHOXujDce6j8SaWRyOZQLJWg
+        MMCOeKwCYpkjnX4nU7jLAtZ1cKPxFhJHWewen6CH68cLtwcu90sVQFVTKicifpgBTUcHMDBikr3InErI
+        SrJaKQcCUK3WFsuI/DoA188LX5cjEOWCTgS4fBb+vADy6wDj48FAq8kMuViEzNLXRABtTdnk8nm0mNpA
+        /ppR9vUNRAMjo5DPzlCqVGoksakMDr0DP+CFteOZPgONxvO88JjNORJZgcSyKJfLrEpYXFyC6ZEZvb0e
+        OJ1O+P3++pBgKBQgUDMbLU2HKu3pnG42Go2w2+3w+Xz1IVf9NBrEZrPB673ic/4HYrVar9cFwakT0sTE
+        JC4A2evLqnFhjAkAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAH5SURBVDhPnZPLSxtRFMb9T2qpm7ZRW7KpqaHBaNMEU0kx
+        o42MZpGmqDSKIIL4+Atc6cplVwUlhWKhoMaNi0LFUvCBE5KYh48Yk9E4EyNJ5vOegJIxiS0d+Dj33vn4
+        3TPfYWpqSp4PwyNDFpvN/6T+mVL7sA6PNY0K7em81Fdx3d7JCYa2N5hf8GJtexfr/kCxzi960aQ3wGLj
+        /FUhb+2cMDM7h5+BEDYjMfxm2ghH8Ws/UtTe0TH6PvaDfGWQwdGxoRaTBZv7YWwfHiGevoB0dVVc/4kd
+        3GojGEKzoQXkV0E6OIfwZek79o7jiIkiCoqC80wGQvwEu+zmUn32fkUHd6cLTcNzZScaQziZQjaXg8IA
+        B+IZgolTBO5oKxLFUxawqoMHtY8QPk3i8OwcnVwP3tkdsNnflymaEhE6SYCmowJoGDHCXiQuJCQluVgp
+        h0oKslzIrwJwPbzwY9UHUc78Vd5vSyC/CjA+Pulp0ukhZ7OQWfqVRNmk0mm80DWD/GWj7O7u9XuGRyBf
+        XiJXKJRJYlMZGPwEvtcJY+trdQY3NJ7nhVdszj7fGiSWRT6fZ1XC8vIKdC/16OpywGq1wu12V4dMTk97
+        CFTPRkvToUp7OqebtVotzGYzXC5Xdch9P80NxGQywem853P+BWI0Gv+vC4JTJ6SJiSlcA6LH15rL3j8W
+        AAAAAElFTkSuQmCC
+</value>
+  </data>
+  <metadata name="mgZoomOutComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>253, 134</value>
+  </metadata>
+  <data name="mgZoomOutComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAH5SURBVDhPnZPLSxtRFMb9T2qpm7ZRW7KpqaHBaNMEU0kx
+        o42MZpGmqDSKIIL4+Atc6cplVwUlhWKhoMaNi0LFUvCBE5KYh48Yk9E4EyNJ5vOegJIxiS0d+Dj33vn4
+        3TPfYWpqSp4PwyNDFpvN/6T+mVL7sA6PNY0K7em81Fdx3d7JCYa2N5hf8GJtexfr/kCxzi960aQ3wGLj
+        /FUhb+2cMDM7h5+BEDYjMfxm2ghH8Ws/UtTe0TH6PvaDfGWQwdGxoRaTBZv7YWwfHiGevoB0dVVc/4kd
+        3GojGEKzoQXkV0E6OIfwZek79o7jiIkiCoqC80wGQvwEu+zmUn32fkUHd6cLTcNzZScaQziZQjaXg8IA
+        B+IZgolTBO5oKxLFUxawqoMHtY8QPk3i8OwcnVwP3tkdsNnflymaEhE6SYCmowJoGDHCXiQuJCQluVgp
+        h0oKslzIrwJwPbzwY9UHUc78Vd5vSyC/CjA+Pulp0ukhZ7OQWfqVRNmk0mm80DWD/GWj7O7u9XuGRyBf
+        XiJXKJRJYlMZGPwEvtcJY+trdQY3NJ7nhVdszj7fGiSWRT6fZ1XC8vIKdC/16OpywGq1wu12V4dMTk97
+        CFTPRkvToUp7OqebtVotzGYzXC5Xdch9P80NxGQywem853P+BWI0Gv+vC4JTJ6SJiSlcA6LH15rL3j8W
+        AAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem24.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        R0lGODlhEAAQAIZvAISChAEBAXBJJai7zsfb8Nrn9M/a5Nnm81tgZNDh8sXa77jH16jR4+fu9dDh8brT
+        7erv89jm8uzw9ODq9Ku0vNHh8mRrcvT3+aStttri6oOGiJqbncrc7oaKjZ+fn9Di6JSVl67C1a6yt5u2
+        0F5cWsjd5IiOlM3U2Tg3N398ezAvLujjjKCnr5u83uXq73V5fnh3d+nv9OLaid/s76/N6pyzy9fn65mi
+        rLCurXahzJDO1tfb3+Do8dDg8UdKTb7L2EpMTFhYWZy20K22v6jG5KWqsaq8z+7sj7C/z6amp6C50uLr
+        9evw9aTF52RgX250esjQ2ISAf2xtb7S3u+Tr8WBocMPT43yQo7vU7cbb7+Hr9JGRkt7m7YSFiL7H0cza
+        6IWUo7bBzeqxd6uvs6uoqOLs9c7X31xbXbe/x+fs8evv84SHi8vY5XyPoq7L5wAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEBAAAh+QQB
+        AABvACwAAAAAEAAQAAAIwgABvBFIcOCbgwgTJsQRxUkKMgkFBpj4xsMULz/CFNmiMMCRNxugcEkTg8cX
+        JGsOSlyRRAQENRcaTIjAAQwIhAFkwDghIQMVLQd6KKhxxuBEEi6YsLFSoIKCB0RQKJSyo0GZAgmyMKAh
+        xIfBNwFMjFlywAEBBjqaXHmCcwaaLmYSEMDSIoeSKhSM2njDQsONEG5GtLGAIGGADyXeDOkQRAWQFxgQ
+        CBAjECxFAwuMLDDwZoAAAQpDI/RcsHToAaJTvwkIADs=
+</value>
+  </data>
+  <metadata name="mgZoomToSelectionComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 134</value>
+  </metadata>
+  <data name="mgZoomToSelectionComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        R0lGODlhEAAQAIZvAISChAEBAXBJJai7zsfb8Nrn9M/a5Nnm81tgZNDh8sXa77jH16jR4+fu9dDh8brT
+        7erv89jm8uzw9ODq9Ku0vNHh8mRrcvT3+aStttri6oOGiJqbncrc7oaKjZ+fn9Di6JSVl67C1a6yt5u2
+        0F5cWsjd5IiOlM3U2Tg3N398ezAvLujjjKCnr5u83uXq73V5fnh3d+nv9OLaid/s76/N6pyzy9fn65mi
+        rLCurXahzJDO1tfb3+Do8dDg8UdKTb7L2EpMTFhYWZy20K22v6jG5KWqsaq8z+7sj7C/z6amp6C50uLr
+        9evw9aTF52RgX250esjQ2ISAf2xtb7S3u+Tr8WBocMPT43yQo7vU7cbb7+Hr9JGRkt7m7YSFiL7H0cza
+        6IWUo7bBzeqxd6uvs6uoqOLs9c7X31xbXbe/x+fs8evv84SHi8vY5XyPoq7L5wAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEBAAAh+QQB
+        AABvACwAAAAAEAAQAAAIwgABvBFIcOCbgwgTJsQRxUkKMgkFBpj4xsMULz/CFNmiMMCRNxugcEkTg8cX
+        JGsOSlyRRAQENRcaTIjAAQwIhAFkwDghIQMVLQd6KKhxxuBEEi6YsLFSoIKCB0RQKJSyo0GZAgmyMKAh
+        xIfBNwFMjFlywAEBBjqaXHmCcwaaLmYSEMDSIoeSKhSM2njDQsONEG5GtLGAIGGADyXeDOkQRAWQFxgQ
+        CBAjECxFAwuMLDDwZoAAAQpDI/RcsHToAaJTvwkIADs=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFqSURBVDhPpZPbTsJAEIZ5NaPxAXgI5UK50Qt9LmPSeBYQ
+        g2gFEWiVIsUWSjm2pdfjzOyyFbyrF1/+Ofwz2c1mMztb2bPd7SykgWYzNOj5k1TQLC+o6K1UqAXVmgHV
+        Whsh3Yhf23+uJ7yizifQGx/w8kaYoKOu0cAakts7Uot09pnJgnqzA2u0MCdk/Vy7Y3Nu/5i13vrknjpB
+        0/iCpokYXQHFTBe0yyIbtYsCvGNOMSnNqAWm1QezYyOoGBsE5lfXJTaRmpbsr3zoVQss2wGr54JlIz2K
+        Hbi5f2TDLSr1OrLOPo7dZIHteEDQAGmx9MRxoVThXDAU+i3yvvTzK7hDH1xvzEP5gxPWh/IzDLDmeqJH
+        DCgekgrUFfzxDEbjqXqm/OEp5z4yot6EFFmp7KkF0/kCiM3/MJ0HXBesYqmzIDnBIgxhEUYQICIWeQLm
+        AeYbqBNEyxii5RKJIWRF4qTG/VjWf3l5wX+/8w9/3Qe1qQ/dtwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <metadata name="mgInitialViewComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>384, 56</value>
+  </metadata>
+  <data name="mgInitialViewComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFqSURBVDhPpZPbTsJAEIZ5NaPxAXgI5UK50Qt9LmPSeBYQ
+        g2gFEWiVIsUWSjm2pdfjzOyyFbyrF1/+Ofwz2c1mMztb2bPd7SykgWYzNOj5k1TQLC+o6K1UqAXVmgHV
+        Whsh3Yhf23+uJ7yizifQGx/w8kaYoKOu0cAakts7Uot09pnJgnqzA2u0MCdk/Vy7Y3Nu/5i13vrknjpB
+        0/iCpokYXQHFTBe0yyIbtYsCvGNOMSnNqAWm1QezYyOoGBsE5lfXJTaRmpbsr3zoVQss2wGr54JlIz2K
+        Hbi5f2TDLSr1OrLOPo7dZIHteEDQAGmx9MRxoVThXDAU+i3yvvTzK7hDH1xvzEP5gxPWh/IzDLDmeqJH
+        DCgekgrUFfzxDEbjqXqm/OEp5z4yot6EFFmp7KkF0/kCiM3/MJ0HXBesYqmzIDnBIgxhEUYQICIWeQLm
+        AeYbqBNEyxii5RKJIWRF4qTG/VjWf3l5wX+/8w9/3Qe1qQ/dtwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGTSURBVDhPlVNNSwJRFPV/tQpaiW1qFrmKICIqKMmICjIw
+        A4tIRCNpIFFKkUgMQ8FKyz4ohBBh3BlFH5vqL5w4F5/OqBsvHObjvnPeuWfe2Gz9F/qnNBlOp5NkNK/9
+        6ZhI4qD1/PP7h/L9A7a29+BaWoN7xYPQgY584RJGva7sys49MT23iHn3KoL7Eby9f6B4UxaBiB4VwWg8
+        gcenZ2iaZhZrOxifnAXr8+sbL9UaGo1X0BWL9ywKsedwDHdnQAGOYCZWKhVxw1r3BeVKJ3TXHKMdIEfY
+        2PTLzLRqJnJXFt+z9KMYKG6Jn9Z3A2EMDNqRSKXFjSJysXLGsXjPvDLZXPdZYOIUSaVzkj5BcRLNuC6W
+        MDo20RZgc2rGBWbBBkU4TufuSoSiFgF+LkItiB0nxSZHIQyj0eXCIjBkHwGD5DngzleluxZyhVtk80UJ
+        Vm3AnOjSEiTn8nj90qCbs2xBsjg5vUA8eS6o1gwEQrqsYcg9fwQ2uMC3E0boMNECiQvLXumZjnfvn0mJ
+        cDSCJAV+xk7WP7yJ9EN8DX7nAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <metadata name="mgPanComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>581, 56</value>
+  </metadata>
+  <data name="mgPanComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGTSURBVDhPlVNNSwJRFPV/tQpaiW1qFrmKICIqKMmICjIw
+        A4tIRCNpIFFKkUgMQ8FKyz4ohBBh3BlFH5vqL5w4F5/OqBsvHObjvnPeuWfe2Gz9F/qnNBlOp5NkNK/9
+        6ZhI4qD1/PP7h/L9A7a29+BaWoN7xYPQgY584RJGva7sys49MT23iHn3KoL7Eby9f6B4UxaBiB4VwWg8
+        gcenZ2iaZhZrOxifnAXr8+sbL9UaGo1X0BWL9ywKsedwDHdnQAGOYCZWKhVxw1r3BeVKJ3TXHKMdIEfY
+        2PTLzLRqJnJXFt+z9KMYKG6Jn9Z3A2EMDNqRSKXFjSJysXLGsXjPvDLZXPdZYOIUSaVzkj5BcRLNuC6W
+        MDo20RZgc2rGBWbBBkU4TufuSoSiFgF+LkItiB0nxSZHIQyj0eXCIjBkHwGD5DngzleluxZyhVtk80UJ
+        Vm3AnOjSEiTn8nj90qCbs2xBsjg5vUA8eS6o1gwEQrqsYcg9fwQ2uMC3E0boMNECiQvLXumZjnfvn0mJ
+        cDSCJAV+xk7WP7yJ9EN8DX7nAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACcSURBVDhPY2BMZZzJmMb4nywM1MsA0rjxRDMcv//y7D8I
+        I4vhYoP0YjXA0t6DKEPwGkCMIXgN+PPn739ChuA14NWb9/9BGJ8heA34+u37fxjGZQheA/6jAWyGEG0A
+        SDMMI0cxQQNAmkAAZjt6+iAYjcgGfPz6EiNxEUxIIBvRXYGcKrEaAFIAcyrZBqDnDZKikZhMBFMD8QKF
+        2RkA39ChmP3112gAAAAASUVORK5CYII=
+</value>
+  </data>
+  <metadata name="mgSelectComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>435, 95</value>
+  </metadata>
+  <data name="mgSelectComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACcSURBVDhPY2BMZZzJmMb4nywM1MsA0rjxRDMcv//y7D8I
+        I4vhYoP0YjXA0t6DKEPwGkCMIXgN+PPn739ChuA14NWb9/9BGJ8heA34+u37fxjGZQheA/6jAWyGEG0A
+        SDMMI0cxQQNAmkAAZjt6+iAYjcgGfPz6EiNxEUxIIBvRXYGcKrEaAFIAcyrZBqDnDZKikZhMBFMD8QKF
+        2RkA39ChmP3112gAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem10.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEOSURBVDhPY2CgANjY2PwnWztI8+aOgP8Mbs5B/0EYZBIx
+        bJi6TW2+/799eQ0xgBhnwNSBbN7Y6gPWfO5QL1F64ebDNH//+gaseeMMH+JdgE0zyCVEeQGk+dSpU/9B
+        9PnDfWCbQZoJxkKMAoM5SNGZM2f+f//+/f+FCxfAmlA04wrEWCUGmwRVhjWbXBkgNp8//3/FihX/Gxsb
+        UW3GZUCCIsOTwz4M/3+lMPzf4wkxpKGhgbCzYUEep8qw6UYYw/+bwQz/dzoz/G/WgxiCEeU4vaDMMLHP
+        nOH/CjuG/32GDP+LtRn+xyow2BNtQAgDA2e8MsOMBBWGI0nqDPDUSkyiI00NqUkZqxdIzUzIhgAAH4zC
+        0srGPRUAAAAASUVORK5CYII=
+</value>
+  </data>
+  <metadata name="mgClearSelectionComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>687, 17</value>
+  </metadata>
+  <data name="mgClearSelectionComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEOSURBVDhPY2CgANjY2PwnWztI8+aOgP8Mbs5B/0EYZBIx
+        bJi6TW2+/799eQ0xgBhnwNSBbN7Y6gPWfO5QL1F64ebDNH//+gaseeMMH+JdgE0zyCVEeQGk+dSpU/9B
+        9PnDfWCbQZoJxkKMAoM5SNGZM2f+f//+/f+FCxfAmlA04wrEWCUGmwRVhjWbXBkgNp8//3/FihX/Gxsb
+        UW3GZUCCIsOTwz4M/3+lMPzf4wkxpKGhgbCzYUEep8qw6UYYw/+bwQz/dzoz/G/WgxiCEeU4vaDMMLHP
+        nOH/CjuG/32GDP+LtRn+xyow2BNtQAgDA2e8MsOMBBWGI0nqDPDUSkyiI00NqUkZqxdIzUzIhgAAH4zC
+        0srGPRUAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
+        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
+        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
+        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
+        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
+        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem12.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        XEBRGJCjGUXPxCC2VfVBbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
+        4kAccAMAwje0sEjeZewAAAAASUVORK5CYII=
+</value>
+  </data>
+  <metadata name="mgMeasureComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 173</value>
+  </metadata>
+  <data name="mgMeasureComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        XEBRGJCjGUXPxCC2VfVBbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
+        4kAccAMAwje0sEjeZewAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem13.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
+        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
+        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
+        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
+        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
+        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
+        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
+        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
+        RK5CYII=
+</value>
+  </data>
+  <metadata name="mgQueryComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>840, 134</value>
+  </metadata>
+  <data name="mgQueryComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
+        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
+        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
+        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
+        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
+        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
+        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
+        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
+        RK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem19.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC0SURBVDhPrZPLCsIwEEXzXeKyS/0bQUFxISiKK8EH/TXF
+        QtRiKBaLSqyrkQnkgovCkBg4zFyYOYRAlIo9raSTtpMuhcC7ihfPuQGD2Yak8K4TxOAEoQc3OGQnkrI/
+        avJAkOmcepMV4CwBAn0x1J+u6fmyrvrMfRM8A0F+LX5enrMECExRUggQ3MqKhvMt4CwBgnv1oNFiR3X9
+        cdVn7pvgGQj48cbLFHCWAIG1bwrhP4LY3/gFpD/IGPp59QYAAAAASUVORK5CYII=
+</value>
+  </data>
+  <metadata name="mgViewerOptionsComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>619, 134</value>
+  </metadata>
+  <data name="mgViewerOptionsComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC0SURBVDhPrZPLCsIwEEXzXeKyS/0bQUFxISiKK8EH/TXF
+        QtRiKBaLSqyrkQnkgovCkBg4zFyYOYRAlIo9raSTtpMuhcC7ihfPuQGD2Yak8K4TxOAEoQc3OGQnkrI/
+        avJAkOmcepMV4CwBAn0x1J+u6fmyrvrMfRM8A0F+LX5enrMECExRUggQ3MqKhvMt4CwBgnv1oNFiR3X9
+        cdVn7pvgGQj48cbLFHCWAIG1bwrhP4LY3/gFpD/IGPp59QYAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem16.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        XEBRGJCjGUXPxCC2VfVBbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
+        4kAccAMAwje0sEjeZewAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem17.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
+        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
+        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
+        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
+        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
+        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
+        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
+        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
+        RK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem18.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC0SURBVDhPrZPLCsIwEEXzXeKyS/0bQUFxISiKK8EH/TXF
+        QtRiKBaLSqyrkQnkgovCkBg4zFyYOYRAlIo9raSTtpMuhcC7ihfPuQGD2Yak8K4TxOAEoQc3OGQnkrI/
+        avJAkOmcepMV4CwBAn0x1J+u6fmyrvrMfRM8A0F+LX5enrMECExRUggQ3MqKhvMt4CwBgnv1oNFiR3X9
+        cdVn7pvgGQj48cbLFHCWAIG1bwrhP4LY3/gFpD/IGPp59QYAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem14.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        R0lGODlhEAAQAIMAAAAAAP///ydYF5fYTmBfDJlmAGYzALWEU8yZZtSmeP/jyP///wAAAAAAAAAAAAAA
+        ACH/C05FVFNDQVBFMi4wAwEBAAAh+QQBAAALACwAAAAAEAAQAAAIcwAXCBxIcIGAgwUTGhQQAKHAAhAj
+        FiDAcMAAhBATINioAEFFixchKhhJUsFBARcPFtC4kWNLlAIMLFiZoGZNBTZhyixwoKdPBT51zvT5M+jF
+        nSWTmjy4k2hPoE6bOoVKVCpRqj6tFo0604DXr2DBKhwrMCAAOw==
+</value>
+  </data>
+  <metadata name="mgLoadPackageComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>223, 95</value>
+  </metadata>
+  <data name="mgLoadPackageComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        R0lGODlhEAAQAIMAAAAAAP///ydYF5fYTmBfDJlmAGYzALWEU8yZZtSmeP/jyP///wAAAAAAAAAAAAAA
+        ACH/C05FVFNDQVBFMi4wAwEBAAAh+QQBAAALACwAAAAAEAAQAAAIcwAXCBxIcIGAgwUTGhQQAKHAAhAj
+        FiDAcMAAhBATINioAEFFixchKhhJUsFBARcPFtC4kWNLlAIMLFiZoGZNBTZhyixwoKdPBT51zvT5M+jF
+        nSWTmjy4k2hPoE6bOoVKVCpRqj6tFo0604DXr2DBKhwrMCAAOw==
+</value>
+  </data>
+  <metadata name="appToolbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>121, 17</value>
+  </metadata>
+  <data name="mgInvokeComponentButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADgSURBVDhPhZPNCoJAFIV9spZtepfeoGWP2CaCKKQwNf9K
+        848b58IZdGqcC4cDjvfzm4XBar0RV7a7vQS+wbJrLuFNkEUGAOdrqPm0rdMG7/01wgG/RIDLCIAfCADh
+        PdK0XacGNLIby5gZBAu3KNYQQCO7CZhBAIjiRNP1vRrQyG5eYdoBFuL0qSGARr7GrgLSLNf0w6AGNJr2
+        I0nFjgFkRSkIATTytQEU1UuQYRzVgEa+NoB3XQtCAI3QeVk5YwB10whCAI18bQD8mQ7Hk16BRr5WgD14
+        SCNfOwFLv7h99gUnGcVV+atLwAAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <metadata name="mgCopyMapComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 56</value>
+  </metadata>
+  <data name="mgCopyMapComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADgSURBVDhPhZPNCoJAFIV9spZtepfeoGWP2CaCKKQwNf9K
+        848b58IZdGqcC4cDjvfzm4XBar0RV7a7vQS+wbJrLuFNkEUGAOdrqPm0rdMG7/01wgG/RIDLCIAfCADh
+        PdK0XacGNLIby5gZBAu3KNYQQCO7CZhBAIjiRNP1vRrQyG5eYdoBFuL0qSGARr7GrgLSLNf0w6AGNJr2
+        I0nFjgFkRSkIATTytQEU1UuQYRzVgEa+NoB3XQtCAI3QeVk5YwB10whCAI18bQD8mQ7Hk16BRr5WgD14
+        SCNfOwFLv7h99gUnGcVV+atLwAAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="mgInvokeComponentButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIESURBVDhPnZPNSxtRFMX9T2ppN7axH2SjqaGpsU0TjJJi
+        RhsZm0WaUqVRBCmIMX9BV3Xl0pWgpFAsFNS46aJQsRRqxQkx5sPPmIzGmRhJMsd3B6ZkTCPFgcN9783h
+        9+6cyzQ0VD2vR0aHHS5X9E7zA6Xx5m00Ge4rtKfzat8/1509nGB5+hzTc2GsrG/gWzSm1un5MFrNFjhc
+        XLQupMvNCR8+TuF7LI61ZBo/mVYTKfzYTqra3NvHqzdvQb4ayNDY++F2mwNr2wms7+7hIH8K6fwcTzrs
+        +JXe+avVrTjaLO0gvw7SzXmE2YUv2Nw/QFoUUVEUnBQKKmCD3VytmfAndHOXujDce6j8SaWRyOZQLJWg
+        MMCOeKwCYpkjnX4nU7jLAtZ1cKPxFhJHWewen6CH68cLtwcu90sVQFVTKicifpgBTUcHMDBikr3InErI
+        SrJaKQcCUK3WFsuI/DoA188LX5cjEOWCTgS4fBb+vADy6wDj48FAq8kMuViEzNLXRABtTdnk8nm0mNpA
+        /ppR9vUNRAMjo5DPzlCqVGoksakMDr0DP+CFteOZPgONxvO88JjNORJZgcSyKJfLrEpYXFyC6ZEZvb0e
+        OJ1O+P3++pBgKBQgUDMbLU2HKu3pnG42Go2w2+3w+Xz1IVf9NBrEZrPB673ic/4HYrVar9cFwakT0sTE
+        JC4A2evLqnFhjAkAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAH5SURBVDhPnZPLSxtRFMb9T2qpm7ZRW7KpqaHBaNMEU0kx
+        o42MZpGmqDSKIIL4+Atc6cplVwUlhWKhoMaNi0LFUvCBE5KYh48Yk9E4EyNJ5vOegJIxiS0d+Dj33vn4
+        3TPfYWpqSp4PwyNDFpvN/6T+mVL7sA6PNY0K7em81Fdx3d7JCYa2N5hf8GJtexfr/kCxzi960aQ3wGLj
+        /FUhb+2cMDM7h5+BEDYjMfxm2ghH8Ws/UtTe0TH6PvaDfGWQwdGxoRaTBZv7YWwfHiGevoB0dVVc/4kd
+        3GojGEKzoQXkV0E6OIfwZek79o7jiIkiCoqC80wGQvwEu+zmUn32fkUHd6cLTcNzZScaQziZQjaXg8IA
+        B+IZgolTBO5oKxLFUxawqoMHtY8QPk3i8OwcnVwP3tkdsNnflymaEhE6SYCmowJoGDHCXiQuJCQluVgp
+        h0oKslzIrwJwPbzwY9UHUc78Vd5vSyC/CjA+Pulp0ukhZ7OQWfqVRNmk0mm80DWD/GWj7O7u9XuGRyBf
+        XiJXKJRJYlMZGPwEvtcJY+trdQY3NJ7nhVdszj7fGiSWRT6fZ1XC8vIKdC/16OpywGq1wu12V4dMTk97
+        CFTPRkvToUp7OqebtVotzGYzXC5Xdch9P80NxGQywem853P+BWI0Gv+vC4JTJ6SJiSlcA6LH15rL3j8W
+        AAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="mgInvokeComponentButton4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFqSURBVDhPpZPbTsJAEIZ5NaPxAXgI5UK50Qt9LmPSeBYQ
+        g2gFEWiVIsUWSjm2pdfjzOyyFbyrF1/+Ofwz2c1mMztb2bPd7SykgWYzNOj5k1TQLC+o6K1UqAXVmgHV
+        Whsh3Yhf23+uJ7yizifQGx/w8kaYoKOu0cAakts7Uot09pnJgnqzA2u0MCdk/Vy7Y3Nu/5i13vrknjpB
+        0/iCpokYXQHFTBe0yyIbtYsCvGNOMSnNqAWm1QezYyOoGBsE5lfXJTaRmpbsr3zoVQss2wGr54JlIz2K
+        Hbi5f2TDLSr1OrLOPo7dZIHteEDQAGmx9MRxoVThXDAU+i3yvvTzK7hDH1xvzEP5gxPWh/IzDLDmeqJH
+        DCgekgrUFfzxDEbjqXqm/OEp5z4yot6EFFmp7KkF0/kCiM3/MJ0HXBesYqmzIDnBIgxhEUYQICIWeQLm
+        AeYbqBNEyxii5RKJIWRF4qTG/VjWf3l5wX+/8w9/3Qe1qQ/dtwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="mgInvokeComponentButton5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACcSURBVDhPY2BMZZzJmMb4nywM1MsA0rjxRDMcv//y7D8I
+        I4vhYoP0YjXA0t6DKEPwGkCMIXgN+PPn739ChuA14NWb9/9BGJ8heA34+u37fxjGZQheA/6jAWyGEG0A
+        SDMMI0cxQQNAmkAAZjt6+iAYjcgGfPz6EiNxEUxIIBvRXYGcKrEaAFIAcyrZBqDnDZKikZhMBFMD8QKF
+        2RkA39ChmP3112gAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentButton6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEMSURBVDhPY2BABmkMJoypjA2MaYwHgPgtFB8AiTEA5VDU
+        YnBSGdK16hTvVa6M+j9nT/H/DcebwBjEBomB5BiAarAbApRw69P6tmB/+f+NJ5qxYpAcSA2mIUCngUzH
+        pfnx60v/QRhkMEgN2CXI3gH5D+REXDaDNFvae8ANAakFhwkMgAIM5E9CBsAMAakF6UE24C0osAgZ8OfP
+        X7BLHgFdBIodkg149eb9fxAGGTJl/5SfJHvh67fv/2EYZAjCACID8T8aQBhCRDSCFCMDEB+GIS7Bk5Bg
+        0QgyAGYQihfgfsGRlG8/PwO3DdmAf//+yWMmayyZafPZzS/ANkJTH35X4M9uYFmKDYAZArMLAFbj0VH/
+        eRxJAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <metadata name="mgCircleSelectComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>484, 17</value>
+  </metadata>
+  <data name="mgCircleSelectComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEMSURBVDhPY2BABmkMJoypjA2MaYwHgPgtFB8AiTEA5VDU
+        YnBSGdK16hTvVa6M+j9nT/H/DcebwBjEBomB5BiAarAbApRw69P6tmB/+f+NJ5qxYpAcSA2mIUCngUzH
+        pfnx60v/QRhkMEgN2CXI3gH5D+REXDaDNFvae8ANAakFhwkMgAIM5E9CBsAMAakF6UE24C0osAgZ8OfP
+        X7BLHgFdBIodkg149eb9fxAGGTJl/5SfJHvh67fv/2EYZAjCACID8T8aQBhCRDSCFCMDEB+GIS7Bk5Bg
+        0QgyAGYQihfgfsGRlG8/PwO3DdmAf//+yWMmayyZafPZzS/ANkJTH35X4M9uYFmKDYAZArMLAFbj0VH/
+        eRxJAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="mgInvokeComponentButton7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADCSURBVDhPY2DABlIYjBnTGM+AMAOQjVUNAY3/+7ZkgjHQ
+        EBAmYBDCRrCmjSeaUTBeg6BOxaoRZND7L8/AGMRGMQjmBZAT0W1E5oM0W9p7YBgCDwJiDUA2BKSHZAP+
+        /PkLdwlZBrx68/4/CINccubBGdJd8PXb9/8wDDKEZC/8RwNwQ4gNRGT9IM0wzEBMOgApBgFkGjUl40mJ
+        H7//gtuGbMC/f//kMbMDmkGglAczAJapcLsC2Tg8uZE4AwjkX+RoBACFkNMYUBhcvQAAAABJRU5ErkJg
+        gg==
+</value>
+  </data>
+  <metadata name="mgPolygonSelectComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>742, 56</value>
+  </metadata>
+  <data name="mgPolygonSelectComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADCSURBVDhPY2DABlIYjBnTGM+AMAOQjVUNAY3/+7ZkgjHQ
+        EBAmYBDCRrCmjSeaUTBeg6BOxaoRZND7L8/AGMRGMQjmBZAT0W1E5oM0W9p7YBgCDwJiDUA2BKSHZAP+
+        /PkLdwlZBrx68/4/CINccubBGdJd8PXb9/8wDDKEZC/8RwNwQ4gNRGT9IM0wzEBMOgApBgFkGjUl40mJ
+        H7//gtuGbMC/f//kMbMDmkGglAczAJapcLsC2Tg8uZE4AwjkX+RoBACFkNMYUBhcvQAAAABJRU5ErkJg
+        gg==
+</value>
+  </data>
+  <data name="mgInvokeComponentButton8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGTSURBVDhPlVNNSwJRFPV/tQpaiW1qFrmKICIqKMmICjIw
+        A4tIRCNpIFFKkUgMQ8FKyz4ohBBh3BlFH5vqL5w4F5/OqBsvHObjvnPeuWfe2Gz9F/qnNBlOp5NkNK/9
+        6ZhI4qD1/PP7h/L9A7a29+BaWoN7xYPQgY584RJGva7sys49MT23iHn3KoL7Eby9f6B4UxaBiB4VwWg8
+        gcenZ2iaZhZrOxifnAXr8+sbL9UaGo1X0BWL9ywKsedwDHdnQAGOYCZWKhVxw1r3BeVKJ3TXHKMdIEfY
+        2PTLzLRqJnJXFt+z9KMYKG6Jn9Z3A2EMDNqRSKXFjSJysXLGsXjPvDLZXPdZYOIUSaVzkj5BcRLNuC6W
+        MDo20RZgc2rGBWbBBkU4TufuSoSiFgF+LkItiB0nxSZHIQyj0eXCIjBkHwGD5DngzleluxZyhVtk80UJ
+        Vm3AnOjSEiTn8nj90qCbs2xBsjg5vUA8eS6o1gwEQrqsYcg9fwQ2uMC3E0boMNECiQvLXumZjnfvn0mJ
+        cDSCJAV+xk7WP7yJ9EN8DX7nAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="mgInvokeComponentButton9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEOSURBVDhPY2CgANjY2PwnWztI8+aOgP8Mbs5B/0EYZBIx
+        bJi6TW2+/799eQ0xgBhnwNSBbN7Y6gPWfO5QL1F64ebDNH//+gaseeMMH+JdgE0zyCVEeQGk+dSpU/9B
+        9PnDfWCbQZoJxkKMAoM5SNGZM2f+f//+/f+FCxfAmlA04wrEWCUGmwRVhjWbXBkgNp8//3/FihX/Gxsb
+        UW3GZUCCIsOTwz4M/3+lMPzf4wkxpKGhgbCzYUEep8qw6UYYw/+bwQz/dzoz/G/WgxiCEeU4vaDMMLHP
+        nOH/CjuG/32GDP+LtRn+xyow2BNtQAgDA2e8MsOMBBWGI0nqDPDUSkyiI00NqUkZqxdIzUzIhgAAH4zC
+        0srGPRUAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentButton10.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGDSURBVDhPY2AAAifP4P+4MEieKAAy4Oev3ygYJAbSHJOc
+        /K2itnX/lClz5PEaBtLw6MlLOIYZYGnvATY4Pq3gT0Nr72yshoAkcktq/99/+AyrARu37jkPksvMr/yP
+        YQjIaSDTQQqAhqyHuQTmAnt/fwEnr5A1IG/ce/AM7BIU79Q0dh3fsmP//zUbdhx28gpeihywyM519Aye
+        D3LJlu37/oMMg8uBAglkclB48iUXl1B+mATMBTC+jXeUoH9owjmQWpAeuAHO3mFgfzt5hYJDHR/Q0jL5
+        A1IL0gNXB9JIkQEwL4Cch+wFWFjAbHJzCxECefPeg6eoXiiva9+3def+/xu27r7g6BW8AtkLsBQKMSx0
+        1frNu44AA/I/KODh6nqmzpMFRQ0ocEChC/TSQpBtMBeAEhHIIFAUw6IRpAclrBrb+mZlFVT9BynYuG3P
+        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4AGftnGBXl
+        O2gAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentButton11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADLSURBVDhPY2AYBZSHwOmNjI2nNzCuIQsD9TIcX8e47v+X
+        Nf//fVxAEgbpAellOLSCcePvt1P+/3heTxIG6QHpZdi9mHHr12et/z/cLyUJg/SA9DJsmcu488uT6v8f
+        H5SShEF6QHoZlvczTFrcx3AYGX97WvsfXQwbH6QXIxon1zOcAeGCeIY0UuOYDahBDaQ5KYShHsjWA2It
+        IFYFYjkglgBiISDmAWKQWiZ0C5iBAsJALAXEkkAsDsSiUDF+qEZOqGaQWkZSXUgb9QA3ghn8OTL98gAA
+        AABJRU5ErkJggg==
+</value>
+  </data>
+  <metadata name="mgTooltipToggleComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>608, 95</value>
+  </metadata>
+  <data name="mgTooltipToggleComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADLSURBVDhPY2AYBZSHwOmNjI2nNzCuIQsD9TIcX8e47v+X
+        Nf//fVxAEgbpAellOLSCcePvt1P+/3heTxIG6QHpZdi9mHHr12et/z/cLyUJg/SA9DJsmcu488uT6v8f
+        H5SShEF6QHoZlvczTFrcx3AYGX97WvsfXQwbH6QXIxon1zOcAeGCeIY0UuOYDahBDaQ5KYShHsjWA2It
+        IFYFYjkglgBiISDmAWKQWiZ0C5iBAsJALAXEkkAsDsSiUDF+qEZOqGaQWkZSXUgb9QA3ghn8OTL98gAA
+        AABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem20.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
+        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
+        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
+        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
+        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
+        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem21.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        XEBRGJCjGUXPxCC2VfVBbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
+        4kAccAMAwje0sEjeZewAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem22.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
+        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
+        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
+        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
+        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
+        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
+        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
+        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
+        RK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentButton15.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC0SURBVDhPrZPLCsIwEEXzXeKyS/0bQUFxISiKK8EH/TXF
+        QtRiKBaLSqyrkQnkgovCkBg4zFyYOYRAlIo9raSTtpMuhcC7ihfPuQGD2Yak8K4TxOAEoQc3OGQnkrI/
+        avJAkOmcepMV4CwBAn0x1J+u6fmyrvrMfRM8A0F+LX5enrMECExRUggQ3MqKhvMt4CwBgnv1oNFiR3X9
+        cdVn7pvgGQj48cbLFHCWAIG1bwrhP4LY3/gFpD/IGPp59QYAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem23.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAACw8AAAsPAZL5A6UAAAG4SURBVDhPjZNNLwNRFIbPohv/oVhVk8kkNl0RQiQkWEkk
+        CKmoIj42BLFjI5FGxI7/QCIsrLC20IU2Umm1PkZFW02FdjBpXvfM7fjKUIsn55w7c9/73nPvJQDEtLZ0
+        LQrwTxateebkkgB29g7wZhhl4UV+FfinA3uB4+CZ6eI3vq5s64AF/qKswMnpOZhgSGDlXJfysgLhSBzh
+        SKIE53HEr5LIZHPQX15hiAZb1m23EEtoiCZuBRo4v09ncZWJwbvRBGXAAVcnwd1HhjJHR+oKVbPIt2PU
+        kmloyRS0uzRSDzlcP1yg1l+BxjWC/54w9SRiitCwKoS8VFADVPVNIJN9FHYluv6Kwc1mNIjJEzmCw0Po
+        3Jc5w+PCySHfwI/b95wv4DmvmxSLRSj9Dvg0wnhWCjDuGVkP3Yi8lwxTgG+fFa2byN1ytRPGhGXGEuBY
+        My3HXB1kvgHbs88XdCh9DnhjhJHkp4AnIGtvVDjokQ5sH9H21i4G15tRv0wYvpQCbVsyZ+qWRA8mRQ9+
+        nuvXWl0gp9hngX/uDxF8cRm55nF1nir/FGAxdYYqlVE6dHeTwXvmyLU6S07+/g45KJQpvzUZmQAAAABJ
+        RU5ErkJggg==
+</value>
+  </data>
+  <metadata name="plotToDwfComponent.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>211, 56</value>
+  </metadata>
+  <data name="plotToDwfComponent.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAACw8AAAsPAZL5A6UAAAG4SURBVDhPjZNNLwNRFIbPohv/oVhVk8kkNl0RQiQkWEkk
+        CKmoIj42BLFjI5FGxI7/QCIsrLC20IU2Umm1PkZFW02FdjBpXvfM7fjKUIsn55w7c9/73nPvJQDEtLZ0
+        LQrwTxateebkkgB29g7wZhhl4UV+FfinA3uB4+CZ6eI3vq5s64AF/qKswMnpOZhgSGDlXJfysgLhSBzh
+        SKIE53HEr5LIZHPQX15hiAZb1m23EEtoiCZuBRo4v09ncZWJwbvRBGXAAVcnwd1HhjJHR+oKVbPIt2PU
+        kmloyRS0uzRSDzlcP1yg1l+BxjWC/54w9SRiitCwKoS8VFADVPVNIJN9FHYluv6Kwc1mNIjJEzmCw0Po
+        3Jc5w+PCySHfwI/b95wv4DmvmxSLRSj9Dvg0wnhWCjDuGVkP3Yi8lwxTgG+fFa2byN1ytRPGhGXGEuBY
+        My3HXB1kvgHbs88XdCh9DnhjhJHkp4AnIGtvVDjokQ5sH9H21i4G15tRv0wYvpQCbVsyZ+qWRA8mRQ9+
+        nuvXWl0gp9hngX/uDxF8cRm55nF1nir/FGAxdYYqlVE6dHeTwXvmyLU6S07+/g45KJQpvzUZmQAAAABJ
+        RU5ErkJggg==
+</value>
+  </data>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>205, 173</value>
+  </metadata>
+  <data name="mgInvokeComponentMenuItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
+        jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
+        T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
+        m+XGNsUKQli5ZJIMJC+xX3WUSWRl1tjD3qYvxcLhg+OZDKTP3OCKD275vCwePX55JhMwHkqFAA+vlnH8
+        /K2AGTPfUjm4xKhoOn1RwYyZbzs2b3Nq+wYl21WUGY+s/QEOPqTsVU0Bn7+6iK2HAAcEuesalrYKHsnF
+        m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        XEBRGJCjGUXPxCC2VfVBbP/QMVD8PzZxmBhIH9ggkMD/Fyn/F5ea/SeFBumDG/D9FNt/UjDIIrgBFHuB
+        4kAccAMAwje0sEjeZewAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="mgInvokeComponentMenuItem3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
+        me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
+        ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
+        aDsYQqupDZSvgXRz/cLK6hqOzuOIiSIKioLrTAZC/AKH7OViLXu/oJt7UIWu4aVyEI0hnEwhm8tBYYAT
+        8QrBxCUCD7QXieI5M1hTwZPqpwhfJnF6da1eTkqyCoimxBKFLhKg7mgAOkaMsIPEjaRepkg+lFOQ+UL5
+        GgD3jhfWv/kgypm/yvt1FZSvAUxPz3qaDUbI2Sxk5n45kTepdBpNhlZQfkkr+/oG/J7JKci3t8gVCiWS
+        WFdGx8bBDzhhbn+t9eCexvO88Ir12efbgsS8yOfzLErY2NiEocWI3t5+2O12uN3uypDZ+XkPgepZa6k7
+        FGlN+/SyXq+H1WqFy+WqDHnsp7mHWCwWOJ2PfM6/QMxm8/9VQXCqhDQzM4ffTfzkLal2r4sAAAAASUVO
+        RK5CYII=
+</value>
+  </data>
+  <metadata name="statusBar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>237, 17</value>
+  </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>111</value>
+  </metadata>
+</root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/Program.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/Program.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/Program.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -3,6 +3,8 @@
 using System.Windows.Forms;
 using OSGeo.MapGuide;
 using System.Diagnostics;
+using OSGeo.MapGuide.Viewer;
+using OSGeo.MapGuide.Viewer.Desktop;
 
 namespace MapViewerTest
 {
@@ -30,7 +32,7 @@
                 MessageBox.Show(ex.ToString(), "Error");
                 return;
             }
-            var frm = new Form1();
+            var frm = new MgAppWindow();
             if (args.Length == 1)
             {
                 try
@@ -43,7 +45,7 @@
                     {
                         frm.Load += (s, e) =>
                         {
-                            frm.LoadMap(resId);
+                            LoadMap(frm, resId);
                         };
                     }
                 }
@@ -56,6 +58,17 @@
             Application.Run(frm);
         }
 
+        private static void LoadMap(MgAppWindow frm, MgResourceIdentifier mapId)
+        {
+            var map = new MgdMap(mapId);
+            var fact = new MgServiceFactory();
+
+            frm.LoadMap(
+                new MgDesktopMapViewerProvider(map,
+                    (MgdResourceService)fact.CreateService(MgServiceType.ResourceService),
+                    (MgRenderingService)fact.CreateService(MgServiceType.RenderingService)));
+        }
+
         static void OnAppExit(object sender, EventArgs e)
         {
             MgPlatform.Terminate();

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/Properties/Resources.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/Properties/Resources.Designer.cs	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/Properties/Resources.Designer.cs	2012-05-04 17:59:22 UTC (rev 6612)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.239
+//     Runtime Version:2.0.50727.5420
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -19,7 +19,7 @@
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class Resources {
@@ -94,6 +94,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap icon_home {
+            get {
+                object obj = ResourceManager.GetObject("icon_home", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap icon_loading {
             get {
                 object obj = ResourceManager.GetObject("icon_loading", resourceCulture);
@@ -129,6 +136,13 @@
             }
         }
         
+        internal static System.Drawing.Bitmap icon_tasks {
+            get {
+                object obj = ResourceManager.GetObject("icon_tasks", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap icon_zoomin {
             get {
                 object obj = ResourceManager.GetObject("icon_zoomin", resourceCulture);

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/Properties/Resources.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/Properties/Resources.resx	2012-05-04 02:39:37 UTC (rev 6611)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/Properties/Resources.resx	2012-05-04 17:59:22 UTC (rev 6612)
@@ -175,4 +175,10 @@
   <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="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="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>
 </root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewerTest/Resources/icon_home.gif
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/MapViewerTest/Resources/icon_home.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/2.4/MgDev/Desktop/MapViewerTest/Resources/icon_tasks.gif
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/MapViewerTest/Resources/icon_tasks.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream



More information about the mapguide-commits mailing list