[mapguide-commits] r6641 - in branches/2.4/MgDev/Desktop: MapViewer MapViewer.Desktop MapViewerTest

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu May 10 11:29:11 EDT 2012


Author: jng
Date: 2012-05-10 08:29:11 -0700 (Thu, 10 May 2012)
New Revision: 6641

Added:
   branches/2.4/MgDev/Desktop/MapViewer/MgLayerSelectionHandler.cs
Modified:
   branches/2.4/MgDev/Desktop/MapViewer.Desktop/MgDesktopMapViewerProvider.cs
   branches/2.4/MgDev/Desktop/MapViewer/IMapViewer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj
   branches/2.4/MgDev/Desktop/MapViewer/MapViewerController.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgMapViewerProvider.cs
   branches/2.4/MgDev/Desktop/MapViewerTest/CompactViewer.cs
   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/Program.cs
Log:
More mg-desktop updates:
 - Remove the MgInvokeComponentButton and MgInvokeComponentMenuItem classes. Use control extender classes instead which provide identical functionality with less disruption (extenders work against normal toolstrip and menustrip items, instead of us needing to put the specialized items in the menustrip and toolstrip)
 - Modify the viewer initialization process and supporting classes to not require a map instance. Add a LoadMap() API to MgMapViewerProvider to allow loading a map later on. Also rename the ViewerInitialized event to MapLoaded
 - Allow MgComponent subclasses to indicate whether they can operate without a loaded map. The MgLoadPackageComponent is one such class.
 - Add a new MgLayerSelectionHandler component which allows the developer to declaratively specify what layers they want to listen for selections. This class raises the SelectionMade event when a selection is made on any of the specified layers.
 - More reworking of the MapViewerTest application in light of the above changes. The amount of code needed keeps getting smaller.

Modified: branches/2.4/MgDev/Desktop/MapViewer/IMapViewer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/IMapViewer.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/IMapViewer.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -257,7 +257,7 @@
         /// <summary>
         /// Raised when the viewer has been initialized
         /// </summary>
-        event EventHandler ViewerInitialized;
+        event EventHandler MapLoaded;
 
         /// <summary>
         /// Raised when the map cursor position has changed
@@ -284,6 +284,11 @@
         /// implemented
         /// </summary>
         bool ConvertTiledGroupsToNonTiled { get; set; }
+
+        /// <summary>
+        /// Gets whether this viewer has a map loaded into it
+        /// </summary>
+        bool HasLoadedMap { get; }
     }
 
     /// <summary>

Modified: branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj	2012-05-10 15:29:11 UTC (rev 6641)
@@ -151,6 +151,9 @@
       <DependentUpon>MgQueryResultsDialog.cs</DependentUpon>
     </Compile>
     <Compile Include="MgReadOnlyStream.cs" />
+    <Compile Include="MgLayerSelectionHandler.cs">
+      <SubType>Component</SubType>
+    </Compile>
     <Compile Include="MgTaskPane.cs">
       <SubType>UserControl</SubType>
     </Compile>

Modified: branches/2.4/MgDev/Desktop/MapViewer/MapViewerController.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MapViewerController.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/MapViewerController.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -61,7 +61,7 @@
             _viewer.MapScaleChanged += new EventHandler(OnMapScaleChanged);
             _viewer.SelectionChanged += new EventHandler(OnMapSelectionChanged);
             _viewer.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(OnMapPropertyChanged);
-            _viewer.ViewerInitialized += new EventHandler(OnViewerInitialized);
+            _viewer.MapLoaded += new EventHandler(OnViewerMapLoaded);
             _viewer.MouseMapPositionChanged += new EventHandler<MapPointEventArgs>(OnMouseMapPositionChanged);
             if (_legend != null)
             {
@@ -93,7 +93,7 @@
             _viewer.RefreshMap();
         }
 
-        void OnViewerInitialized(object sender, EventArgs e)
+        void OnViewerMapLoaded(object sender, EventArgs e)
         {
             if (_legend != null)
             {

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -74,9 +74,37 @@
         protected virtual void SubscribeViewerEvents(IMapViewer viewer)
         {
             if (viewer != null)
+            {
                 viewer.PropertyChanged += OnViewerPropertyChanged;
+                viewer.MapLoaded += OnViewerMapLoaded;
+
+                if (this.RequiresLoadedMap)
+                {
+                    foreach (var l in _listeners)
+                        l.SetEnabled(viewer.HasLoadedMap);
+                }
+            }
         }
 
+        /// <summary>
+        /// Unsubscribes events from the specified viewer instance
+        /// </summary>
+        /// <param name="viewer"></param>
+        protected virtual void UnsubscribeViewerEvents(IMapViewer viewer)
+        {
+            if (viewer != null)
+            {
+                viewer.PropertyChanged -= OnViewerPropertyChanged;
+                viewer.MapLoaded -= OnViewerMapLoaded;
+            }
+        }
+
+        protected virtual void OnViewerMapLoaded(object sender, EventArgs e)
+        {
+            foreach (var l in _listeners)
+                l.SetEnabled(this.Viewer.HasLoadedMap);
+        }
+
         protected virtual void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
             if (e.PropertyName == "IsBusy")
@@ -86,7 +114,7 @@
                 if (this.DisableWhenMapIsLoading)
                 {
                     foreach (var l in _listeners)
-                        l.SetDisabled(busy);
+                        l.SetEnabled(!busy);
                 }
             }
             else if (e.PropertyName == "DigitizingType")
@@ -95,26 +123,25 @@
                 if (this.DisableWhenDigitizing)
                 {
                     foreach (var l in _listeners)
-                        l.SetDisabled(bDigitizing);
+                        l.SetEnabled(!bDigitizing);
                 }
             }
         }
-
+        
         /// <summary>
-        /// Unsubscribes events from the specified viewer instance
+        /// Gets whether this component requires a loaded map. If true, and no map is loaded this
+        /// component will be disabled until a map is loaded. If false, this component stays enabled
+        /// and can operate without a loaded map
         /// </summary>
-        /// <param name="viewer"></param>
-        protected virtual void UnsubscribeViewerEvents(IMapViewer viewer)
-        {
-            if (viewer != null)
-                viewer.PropertyChanged -= OnViewerPropertyChanged;
-        }
+        protected virtual bool RequiresLoadedMap { get { return true; } }
 
         protected List<IButtonStateListener> _listeners = new List<IButtonStateListener>();
 
         public void AddListener(IButtonStateListener listener)
         {
             _listeners.Add(listener);
+            if (this.RequiresLoadedMap)
+                listener.SetEnabled(this.Viewer != null && this.Viewer.HasLoadedMap);
         }
 
         public void RemoveListener(IButtonStateListener listener)
@@ -135,7 +162,7 @@
 
     public interface IButtonStateListener
     {
-        void SetDisabled(bool busy);
+        void SetEnabled(bool enabled);
         void SetActive(bool outlined);
         void SetText(string text);
         void SetIcon(Image icon);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -13,6 +13,24 @@
             this.Icon = Properties.Resources.invoke_script;
         }
 
+        [Category("MapGuide Viewer")]
+        [Description("Indicates whether this component can be invoked without a loaded map")]
+        public bool CanInvokeWithoutLoadedMap
+        {
+            get;
+            set;
+        }
+
+        protected override bool RequiresLoadedMap
+        {
+            get
+            {
+                return !this.CanInvokeWithoutLoadedMap;
+            }
+        }
+
+        [Category("MapGuide Viewer")]
+        [Description("Raised when this component has been invoked")]
         public event EventHandler Invoked;
 
         public override void Invoke()

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -21,129 +21,203 @@
         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, IButtonStateListener, IInvokeViewerComponent
+    [ToolboxItem(false)]
+    public class ComponentInvokerBase<T> : Component where T : ToolStripItem
     {
-        private MgComponent _component;
+        protected Dictionary<T, MgComponent> _bindings;
 
-        /// <summary>
-        /// Gets or sets the target component to be invoked
-        /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("The target component to invoke when this component is clicked. All other UI properties are inherited from this compoent")]
-        public MgComponent TargetComponent
+        protected ComponentInvokerBase() { _bindings = new Dictionary<T, MgComponent>(); }
+
+        [Category("MapGuide Viewer")]
+        [DisplayName("Target Component")]
+        [Description("The target MapGuide component to invoke when this item is clicked")]
+        [DefaultValue(null)]
+        public MgComponent GetTargetComponent(T component)
         {
-            get { return _component; }
-            set 
+            if (_bindings.ContainsKey(component))
+                return _bindings[component];
+            else
+                return null;
+        }
+
+        void OnComponentClicked(object sender, EventArgs e)
+        {
+            var item = sender as T;
+            var binding = item.Tag as ComponentBinding;
+            if (binding != null)
+                binding.Component.Invoke();
+        }
+
+        protected virtual void SetupComponent(T component, MgComponent value)
+        {
+            component.Click += OnComponentClicked;
+        }
+
+        protected virtual void TeardownComponent(T component, MgComponent value)
+        {
+            component.Click -= OnComponentClicked;
+        }
+
+        public void SetTargetComponent(T component, MgComponent value)
+        {
+            if (value == null)
             {
-                if (_component != null)
-                    _component.RemoveListener(this);
-                _component = value;
-                if (_component != null)
+                //Un-bind existing component if it exists, otherwise nothing needs to be done
+                if (_bindings.ContainsKey(component))
                 {
-                    base.ToolTipText = _component.ToolTipText;
-                    base.Text = _component.Label;
-                    base.Image = _component.Icon;
-                    _component.AddListener(this);
+                    TeardownComponent(component, _bindings[component]);
+                    _bindings.Remove(component);
                 }
             }
+            else
+            {
+                if (_bindings.ContainsKey(component))
+                {
+                    TeardownComponent(component, _bindings[component]);
+                    _bindings[component] = value;
+                    SetupComponent(component, value);
+                }
+                else
+                {
+                    _bindings[component] = value;
+                    SetupComponent(component, value);
+                }
+            }
         }
+    }
 
-        protected override void OnClick(EventArgs e)
-        {
-            if (this.TargetComponent == null)
-                throw new InvalidOperationException("No target component assigned to this component");
+    abstract class ComponentBinding : IButtonStateListener 
+    {
+        public MgComponent Component { get; protected set; }
 
-            this.TargetComponent.Invoke();
+        protected ComponentBinding(MgComponent component) { this.Component = component; }
 
-            base.OnClick(e);
+        public abstract void SetEnabled(bool enabled);
+
+        public abstract void SetActive(bool outlined);
+
+        public abstract void SetText(string text);
+
+        public abstract void SetIcon(Image icon);
+    }
+
+    class ToolbarButtonComponentBinding : ComponentBinding
+    {
+        private ToolStripButton _item;
+
+        public ToolbarButtonComponentBinding(ToolStripButton item, MgComponent component) 
+            : base(component)
+        {
+            _item = item;
         }
 
-        public void SetDisabled(bool busy)
+        public override void SetEnabled(bool enabled)
         {
-            this.Enabled = !busy;
+            _item.Enabled = enabled;
         }
 
-        public void SetActive(bool outlined)
+        public override void SetActive(bool outlined)
         {
-            this.Checked = outlined;
+            _item.Checked = outlined;
         }
 
-        public void SetText(string text)
+        public override void SetText(string text)
         {
-            this.Text = text;
+            _item.Text = text;
         }
 
-        public void SetIcon(Image icon)
+        public override void SetIcon(Image icon)
         {
-            this.Image = icon;
+            _item.Image = icon;
         }
     }
 
-    /// <summary>
-    /// A specialized instance of <see cref="T:System.Windows.Forms.ToolStripMenuItem"/> that can
-    /// invoke the assigned <see cref="T:OSGeo.MapGuide.Viewer.MgComponent"/> instance.
-    /// </summary>
-    [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ContextMenuStrip | ToolStripItemDesignerAvailability.MenuStrip)]
-    public class MgInvokeComponentMenuItem : ToolStripMenuItem, IButtonStateListener, IInvokeViewerComponent
+    class MenuItemComponentBinding : ComponentBinding
     {
-        private MgComponent _component;
+        private ToolStripMenuItem _item;
 
-        /// <summary>
-        /// Gets or sets the target component to be invoked
-        /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("The target component to invoke when this component is clicked. All other UI properties are inherited from this compoent")]
-        public MgComponent TargetComponent
+        public MenuItemComponentBinding(ToolStripMenuItem item, MgComponent component) 
+            : base(component)
+        { 
+            _item = item;
+        }
+
+        public override void SetEnabled(bool enabled)
         {
-            get { return _component; }
-            set
-            {
-                if (_component != null)
-                    _component.RemoveListener(this);
-                _component = value;
-                if (_component != null)
-                {
-                    base.ToolTipText = _component.ToolTipText;
-                    base.Text = _component.Label;
-                    base.Image = _component.Icon;
-                    _component.AddListener(this);
-                }
-            }
+            _item.Enabled = enabled;
         }
 
-        protected override void OnClick(EventArgs e)
+        public override void SetActive(bool outlined)
         {
-            if (this.TargetComponent == null)
-                throw new InvalidOperationException("No target component assigned to this component");
+            _item.Checked = outlined;
+        }
 
-            this.TargetComponent.Invoke();
+        public override void SetText(string text)
+        {
+            _item.Text = text;
+        }
 
-            base.OnClick(e);
+        public override void SetIcon(Image icon)
+        {
+            _item.Image = icon;
         }
+    }
 
-        public void SetDisabled(bool busy)
+    [ToolboxItem(true)]
+    [ProvideProperty("TargetComponent", typeof(ToolStripMenuItem))]
+    public class MgMenuItemComponentInvoker : ComponentInvokerBase<ToolStripMenuItem>, IExtenderProvider
+    {
+        public bool CanExtend(object extendee)
         {
-            this.Enabled = !busy;
+            return typeof(ToolStripMenuItem) == extendee.GetType();
         }
 
-        public void SetActive(bool outlined)
+        protected override void SetupComponent(ToolStripMenuItem component, MgComponent value)
         {
-            this.Checked = outlined;
+            component.ToolTipText = value.ToolTipText;
+            component.Text = value.Label;
+            component.Image = value.Icon;
+            var listener = new MenuItemComponentBinding(component, value);
+            component.Tag = listener;
+            value.AddListener(listener);
+            base.SetupComponent(component, value);
         }
 
-        public void SetText(string text)
+        protected override void TeardownComponent(ToolStripMenuItem component, MgComponent value)
         {
-            this.Text = text;
+            var listener = component.Tag as MenuItemComponentBinding;
+            if (listener != null)
+                value.RemoveListener(listener);
+            base.TeardownComponent(component, value);
         }
+    }
 
-        public void SetIcon(Image icon)
+    [ToolboxItem(true)]
+    [ProvideProperty("TargetComponent", typeof(ToolStripButton))]
+    public class MgToolButtonComponentInvoker : ComponentInvokerBase<ToolStripButton>, IExtenderProvider
+    {
+        public bool CanExtend(object extendee)
         {
-            this.Image = icon;
+            return typeof(ToolStripButton) == extendee.GetType();
         }
+
+        protected override void SetupComponent(ToolStripButton component, MgComponent value)
+        {
+            component.ToolTipText = value.ToolTipText;
+            component.Text = value.Label;
+            component.Image = value.Icon;
+            var listener = new ToolbarButtonComponentBinding(component, value);
+            component.Tag = listener;
+            value.AddListener(listener);
+            base.SetupComponent(component, value);
+        }
+
+        protected override void TeardownComponent(ToolStripButton component, MgComponent value)
+        {
+            var listener = component.Tag as ToolbarButtonComponentBinding;
+            if (listener != null)
+                value.RemoveListener(listener);
+            base.TeardownComponent(component, value);
+        }
     }
 }

Added: branches/2.4/MgDev/Desktop/MapViewer/MgLayerSelectionHandler.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLayerSelectionHandler.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLayerSelectionHandler.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+
+namespace OSGeo.MapGuide.Viewer
+{
+    public delegate void MgLayerSelectionEventHandler(string layerName, MgFeatureReader selectedFeatures);
+
+    [DefaultEvent("SelectionMade")]
+    [ToolboxItem(true)]
+    public class MgLayerSelectionHandler : Component
+    {
+        [Category("MapGuide Viewer")]
+        [Description("The map layers that this component will listen for selections")]
+        public string[] Layers { get; set; }
+
+        private IMapViewer _viewer;
+
+        [Category("MapGuide Viewer")]
+        [Description("The map viewer instance")]
+        public IMapViewer Viewer
+        {
+            get { return _viewer; }
+            set 
+            {
+                if (_viewer != null)
+                    _viewer.SelectionChanged -= OnViewerSelectionChanged;
+                _viewer = value; 
+                if (_viewer != null)
+                    _viewer.SelectionChanged += OnViewerSelectionChanged;
+            }
+        }
+
+        void OnViewerSelectionChanged(object sender, EventArgs e)
+        {
+            if (this.Layers == null || this.Layers.Length == 0)
+                return;
+
+            var sel = _viewer.GetSelection();
+            var selLayers = sel.GetLayers();
+            if (selLayers != null)
+            {
+                var layers = new Dictionary<string, MgLayerBase>();
+                for (int i = 0; i < selLayers.Count; i++)
+                {
+                    var layerItem = selLayers.GetItem(i);
+                    layers.Add(layerItem.Name, layerItem);
+                }
+                foreach (var layerName in this.Layers)
+                {
+                    if (layers.ContainsKey(layerName))
+                    {
+                        var h = this.SelectionMade;
+                        if (h != null)
+                        {
+                            var reader = sel.GetSelectedFeatures(layers[layerName], layers[layerName].FeatureClassName, false);
+                            h(layerName, reader);
+                        }
+                    }
+                }
+            }
+        }
+
+        [Category("MapGuide Viewer")]
+        [Description("Raised when a selection on any of the specified layers has been made")]
+        public event MgLayerSelectionEventHandler SelectionMade;
+    }
+}

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -15,6 +15,14 @@
             this.Icon = Properties.Resources.load_package;
         }
 
+        protected override bool RequiresLoadedMap
+        {
+            get
+            {
+                return false;
+            }
+        }
+
         public override void Invoke()
         {
             using (var open = new OpenFileDialog())
@@ -30,7 +38,7 @@
                     var br = source.GetReader();
 
                     resSvc.ApplyResourcePackage(br);
-                    MessageBox.Show(Properties.Resources.TextLoadPackage);
+                    MessageBox.Show(Properties.Resources.TextPackageLoaded);
                 }
             }
         }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -35,8 +35,6 @@
 
         private Color _mapBgColor;
 
-        private bool firstRun = true;
-
         private double _orgX1;
         private double _orgX2;
         private double _orgY1;
@@ -965,8 +963,17 @@
             return new MgViewerRenderingOptions("PNG", (1 | 4), new MgColor(red, green, blue));
         }
 
+        public void LoadMap(MgMapBase map)
+        {
+            if (_provider == null)
+                throw new InvalidOperationException("Viewer not initialized via Init()");
+
+            _provider.LoadMap(map);
+        }
+
         /// <summary>
-        /// Initializes this viewer with the specified runtime map
+        /// Initializes this viewer with the specified viewer provider, if the provider contains a map
+        /// it will load that as well. Otherwise a call to <see cref="LoadMap"/> is required afterwards
         /// </summary>
         /// <param name="provider">The provider.</param>
         public void Init(MgMapViewerProvider provider)
@@ -981,21 +988,35 @@
                 _geomFact = new MgGeometryFactory();
 
             _provider = provider;
-            
-            _mapCs = _provider.GetMapCoordinateSystem();
-            _mapMeasure = _mapCs.GetMeasure();
 
-            if (_resSvc == null)
+            if (_resSvc != null) //Forward looking, dispose the existing one as it may be of a different implementation
             {
-                if (_resSvc == null)
-                    _resSvc = (MgResourceService)_provider.CreateService(MgServiceType.ResourceService);
+                _resSvc.Dispose();
+                _resSvc = null;
             }
-            
+            _resSvc = (MgResourceService)_provider.CreateService(MgServiceType.ResourceService);
+
             _overlayRenderOpts = CreateMapRenderingOptions(0, 0, 255);
             _selectionRenderOpts = CreateSelectionRenderingOptions(0, 0, 255);
 
+            if (_provider != null)
+            {
+                _provider.MapLoaded -= OnMapSetOnProvider;
+                _provider = null;
+            }
+
             _provider = provider;
-            _map = provider.GetMap();
+            _provider.MapLoaded += OnMapSetOnProvider;
+            var map = _provider.GetMap();
+            if (map != null)
+                OnMapSetOnProvider(this, EventArgs.Empty);
+        }
+
+        private void OnMapSetOnProvider(object sender, EventArgs e)
+        {
+            _map = _provider.GetMap();
+            _mapCs = _provider.GetMapCoordinateSystem();
+            _mapMeasure = _mapCs.GetMeasure();
             var bgColor = _map.GetBackgroundColor();
             if (bgColor.Length == 8 || bgColor.Length == 6)
             {
@@ -1032,15 +1053,12 @@
                 }
             }
 
-            _provider.RebuildLayerInfoCache();
-            _provider.CacheGeometryProperties(_map.GetLayers());
-
 #if VIEWER_DEBUG
             CreateDebugFeatureSource();
 #endif
             this.Focus();
 
-            var handler = this.ViewerInitialized;
+            var handler = this.MapLoaded;
             if (handler != null)
                 handler(this, EventArgs.Empty);
 
@@ -1083,7 +1101,7 @@
         /// </summary>
         [Category("MapGuide Viewer")]
         [Description("Raised when the viewer has been initialized with a runtime map")]
-        public event EventHandler ViewerInitialized;
+        public event EventHandler MapLoaded;
 
         private System.Timers.Timer _delayedResizeTimer;
 
@@ -2510,5 +2528,7 @@
             if (handler != null)
                 handler(this, new PropertyChangedEventArgs(name));
         }
+
+        public bool HasLoadedMap { get { return _map != null; } }
     }
 }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgMapViewerProvider.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgMapViewerProvider.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgMapViewerProvider.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -50,14 +50,41 @@
         /// </summary>
         protected MgResourceService _resSvc;
 
-        protected MgMapViewerProvider(MgMapBase map, MgResourceService resSvc)
+        protected MgMapViewerProvider(MgMapBase map)
         {
-            _map = map;
-            _resSvc = resSvc;
+            SubInit();
+            LoadMap(map);
         }
 
+        protected virtual void SubInit() { }
+
         public MgMapBase GetMap() { return _map; }
 
+        protected virtual void DisposeExistingMap()
+        {
+            if (_map != null)
+            {
+                _map.Dispose();
+                _map = null;
+            }
+        }
+
+        internal void LoadMap(MgMapBase map)
+        {
+            if (map == null)
+                return;
+
+            DisposeExistingMap();
+            _map = map;
+            RebuildLayerInfoCache();
+            CacheGeometryProperties(_map.GetLayers());
+            var h = this.MapLoaded;
+            if (h != null)
+                h(this, EventArgs.Empty);
+        }
+
+        internal event EventHandler MapLoaded;
+
         /// <summary>
         /// The coordinate system factory
         /// </summary>
@@ -133,11 +160,14 @@
         private Dictionary<string, XmlDocument> _cachedLayerDefinitions = new Dictionary<string, XmlDocument>();
         private Dictionary<string, string> _tooltipExpressions = new Dictionary<string, string>();
 
-        public void RebuildLayerInfoCache()
+        protected void RebuildLayerInfoCache()
         {
             _cachedLayerDefinitions.Clear();
             _tooltipExpressions.Clear();
             _propertyMappings.Clear();
+            if (_resSvc == null)
+                _resSvc = (MgResourceService)CreateService(MgServiceType.ResourceService);
+
             //Pre-cache layer definitions and tooltip properties
             var layers = _map.GetLayers();
             MgStringCollection resIds = new MgStringCollection();

Modified: branches/2.4/MgDev/Desktop/MapViewer.Desktop/MgDesktopMapViewerProvider.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer.Desktop/MgDesktopMapViewerProvider.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewer.Desktop/MgDesktopMapViewerProvider.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -11,16 +11,17 @@
         private MgdMap _implMap;
         private MgRenderingService _renderSvc;
         private MgServiceFactory _fact;
-        private MgResourceService _resSvc;
 
-        public MgDesktopMapViewerProvider(MgdMap map, MgdResourceService resSvc, MgRenderingService renderingService) : base(map, resSvc) 
+        public MgDesktopMapViewerProvider(MgdMap map) : base(map) 
         {
             _implMap = map;
+        }
+
+        protected override void SubInit()
+        {
             _fact = new MgServiceFactory();
-            _renderSvc = renderingService;
-            _resSvc = (MgResourceService)_fact.CreateService(MgServiceType.ResourceService);
+            _renderSvc = (MgRenderingService)_fact.CreateService(MgServiceType.RenderingService);
         }
-
         
         private MgRenderingOptions _lastRenderOpts;
 

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/CompactViewer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/CompactViewer.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/CompactViewer.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -22,12 +22,7 @@
         public void LoadMap(MgResourceIdentifier resId)
         {
             var map = new MgdMap(resId);
-            var fact = new MgServiceFactory();
-            viewer.Init(
-                new MgDesktopMapViewerProvider(
-                    map,
-                    (MgdResourceService)fact.CreateService(MgServiceType.ResourceService),
-                    (MgRenderingService)fact.CreateService(MgServiceType.RenderingService)));
+            viewer.Init(new MgDesktopMapViewerProvider(map));
             //viewer.RefreshMap();
         }
     }

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.Designer.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.Designer.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -32,15 +32,13 @@
             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.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
-            this.quitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
             this.appContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
-            this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
-            this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
-            this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
             this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();
-            this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
             this.appContainer = new System.Windows.Forms.SplitContainer();
             this.toolStripContainer = new System.Windows.Forms.ToolStripContainer();
             this.infoPaneViewerContainer = new System.Windows.Forms.SplitContainer();
@@ -55,10 +53,12 @@
             this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
             this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
             this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
-            this.toolStripSplitButton1 = new System.Windows.Forms.ToolStripSplitButton();
+            this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton();
+            this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
+            this.toolStripDropDownButton2 = new System.Windows.Forms.ToolStripDropDownButton();
             this.lblLoading = new System.Windows.Forms.ToolStripLabel();
-            this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
-            this.toolStripSplitButton2 = new System.Windows.Forms.ToolStripSplitButton();
             this.toolStrip1 = new System.Windows.Forms.ToolStrip();
             this.btnInitialTask = new System.Windows.Forms.ToolStripButton();
             this.taskMenu = new System.Windows.Forms.ToolStripSplitButton();
@@ -71,64 +71,70 @@
             this.legendCtrl = new OSGeo.MapGuide.Viewer.MgLegend();
             this.propertiesCtrl = new OSGeo.MapGuide.Viewer.MgPropertyPane();
             this.mapViewer = new OSGeo.MapGuide.Viewer.MgMapViewer();
-            this.mgInvokeComponentButton1 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
+            this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton4 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton5 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton6 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton7 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton8 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton9 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton10 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton11 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton12 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripButton13 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem25 = new System.Windows.Forms.ToolStripMenuItem();
+            this.taskPane = new OSGeo.MapGuide.Viewer.MgTaskPane();
+            this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem16 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem17 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem18 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem19 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem20 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem21 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem22 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem23 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem24 = new System.Windows.Forms.ToolStripMenuItem();
+            this.mgPrintComponent1 = new OSGeo.MapGuide.Viewer.MgPrintComponent();
             this.mgCopyMapComponent1 = new OSGeo.MapGuide.Viewer.MgCopyMapComponent();
-            this.mgInvokeComponentButton2 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
             this.mgZoomInComponent1 = new OSGeo.MapGuide.Viewer.MgZoomInComponent();
-            this.mgInvokeComponentButton3 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
             this.mgZoomOutComponent1 = new OSGeo.MapGuide.Viewer.MgZoomOutComponent();
-            this.mgInvokeComponentButton4 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
             this.mgInitialViewComponent1 = new OSGeo.MapGuide.Viewer.MgInitialViewComponent();
-            this.mgInvokeComponentButton5 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
             this.mgSelectComponent1 = new OSGeo.MapGuide.Viewer.MgSelectComponent();
-            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.mgPanComponent1 = new OSGeo.MapGuide.Viewer.MgPanComponent();
-            this.mgInvokeComponentButton9 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
             this.mgClearSelectionComponent1 = new OSGeo.MapGuide.Viewer.MgClearSelectionComponent();
-            this.mgInvokeComponentButton10 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
             this.mgRefreshMapComponent1 = new OSGeo.MapGuide.Viewer.MgRefreshMapComponent();
-            this.mgInvokeComponentButton11 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
             this.mgTooltipToggleComponent1 = new OSGeo.MapGuide.Viewer.MgTooltipToggleComponent();
-            this.mgInvokeComponentMenuItem20 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
             this.mgBufferComponent1 = new OSGeo.MapGuide.Viewer.MgBufferComponent();
-            this.taskPane = new OSGeo.MapGuide.Viewer.MgTaskPane();
-            this.mgInvokeComponentMenuItem21 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
             this.mgMeasureComponent1 = new OSGeo.MapGuide.Viewer.MgMeasureComponent();
-            this.mgInvokeComponentMenuItem22 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
             this.mgQueryComponent1 = new OSGeo.MapGuide.Viewer.MgQueryComponent();
-            this.mgInvokeComponentButton15 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
             this.mgViewerOptionsComponent1 = new OSGeo.MapGuide.Viewer.MgViewerOptionsComponent();
-            this.mgInvokeComponentMenuItem23 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
             this.plotToDwfComponent = new OSGeo.MapGuide.Viewer.MgGenericInvokeComponent();
-            this.mgInvokeComponentMenuItem1 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem2 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem3 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem14 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
             this.mgLoadPackageComponent1 = new OSGeo.MapGuide.Viewer.MgLoadPackageComponent();
-            this.mgInvokeComponentMenuItem15 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem16 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem17 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem18 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem4 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem6 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem7 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem24 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
             this.mgZoomToSelectionComponent1 = new OSGeo.MapGuide.Viewer.MgZoomToSelectionComponent();
-            this.mgInvokeComponentMenuItem8 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem5 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem9 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem10 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem11 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem12 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem13 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgInvokeComponentMenuItem19 = new OSGeo.MapGuide.Viewer.MgInvokeComponentMenuItem();
-            this.mgPrintComponent1 = new OSGeo.MapGuide.Viewer.MgPrintComponent();
-            this.mgInvokeComponentButton12 = new OSGeo.MapGuide.Viewer.MgInvokeComponentButton();
-            this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
+            this.mgMenuItemComponentInvoker1 = new OSGeo.MapGuide.Viewer.MgMenuItemComponentInvoker();
+            this.loadCompactViewerComponent = new OSGeo.MapGuide.Viewer.MgGenericInvokeComponent();
+            this.mgToolButtonComponentInvoker1 = new OSGeo.MapGuide.Viewer.MgToolButtonComponentInvoker();
+            this.mgLayerSelectionHandler1 = new OSGeo.MapGuide.Viewer.MgLayerSelectionHandler();
+            this.profileComponent = new OSGeo.MapGuide.Viewer.MgGenericInvokeComponent();
+            this.toolStripMenuItem26 = new System.Windows.Forms.ToolStripMenuItem();
             this.appMenu.SuspendLayout();
             this.appContextMenu.SuspendLayout();
             this.appContainer.Panel1.SuspendLayout();
@@ -150,11 +156,11 @@
             this.appToolbar.SuspendLayout();
             this.toolStrip1.SuspendLayout();
             this.statusBar.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.mgPrintComponent1)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.mgBufferComponent1)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.mgMeasureComponent1)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.mgQueryComponent1)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.mgViewerOptionsComponent1)).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)(this.mgPrintComponent1)).BeginInit();
             this.SuspendLayout();
             // 
             // appMenu
@@ -171,83 +177,69 @@
             // fileToolStripMenuItem
             // 
             this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.mgInvokeComponentMenuItem14,
-            this.toolStripSeparator10,
-            this.quitToolStripMenuItem});
+            this.toolStripMenuItem1});
             this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
             this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
             this.fileToolStripMenuItem.Text = "File";
             // 
-            // 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.toolStripMenuItem2,
+            this.toolStripMenuItem3,
+            this.toolStripMenuItem4,
+            this.toolStripSeparator9,
+            this.toolStripMenuItem12});
             this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
             this.toolsToolStripMenuItem.Size = new System.Drawing.Size(48, 20);
             this.toolsToolStripMenuItem.Text = "Tools";
             // 
+            // toolStripSeparator9
+            // 
+            this.toolStripSeparator9.Name = "toolStripSeparator9";
+            this.toolStripSeparator9.Size = new System.Drawing.Size(151, 6);
+            // 
             // 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.toolStripMenuItem13,
+            this.toolStripSeparator10,
+            this.toolStripMenuItem14,
+            this.toolStripMenuItem15,
+            this.toolStripMenuItem16,
+            this.toolStripMenuItem17,
+            this.toolStripSeparator11,
+            this.toolStripMenuItem18,
+            this.toolStripMenuItem19,
+            this.toolStripMenuItem20,
             this.toolStripSeparator12,
-            this.mgInvokeComponentMenuItem19});
+            this.toolStripMenuItem21,
+            this.toolStripMenuItem22,
+            this.toolStripMenuItem23,
+            this.toolStripSeparator13,
+            this.toolStripMenuItem24});
             this.appContextMenu.Name = "appContextMenu";
             this.appContextMenu.Size = new System.Drawing.Size(172, 292);
             // 
-            // toolStripSeparator6
+            // toolStripSeparator10
             // 
-            this.toolStripSeparator6.Name = "toolStripSeparator6";
-            this.toolStripSeparator6.Size = new System.Drawing.Size(168, 6);
+            this.toolStripSeparator10.Name = "toolStripSeparator10";
+            this.toolStripSeparator10.Size = new System.Drawing.Size(168, 6);
             // 
-            // toolStripSeparator8
+            // toolStripSeparator11
             // 
-            this.toolStripSeparator8.Name = "toolStripSeparator8";
-            this.toolStripSeparator8.Size = new System.Drawing.Size(168, 6);
+            this.toolStripSeparator11.Name = "toolStripSeparator11";
+            this.toolStripSeparator11.Size = new System.Drawing.Size(168, 6);
             // 
-            // toolStripSeparator7
-            // 
-            this.toolStripSeparator7.Name = "toolStripSeparator7";
-            this.toolStripSeparator7.Size = new System.Drawing.Size(168, 6);
-            // 
             // toolStripSeparator12
             // 
             this.toolStripSeparator12.Name = "toolStripSeparator12";
             this.toolStripSeparator12.Size = new System.Drawing.Size(168, 6);
             // 
-            // toolStripSeparator11
+            // toolStripSeparator13
             // 
-            this.toolStripSeparator11.Name = "toolStripSeparator11";
-            this.toolStripSeparator11.Size = new System.Drawing.Size(151, 6);
+            this.toolStripSeparator13.Name = "toolStripSeparator13";
+            this.toolStripSeparator13.Size = new System.Drawing.Size(168, 6);
             // 
             // appContainer
             // 
@@ -368,29 +360,30 @@
             // 
             this.appToolbar.Dock = System.Windows.Forms.DockStyle.None;
             this.appToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.mgInvokeComponentButton12,
-            this.toolStripSeparator13,
-            this.mgInvokeComponentButton1,
+            this.toolStripButton1,
             this.toolStripSeparator1,
-            this.mgInvokeComponentButton2,
-            this.mgInvokeComponentButton3,
-            this.mgInvokeComponentButton4,
+            this.toolStripButton2,
             this.toolStripSeparator2,
-            this.mgInvokeComponentButton5,
-            this.mgInvokeComponentButton6,
-            this.mgInvokeComponentButton7,
-            this.mgInvokeComponentButton8,
+            this.toolStripButton3,
+            this.toolStripButton4,
+            this.toolStripButton5,
             this.toolStripSeparator3,
-            this.mgInvokeComponentButton9,
-            this.mgInvokeComponentButton10,
+            this.toolStripButton6,
+            this.toolStripButton7,
+            this.toolStripButton8,
+            this.toolStripButton9,
             this.toolStripSeparator4,
-            this.mgInvokeComponentButton11,
+            this.toolStripButton10,
+            this.toolStripButton11,
             this.toolStripSeparator5,
-            this.toolStripSplitButton1,
-            this.lblLoading,
-            this.toolStripSeparator9,
-            this.mgInvokeComponentButton15,
-            this.toolStripSplitButton2});
+            this.toolStripButton12,
+            this.toolStripSeparator6,
+            this.toolStripDropDownButton1,
+            this.toolStripSeparator7,
+            this.toolStripButton13,
+            this.toolStripSeparator8,
+            this.toolStripDropDownButton2,
+            this.lblLoading});
             this.appToolbar.Location = new System.Drawing.Point(0, 0);
             this.appToolbar.Name = "appToolbar";
             this.appToolbar.Size = new System.Drawing.Size(748, 25);
@@ -422,18 +415,45 @@
             this.toolStripSeparator5.Name = "toolStripSeparator5";
             this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25);
             // 
-            // toolStripSplitButton1
+            // toolStripSeparator6
             // 
-            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";
+            this.toolStripSeparator6.Name = "toolStripSeparator6";
+            this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25);
             // 
+            // toolStripDropDownButton1
+            // 
+            this.toolStripDropDownButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem9,
+            this.toolStripMenuItem10,
+            this.toolStripMenuItem11});
+            this.toolStripDropDownButton1.Image = global::MapViewerTest.Properties.Resources.icon_tasks;
+            this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripDropDownButton1.Name = "toolStripDropDownButton1";
+            this.toolStripDropDownButton1.Size = new System.Drawing.Size(65, 22);
+            this.toolStripDropDownButton1.Text = "Tools";
+            // 
+            // toolStripSeparator7
+            // 
+            this.toolStripSeparator7.Name = "toolStripSeparator7";
+            this.toolStripSeparator7.Size = new System.Drawing.Size(6, 25);
+            // 
+            // toolStripSeparator8
+            // 
+            this.toolStripSeparator8.Name = "toolStripSeparator8";
+            this.toolStripSeparator8.Size = new System.Drawing.Size(6, 25);
+            // 
+            // toolStripDropDownButton2
+            // 
+            this.toolStripDropDownButton2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem8,
+            this.toolStripMenuItem25,
+            this.toolStripMenuItem26});
+            this.toolStripDropDownButton2.Image = global::MapViewerTest.Properties.Resources.icon_tasks;
+            this.toolStripDropDownButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripDropDownButton2.Name = "toolStripDropDownButton2";
+            this.toolStripDropDownButton2.Size = new System.Drawing.Size(78, 22);
+            this.toolStripDropDownButton2.Text = "Custom";
+            // 
             // lblLoading
             // 
             this.lblLoading.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
@@ -443,21 +463,6 @@
             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);
-            // 
-            // 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";
-            // 
             // toolStrip1
             // 
             this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -482,9 +487,9 @@
             // 
             this.taskMenu.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
             this.taskMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.mgInvokeComponentMenuItem1,
-            this.mgInvokeComponentMenuItem2,
-            this.mgInvokeComponentMenuItem3});
+            this.toolStripMenuItem5,
+            this.toolStripMenuItem6,
+            this.toolStripMenuItem7});
             this.taskMenu.Image = global::MapViewerTest.Properties.Resources.icon_tasks;
             this.taskMenu.ImageTransparentColor = System.Drawing.Color.Magenta;
             this.taskMenu.Name = "taskMenu";
@@ -569,17 +574,414 @@
             this.mapViewer.ZoomOutFactor = 2;
             this.mapViewer.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(this.OnViewerPropertyChanged);
             // 
-            // mgInvokeComponentButton1
+            // toolStripButton1
             // 
-            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";
+            this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton1.Enabled = false;
+            this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
+            this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton1.Name = "toolStripButton1";
+            this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton1, this.mgPrintComponent1);
+            this.toolStripButton1.Text = "Print";
+            this.toolStripButton1.ToolTipText = "Print";
             // 
+            // toolStripButton2
+            // 
+            this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton2.Enabled = false;
+            this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
+            this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton2.Name = "toolStripButton2";
+            this.toolStripButton2.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton2, this.mgCopyMapComponent1);
+            this.toolStripButton2.Text = "Copy map to clipboard";
+            this.toolStripButton2.ToolTipText = "Copy map to clipboard";
+            // 
+            // toolStripButton3
+            // 
+            this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton3.Enabled = false;
+            this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image")));
+            this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton3.Name = "toolStripButton3";
+            this.toolStripButton3.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton3, this.mgZoomInComponent1);
+            this.toolStripButton3.Text = "Zoom In";
+            this.toolStripButton3.ToolTipText = "Zoom In";
+            // 
+            // toolStripButton4
+            // 
+            this.toolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton4.Enabled = false;
+            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(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton4, this.mgZoomOutComponent1);
+            this.toolStripButton4.Text = "Zoom Out";
+            this.toolStripButton4.ToolTipText = "Zoom Out";
+            // 
+            // toolStripButton5
+            // 
+            this.toolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton5.Enabled = false;
+            this.toolStripButton5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton5.Image")));
+            this.toolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton5.Name = "toolStripButton5";
+            this.toolStripButton5.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton5, this.mgInitialViewComponent1);
+            this.toolStripButton5.Text = "Zoom Extents";
+            this.toolStripButton5.ToolTipText = "Zoom Extents";
+            // 
+            // toolStripButton6
+            // 
+            this.toolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton6.Enabled = false;
+            this.toolStripButton6.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton6.Image")));
+            this.toolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton6.Name = "toolStripButton6";
+            this.toolStripButton6.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton6, this.mgSelectComponent1);
+            this.toolStripButton6.Text = "Select";
+            this.toolStripButton6.ToolTipText = "Select";
+            // 
+            // toolStripButton7
+            // 
+            this.toolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton7.Enabled = false;
+            this.toolStripButton7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton7.Image")));
+            this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton7.Name = "toolStripButton7";
+            this.toolStripButton7.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton7, this.mgCircleSelectComponent1);
+            this.toolStripButton7.Text = "Select Radius";
+            this.toolStripButton7.ToolTipText = "Select Radius";
+            // 
+            // toolStripButton8
+            // 
+            this.toolStripButton8.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton8.Enabled = false;
+            this.toolStripButton8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton8.Image")));
+            this.toolStripButton8.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton8.Name = "toolStripButton8";
+            this.toolStripButton8.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton8, this.mgPolygonSelectComponent1);
+            this.toolStripButton8.Text = "Select Polygon";
+            this.toolStripButton8.ToolTipText = "Select Polygon";
+            // 
+            // toolStripButton9
+            // 
+            this.toolStripButton9.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton9.Enabled = false;
+            this.toolStripButton9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton9.Image")));
+            this.toolStripButton9.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton9.Name = "toolStripButton9";
+            this.toolStripButton9.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton9, this.mgPanComponent1);
+            this.toolStripButton9.Text = "Pan";
+            this.toolStripButton9.ToolTipText = "Pan";
+            // 
+            // toolStripButton10
+            // 
+            this.toolStripButton10.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton10.Enabled = false;
+            this.toolStripButton10.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton10.Image")));
+            this.toolStripButton10.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton10.Name = "toolStripButton10";
+            this.toolStripButton10.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton10, this.mgClearSelectionComponent1);
+            this.toolStripButton10.Text = "Clear Selection";
+            this.toolStripButton10.ToolTipText = "Clear Selection";
+            // 
+            // toolStripButton11
+            // 
+            this.toolStripButton11.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+            this.toolStripButton11.Enabled = false;
+            this.toolStripButton11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton11.Image")));
+            this.toolStripButton11.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton11.Name = "toolStripButton11";
+            this.toolStripButton11.Size = new System.Drawing.Size(23, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton11, this.mgRefreshMapComponent1);
+            this.toolStripButton11.Text = "Refresh Map";
+            this.toolStripButton11.ToolTipText = "Refresh Map";
+            // 
+            // toolStripButton12
+            // 
+            this.toolStripButton12.Enabled = false;
+            this.toolStripButton12.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton12.Image")));
+            this.toolStripButton12.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton12.Name = "toolStripButton12";
+            this.toolStripButton12.Size = new System.Drawing.Size(108, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton12, this.mgTooltipToggleComponent1);
+            this.toolStripButton12.Text = "Enable Tooltips";
+            this.toolStripButton12.ToolTipText = "Enable Tooltips";
+            // 
+            // toolStripMenuItem9
+            // 
+            this.toolStripMenuItem9.Enabled = false;
+            this.toolStripMenuItem9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem9.Image")));
+            this.toolStripMenuItem9.Name = "toolStripMenuItem9";
+            this.toolStripMenuItem9.Size = new System.Drawing.Size(119, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem9, this.mgBufferComponent1);
+            this.toolStripMenuItem9.Text = "Buffer";
+            // 
+            // toolStripMenuItem10
+            // 
+            this.toolStripMenuItem10.Enabled = false;
+            this.toolStripMenuItem10.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem10.Image")));
+            this.toolStripMenuItem10.Name = "toolStripMenuItem10";
+            this.toolStripMenuItem10.Size = new System.Drawing.Size(119, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem10, this.mgMeasureComponent1);
+            this.toolStripMenuItem10.Text = "Measure";
+            // 
+            // toolStripMenuItem11
+            // 
+            this.toolStripMenuItem11.Enabled = false;
+            this.toolStripMenuItem11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem11.Image")));
+            this.toolStripMenuItem11.Name = "toolStripMenuItem11";
+            this.toolStripMenuItem11.Size = new System.Drawing.Size(119, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem11, this.mgQueryComponent1);
+            this.toolStripMenuItem11.Text = "Query";
+            // 
+            // toolStripButton13
+            // 
+            this.toolStripButton13.Enabled = false;
+            this.toolStripButton13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton13.Image")));
+            this.toolStripButton13.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton13.Name = "toolStripButton13";
+            this.toolStripButton13.Size = new System.Drawing.Size(107, 22);
+            this.mgToolButtonComponentInvoker1.SetTargetComponent(this.toolStripButton13, this.mgViewerOptionsComponent1);
+            this.toolStripButton13.Text = "Viewer Options";
+            this.toolStripButton13.ToolTipText = "Viewer Options";
+            // 
+            // toolStripMenuItem8
+            // 
+            this.toolStripMenuItem8.Enabled = false;
+            this.toolStripMenuItem8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem8.Image")));
+            this.toolStripMenuItem8.Name = "toolStripMenuItem8";
+            this.toolStripMenuItem8.Size = new System.Drawing.Size(190, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem8, this.plotToDwfComponent);
+            this.toolStripMenuItem8.Text = "Plot to DWF";
+            this.toolStripMenuItem8.ToolTipText = "Plot to DWF";
+            // 
+            // toolStripMenuItem25
+            // 
+            this.toolStripMenuItem25.Enabled = false;
+            this.toolStripMenuItem25.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem25.Image")));
+            this.toolStripMenuItem25.Name = "toolStripMenuItem25";
+            this.toolStripMenuItem25.Size = new System.Drawing.Size(190, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem25, this.loadCompactViewerComponent);
+            this.toolStripMenuItem25.Text = "Load Compact Viewer";
+            this.toolStripMenuItem25.ToolTipText = "Load Compact Viewer";
+            // 
+            // 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;
+            // 
+            // toolStripMenuItem5
+            // 
+            this.toolStripMenuItem5.Enabled = false;
+            this.toolStripMenuItem5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem5.Image")));
+            this.toolStripMenuItem5.Name = "toolStripMenuItem5";
+            this.toolStripMenuItem5.Size = new System.Drawing.Size(119, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem5, this.mgBufferComponent1);
+            this.toolStripMenuItem5.Text = "Buffer";
+            // 
+            // toolStripMenuItem6
+            // 
+            this.toolStripMenuItem6.Enabled = false;
+            this.toolStripMenuItem6.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem6.Image")));
+            this.toolStripMenuItem6.Name = "toolStripMenuItem6";
+            this.toolStripMenuItem6.Size = new System.Drawing.Size(119, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem6, this.mgMeasureComponent1);
+            this.toolStripMenuItem6.Text = "Measure";
+            // 
+            // toolStripMenuItem7
+            // 
+            this.toolStripMenuItem7.Enabled = false;
+            this.toolStripMenuItem7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem7.Image")));
+            this.toolStripMenuItem7.Name = "toolStripMenuItem7";
+            this.toolStripMenuItem7.Size = new System.Drawing.Size(119, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem7, this.mgQueryComponent1);
+            this.toolStripMenuItem7.Text = "Query";
+            // 
+            // toolStripMenuItem1
+            // 
+            this.toolStripMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem1.Image")));
+            this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+            this.toolStripMenuItem1.Size = new System.Drawing.Size(147, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem1, this.mgLoadPackageComponent1);
+            this.toolStripMenuItem1.Text = "Load Package";
+            this.toolStripMenuItem1.ToolTipText = "Load Package";
+            // 
+            // toolStripMenuItem2
+            // 
+            this.toolStripMenuItem2.Enabled = false;
+            this.toolStripMenuItem2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem2.Image")));
+            this.toolStripMenuItem2.Name = "toolStripMenuItem2";
+            this.toolStripMenuItem2.Size = new System.Drawing.Size(154, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem2, this.mgBufferComponent1);
+            this.toolStripMenuItem2.Text = "Buffer";
+            // 
+            // toolStripMenuItem3
+            // 
+            this.toolStripMenuItem3.Enabled = false;
+            this.toolStripMenuItem3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem3.Image")));
+            this.toolStripMenuItem3.Name = "toolStripMenuItem3";
+            this.toolStripMenuItem3.Size = new System.Drawing.Size(154, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem3, this.mgMeasureComponent1);
+            this.toolStripMenuItem3.Text = "Measure";
+            // 
+            // toolStripMenuItem4
+            // 
+            this.toolStripMenuItem4.Enabled = false;
+            this.toolStripMenuItem4.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem4.Image")));
+            this.toolStripMenuItem4.Name = "toolStripMenuItem4";
+            this.toolStripMenuItem4.Size = new System.Drawing.Size(154, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem4, this.mgQueryComponent1);
+            this.toolStripMenuItem4.Text = "Query";
+            // 
+            // toolStripMenuItem12
+            // 
+            this.toolStripMenuItem12.Enabled = false;
+            this.toolStripMenuItem12.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem12.Image")));
+            this.toolStripMenuItem12.Name = "toolStripMenuItem12";
+            this.toolStripMenuItem12.Size = new System.Drawing.Size(154, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem12, this.mgViewerOptionsComponent1);
+            this.toolStripMenuItem12.Text = "Viewer Options";
+            this.toolStripMenuItem12.ToolTipText = "Viewer Options";
+            // 
+            // toolStripMenuItem13
+            // 
+            this.toolStripMenuItem13.Enabled = false;
+            this.toolStripMenuItem13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem13.Image")));
+            this.toolStripMenuItem13.Name = "toolStripMenuItem13";
+            this.toolStripMenuItem13.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem13, this.mgRefreshMapComponent1);
+            this.toolStripMenuItem13.Text = "Refresh Map";
+            this.toolStripMenuItem13.ToolTipText = "Refresh Map";
+            // 
+            // toolStripMenuItem14
+            // 
+            this.toolStripMenuItem14.Enabled = false;
+            this.toolStripMenuItem14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem14.Image")));
+            this.toolStripMenuItem14.Name = "toolStripMenuItem14";
+            this.toolStripMenuItem14.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem14, this.mgZoomInComponent1);
+            this.toolStripMenuItem14.Text = "Zoom In";
+            this.toolStripMenuItem14.ToolTipText = "Zoom In";
+            // 
+            // toolStripMenuItem15
+            // 
+            this.toolStripMenuItem15.Enabled = false;
+            this.toolStripMenuItem15.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem15.Image")));
+            this.toolStripMenuItem15.Name = "toolStripMenuItem15";
+            this.toolStripMenuItem15.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem15, this.mgZoomOutComponent1);
+            this.toolStripMenuItem15.Text = "Zoom Out";
+            this.toolStripMenuItem15.ToolTipText = "Zoom Out";
+            // 
+            // toolStripMenuItem16
+            // 
+            this.toolStripMenuItem16.Enabled = false;
+            this.toolStripMenuItem16.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem16.Image")));
+            this.toolStripMenuItem16.Name = "toolStripMenuItem16";
+            this.toolStripMenuItem16.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem16, this.mgZoomToSelectionComponent1);
+            this.toolStripMenuItem16.Text = "Zoom to Selection";
+            this.toolStripMenuItem16.ToolTipText = "Zoom to Selection";
+            // 
+            // toolStripMenuItem17
+            // 
+            this.toolStripMenuItem17.Enabled = false;
+            this.toolStripMenuItem17.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem17.Image")));
+            this.toolStripMenuItem17.Name = "toolStripMenuItem17";
+            this.toolStripMenuItem17.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem17, this.mgInitialViewComponent1);
+            this.toolStripMenuItem17.Text = "Zoom Extents";
+            this.toolStripMenuItem17.ToolTipText = "Zoom Extents";
+            // 
+            // toolStripMenuItem18
+            // 
+            this.toolStripMenuItem18.Enabled = false;
+            this.toolStripMenuItem18.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem18.Image")));
+            this.toolStripMenuItem18.Name = "toolStripMenuItem18";
+            this.toolStripMenuItem18.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem18, this.mgPanComponent1);
+            this.toolStripMenuItem18.Text = "Pan";
+            this.toolStripMenuItem18.ToolTipText = "Pan";
+            // 
+            // toolStripMenuItem19
+            // 
+            this.toolStripMenuItem19.Enabled = false;
+            this.toolStripMenuItem19.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem19.Image")));
+            this.toolStripMenuItem19.Name = "toolStripMenuItem19";
+            this.toolStripMenuItem19.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem19, this.mgSelectComponent1);
+            this.toolStripMenuItem19.Text = "Select";
+            this.toolStripMenuItem19.ToolTipText = "Select";
+            // 
+            // toolStripMenuItem20
+            // 
+            this.toolStripMenuItem20.Enabled = false;
+            this.toolStripMenuItem20.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem20.Image")));
+            this.toolStripMenuItem20.Name = "toolStripMenuItem20";
+            this.toolStripMenuItem20.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem20, this.mgClearSelectionComponent1);
+            this.toolStripMenuItem20.Text = "Clear Selection";
+            this.toolStripMenuItem20.ToolTipText = "Clear Selection";
+            // 
+            // toolStripMenuItem21
+            // 
+            this.toolStripMenuItem21.Enabled = false;
+            this.toolStripMenuItem21.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem21.Image")));
+            this.toolStripMenuItem21.Name = "toolStripMenuItem21";
+            this.toolStripMenuItem21.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem21, this.mgBufferComponent1);
+            this.toolStripMenuItem21.Text = "Buffer";
+            // 
+            // toolStripMenuItem22
+            // 
+            this.toolStripMenuItem22.Enabled = false;
+            this.toolStripMenuItem22.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem22.Image")));
+            this.toolStripMenuItem22.Name = "toolStripMenuItem22";
+            this.toolStripMenuItem22.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem22, this.mgMeasureComponent1);
+            this.toolStripMenuItem22.Text = "Measure";
+            // 
+            // toolStripMenuItem23
+            // 
+            this.toolStripMenuItem23.Enabled = false;
+            this.toolStripMenuItem23.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem23.Image")));
+            this.toolStripMenuItem23.Name = "toolStripMenuItem23";
+            this.toolStripMenuItem23.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem23, this.mgQueryComponent1);
+            this.toolStripMenuItem23.Text = "Query";
+            // 
+            // toolStripMenuItem24
+            // 
+            this.toolStripMenuItem24.Enabled = false;
+            this.toolStripMenuItem24.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem24.Image")));
+            this.toolStripMenuItem24.Name = "toolStripMenuItem24";
+            this.toolStripMenuItem24.Size = new System.Drawing.Size(171, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem24, this.mgViewerOptionsComponent1);
+            this.toolStripMenuItem24.Text = "Viewer Options";
+            this.toolStripMenuItem24.ToolTipText = "Viewer Options";
+            // 
+            // mgPrintComponent1
+            // 
+            this.mgPrintComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgPrintComponent1.Icon")));
+            this.mgPrintComponent1.Label = "Print";
+            this.mgPrintComponent1.Target = OSGeo.MapGuide.Viewer.MgViewerTarget.TaskPane;
+            this.mgPrintComponent1.TaskPane = this.taskPane;
+            this.mgPrintComponent1.ToolTipText = "Print";
+            this.mgPrintComponent1.Viewer = this.mapViewer;
+            // 
             // mgCopyMapComponent1
             // 
             this.mgCopyMapComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgCopyMapComponent1.Icon")));
@@ -587,17 +989,6 @@
             this.mgCopyMapComponent1.ToolTipText = "Copy map to clipboard";
             this.mgCopyMapComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
             // mgZoomInComponent1
             // 
             this.mgZoomInComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgZoomInComponent1.Icon")));
@@ -605,17 +996,6 @@
             this.mgZoomInComponent1.ToolTipText = "Zoom In";
             this.mgZoomInComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
             // mgZoomOutComponent1
             // 
             this.mgZoomOutComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgZoomOutComponent1.Icon")));
@@ -624,17 +1004,6 @@
             this.mgZoomOutComponent1.Viewer = this.mapViewer;
             this.mgZoomOutComponent1.ZoomOutMode = OSGeo.MapGuide.Viewer.ZoomOutMode.ClickToZoom;
             // 
-            // 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";
-            // 
             // mgInitialViewComponent1
             // 
             this.mgInitialViewComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgInitialViewComponent1.Icon")));
@@ -642,17 +1011,6 @@
             this.mgInitialViewComponent1.ToolTipText = "Zoom Extents";
             this.mgInitialViewComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
             // mgSelectComponent1
             // 
             this.mgSelectComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgSelectComponent1.Icon")));
@@ -660,17 +1018,6 @@
             this.mgSelectComponent1.ToolTipText = "Select";
             this.mgSelectComponent1.Viewer = this.mapViewer;
             // 
-            // 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")));
@@ -678,17 +1025,6 @@
             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")));
@@ -696,17 +1032,6 @@
             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";
-            // 
             // mgPanComponent1
             // 
             this.mgPanComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgPanComponent1.Icon")));
@@ -714,17 +1039,6 @@
             this.mgPanComponent1.ToolTipText = "Pan";
             this.mgPanComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
             // mgClearSelectionComponent1
             // 
             this.mgClearSelectionComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgClearSelectionComponent1.Icon")));
@@ -732,17 +1046,6 @@
             this.mgClearSelectionComponent1.ToolTipText = "Clear Selection";
             this.mgClearSelectionComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
             // mgRefreshMapComponent1
             // 
             this.mgRefreshMapComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgRefreshMapComponent1.Icon")));
@@ -750,16 +1053,6 @@
             this.mgRefreshMapComponent1.ToolTipText = "Refresh Map";
             this.mgRefreshMapComponent1.Viewer = this.mapViewer;
             // 
-            // 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")));
@@ -767,14 +1060,6 @@
             this.mgTooltipToggleComponent1.ToolTipText = "Enable Tooltips";
             this.mgTooltipToggleComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
             // mgBufferComponent1
             // 
             this.mgBufferComponent1.DefaultBufferUnits = OSGeo.MapGuide.Viewer.MeasurementUnit.Meters;
@@ -786,22 +1071,6 @@
             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;
-            // 
-            // 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";
-            // 
             // mgMeasureComponent1
             // 
             this.mgMeasureComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgMeasureComponent1.Icon")));
@@ -811,14 +1080,6 @@
             this.mgMeasureComponent1.ToolTipText = null;
             this.mgMeasureComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
             // mgQueryComponent1
             // 
             this.mgQueryComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgQueryComponent1.Icon")));
@@ -828,16 +1089,6 @@
             this.mgQueryComponent1.ToolTipText = null;
             this.mgQueryComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
             // mgViewerOptionsComponent1
             // 
             this.mgViewerOptionsComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgViewerOptionsComponent1.Icon")));
@@ -848,132 +1099,22 @@
             this.mgViewerOptionsComponent1.ToolTipText = "Viewer Options";
             this.mgViewerOptionsComponent1.Viewer = this.mapViewer;
             // 
-            // 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.CanInvokeWithoutLoadedMap = false;
             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);
             // 
-            // 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";
-            // 
-            // 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;
+            this.mgLoadPackageComponent1.Viewer = this.mapViewer;
             // 
-            // 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";
-            // 
-            // 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";
-            // 
-            // 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";
-            // 
-            // 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";
-            // 
-            // 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";
-            // 
-            // 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";
-            // 
-            // 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";
-            // 
             // mgZoomToSelectionComponent1
             // 
             this.mgZoomToSelectionComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgZoomToSelectionComponent1.Icon")));
@@ -981,100 +1122,41 @@
             this.mgZoomToSelectionComponent1.ToolTipText = "Zoom to Selection";
             this.mgZoomToSelectionComponent1.Viewer = this.mapViewer;
             // 
-            // mgInvokeComponentMenuItem8
+            // loadCompactViewerComponent
             // 
-            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";
+            this.loadCompactViewerComponent.CanInvokeWithoutLoadedMap = false;
+            this.loadCompactViewerComponent.Icon = ((System.Drawing.Image)(resources.GetObject("loadCompactViewerComponent.Icon")));
+            this.loadCompactViewerComponent.Label = "Load Compact Viewer";
+            this.loadCompactViewerComponent.ToolTipText = "Load Compact Viewer";
+            this.loadCompactViewerComponent.Viewer = this.mapViewer;
+            this.loadCompactViewerComponent.Invoked += new System.EventHandler(this.loadCompactViewerComponent_Invoked);
             // 
-            // mgInvokeComponentMenuItem5
+            // mgLayerSelectionHandler1
             // 
-            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";
+            this.mgLayerSelectionHandler1.Layers = new string[] {
+        "Parcels"};
+            this.mgLayerSelectionHandler1.Viewer = this.mapViewer;
+            this.mgLayerSelectionHandler1.SelectionMade += new OSGeo.MapGuide.Viewer.MgLayerSelectionEventHandler(this.mgLayerSelectionHandler1_SelectionMade);
             // 
-            // mgInvokeComponentMenuItem9
+            // profileComponent
             // 
-            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";
+            this.profileComponent.CanInvokeWithoutLoadedMap = false;
+            this.profileComponent.Icon = ((System.Drawing.Image)(resources.GetObject("profileComponent.Icon")));
+            this.profileComponent.Label = "Profile";
+            this.profileComponent.ToolTipText = "Profile this Map";
+            this.profileComponent.Viewer = this.mapViewer;
+            this.profileComponent.Invoked += new System.EventHandler(this.profileComponent_Invoked);
             // 
-            // mgInvokeComponentMenuItem10
+            // toolStripMenuItem26
             // 
-            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";
+            this.toolStripMenuItem26.Enabled = false;
+            this.toolStripMenuItem26.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem26.Image")));
+            this.toolStripMenuItem26.Name = "toolStripMenuItem26";
+            this.toolStripMenuItem26.Size = new System.Drawing.Size(190, 22);
+            this.mgMenuItemComponentInvoker1.SetTargetComponent(this.toolStripMenuItem26, this.profileComponent);
+            this.toolStripMenuItem26.Text = "Profile";
+            this.toolStripMenuItem26.ToolTipText = "Profile this Map";
             // 
-            // 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";
-            // 
-            // 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";
-            // 
-            // 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";
-            // 
-            // mgPrintComponent1
-            // 
-            this.mgPrintComponent1.Icon = ((System.Drawing.Image)(resources.GetObject("mgPrintComponent1.Icon")));
-            this.mgPrintComponent1.Label = "Print";
-            this.mgPrintComponent1.Target = OSGeo.MapGuide.Viewer.MgViewerTarget.TaskPane;
-            this.mgPrintComponent1.TaskPane = this.taskPane;
-            this.mgPrintComponent1.ToolTipText = "Print";
-            this.mgPrintComponent1.Viewer = this.mapViewer;
-            // 
-            // mgInvokeComponentButton12
-            // 
-            this.mgInvokeComponentButton12.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
-            this.mgInvokeComponentButton12.Image = ((System.Drawing.Image)(resources.GetObject("mgInvokeComponentButton12.Image")));
-            this.mgInvokeComponentButton12.ImageTransparentColor = System.Drawing.Color.Magenta;
-            this.mgInvokeComponentButton12.Name = "mgInvokeComponentButton12";
-            this.mgInvokeComponentButton12.Size = new System.Drawing.Size(23, 22);
-            this.mgInvokeComponentButton12.TargetComponent = this.mgPrintComponent1;
-            this.mgInvokeComponentButton12.Text = "Print";
-            this.mgInvokeComponentButton12.ToolTipText = "Print";
-            // 
-            // toolStripSeparator13
-            // 
-            this.toolStripSeparator13.Name = "toolStripSeparator13";
-            this.toolStripSeparator13.Size = new System.Drawing.Size(6, 25);
-            // 
             // MgAppWindow
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -1114,11 +1196,11 @@
             this.toolStrip1.PerformLayout();
             this.statusBar.ResumeLayout(false);
             this.statusBar.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.mgPrintComponent1)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.mgBufferComponent1)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.mgMeasureComponent1)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.mgQueryComponent1)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.mgViewerOptionsComponent1)).EndInit();
-            ((System.ComponentModel.ISupportInitialize)(this.mgPrintComponent1)).EndInit();
             this.ResumeLayout(false);
             this.PerformLayout();
 
@@ -1138,22 +1220,6 @@
         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;
@@ -1180,51 +1246,73 @@
         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;
         private OSGeo.MapGuide.Viewer.MgPrintComponent mgPrintComponent1;
-        private OSGeo.MapGuide.Viewer.MgInvokeComponentButton mgInvokeComponentButton12;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
+        private OSGeo.MapGuide.Viewer.MgMenuItemComponentInvoker mgMenuItemComponentInvoker1;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
+        private System.Windows.Forms.ToolStripButton toolStripButton1;
+        private OSGeo.MapGuide.Viewer.MgToolButtonComponentInvoker mgToolButtonComponentInvoker1;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+        private System.Windows.Forms.ToolStripButton toolStripButton2;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+        private System.Windows.Forms.ToolStripButton toolStripButton3;
+        private System.Windows.Forms.ToolStripButton toolStripButton4;
+        private System.Windows.Forms.ToolStripButton toolStripButton5;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+        private System.Windows.Forms.ToolStripButton toolStripButton6;
+        private System.Windows.Forms.ToolStripButton toolStripButton7;
+        private System.Windows.Forms.ToolStripButton toolStripButton8;
+        private System.Windows.Forms.ToolStripButton toolStripButton9;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
+        private System.Windows.Forms.ToolStripButton toolStripButton10;
+        private System.Windows.Forms.ToolStripButton toolStripButton11;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
+        private System.Windows.Forms.ToolStripButton toolStripButton12;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
+        private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
+        private System.Windows.Forms.ToolStripButton toolStripButton13;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
+        private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton2;
+        private System.Windows.Forms.ToolStripLabel lblLoading;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem6;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem7;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem10;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem16;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem17;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator11;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem18;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem19;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem20;
+        private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem21;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem22;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem23;
         private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem24;
+        private OSGeo.MapGuide.Viewer.MgLayerSelectionHandler mgLayerSelectionHandler1;
+        private OSGeo.MapGuide.Viewer.MgGenericInvokeComponent loadCompactViewerComponent;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem25;
+        private OSGeo.MapGuide.Viewer.MgGenericInvokeComponent profileComponent;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem26;
 
     }
 }
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -16,6 +16,10 @@
         {
             InitializeComponent();
             taskMenu.DropDownDirection = ToolStripDropDownDirection.BelowLeft;
+            if (!this.DesignMode)
+            {
+                new MapViewerController(mapViewer, legendCtrl, this, propertiesCtrl);
+            }
         }
 
         public string MapDefinition
@@ -31,10 +35,6 @@
 
         protected override void OnLoad(EventArgs e)
         {
-            if (!this.DesignMode)
-            {
-                new MapViewerController(mapViewer, legendCtrl, this, propertiesCtrl);
-            }
             base.OnLoad(e);
         }
 
@@ -103,5 +103,34 @@
                 }
             }
         }
+
+        private void mgLayerSelectionHandler1_SelectionMade(string layerName, MgFeatureReader selectedFeatures)
+        {
+            int count = 0;
+            while (selectedFeatures.ReadNext())
+            {
+                count++;
+            }
+            selectedFeatures.Close();
+            MessageBox.Show(count + " parcels selected");
+        }
+
+        private void loadCompactViewerComponent_Invoked(object sender, EventArgs e)
+        {
+            var map = mapViewer.GetMap();
+            var viewer = new CompactViewer();
+            viewer.LoadMap(map.MapDefinition);
+            viewer.Show();
+        }
+
+        private void profileComponent_Invoked(object sender, EventArgs e)
+        {
+            var provider = mapViewer.GetProvider();
+            var map = mapViewer.GetMap();
+            var prof = (MgProfilingService)provider.CreateService(MgServiceType.ProfilingService);
+            var opts = new MgRenderingOptions("PNG", 2, new MgColor(mapViewer.SelectionColor));
+            var result = prof.ProfileRenderDynamicOverlay((MgdMap)map, (MgdSelection)mapViewer.GetSelection(), opts); 
+ 	        new XmlResponseDialog(result).ShowDialog(); 
+        }
     }
 }

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.resx	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/MgAppWindow.resx	2012-05-10 15:29:11 UTC (rev 6641)
@@ -127,30 +127,33 @@
     <value>121, 17</value>
   </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="mgInvokeComponentButton12.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD3SURBVDhPlZNLCoMwEIa9V6TdeBYXhdKKlB6rCy/QE3Tt
-        VnQhPlBEEXww5R8wxJqIHfhAksw3k8RYlhJCiMC2bTLh+z6p6zffSNwLCHYlEERRZATJCKMEgjiOtSRJ
-        wolLaCVhGNIwDFrqumbBL/IcxMkJ7LNDOm7eg6Vpmq5Ax1KARFNgbhxHyrKM8jyXSIHrulx5T4A1kLRt
-        S2VZMixQW98ToIDnP2maJqqqimEBJrquY0xnoM5D0DQNIwVFUdARUGCeZ94GkAJc3xEWQd/3BKTA1Lpu
-        HB0YBTjE1/uzAmOqaCP45xYu1ztvdXmteL2H/kQUMT3jL5h/eJuHqhoLAAAAAElFTkSuQmCC
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD3SURBVDhPlZNLCoMwEIY9V5B241lcFEorUnqsLrxAT9C1
+        W9GF+EARRfDBlH/AEGsiduADSTLfTBJjWUoIIQLbtsmE7/ukrt98I3EvINiVQBBFkREkI4wSCOI41pIk
+        CScuoZWEYUjDMGip65oFv8hzECcnsM8O6bh5D5amaboCHUsBEk2BuXEcKcsyyvNcIgWu63LlPQHWQNK2
+        LZVlybBAbX1PgAKe/6RpmqiqKoYFmOi6jjGdgToPQdM0jBQURUFHQIF5nnkbQApwfUdYBH3fE5ACU+u6
+        cXRgFOAQX+/PCoypoo3gn1u4XO+81eW14vUe+hNRxPSMv4YPeJAk7UvrAAAAAElFTkSuQmCC
 </value>
   </data>
+  <metadata name="mgToolButtonComponentInvoker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>409, 95</value>
+  </metadata>
   <metadata name="mgPrintComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 95</value>
+    <value>243, 95</value>
   </metadata>
   <data name="mgPrintComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD3SURBVDhPlZNLCoMwEIa9V6TdeBYXhdKKlB6rCy/QE3Tt
-        VnQhPlBEEXww5R8wxJqIHfhAksw3k8RYlhJCiMC2bTLh+z6p6zffSNwLCHYlEERRZATJCKMEgjiOtSRJ
-        wolLaCVhGNIwDFrqumbBL/IcxMkJ7LNDOm7eg6Vpmq5Ax1KARFNgbhxHyrKM8jyXSIHrulx5T4A1kLRt
-        S2VZMixQW98ToIDnP2maJqqqimEBJrquY0xnoM5D0DQNIwVFUdARUGCeZ94GkAJc3xEWQd/3BKTA1Lpu
-        HB0YBTjE1/uzAmOqaCP45xYu1ztvdXmteL2H/kQUMT3jL5h/eJuHqhoLAAAAAElFTkSuQmCC
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD3SURBVDhPlZNLCoMwEIY9V5B241lcFEorUnqsLrxAT9C1
+        W9GF+EARRfDBlH/AEGsiduADSTLfTBJjWUoIIQLbtsmE7/ukrt98I3EvINiVQBBFkREkI4wSCOI41pIk
+        CScuoZWEYUjDMGip65oFv8hzECcnsM8O6bh5D5amaboCHUsBEk2BuXEcKcsyyvNcIgWu63LlPQHWQNK2
+        LZVlybBAbX1PgAKe/6RpmqiqKoYFmOi6jjGdgToPQdM0jBQURUFHQIF5nnkbQApwfUdYBH3fE5ACU+u6
+        cXRgFOAQX+/PCoypoo3gn1u4XO+81eW14vUe+hNRxPSMv4YPeJAk7UvrAAAAAElFTkSuQmCC
 </value>
   </data>
-  <data name="mgInvokeComponentButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADgSURBVDhPhZPNCoJAFIV9spZtepfeoGWP2CaCKKQwNf9K
@@ -173,7 +176,7 @@
         SCNfOwFLv7h99gUnGcVV+atLwAAAAABJRU5ErkJggg==
 </value>
   </data>
-  <data name="mgInvokeComponentButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIESURBVDhPnZPNSxtRFMX9T2ppN7axH2SjqaGpsU0TjJJi
@@ -189,7 +192,7 @@
 </value>
   </data>
   <metadata name="mgZoomInComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>407, 134</value>
+    <value>825, 134</value>
   </metadata>
   <data name="mgZoomInComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -206,7 +209,7 @@
         JC4A2evLqnFhjAkAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAH5SURBVDhPnZPLSxtRFMb9T2qpm7ZRW7KpqaHBaNMEU0kx
@@ -239,7 +242,7 @@
         AAAAAElFTkSuQmCC
 </value>
   </data>
-  <data name="mgInvokeComponentButton4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFqSURBVDhPpZPbTsJAEIZ5NaPxAXgI5UK50Qt9LmPSeBYQ
@@ -266,7 +269,7 @@
         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">
+  <data name="toolStripButton6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACcSURBVDhPY2BMZZzJmMb4nywM1MsA0rjxRDMcv//y7D8I
@@ -276,7 +279,7 @@
 </value>
   </data>
   <metadata name="mgSelectComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 134</value>
+    <value>435, 134</value>
   </metadata>
   <data name="mgSelectComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -287,7 +290,7 @@
         2RkA39ChmP3112gAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentButton6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEMSURBVDhPY2BABmkMJoypjA2MaYwHgPgtFB8AiTEA5VDU
@@ -312,7 +315,7 @@
         eRxJAAAAAElFTkSuQmCC
 </value>
   </data>
-  <data name="mgInvokeComponentButton7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADCSURBVDhPY2DABlIYjBnTGM+AMAOQjVUNAY3/+7ZkgjHQ
@@ -335,7 +338,7 @@
         gg==
 </value>
   </data>
-  <data name="mgInvokeComponentButton8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGTSURBVDhPlVNNSwJRFPV/tQpaiW1qFrmKICIqKMmICjIw
@@ -364,7 +367,7 @@
         cDSCJAV+xk7WP7yJ9EN8DX7nAAAAAElFTkSuQmCC
 </value>
   </data>
-  <data name="mgInvokeComponentButton9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton10.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEOSURBVDhPY2CgANjY2PwnWztI8+aOgP8Mbs5B/0EYZBIx
@@ -389,21 +392,21 @@
         0srGPRUAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentButton10.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton11.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/Q0jL6
+        D3LJlu37/oMMg8uBAglkclB48iUXl1B+mATMBTC+jXeUoH9owjmQWpAeuAHO3mFgfzt5hYJDHR/Q0tL6
         A1IL0gNXB9JIkQEwL4Cch+wFWFjAbHJzCxECefPeg6eoXiiva9+3def+/xu27r7g6BW8AtkLsBQKMSx0
         1frNu44AA/I/KODh6nqmzpMFRQ0ocEChC/TSQpBtMBeAEhHIIFAUw6IRpAclrBrb+mZlFVT9BynYuG3P
-        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4AEiVnFFMI
-        h08AAAAASUVORK5CYII=
+        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4A8r5nBCK/
+        IMoAAAAASUVORK5CYII=
 </value>
   </data>
   <metadata name="mgRefreshMapComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>183, 95</value>
+    <value>17, 134</value>
   </metadata>
   <data name="mgRefreshMapComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -411,14 +414,14 @@
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGDSURBVDhPY2AAAifP4P+4MEieKAAy4Oev3ygYJAbSHJOc
         /K2itnX/lClz5PEaBtLw6MlLOIYZYGnvATY4Pq3gT0Nr72yshoAkcktq/99/+AyrARu37jkPksvMr/yP
         YQjIaSDTQQqAhqyHuQTmAnt/fwEnr5A1IG/ce/AM7BIU79Q0dh3fsmP//zUbdhx28gpeihywyM519Aye
-        D3LJlu37/oMMg8uBAglkclB48iUXl1B+mATMBTC+jXeUoH9owjmQWpAeuAHO3mFgfzt5hYJDHR/Q0jL6
+        D3LJlu37/oMMg8uBAglkclB48iUXl1B+mATMBTC+jXeUoH9owjmQWpAeuAHO3mFgfzt5hYJDHR/Q0tL6
         A1IL0gNXB9JIkQEwL4Cch+wFWFjAbHJzCxECefPeg6eoXiiva9+3def+/xu27r7g6BW8AtkLsBQKMSx0
         1frNu44AA/I/KODh6nqmzpMFRQ0ocEChC/TSQpBtMBeAEhHIIFAUw6IRpAclrBrb+mZlFVT9BynYuG3P
-        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4AEiVnFFMI
-        h08AAAAASUVORK5CYII=
+        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4A8r5nBCK/
+        IMoAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentButton11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton12.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADLSURBVDhPY2AYBZSHwOmNjI2nNzCuIQsD9TIcX8e47v+X
@@ -429,7 +432,7 @@
 </value>
   </data>
   <metadata name="mgTooltipToggleComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>190, 134</value>
+    <value>608, 134</value>
   </metadata>
   <data name="mgTooltipToggleComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -441,7 +444,7 @@
         AABJRU5ErkJggg==
 </value>
   </data>
-  <data name="mgInvokeComponentButton15.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripButton13.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC0SURBVDhPrZPLCsIwEEXzXeKyS/0bQUFxISiKK8EH/TXF
@@ -451,7 +454,7 @@
 </value>
   </data>
   <metadata name="mgViewerOptionsComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 212</value>
+    <value>619, 173</value>
   </metadata>
   <data name="mgViewerOptionsComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -462,16 +465,112 @@
         cdVn7pvgGQj48cbLFHCWAIG1bwrhP4LY3/gFpD/IGPp59QYAAAAASUVORK5CYII=
 </value>
   </data>
+  <data name="toolStripMenuItem8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAG4SURBVDhPjZNNLwNRFIbPohv/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="mgMenuItemComponentInvoker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>802, 95</value>
+  </metadata>
+  <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
+        YQUAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAG4SURBVDhPjZNNLwNRFIbPohv/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>
+  <data name="toolStripMenuItem25.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="loadCompactViewerComponent.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 95</value>
+  </metadata>
+  <data name="loadCompactViewerComponent.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>
+  <data name="toolStripMenuItem26.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAACxAAAAsQAa0jvXUAAAG4SURBVDhPjZNNLwNRFIbPohv/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="profileComponent.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>651, 95</value>
+  </metadata>
+  <data name="profileComponent.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAACxAAAAsQAa0jvXUAAAG4SURBVDhPjZNNLwNRFIbPohv/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>600, 212</value>
+    <value>205, 212</value>
   </metadata>
   <metadata name="statusBar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>237, 17</value>
   </metadata>
-  <data name="mgInvokeComponentMenuItem20.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
         tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
         jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
         T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
@@ -486,7 +585,7 @@
   <data name="mgBufferComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
         tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
         jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
         T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
@@ -495,29 +594,29 @@
         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">
+  <data name="toolStripMenuItem10.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAABjSURBVDhPY2AY+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>412, 212</value>
+    <value>17, 212</value>
   </metadata>
   <data name="mgMeasureComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAABjSURBVDhPY2AY+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">
+  <data name="toolStripMenuItem11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
         YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
         me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
         ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
@@ -530,12 +629,12 @@
 </value>
   </data>
   <metadata name="mgQueryComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>238, 212</value>
+    <value>840, 173</value>
   </metadata>
   <data name="mgQueryComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
         YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
         me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
         ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
@@ -547,41 +646,10 @@
         RK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem23.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAACw0AAAsNAe0HwCwAAAG4SURBVDhPjZNNLwNRFIbPohv/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
-        YQUAAAAJcEhZcwAACw0AAAsNAe0HwCwAAAG4SURBVDhPjZNNLwNRFIbPohv/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>
-  <data name="mgInvokeComponentMenuItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
         tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
         jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
         T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
@@ -590,18 +658,18 @@
         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">
+  <data name="toolStripMenuItem6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAABjSURBVDhPY2AY+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">
+  <data name="toolStripMenuItem7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
         YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
         me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
         ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
@@ -613,7 +681,7 @@
         RK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem14.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         R0lGODlhEAAQAIMAAAAAAP///ydYF5fYTmBfDJlmAGYzALWEU8yZZtSmeP/jyP///wAAAAAAAAAAAAAA
         ACH/C05FVFNDQVBFMi4wAwEBAAAh+QQBAAALACwAAAAAEAAQAAAIcwAXCBxIcIGAgwUTGhQQAKHAAhAj
@@ -622,7 +690,7 @@
 </value>
   </data>
   <metadata name="mgLoadPackageComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>389, 95</value>
+    <value>223, 134</value>
   </metadata>
   <data name="mgLoadPackageComponent1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -632,10 +700,10 @@
         nSWTmjy4k2hPoE6bOoVKVCpRqj6tFo0604DXr2DBKhwrMCAAOw==
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem15.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
         tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
         jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
         T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
@@ -644,18 +712,18 @@
         m4t4WHDwJU7vVHDy5GDXqoN+250b3/A/v/MvkqOAAMpRUaEAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem16.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAABjSURBVDhPY2AY+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">
+  <data name="toolStripMenuItem4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
         YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
         me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
         ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
@@ -667,7 +735,7 @@
         RK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem18.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem12.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC0SURBVDhPrZPLCsIwEEXzXeKyS/0bQUFxISiKK8EH/TXF
@@ -676,20 +744,20 @@
         cdVn7pvgGQj48cbLFHCWAIG1bwrhP4LY3/gFpD/IGPp59QYAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem13.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/Q0jL6
+        D3LJlu37/oMMg8uBAglkclB48iUXl1B+mATMBTC+jXeUoH9owjmQWpAeuAHO3mFgfzt5hYJDHR/Q0tL6
         A1IL0gNXB9JIkQEwL4Cch+wFWFjAbHJzCxECefPeg6eoXiiva9+3def+/xu27r7g6BW8AtkLsBQKMSx0
         1frNu44AA/I/KODh6nqmzpMFRQ0ocEChC/TSQpBtMBeAEhHIIFAUw6IRpAclrBrb+mZlFVT9BynYuG3P
-        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4AEiVnFFMI
-        h08AAAAASUVORK5CYII=
+        eVDqgxkAS50gp2fkV/wHqcWZGkEuAWnAZgA4oKH5A2dMgZwG8gYsntHzB1GGYAtEbNkdpA4A8r5nBCK/
+        IMoAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem14.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIESURBVDhPnZPNSxtRFMX9T2ppN7axH2SjqaGpsU0TjJJi
@@ -704,7 +772,7 @@
         JC4A2evLqnFhjAkAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem15.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAH5SURBVDhPnZPLSxtRFMb9T2qpm7ZRW7KpqaHBaNMEU0kx
@@ -719,7 +787,7 @@
         AAAAAElFTkSuQmCC
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem24.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem16.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         R0lGODlhEAAQAIZvAISChAEBAXBJJai7zsfb8Nrn9M/a5Nnm81tgZNDh8sXa77jH16jR4+fu9dDh8brT
         7erv89jm8uzw9ODq9Ku0vNHh8mRrcvT3+aStttri6oOGiJqbncrc7oaKjZ+fn9Di6JSVl67C1a6yt5u2
@@ -752,7 +820,7 @@
         CBAjECxFAwuMLDDwZoAAAQpDI/RcsHToAaJTvwkIADs=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem17.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFqSURBVDhPpZPbTsJAEIZ5NaPxAXgI5UK50Qt9LmPSeBYQ
@@ -764,7 +832,7 @@
         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">
+  <data name="toolStripMenuItem18.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGTSURBVDhPlVNNSwJRFPV/tQpaiW1qFrmKICIqKMmICjIw
@@ -777,7 +845,7 @@
         cDSCJAV+xk7WP7yJ9EN8DX7nAAAAAElFTkSuQmCC
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem19.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACcSURBVDhPY2BMZZzJmMb4nywM1MsA0rjxRDMcv//y7D8I
@@ -786,7 +854,7 @@
         2RkA39ChmP3112gAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem10.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem20.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEOSURBVDhPY2CgANjY2PwnWztI8+aOgP8Mbs5B/0EYZBIx
@@ -797,10 +865,10 @@
         0srGPRUAAAAASUVORK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem21.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAFoSURBVDhPpVNdKwRRGN47jZ/g57hQJGSzmxSTUv4DF26F
         tRa12JLaXVtKMimJ3ZKLsUyWbEImdsUwF37C4zwzTZ2z7a4pp956v57ned9zZiIRcbTJgy5NNzIduvGj
         jRtVbcKYY461UIeAWNpC2qxj/swG/U7dgAz2REhMgUYRJhaKNmZSOfR0R5GtfKA3YSokJIwLYvbR6HNq
         T4QEiyJJcGD520/0LfskNPrMsT6byiNTfgdX9gnEaKMbFgp3fkNgjGWTa4mSDQr7BGI/qvQnTezdqySM
@@ -809,18 +877,18 @@
         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">
+  <data name="toolStripMenuItem22.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAABjSURBVDhPY2AY+sDGxuY/Ob6A64MxiDUIQz1IgFwMdjlV
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAABjSURBVDhPY2AY+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">
+  <data name="toolStripMenuItem23.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
+        YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAHySURBVDhPnZPLSxtRFMb9T6rUTW3Ulmw0GhqMNk0wSqCO
         YhnNIkZUjCKUgvj4C7rSlUtXQksKRUHQxk0XhYpF8IETkpiHjxiT0TgTI0nm6z0DloxJbOmFj3Mf5/7u
         me8wVVVFY2hyasLmcPjr6l8o1TW1eKZrVGhN+8V5ZeedbznB1PEGS5+82No/xHd/QI1Ln71oNppgc3D+
         ipCuHk74uLCIH4EQdiIx/GLaDkfx8zii6ujsHIPDI6C8EsjY+w8TbRYbdo7D2D89Qzx9A+nuTp3vxk7+
@@ -832,7 +900,7 @@
         RK5CYII=
 </value>
   </data>
-  <data name="mgInvokeComponentMenuItem19.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="toolStripMenuItem24.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC0SURBVDhPrZPLCsIwEEXzXeKyS/0bQUFxISiKK8EH/TXF
@@ -841,6 +909,9 @@
         cdVn7pvgGQj48cbLFHCWAIG1bwrhP4LY3/gFpD/IGPp59QYAAAAASUVORK5CYII=
 </value>
   </data>
+  <metadata name="mgLayerSelectionHandler1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>310, 212</value>
+  </metadata>
   <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>111</value>
   </metadata>

Modified: branches/2.4/MgDev/Desktop/MapViewerTest/Program.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewerTest/Program.cs	2012-05-09 17:34:41 UTC (rev 6640)
+++ branches/2.4/MgDev/Desktop/MapViewerTest/Program.cs	2012-05-10 15:29:11 UTC (rev 6641)
@@ -19,6 +19,8 @@
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
+            
+            //Must call MgPlatform.Initialize() before we can work with anything from the MapGuide API
             try
             {
                 var sw = new Stopwatch();
@@ -32,80 +34,36 @@
                 MessageBox.Show(ex.ToString(), "Error");
                 return;
             }
-            var fact = new MgServiceFactory();
-            var resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
+            
+            //MgAppWindow is our Main Window class full of drag-and-drop component goodness. Go ahead and
+            //take a look at MgAppWindow.cs source, not much code there except for the 3 generic invoke components and the
+            //single custom selection handler. Everything else is encapsulated by designer-friendly drag and drop components
+            //Most of the work is dragging and dropping components into the designer surface, and setting lots of properties
             var frm = new MgAppWindow();
+            
+            //We can initialize without specifying a map (allowing for components that do not 
+            //require a loaded map to still be used). You just have to call LoadMap() on the MgMapViewer
+            //instance when ready (not demonstrated here). So if you do load a package here, you will
+            //have to restart the application
+            MgResourceIdentifier resId = null;
             if (args.Length == 1)
             {
-                try
-                {
-                    var resId = new MgResourceIdentifier(args[0]);
-                    resId.Validate();                    
-                    if (!resSvc.ResourceExists(resId))
-                    {
-                        using (var open = new OpenFileDialog())
-                        {
-                            open.Filter = "*.mgp|*.mgp";
-                            if (open.ShowDialog() == DialogResult.OK)
-                            {
-                                var source = new MgByteSource(open.FileName);
-                                var br = source.GetReader();
-                                resSvc.ApplyResourcePackage(br);
-                            }
-                        }
-                    }
-
-                    if (resSvc.ResourceExists(resId))
-                    {
-                        frm.Load += (s, e) =>
-                        {
-                            LoadMap(frm, resId);
-                        };
-                    }
-                    else
-                    {
-                        MessageBox.Show("The specified Map Definition (" + resId.ToString() + ") does not exist");
-                        return;
-                    }
-                }
-                catch (MgException ex)
-                {
-                    ex.Dispose();
-                }
+                resId = new MgResourceIdentifier(args[0]);
+                resId.Validate();
             }
-            else
-            {
-                var diag = new ResourceIdDialog();
-                if (diag.ShowDialog() == DialogResult.OK)
-                {
-                    var resId = diag.ResourceID;
-                    if (resSvc.ResourceExists(resId))
-                    {
-                        frm.Load += (s, e) =>
-                        {
-                            LoadMap(frm, resId);
-                        };
-                    }
-                    else
-                    {
-                        MessageBox.Show("The specified Map Definition (" + resId.ToString() + ") does not exist");
-                        return;
-                    }
-                }
-            }
-            Application.ApplicationExit += new EventHandler(OnAppExit);
-            Application.Run(frm);
-        }
 
-        private static void LoadMap(MgAppWindow frm, MgResourceIdentifier mapId)
-        {
-            var map = new MgdMap(mapId);
             var fact = new MgServiceFactory();
+            var resSvc = (MgdResourceService)fact.CreateService(MgServiceType.ResourceService);
+            MgdMap map = null;
 
-            frm.LoadMap(
-                new MgDesktopMapViewerProvider(map,
-                    (MgdResourceService)fact.CreateService(MgServiceType.ResourceService),
-                    (MgRenderingService)fact.CreateService(MgServiceType.RenderingService)));
+            if (resId != null && resSvc.ResourceExists(resId))
+                map = new MgdMap(resId);
+
+            //This is just a pass-through call to MgMapViewer.Init()
+            frm.LoadMap(new MgDesktopMapViewerProvider(map));
+
+            Application.ApplicationExit += new EventHandler(OnAppExit);
+            Application.Run(frm);
         }
 
         static void OnAppExit(object sender, EventArgs e)



More information about the mapguide-commits mailing list