[mapguide-commits] r4946 - in sandbox/maestro-2.5: Maestro.Base Maestro.Base/Commands Maestro.Base/Commands/SiteExplorer Maestro.Base/Editor Maestro.Base/Events Maestro.Base/Services Maestro.Editors Maestro.Editors/Common Maestro.Editors/FeatureSource Maestro.Editors/FeatureSource/CoordSys Maestro.Editors/Properties Maestro.Editors/Resources OSGeo.MapGuide.MaestroAPI/CoordinateSystem

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Jun 16 06:45:57 EDT 2010


Author: jng
Date: 2010-06-16 10:45:57 +0000 (Wed, 16 Jun 2010)
New Revision: 4946

Added:
   sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/
   sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.Designer.cs
   sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.cs
   sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.resx
   sandbox/maestro-2.5/Maestro.Editors/Resources/globe--minus.png
   sandbox/maestro-2.5/Maestro.Editors/Resources/globe--pencil.png
   sandbox/maestro-2.5/Maestro.Editors/Resources/globe--plus.png
Modified:
   sandbox/maestro-2.5/Maestro.Base/Commands/LoginCommand.cs
   sandbox/maestro-2.5/Maestro.Base/Commands/SiteExplorer/DisconnectCommand.cs
   sandbox/maestro-2.5/Maestro.Base/Editor/FeatureSourceEditor.cs
   sandbox/maestro-2.5/Maestro.Base/Events/EventWatcher.cs
   sandbox/maestro-2.5/Maestro.Base/IViewContent.cs
   sandbox/maestro-2.5/Maestro.Base/Maestro.Base.addin
   sandbox/maestro-2.5/Maestro.Base/Services/ViewContentManager.cs
   sandbox/maestro-2.5/Maestro.Base/TabFactory.cs
   sandbox/maestro-2.5/Maestro.Base/Workbench.cs
   sandbox/maestro-2.5/Maestro.Base/ZonedContainer.cs
   sandbox/maestro-2.5/Maestro.Editors/Common/CoordinateSystemPicker.Designer.cs
   sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.Designer.cs
   sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.cs
   sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.resx
   sandbox/maestro-2.5/Maestro.Editors/FeatureSource/FeatureSourceEditorCtrl.cs
   sandbox/maestro-2.5/Maestro.Editors/Maestro.Editors.csproj
   sandbox/maestro-2.5/Maestro.Editors/Properties/Resources.Designer.cs
   sandbox/maestro-2.5/Maestro.Editors/Properties/Resources.resx
   sandbox/maestro-2.5/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemCategory.cs
Log:
This submission includes the following changes:
 - Implement support for editing coordinate system overrides in a feature source
 - Cache the CoordinateSystem objects when enumerating coordinate systems (it was supposed to do this, but wasn't doing it :/)
 - Change the behavioural contract of IViewContent. The AllowUserClose property is now used solely to determine whether a close button is displayed on the tab. Previously this determined whether the view content would be wired up with close logic or hide logic. Now both hide and close logic are wired, meaning *all* view content (inheriting from ViewContentBase and not overriding Close()) can be closed programmatically regardless of whether AllowUserClose is true or not
 - Implement the disconnect/logout command
 - Make the ZonedContainer check its zoning regions every time a view content is hidden/shown.
 - Remove the WelcomeScreen on connection. This was just a stub anyway.

Modified: sandbox/maestro-2.5/Maestro.Base/Commands/LoginCommand.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/Commands/LoginCommand.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/Commands/LoginCommand.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -46,9 +46,7 @@
                 LoggingService.Info("Connection created: " + conn.DisplayName);
                 mgr.AddConnection(conn.DisplayName, conn);
 
-                //Show the welcome screen
                 var vmgr = ServiceRegistry.GetService<ViewContentManager>();
-                vmgr.ShowContent<WelcomeScreen>();
             }
         }
     }

Modified: sandbox/maestro-2.5/Maestro.Base/Commands/SiteExplorer/DisconnectCommand.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/Commands/SiteExplorer/DisconnectCommand.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/Commands/SiteExplorer/DisconnectCommand.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -20,10 +20,22 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
+using ICSharpCode.Core;
+using Maestro.Base.Services;
 
 namespace Maestro.Base.Commands.SiteExplorer
 {
-    internal class DisconnectCommand : NotImplementedCommand
+    internal class DisconnectCommand : AbstractMenuCommand
     {
+        public override void Run()
+        {
+            var wb = Workbench.Instance;
+            var svc = ServiceRegistry.GetService<ServerConnectionManager>();
+            if (wb.ActiveSiteExplorer != null)
+            {
+                var name = wb.ActiveSiteExplorer.ConnectionName;
+                svc.RemoveConnection(name);
+            }
+        }
     }
 }

Modified: sandbox/maestro-2.5/Maestro.Base/Editor/FeatureSourceEditor.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/Editor/FeatureSourceEditor.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/Editor/FeatureSourceEditor.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -24,6 +24,9 @@
 using System.Data;
 using System.Text;
 using System.Windows.Forms;
+using OSGeo.MapGuide.MaestroAPI.Resource;
+using Maestro.Editors;
+using ICSharpCode.Core;
 
 namespace Maestro.Base.Editor
 {
@@ -34,10 +37,32 @@
             InitializeComponent();
         }
 
-        protected override void Bind(Maestro.Editors.IEditorService service)
+        private IResource _res;
+        private IEditorService _edsvc;
+
+        protected override void Bind(IEditorService service)
         {
-            service.RegisterCustomNotifier(fsEditorCtrl);
+            _edsvc = service;
+            _res = _edsvc.GetEditedResource();
+            _edsvc.BeforeSave += new CancelEventHandler(OnBeforeSave);
             fsEditorCtrl.Bind(service);
         }
+
+        void OnBeforeSave(object sender, CancelEventArgs e)
+        {
+            //We've been editing an in-memory model of the session copy
+            //so we need to save this model back to the session copy before Save()
+            //commits the changes back to the original resource
+            try
+            {
+                _edsvc.UpdateResourceContent(_res.Serialize());
+                e.Cancel = false;
+            }
+            catch (Exception ex)
+            {
+                MessageService.ShowError(ex);
+                e.Cancel = true;
+            }
+        }
     }
 }

Modified: sandbox/maestro-2.5/Maestro.Base/Events/EventWatcher.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/Events/EventWatcher.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/Events/EventWatcher.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -43,7 +43,7 @@
             Debug.Assert(wb.ActiveSiteExplorer != null);
             Debug.Assert(wb.ActiveSiteExplorer.ConnectionName == name);
 
-            
+            wb.ActiveSiteExplorer = null;
         }
 
         static void OnConnectionAdded(object sender, string name)

Modified: sandbox/maestro-2.5/Maestro.Base/IViewContent.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/IViewContent.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/IViewContent.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -46,7 +46,9 @@
         /// </summary>
         event EventHandler TitleChanged;
         /// <summary>
-        /// Detrmines if this view can be closed
+        /// Detrmines if this view can be closed by the user, note that this does not affect the <see cref="Close"/> method
+        /// in any way. All view content can still be programmatically closed if they inherit from <see cref="ViewContentBase"/> and
+        /// does not override the default implementation of <see cref="Close"/>
         /// </summary>
         bool AllowUserClose { get; }
         /// <summary>

Modified: sandbox/maestro-2.5/Maestro.Base/Maestro.Base.addin
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/Maestro.Base.addin	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/Maestro.Base.addin	2010-06-16 10:45:57 UTC (rev 4946)
@@ -225,7 +225,7 @@
                          class="Maestro.Base.Commands.NotImplementedCommand" />
             <ToolbarItem id="SiteExplorer_Disconnect"
                          icon="plug--minus"
-                         class="Maestro.Base.Commands.NotImplementedCommand" />
+                         class="Maestro.Base.Commands.SiteExplorer.DisconnectCommand" />
         </Condition>
     </Path>
     

Modified: sandbox/maestro-2.5/Maestro.Base/Services/ViewContentManager.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/Services/ViewContentManager.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/Services/ViewContentManager.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -32,9 +32,17 @@
 
         public event EventHandler ViewHidden;
 
+        private Workbench _wb;
+
         public override void Initialize()
         {
             base.Initialize();
+
+            Workbench.WorkbenchInitialized += (sender, e) =>
+            {
+                _wb = Workbench.Instance;
+            };
+
             _singletonInstances = new List<IViewContent>();
             _singletonViewContentTypes = new Dictionary<string, Type>();
 
@@ -83,6 +91,9 @@
                         var handler = this.ViewHidden;
                         if (handler != null)
                             handler(this, EventArgs.Empty);
+
+                        if (_wb != null)
+                            _wb.CheckContainerStatus();
                         return;
                     }
                 }
@@ -105,6 +116,8 @@
                         if (!cnt.IsAttached)
                             Workbench.Instance.ShowContent(cnt);
                         cnt.Activate();
+                        if (_wb != null)
+                            _wb.CheckContainerStatus();
                         return;
                     }
                 }

Modified: sandbox/maestro-2.5/Maestro.Base/TabFactory.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/TabFactory.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/TabFactory.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -78,68 +78,66 @@
                     }
                 }
             };
-            if (content.AllowUserClose)
+
+
+            content.ViewContentClosing += (sender, e) =>
             {
-                content.ViewContentClosing += (sender, e) =>
+                //Remove itself from the tab control
+                var tabs = page.Parent as TabControl;
+                if (tabs != null && tabs.TabPages.Contains(page))
                 {
-                    //Remove itself from the tab control
-                    var tabs = page.Parent as TabControl;
-                    if (tabs != null && tabs.TabPages.Contains(page))
+                    if (Platform.IsWindows)
                     {
-                        if (Platform.IsWindows)
+                        var idx = tabs.TabPages.IndexOf(page);
+                        tabs.TabPages.Remove(page);
+                        if (idx > 0)
+                            tabs.SelectedIndex = --idx;
+                    }
+                    else
+                    {
+                        int idx = -1;
+                        //HACK: Mono (2.4) will chuck a hissy fit if we remove
+                        //a tab from a TabControl that has a selected tab so we
+                        //have to null the selected tab, but this cause weird
+                        //visual effects once the tab is removed, so we record
+                        //the selected index, so we can assign the one beside it
+                        //to be the selected tab after removal.
+                        if (tabs.SelectedTab == page)
                         {
-                            var idx = tabs.TabPages.IndexOf(page);
-                            tabs.TabPages.Remove(page);
-                            if (idx > 0)
-                                tabs.SelectedIndex = --idx;
+                            idx = tabs.SelectedIndex;
+                            tabs.SelectedTab = null;
                         }
+                        tabs.TabPages.Remove(page);
+
+                        if (idx > 0)
+                        {
+                            idx--;
+                            tabs.SelectedIndex = idx;
+                        }
                         else
                         {
-                            int idx = -1;
-                            //HACK: Mono (2.4) will chuck a hissy fit if we remove
-                            //a tab from a TabControl that has a selected tab so we
-                            //have to null the selected tab, but this cause weird
-                            //visual effects once the tab is removed, so we record
-                            //the selected index, so we can assign the one beside it
-                            //to be the selected tab after removal.
-                            if (tabs.SelectedTab == page)
+                            //Set to first tab if available.
+                            if (tabs.TabCount > 0)
                             {
-                                idx = tabs.SelectedIndex;
-                                tabs.SelectedTab = null;
+                                tabs.SelectedIndex = 0;
                             }
-                            tabs.TabPages.Remove(page);
-
-                            if (idx > 0)
-                            {
-                                idx--;
-                                tabs.SelectedIndex = idx;
-                            }
-                            else
-                            {
-                                //Set to first tab if available.
-                                if (tabs.TabCount > 0)
-                                {
-                                    tabs.SelectedIndex = 0;
-                                }
-                            }
                         }
                     }
-                };
-            }
-            else
+                }
+            };
+
+            content.ViewContentHiding += (sender, e) =>
             {
-                content.ViewContentHiding += (sender, e) =>
+                //Store in hidden tabs collection
+                var tabs = page.Parent as TabControl;
+                if (tabs != null && tabs.TabPages.Contains(page))
                 {
-                    //Store in hidden tabs collection
-                    var tabs = page.Parent as TabControl;
-                    if (tabs != null && tabs.TabPages.Contains(page))
-                    {
-                        var htab = new HiddenTab() { Parent = tabs, Tab = page };
-                        _hiddenTabs.Add(htab);
-                        htab.Parent.TabPages.Remove(page);
-                    }
-                };
-            }
+                    var htab = new HiddenTab() { Parent = tabs, Tab = page };
+                    _hiddenTabs.Add(htab);
+                    htab.Parent.TabPages.Remove(page);
+                }
+            };
+
             content.ContentControl.Dock = DockStyle.Fill;
             page.Controls.Add(content.ContentControl);
 

Modified: sandbox/maestro-2.5/Maestro.Base/Workbench.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/Workbench.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/Workbench.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -284,13 +284,26 @@
             get { return contentPanel.ActiveDocumentView; }
         }
 
+        private ISiteExplorer _siteExp;
+
         /// <summary>
         /// Gets the active site explorer
         /// </summary>
         public ISiteExplorer ActiveSiteExplorer
         {
-            get;
-            private set;
+            get { return _siteExp; }
+            internal set
+            {
+                var current = _siteExp;
+                _siteExp = value;
+                if (value == null && current != null)
+                {
+                    current.Close();
+                    CheckContainerStatus();
+                    //TODO: When we do support multiple repos we'll need to find and activate the next open
+                    //ISiteExplorer in the ZonedContainer and designate that as the ActiveSiteExplorer
+                }
+            }
         }
 
         public IEditorViewContent ActiveEditor
@@ -325,6 +338,11 @@
             }
         }
 
+        internal void CheckContainerStatus()
+        {
+            contentPanel.CheckContainerStatus();
+        }
+
         void OnApplicationIdle(object sender, EventArgs e)
         {
             // Use the Idle event to update the status of menu and toolbar.

Modified: sandbox/maestro-2.5/Maestro.Base/ZonedContainer.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Base/ZonedContainer.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Base/ZonedContainer.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -74,8 +74,16 @@
             CheckContainerStatus();
         }
 
-        private void CheckContainerStatus()
+        private IEnumerable<TabControl> AllTabs()
         {
+            yield return bottomZone;
+            yield return documentTabs;
+            yield return leftZone;
+            yield return rightZone;
+        }
+
+        internal void CheckContainerStatus()
+        {
             docBottomContainer.Panel2Collapsed = (bottomZone.TabPages.Count == 0);
             topContainer.Panel1Collapsed = (leftZone.TabPages.Count == 0);
             docRightContainer.Panel2Collapsed = (rightZone.TabPages.Count == 0) ;

Modified: sandbox/maestro-2.5/Maestro.Editors/Common/CoordinateSystemPicker.Designer.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/Common/CoordinateSystemPicker.Designer.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Editors/Common/CoordinateSystemPicker.Designer.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -341,7 +341,7 @@
             this.CoordinateWait.Name = "CoordinateWait";
             this.CoordinateWait.Size = new System.Drawing.Size(512, 272);
             this.CoordinateWait.TabIndex = 26;
-            this.CoordinateWait.Text = "Loading coordinate system, please wait";
+            this.CoordinateWait.Text = "Loading Coordinate Systems. Please wait";
             this.CoordinateWait.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
             // 
             // CoordinateSystemPicker

Added: sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.Designer.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.Designer.cs	                        (rev 0)
+++ sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.Designer.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -0,0 +1,141 @@
+namespace Maestro.Editors.FeatureSource.CoordSys
+{
+    partial class CoordSysOverrideDialog
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.txtCoordinateSystem = new System.Windows.Forms.TextBox();
+            this.btnBrowseCs = new System.Windows.Forms.Button();
+            this.cmbName = new System.Windows.Forms.ComboBox();
+            this.btnOK = new System.Windows.Forms.Button();
+            this.btnCancel = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(12, 20);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(41, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Source";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(12, 46);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(38, 13);
+            this.label2.TabIndex = 1;
+            this.label2.Text = "Target";
+            // 
+            // txtCoordinateSystem
+            // 
+            this.txtCoordinateSystem.Location = new System.Drawing.Point(117, 43);
+            this.txtCoordinateSystem.Name = "txtCoordinateSystem";
+            this.txtCoordinateSystem.Size = new System.Drawing.Size(361, 20);
+            this.txtCoordinateSystem.TabIndex = 3;
+            this.txtCoordinateSystem.TextChanged += new System.EventHandler(this.txtCoordinateSystem_TextChanged);
+            // 
+            // btnBrowseCs
+            // 
+            this.btnBrowseCs.Location = new System.Drawing.Point(484, 41);
+            this.btnBrowseCs.Name = "btnBrowseCs";
+            this.btnBrowseCs.Size = new System.Drawing.Size(26, 23);
+            this.btnBrowseCs.TabIndex = 5;
+            this.btnBrowseCs.Text = "...";
+            this.btnBrowseCs.UseVisualStyleBackColor = true;
+            this.btnBrowseCs.Click += new System.EventHandler(this.btnBrowseCs_Click);
+            // 
+            // cmbName
+            // 
+            this.cmbName.FormattingEnabled = true;
+            this.cmbName.Location = new System.Drawing.Point(117, 17);
+            this.cmbName.MaxLength = 10000;
+            this.cmbName.Name = "cmbName";
+            this.cmbName.Size = new System.Drawing.Size(361, 21);
+            this.cmbName.TabIndex = 6;
+            // 
+            // btnOK
+            // 
+            this.btnOK.Enabled = false;
+            this.btnOK.Location = new System.Drawing.Point(353, 81);
+            this.btnOK.Name = "btnOK";
+            this.btnOK.Size = new System.Drawing.Size(75, 23);
+            this.btnOK.TabIndex = 7;
+            this.btnOK.Text = "OK";
+            this.btnOK.UseVisualStyleBackColor = true;
+            this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+            // 
+            // btnCancel
+            // 
+            this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+            this.btnCancel.Location = new System.Drawing.Point(435, 81);
+            this.btnCancel.Name = "btnCancel";
+            this.btnCancel.Size = new System.Drawing.Size(75, 23);
+            this.btnCancel.TabIndex = 8;
+            this.btnCancel.Text = "Cancel";
+            this.btnCancel.UseVisualStyleBackColor = true;
+            this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+            // 
+            // CoordSysOverrideDialog
+            // 
+            this.AcceptButton = this.btnOK;
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.CancelButton = this.btnCancel;
+            this.ClientSize = new System.Drawing.Size(522, 119);
+            this.ControlBox = false;
+            this.Controls.Add(this.btnCancel);
+            this.Controls.Add(this.btnOK);
+            this.Controls.Add(this.cmbName);
+            this.Controls.Add(this.btnBrowseCs);
+            this.Controls.Add(this.txtCoordinateSystem);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.Name = "CoordSysOverrideDialog";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "Coordinate System Override";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox txtCoordinateSystem;
+        private System.Windows.Forms.Button btnBrowseCs;
+        private System.Windows.Forms.ComboBox cmbName;
+        private System.Windows.Forms.Button btnOK;
+        private System.Windows.Forms.Button btnCancel;
+    }
+}
\ No newline at end of file

Added: sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.cs	                        (rev 0)
+++ sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSys/CoordSysOverrideDialog.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -0,0 +1,86 @@
+#region Disclaimer / License
+// Copyright (C) 2010, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.MaestroAPI;
+using Maestro.Editors.Common;
+using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.MaestroAPI.CoordinateSystem;
+
+namespace Maestro.Editors.FeatureSource.CoordSys
+{
+    public partial class CoordSysOverrideDialog : Form
+    {
+        private CoordSysOverrideDialog()
+        {
+            InitializeComponent();
+        }
+
+        public string CsName 
+        { 
+            get { return cmbName.Text; }
+            set { cmbName.Text = value; }
+        }
+
+        public string CoordinateSystemWkt 
+        { 
+            get { return txtCoordinateSystem.Text; }
+            set { txtCoordinateSystem.Text = value; }
+        }
+
+        private IEditorService _ed;
+
+        public CoordSysOverrideDialog(IEditorService ed)
+            : this()
+        {
+            _ed = ed;
+            var list = _ed.FeatureService.GetSpatialContextInfo(_ed.EditedResourceID, false);
+            foreach (var sc in list.SpatialContext)
+            {
+                cmbName.Items.Add(sc.Name);
+            }
+        }
+
+        private void btnCancel_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.Cancel;
+        }
+
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.OK;
+        }
+
+        private void btnBrowseCs_Click(object sender, EventArgs e)
+        {
+            txtCoordinateSystem.Text = _ed.GetCoordinateSystem();
+        }
+
+        private void txtCoordinateSystem_TextChanged(object sender, EventArgs e)
+        {
+            btnOK.Enabled = !string.IsNullOrEmpty(txtCoordinateSystem.Text) && !string.IsNullOrEmpty(cmbName.Text);
+        }
+    }
+}

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

Modified: sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.Designer.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.Designer.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.Designer.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -28,18 +28,122 @@
         /// </summary>
         private void InitializeComponent()
         {
+            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.btnAdd = new System.Windows.Forms.ToolStripButton();
+            this.btnEdit = new System.Windows.Forms.ToolStripButton();
+            this.btnDelete = new System.Windows.Forms.ToolStripButton();
+            this.grdOverrides = new System.Windows.Forms.DataGridView();
+            this.COL_SOURCE = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.COL_TARGET = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.contentPanel.SuspendLayout();
+            this.toolStrip1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.grdOverrides)).BeginInit();
             this.SuspendLayout();
             // 
+            // contentPanel
+            // 
+            this.contentPanel.Controls.Add(this.grdOverrides);
+            this.contentPanel.Controls.Add(this.toolStrip1);
+            // 
+            // toolStrip1
+            // 
+            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.btnAdd,
+            this.btnEdit,
+            this.btnDelete});
+            this.toolStrip1.Location = new System.Drawing.Point(0, 0);
+            this.toolStrip1.Name = "toolStrip1";
+            this.toolStrip1.Size = new System.Drawing.Size(449, 25);
+            this.toolStrip1.TabIndex = 0;
+            this.toolStrip1.Text = "toolStrip1";
+            // 
+            // btnAdd
+            // 
+            this.btnAdd.Image = global::Maestro.Editors.Properties.Resources.globe__plus;
+            this.btnAdd.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.btnAdd.Name = "btnAdd";
+            this.btnAdd.Size = new System.Drawing.Size(46, 22);
+            this.btnAdd.Text = "Add";
+            this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
+            // 
+            // btnEdit
+            // 
+            this.btnEdit.Enabled = false;
+            this.btnEdit.Image = global::Maestro.Editors.Properties.Resources.globe__pencil;
+            this.btnEdit.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.btnEdit.Name = "btnEdit";
+            this.btnEdit.Size = new System.Drawing.Size(45, 22);
+            this.btnEdit.Text = "Edit";
+            this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
+            // 
+            // btnDelete
+            // 
+            this.btnDelete.Enabled = false;
+            this.btnDelete.Image = global::Maestro.Editors.Properties.Resources.globe__minus;
+            this.btnDelete.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.btnDelete.Name = "btnDelete";
+            this.btnDelete.Size = new System.Drawing.Size(58, 22);
+            this.btnDelete.Text = "Delete";
+            this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
+            // 
+            // grdOverrides
+            // 
+            this.grdOverrides.AllowUserToAddRows = false;
+            this.grdOverrides.AllowUserToDeleteRows = false;
+            this.grdOverrides.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.grdOverrides.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.COL_SOURCE,
+            this.COL_TARGET});
+            this.grdOverrides.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.grdOverrides.Location = new System.Drawing.Point(0, 25);
+            this.grdOverrides.Name = "grdOverrides";
+            this.grdOverrides.ReadOnly = true;
+            this.grdOverrides.RowHeadersVisible = false;
+            this.grdOverrides.Size = new System.Drawing.Size(449, 267);
+            this.grdOverrides.TabIndex = 1;
+            this.grdOverrides.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.grdOverrides_CellContentClick);
+            this.grdOverrides.SelectionChanged += new System.EventHandler(this.grdOverrides_SelectionChanged);
+            this.grdOverrides.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.grdOverrides_CellContentClick);
+            // 
+            // COL_SOURCE
+            // 
+            this.COL_SOURCE.DataPropertyName = "Name";
+            this.COL_SOURCE.HeaderText = "Source";
+            this.COL_SOURCE.Name = "COL_SOURCE";
+            this.COL_SOURCE.ReadOnly = true;
+            this.COL_SOURCE.Width = 200;
+            // 
+            // COL_TARGET
+            // 
+            this.COL_TARGET.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.COL_TARGET.DataPropertyName = "CoordinateSystem";
+            this.COL_TARGET.HeaderText = "Target";
+            this.COL_TARGET.Name = "COL_TARGET";
+            this.COL_TARGET.ReadOnly = true;
+            // 
             // CoordSysOverrideCtrl
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.HeaderText = "Coordinate System Overrides";
             this.Name = "CoordSysOverrideCtrl";
+            this.contentPanel.ResumeLayout(false);
+            this.contentPanel.PerformLayout();
+            this.toolStrip1.ResumeLayout(false);
+            this.toolStrip1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.grdOverrides)).EndInit();
             this.ResumeLayout(false);
 
         }
 
         #endregion
+
+        private System.Windows.Forms.DataGridView grdOverrides;
+        private System.Windows.Forms.ToolStrip toolStrip1;
+        private System.Windows.Forms.ToolStripButton btnAdd;
+        private System.Windows.Forms.ToolStripButton btnDelete;
+        private System.Windows.Forms.ToolStripButton btnEdit;
+        private System.Windows.Forms.DataGridViewTextBoxColumn COL_SOURCE;
+        private System.Windows.Forms.DataGridViewTextBoxColumn COL_TARGET;
     }
 }

Modified: sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -25,6 +25,10 @@
 using System.Text;
 using System.Windows.Forms;
 using Maestro.Shared.UI;
+using Maestro.Editors.FeatureSource.CoordSys;
+using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.MaestroAPI.Services;
+using OSGeo.MapGuide.ObjectModels.FeatureSource;
 
 namespace Maestro.Editors.FeatureSource
 {
@@ -35,11 +39,81 @@
             InitializeComponent();
         }
 
+        private IEditorService _ed;
+        private FeatureSourceType _fs;
+
         public void Bind(IEditorService service)
         {
-            
+            _ed = service;
+            _ed.RegisterCustomNotifier(this);
+            _fs = (FeatureSourceType)_ed.GetEditedResource();
+
+            grdOverrides.AutoGenerateColumns = false;
+            grdOverrides.DataSource = _fs.SupplementalSpatialContextInfo;
         }
 
         public event EventHandler ResourceChanged;
+
+        private void RaiseResourceChanged()
+        {
+            var handler = this.ResourceChanged;
+            if (handler != null)
+                handler(this, EventArgs.Empty);
+        }
+
+        private void btnAdd_Click(object sender, EventArgs e)
+        {
+            var dlg = new CoordSysOverrideDialog(_ed);
+            if (dlg.ShowDialog() == DialogResult.OK)
+            {
+                _fs.SupplementalSpatialContextInfo.Add(new SpatialContextType()
+                {
+                    Name = dlg.CsName,
+                    CoordinateSystem = dlg.CoordinateSystemWkt
+                });
+                RaiseResourceChanged();
+            }
+        }
+
+        private void grdOverrides_CellContentClick(object sender, DataGridViewCellEventArgs e)
+        {
+            if (e.RowIndex >= 0)
+            {
+                grdOverrides.Rows[e.RowIndex].Selected = true;
+            }
+        }
+
+        private void grdOverrides_SelectionChanged(object sender, EventArgs e)
+        {
+            btnEdit.Enabled = btnDelete.Enabled = (grdOverrides.SelectedRows.Count == 1);
+        }
+
+        private void btnDelete_Click(object sender, EventArgs e)
+        {
+            if (grdOverrides.SelectedRows.Count != 1)
+                return;
+
+            var sc = (SpatialContextType)grdOverrides.SelectedRows[0].DataBoundItem;
+            _fs.SupplementalSpatialContextInfo.Remove(sc);
+            RaiseResourceChanged();
+        }
+
+        private void btnEdit_Click(object sender, EventArgs e)
+        {
+            if (grdOverrides.SelectedRows.Count != 1)
+                return;
+
+            var sc = (SpatialContextType)grdOverrides.SelectedRows[0].DataBoundItem;
+            var dlg = new CoordSysOverrideDialog(_ed);
+            dlg.CsName = sc.Name;
+            dlg.CoordinateSystemWkt = sc.CoordinateSystem;
+
+            if (dlg.ShowDialog() == DialogResult.OK)
+            {
+                sc.Name = dlg.CsName;
+                sc.CoordinateSystem = dlg.CoordinateSystemWkt;
+                RaiseResourceChanged();
+            }
+        }
     }
 }

Modified: sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.resx
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.resx	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Editors/FeatureSource/CoordSysOverrideCtrl.resx	2010-06-16 10:45:57 UTC (rev 4946)
@@ -117,4 +117,19 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="COL_SOURCE.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="COL_TARGET.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="COL_SOURCE.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="COL_TARGET.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
 </root>
\ No newline at end of file

Modified: sandbox/maestro-2.5/Maestro.Editors/FeatureSource/FeatureSourceEditorCtrl.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/FeatureSource/FeatureSourceEditorCtrl.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Editors/FeatureSource/FeatureSourceEditorCtrl.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -45,6 +45,7 @@
         public override void Bind(IEditorService service)
         {
             _fs = service.GetEditedResource() as FeatureSourceType;
+            service.RegisterCustomNotifier(this);
             Debug.Assert(_fs != null);
 
             CollapsiblePanel panel = ResolveTopPanel(_fs.Provider);
@@ -71,6 +72,8 @@
 
         private static CollapsiblePanel ResolveTopPanel(string provider)
         {
+            //TODO: Define specialized editors via the addin registry
+
             string name = provider.ToUpper();
             if (name.StartsWith("OSGEO.SDF"))
                 return new SdfFileCtrl();

Modified: sandbox/maestro-2.5/Maestro.Editors/Maestro.Editors.csproj
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/Maestro.Editors.csproj	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Editors/Maestro.Editors.csproj	2010-06-16 10:45:57 UTC (rev 4946)
@@ -122,6 +122,12 @@
     <Compile Include="FeatureSource\CoordSysOverrideCtrl.Designer.cs">
       <DependentUpon>CoordSysOverrideCtrl.cs</DependentUpon>
     </Compile>
+    <Compile Include="FeatureSource\CoordSys\CoordSysOverrideDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="FeatureSource\CoordSys\CoordSysOverrideDialog.Designer.cs">
+      <DependentUpon>CoordSysOverrideDialog.cs</DependentUpon>
+    </Compile>
     <Compile Include="FeatureSource\ExtensionsCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
@@ -455,6 +461,10 @@
       <DependentUpon>CoordSysOverrideCtrl.cs</DependentUpon>
       <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="FeatureSource\CoordSys\CoordSysOverrideDialog.resx">
+      <DependentUpon>CoordSysOverrideDialog.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
     <EmbeddedResource Include="FeatureSource\ExtensionsCtrl.resx">
       <DependentUpon>ExtensionsCtrl.cs</DependentUpon>
       <SubType>Designer</SubType>
@@ -790,6 +800,15 @@
     <None Include="Resources\edit-indent.png" />
   </ItemGroup>
   <ItemGroup>
+    <None Include="Resources\globe--pencil.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\globe--plus.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\globe--minus.png" />
+  </ItemGroup>
+  <ItemGroup>
     <Folder Include="DrawingSource\Preview\" />
     <Folder Include="FeatureSource\Providers\Rdbms\" />
     <Folder Include="LayerDefinition\Geometry\" />

Modified: sandbox/maestro-2.5/Maestro.Editors/Properties/Resources.Designer.cs
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/Properties/Resources.Designer.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Editors/Properties/Resources.Designer.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -313,6 +313,27 @@
             }
         }
         
+        internal static System.Drawing.Bitmap globe__minus {
+            get {
+                object obj = ResourceManager.GetObject("globe--minus", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap globe__pencil {
+            get {
+                object obj = ResourceManager.GetObject("globe--pencil", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap globe__plus {
+            get {
+                object obj = ResourceManager.GetObject("globe--plus", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to infinite.
         /// </summary>

Modified: sandbox/maestro-2.5/Maestro.Editors/Properties/Resources.resx
===================================================================
--- sandbox/maestro-2.5/Maestro.Editors/Properties/Resources.resx	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/Maestro.Editors/Properties/Resources.resx	2010-06-16 10:45:57 UTC (rev 4946)
@@ -117,13 +117,10 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="sql-join-inner" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\sql-join-inner.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="FindReplaceNothing" xml:space="preserve">
     <value>Nothing to replace</value>
   </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <data name="globe--arrow" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\globe--arrow.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -139,9 +136,6 @@
   <data name="drive-upload" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\drive-upload.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="XmlDocIsValid" xml:space="preserve">
-    <value>Document is valid</value>
-  </data>
   <data name="InfiniteValue" xml:space="preserve">
     <value>infinite</value>
     <comment>A value that is displayed when the value assigned is infinite</comment>
@@ -149,14 +143,11 @@
   <data name="magnifier" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="tick" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="plus-circle" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\plus-circle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="application-search-result" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\application-search-result.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="XmlDocIsValid" xml:space="preserve">
+    <value>Document is valid</value>
   </data>
   <data name="TransparentName" xml:space="preserve">
     <value>Transparent</value>
@@ -167,6 +158,12 @@
   <data name="control-stop-square" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\control-stop-square.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="edit-indent" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\edit-indent.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="application-search-result" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\application-search-result.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="clipboard-paste" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\clipboard-paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -174,6 +171,12 @@
     <value>Invalid value</value>
     <comment>An error message that is displayed when the entered value is invalid</comment>
   </data>
+  <data name="FileDownloaded" xml:space="preserve">
+    <value>File Downloaded</value>
+  </data>
+  <data name="TestConnectionNoErrors" xml:space="preserve">
+    <value>Provider reported no errors</value>
+  </data>
   <data name="document--plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\document--plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -183,12 +186,12 @@
   <data name="control" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\control.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="sort-number" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\sort-number.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="folder_horizontal" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\folder-horizontal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="arrow-090" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\arrow-090.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
   <data name="FindNothing" xml:space="preserve">
     <value>Could not find specified string or end of document reached</value>
   </data>
@@ -207,6 +210,9 @@
   <data name="databases-relation" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\databases-relation.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="cross-circle-frame" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\cross-circle-frame.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="MoreColorsName" xml:space="preserve">
     <value>More colors...</value>
   </data>
@@ -216,8 +222,8 @@
   <data name="scissors-blue" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\scissors-blue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="sort-number" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\sort-number.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="tick" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="application--arrow" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\application--arrow.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -225,15 +231,21 @@
   <data name="FindEmptyString" xml:space="preserve">
     <value>Cannot Find an Empty String</value>
   </data>
-  <data name="arrow-270" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\arrow-270.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="sql-join-inner" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\sql-join-inner.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="function" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\function.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="sql-join-right" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\sql-join-right.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="application--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\application--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="TitleError" xml:space="preserve">
+    <value>Error</value>
+  </data>
   <data name="arrow-circle-135" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\arrow-circle-135.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -243,8 +255,8 @@
   <data name="cross" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\cross.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="cross-circle-frame" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\cross-circle-frame.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="arrow-090" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\arrow-090.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="arrow-curve" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\arrow-curve.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -273,22 +285,19 @@
   <data name="sql" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\sql.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="function" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\function.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="arrow-270" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\arrow-270.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="application-import" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\application-import.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="edit-indent" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\Resources\edit-indent.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  <data name="globe--pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\globe--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="FileDownloaded" xml:space="preserve">
-    <value>File Downloaded</value>
+  <data name="globe--plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\globe--plus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TestConnectionNoErrors" xml:space="preserve">
-    <value>Provider reported no errors</value>
+  <data name="globe--minus" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\globe--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TitleError" xml:space="preserve">
-    <value>Error</value>
-  </data>
 </root>
\ No newline at end of file

Added: sandbox/maestro-2.5/Maestro.Editors/Resources/globe--minus.png
===================================================================
(Binary files differ)


Property changes on: sandbox/maestro-2.5/Maestro.Editors/Resources/globe--minus.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: sandbox/maestro-2.5/Maestro.Editors/Resources/globe--pencil.png
===================================================================
(Binary files differ)


Property changes on: sandbox/maestro-2.5/Maestro.Editors/Resources/globe--pencil.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: sandbox/maestro-2.5/Maestro.Editors/Resources/globe--plus.png
===================================================================
(Binary files differ)


Property changes on: sandbox/maestro-2.5/Maestro.Editors/Resources/globe--plus.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Modified: sandbox/maestro-2.5/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemCategory.cs
===================================================================
--- sandbox/maestro-2.5/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemCategory.cs	2010-06-16 03:37:05 UTC (rev 4945)
+++ sandbox/maestro-2.5/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemCategory.cs	2010-06-16 10:45:57 UTC (rev 4946)
@@ -47,7 +47,7 @@
 				{
                     if (_parent != null)
                     {
-                        return _parent.EnumerateCoordinateSystems(m_name);
+                        m_items = _parent.EnumerateCoordinateSystems(m_name);
                     }
                     /*
                     if (_parent != null)



More information about the mapguide-commits mailing list