[mapguide-commits] r4781 - in trunk/Tools/Maestro/Maestro: . ResourceEditors ResourceEditors/Icons ResourceEditors/LoadProcedureEditors ResourceEditors/Templates Strings

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Apr 12 09:54:24 EDT 2010


Author: jng
Date: 2010-04-12 09:54:24 -0400 (Mon, 12 Apr 2010)
New Revision: 4781

Added:
   trunk/Tools/Maestro/Maestro/ResourceEditors/Icons/Unknown.ico
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.resx
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/BaseFileLoadProcedureCtrl.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/BaseFileLoadProcedureCtrl.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/DefaultLoadProcedureCtrl.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/DefaultLoadProcedureCtrl.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ILoadProcedureEditor.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.resx
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.resx
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.resx
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.resx
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.resx
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.Designer.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.cs
   trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.resx
   trunk/Tools/Maestro/Maestro/ResourceEditors/Templates/Sdf Load Procedure.LoadProcedure
   trunk/Tools/Maestro/Maestro/ResourceEditors/Templates/Shp Load Procedure.LoadProcedure
Modified:
   trunk/Tools/Maestro/Maestro/EditorMap.xml
   trunk/Tools/Maestro/Maestro/ResourceEditors/ResourceEditors.csproj
   trunk/Tools/Maestro/Maestro/Strings/TemplateNames.resx
Log:
#579: This submission adds specialized editor support for Load Procedures. Only SDF/SHP load procedures are supported, certain load procedures features are not supported and are disabled in the UI, and ignored in the API

Modified: trunk/Tools/Maestro/Maestro/EditorMap.xml
===================================================================
--- trunk/Tools/Maestro/Maestro/EditorMap.xml	2010-04-12 13:44:33 UTC (rev 4780)
+++ trunk/Tools/Maestro/Maestro/EditorMap.xml	2010-04-12 13:54:24 UTC (rev 4781)
@@ -85,6 +85,17 @@
 		<ResourceInstanceClass>OSGeo.MapGuide.MaestroAPI.WebLayout</ResourceInstanceClass>
 	</ResourceEditorEntry>
 
+    <ResourceEditorEntry>
+        <DisplayName>Load Procedure</DisplayName>
+        <ResourceExtension>LoadProcedure</ResourceExtension>
+        <ImageAssembly>OSGeo.MapGuide.Maestro.ResourceEditors.dll</ImageAssembly>
+        <ImageResourceName>OSGeo.MapGuide.Maestro.ResourceEditors.Icons.Unknown.ico</ImageResourceName>
+        <ResourceEditorAssembly>OSGeo.MapGuide.Maestro.ResourceEditors.dll</ResourceEditorAssembly>
+        <ResourceEditorClass>OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors.LoadProcedureCtrl</ResourceEditorClass>
+        <ResourceInstanceAssembly>OSGeo.MapGuide.MaestroAPI.dll</ResourceInstanceAssembly>
+        <ResourceInstanceClass>OSGeo.MapGuide.MaestroAPI.LoadProcedure</ResourceInstanceClass>
+    </ResourceEditorEntry>
+
 	<ResourceEditorEntry>
 		<DisplayName>Print layout</DisplayName>
 		<ResourceExtension>PrintLayout</ResourceExtension>
@@ -129,4 +140,4 @@
 		<ResourceInstanceClass>OSGeo.MapGuide.MaestroAPI.ApplicationDefinition.ApplicationDefinitionType</ResourceInstanceClass>
 	</ResourceEditorEntry>
 
-</ResourceEditors>
\ No newline at end of file
+</ResourceEditors>

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/Icons/Unknown.ico
===================================================================
(Binary files differ)


Property changes on: trunk/Tools/Maestro/Maestro/ResourceEditors/Icons/Unknown.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,92 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class AffectedResourceIdsDlg
+    {
+        /// <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.lstResources = new System.Windows.Forms.ListBox();
+            this.btnOK = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.label1.Location = new System.Drawing.Point(12, 9);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(268, 40);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "The load procedure will create or update the following resources when executed";
+            // 
+            // lstResources
+            // 
+            this.lstResources.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.lstResources.FormattingEnabled = true;
+            this.lstResources.HorizontalScrollbar = true;
+            this.lstResources.Location = new System.Drawing.Point(13, 53);
+            this.lstResources.Name = "lstResources";
+            this.lstResources.Size = new System.Drawing.Size(267, 147);
+            this.lstResources.TabIndex = 1;
+            // 
+            // btnOK
+            // 
+            this.btnOK.Location = new System.Drawing.Point(109, 215);
+            this.btnOK.Name = "btnOK";
+            this.btnOK.Size = new System.Drawing.Size(75, 23);
+            this.btnOK.TabIndex = 2;
+            this.btnOK.Text = "OK";
+            this.btnOK.UseVisualStyleBackColor = true;
+            this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+            // 
+            // AffectedResourceIdsDlg
+            // 
+            this.AcceptButton = this.btnOK;
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(292, 251);
+            this.Controls.Add(this.btnOK);
+            this.Controls.Add(this.lstResources);
+            this.Controls.Add(this.label1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "AffectedResourceIdsDlg";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "Affected Resources";
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.ListBox lstResources;
+        private System.Windows.Forms.Button btnOK;
+    }
+}
\ No newline at end of file

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/AffectedResourceIdsDlg.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,48 @@
+#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;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    public partial class AffectedResourceIdsDlg : Form
+    {
+        public AffectedResourceIdsDlg()
+        {
+            InitializeComponent();
+        }
+
+        public AffectedResourceIdsDlg(string[] values)
+            : this()
+        {
+            lstResources.DataSource = values;
+        }
+
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.OK;
+        }
+    }
+}

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

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/BaseFileLoadProcedureCtrl.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/BaseFileLoadProcedureCtrl.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/BaseFileLoadProcedureCtrl.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,37 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class BaseFileLoadProcedureCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            components = new System.ComponentModel.Container();
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+        }
+
+        #endregion
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/BaseFileLoadProcedureCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/BaseFileLoadProcedureCtrl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/BaseFileLoadProcedureCtrl.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,126 @@
+#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.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    public partial class BaseFileLoadProcedureCtrl : UserControl, ILoadProcedureEditor
+    {
+        protected EditorInterface _ed;
+        private string _resourceID;
+
+        public event EventHandler ResourceModified;
+
+        public BaseFileLoadProcedureCtrl()
+        {
+            InitializeComponent();
+        }
+
+        public BaseFileLoadProcedureCtrl(EditorInterface ed)
+            : this()
+        {
+            InitializeComponent();
+            _ed = ed;
+        }
+
+        public BaseFileLoadProcedureCtrl(EditorInterface ed, string resourceID)
+            : base()
+        {
+            InitializeComponent();
+            _ed = ed;
+            _resourceID = resourceID;
+        }
+
+        public virtual bool CanExecute
+        {
+            get { return true; }
+        }
+
+        public object Resource
+        {
+            get;
+            set;
+        }
+
+        public virtual void UpdateDisplay()
+        {
+            
+        }
+
+        public string ResourceId
+        {
+            get;
+            set;
+        }
+
+        public virtual bool Preview()
+        {
+            return false;
+        }
+
+        public virtual bool ValidateResource(bool recursive)
+        {
+            return false;
+        }
+
+        public virtual bool Profile()
+        {
+            return false;
+        }
+
+        public virtual bool SupportsPreview
+        {
+            get { return false; }
+        }
+
+        public virtual bool SupportsValidate
+        {
+            get { return false; }
+        }
+
+        public virtual bool SupportsProfiling
+        {
+            get { return false; }
+        }
+
+        public virtual bool Save(string savename)
+        {
+            return false;
+        }
+
+        protected virtual void RaiseModified()
+        {
+            var handler = this.ResourceModified;
+            if (handler != null)
+                handler(this, EventArgs.Empty);
+        }
+
+        public virtual string[] GetAffectedResourceIds()
+        {
+            return new string[0];
+        }
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/DefaultLoadProcedureCtrl.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/DefaultLoadProcedureCtrl.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/DefaultLoadProcedureCtrl.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,37 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class DefaultLoadProcedureCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            components = new System.ComponentModel.Container();
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+        }
+
+        #endregion
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/DefaultLoadProcedureCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/DefaultLoadProcedureCtrl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/DefaultLoadProcedureCtrl.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,58 @@
+#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.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    public partial class DefaultLoadProcedureCtrl : XmlEditorControl, ILoadProcedureEditor
+    {
+        public DefaultLoadProcedureCtrl(EditorInterface ed)
+            : base(ed)
+        {
+            InitializeComponent();
+        }
+
+        public DefaultLoadProcedureCtrl(EditorInterface ed, string resourceID)
+            : base(ed, resourceID)
+        {
+            InitializeComponent();
+        }
+
+        public bool CanExecute
+        {
+            get { return false; }
+        }
+
+
+        public event EventHandler ResourceModified;
+
+
+        public string[] GetAffectedResourceIds()
+        {
+            return new string[0];
+        }
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ILoadProcedureEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ILoadProcedureEditor.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ILoadProcedureEditor.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,34 @@
+#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.Text;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    public interface ILoadProcedureEditor : IResourceEditorControl
+    {
+        bool CanExecute { get; }
+
+        event EventHandler ResourceModified;
+
+        string[] GetAffectedResourceIds();
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,88 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class LoadProcedureCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.childPanel = new System.Windows.Forms.Panel();
+            this.btnLoadResources = new System.Windows.Forms.Button();
+            this.btnListAffected = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // childPanel
+            // 
+            this.childPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.childPanel.AutoScroll = true;
+            this.childPanel.Location = new System.Drawing.Point(4, 4);
+            this.childPanel.Name = "childPanel";
+            this.childPanel.Size = new System.Drawing.Size(573, 424);
+            this.childPanel.TabIndex = 0;
+            // 
+            // btnLoadResources
+            // 
+            this.btnLoadResources.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+            this.btnLoadResources.Location = new System.Drawing.Point(16, 443);
+            this.btnLoadResources.Name = "btnLoadResources";
+            this.btnLoadResources.Size = new System.Drawing.Size(138, 23);
+            this.btnLoadResources.TabIndex = 1;
+            this.btnLoadResources.Text = "Load Resources";
+            this.btnLoadResources.UseVisualStyleBackColor = true;
+            this.btnLoadResources.Click += new System.EventHandler(this.btnLoadResources_Click);
+            // 
+            // btnListAffected
+            // 
+            this.btnListAffected.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+            this.btnListAffected.Location = new System.Drawing.Point(160, 443);
+            this.btnListAffected.Name = "btnListAffected";
+            this.btnListAffected.Size = new System.Drawing.Size(138, 23);
+            this.btnListAffected.TabIndex = 2;
+            this.btnListAffected.Text = "List Affected Resources";
+            this.btnListAffected.UseVisualStyleBackColor = true;
+            this.btnListAffected.Click += new System.EventHandler(this.btnListAffected_Click);
+            // 
+            // LoadProcedureCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.btnListAffected);
+            this.Controls.Add(this.btnLoadResources);
+            this.Controls.Add(this.childPanel);
+            this.Name = "LoadProcedureCtrl";
+            this.Size = new System.Drawing.Size(580, 481);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Panel childPanel;
+        private System.Windows.Forms.Button btnLoadResources;
+        private System.Windows.Forms.Button btnListAffected;
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedureCtrl.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,225 @@
+#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.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    internal enum LoadProcType
+    {
+        SDF,
+        SHP,
+        SQLite,
+        Other
+    }
+
+    public partial class LoadProcedureCtrl : UserControl, IResourceEditorControl
+    {
+        private ILoadProcedureEditor _childEditor;
+
+        private EditorInterface _ed;
+        private string _resourceID;
+        private bool _isNew;
+
+        internal LoadProcedureCtrl()
+        {
+            InitializeComponent();
+        }
+
+        public LoadProcedureCtrl(EditorInterface ed)
+            : this()
+        {
+            _ed = ed;
+            _isNew = true;
+            InitChildEditor();
+        }
+
+        public LoadProcedureCtrl(EditorInterface ed, string resourceID)
+            : this()
+        {
+            _ed = ed;
+            _resourceID = resourceID;
+            _isNew = false;
+            InitChildEditor();
+        }
+
+        private void InitChildEditor()
+        {
+            if (_isNew)
+            {
+                var dlg = new LoadProcedurePicker();
+                if (dlg.ShowDialog() == DialogResult.OK)
+                {
+                    switch (dlg.LoadProcedureType)
+                    {
+                        case LoadProcType.SDF:
+                            _childEditor = new SdfLoadProcedureCtrl(_ed);
+                            break;
+                        case LoadProcType.SHP:
+                            _childEditor = new ShpLoadProcedureCtrl(_ed);
+                            break;
+                        default:
+                            _childEditor = new DefaultLoadProcedureCtrl(_ed);
+                            break;
+                    }
+                }
+                else
+                {
+                    _childEditor = new DefaultLoadProcedureCtrl(_ed);
+                }
+            }
+            else
+            {
+                MaestroAPI.LoadProcedure proc = (MaestroAPI.LoadProcedure)_ed.CurrentConnection.GetResource(_resourceID);
+                if (proc.Item.GetType() == typeof(MaestroAPI.SdfLoadProcedureType))
+                {
+                    _childEditor = new SdfLoadProcedureCtrl(_ed, _resourceID);
+                }
+                else if (proc.Item.GetType() == typeof(MaestroAPI.ShpLoadProcedureType))
+                {
+                    _childEditor = new ShpLoadProcedureCtrl(_ed, _resourceID);
+                }
+                else
+                {
+                    _childEditor = new DefaultLoadProcedureCtrl(_ed, _resourceID);
+                }
+
+                _childEditor.Resource = proc;
+                UpdateDisplay();
+            }
+
+            if (_childEditor != null)
+            {
+                _childEditor.ResourceModified += (sender, e) => { _ed.HasChanged(); };
+
+                Control c = ((Control)_childEditor);
+                c.Dock = DockStyle.Fill;
+                childPanel.Controls.Add(c);
+                btnLoadResources.Enabled = _childEditor.CanExecute;
+            }
+        }
+
+        public object Resource
+        {
+            get
+            {
+                return _childEditor.Resource;
+            }
+            set
+            {
+                _childEditor.Resource = value;
+            }
+        }
+
+        public void UpdateDisplay()
+        {
+            _childEditor.UpdateDisplay();
+        }
+
+        public string ResourceId
+        {
+            get
+            {
+                return _childEditor.ResourceId;
+            }
+            set
+            {
+                _childEditor.ResourceId = value;
+            }
+        }
+
+        public bool Preview()
+        {
+            return _childEditor.Preview();
+        }
+
+        public bool ValidateResource(bool recursive)
+        {
+            return _childEditor.ValidateResource(recursive);
+        }
+
+        public bool Profile()
+        {
+            return _childEditor.Profile();
+        }
+
+        public bool SupportsPreview
+        {
+            get { return _childEditor.SupportsPreview; }
+        }
+
+        public bool SupportsValidate
+        {
+            get { return _childEditor.SupportsValidate; }
+        }
+
+        public bool SupportsProfiling
+        {
+            get { return _childEditor.SupportsProfiling; }
+        }
+
+        public bool Save(string savename)
+        {
+            return _childEditor.Save(savename);
+        }
+
+        private void btnLoadResources_Click(object sender, EventArgs e)
+        {
+            WaitForOperation dlg = new WaitForOperation();
+            dlg.CancelAbortsThread = true;
+
+            Form ownerForm = this.ParentForm;
+            WaitForOperation.DoBackgroundWork worker = new WaitForOperation.DoBackgroundWork(ExecuteLoadProcedure);
+
+            try
+            {
+                dlg.RunOperationAsync(ownerForm, worker, _ed.CurrentConnection, _resourceID);
+            }
+            catch (CancelException)
+            {
+                MessageBox.Show("Operation Cancelled");
+            }
+        }
+
+        private object ExecuteLoadProcedure(BackgroundWorker worker, DoWorkEventArgs de, params object[] args)
+        {
+            MaestroAPI.LengthyOperationProgressCallBack cb = (s, cbArgs) =>
+            {
+                worker.ReportProgress(cbArgs.Progress, cbArgs.StatusMessage);
+            };
+
+            MaestroAPI.ServerConnectionI conn = (MaestroAPI.ServerConnectionI)args[0];
+            string lpID = (string)args[1];
+            conn.ExecuteLoadProcedure(lpID, true, cb);
+
+            return true;
+        }
+
+        private void btnListAffected_Click(object sender, EventArgs e)
+        {
+            new AffectedResourceIdsDlg(_childEditor.GetAffectedResourceIds()).ShowDialog();
+        }
+    }
+}

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

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,132 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class LoadProcedurePicker
+    {
+        /// <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.rdSdf = new System.Windows.Forms.RadioButton();
+            this.rdShp = new System.Windows.Forms.RadioButton();
+            this.rdSqlite = new System.Windows.Forms.RadioButton();
+            this.rdOther = new System.Windows.Forms.RadioButton();
+            this.btnOK = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(13, 13);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(220, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Choose the type of Load Procedure to create";
+            // 
+            // rdSdf
+            // 
+            this.rdSdf.AutoSize = true;
+            this.rdSdf.Checked = true;
+            this.rdSdf.Location = new System.Drawing.Point(43, 51);
+            this.rdSdf.Name = "rdSdf";
+            this.rdSdf.Size = new System.Drawing.Size(46, 17);
+            this.rdSdf.TabIndex = 1;
+            this.rdSdf.TabStop = true;
+            this.rdSdf.Text = "SDF";
+            this.rdSdf.UseVisualStyleBackColor = true;
+            // 
+            // rdShp
+            // 
+            this.rdShp.AutoSize = true;
+            this.rdShp.Location = new System.Drawing.Point(43, 74);
+            this.rdShp.Name = "rdShp";
+            this.rdShp.Size = new System.Drawing.Size(47, 17);
+            this.rdShp.TabIndex = 2;
+            this.rdShp.Text = "SHP";
+            this.rdShp.UseVisualStyleBackColor = true;
+            // 
+            // rdSqlite
+            // 
+            this.rdSqlite.AutoSize = true;
+            this.rdSqlite.Location = new System.Drawing.Point(43, 97);
+            this.rdSqlite.Name = "rdSqlite";
+            this.rdSqlite.Size = new System.Drawing.Size(57, 17);
+            this.rdSqlite.TabIndex = 3;
+            this.rdSqlite.Text = "SQLite";
+            this.rdSqlite.UseVisualStyleBackColor = true;
+            // 
+            // rdOther
+            // 
+            this.rdOther.AutoSize = true;
+            this.rdOther.Location = new System.Drawing.Point(43, 120);
+            this.rdOther.Name = "rdOther";
+            this.rdOther.Size = new System.Drawing.Size(233, 17);
+            this.rdOther.TabIndex = 4;
+            this.rdOther.Text = "Other (will use XML Editor, may not execute)";
+            this.rdOther.UseVisualStyleBackColor = true;
+            // 
+            // btnOK
+            // 
+            this.btnOK.Location = new System.Drawing.Point(109, 165);
+            this.btnOK.Name = "btnOK";
+            this.btnOK.Size = new System.Drawing.Size(75, 23);
+            this.btnOK.TabIndex = 5;
+            this.btnOK.Text = "OK";
+            this.btnOK.UseVisualStyleBackColor = true;
+            this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+            // 
+            // LoadProcedurePicker
+            // 
+            this.AcceptButton = this.btnOK;
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(292, 200);
+            this.ControlBox = false;
+            this.Controls.Add(this.btnOK);
+            this.Controls.Add(this.rdOther);
+            this.Controls.Add(this.rdSqlite);
+            this.Controls.Add(this.rdShp);
+            this.Controls.Add(this.rdSdf);
+            this.Controls.Add(this.label1);
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "LoadProcedurePicker";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "Load Procedure Type";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.RadioButton rdSdf;
+        private System.Windows.Forms.RadioButton rdShp;
+        private System.Windows.Forms.RadioButton rdSqlite;
+        private System.Windows.Forms.RadioButton rdOther;
+        private System.Windows.Forms.Button btnOK;
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,57 @@
+#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;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    internal partial class LoadProcedurePicker : Form
+    {
+        public LoadProcedurePicker()
+        {
+            InitializeComponent();
+        }
+
+        internal LoadProcType LoadProcedureType
+        {
+            get
+            {
+                LoadProcType lt = LoadProcType.Other;
+                if (rdSdf.Checked)
+                    lt = LoadProcType.SDF;
+                else if (rdShp.Checked)
+                    lt = LoadProcType.SHP;
+                else if (rdSqlite.Checked)
+                    lt = LoadProcType.SQLite;
+                return lt;
+            }
+        }
+
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            this.DialogResult = DialogResult.OK;
+        }
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.resx
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.resx	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadProcedurePicker.resx	2010-04-12 13:54:24 UTC (rev 4781)
@@ -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>

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,230 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class LoadSettingsCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.label6 = new System.Windows.Forms.Label();
+            this.label5 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.txtLayerFolderName = new System.Windows.Forms.TextBox();
+            this.txtFeatureSourceFolderName = new System.Windows.Forms.TextBox();
+            this.btnBrowseLayerRoot = new System.Windows.Forms.Button();
+            this.txtLayerRoot = new System.Windows.Forms.TextBox();
+            this.btnBrowseFsRoot = new System.Windows.Forms.Button();
+            this.txtFeatureSourceRoot = new System.Windows.Forms.TextBox();
+            this.chkLoadFeatureSources = new System.Windows.Forms.CheckBox();
+            this.chkLoadLayers = new System.Windows.Forms.CheckBox();
+            this.btnBrowseResourceRoot = new System.Windows.Forms.Button();
+            this.txtRootPath = new System.Windows.Forms.TextBox();
+            this.label3 = new System.Windows.Forms.Label();
+            this.SuspendLayout();
+            // 
+            // label6
+            // 
+            this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.label6.AutoSize = true;
+            this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label6.Location = new System.Drawing.Point(375, 27);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(78, 13);
+            this.label6.TabIndex = 32;
+            this.label6.Text = "Folder Name";
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label5.Location = new System.Drawing.Point(142, 27);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(71, 13);
+            this.label5.TabIndex = 31;
+            this.label5.Text = "In this path";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label4.Location = new System.Drawing.Point(1, 27);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(44, 13);
+            this.label4.TabIndex = 30;
+            this.label4.Text = "Create";
+            // 
+            // txtLayerFolderName
+            // 
+            this.txtLayerFolderName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtLayerFolderName.Location = new System.Drawing.Point(378, 73);
+            this.txtLayerFolderName.Name = "txtLayerFolderName";
+            this.txtLayerFolderName.Size = new System.Drawing.Size(107, 20);
+            this.txtLayerFolderName.TabIndex = 29;
+            // 
+            // txtFeatureSourceFolderName
+            // 
+            this.txtFeatureSourceFolderName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtFeatureSourceFolderName.Location = new System.Drawing.Point(378, 50);
+            this.txtFeatureSourceFolderName.Name = "txtFeatureSourceFolderName";
+            this.txtFeatureSourceFolderName.Size = new System.Drawing.Size(107, 20);
+            this.txtFeatureSourceFolderName.TabIndex = 28;
+            // 
+            // btnBrowseLayerRoot
+            // 
+            this.btnBrowseLayerRoot.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnBrowseLayerRoot.Location = new System.Drawing.Point(346, 71);
+            this.btnBrowseLayerRoot.Name = "btnBrowseLayerRoot";
+            this.btnBrowseLayerRoot.Size = new System.Drawing.Size(26, 23);
+            this.btnBrowseLayerRoot.TabIndex = 27;
+            this.btnBrowseLayerRoot.Text = "...";
+            this.btnBrowseLayerRoot.UseVisualStyleBackColor = true;
+            this.btnBrowseLayerRoot.Click += new System.EventHandler(this.btnBrowseLayerRoot_Click);
+            // 
+            // txtLayerRoot
+            // 
+            this.txtLayerRoot.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtLayerRoot.Location = new System.Drawing.Point(145, 73);
+            this.txtLayerRoot.Name = "txtLayerRoot";
+            this.txtLayerRoot.ReadOnly = true;
+            this.txtLayerRoot.Size = new System.Drawing.Size(195, 20);
+            this.txtLayerRoot.TabIndex = 26;
+            // 
+            // btnBrowseFolderRoot
+            // 
+            this.btnBrowseFsRoot.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnBrowseFsRoot.Location = new System.Drawing.Point(346, 48);
+            this.btnBrowseFsRoot.Name = "btnBrowseFolderRoot";
+            this.btnBrowseFsRoot.Size = new System.Drawing.Size(26, 23);
+            this.btnBrowseFsRoot.TabIndex = 25;
+            this.btnBrowseFsRoot.Text = "...";
+            this.btnBrowseFsRoot.UseVisualStyleBackColor = true;
+            this.btnBrowseFsRoot.Click += new System.EventHandler(this.btnBrowseFolderRoot_Click);
+            // 
+            // txtFeatureSourceRoot
+            // 
+            this.txtFeatureSourceRoot.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtFeatureSourceRoot.Location = new System.Drawing.Point(145, 50);
+            this.txtFeatureSourceRoot.Name = "txtFeatureSourceRoot";
+            this.txtFeatureSourceRoot.ReadOnly = true;
+            this.txtFeatureSourceRoot.Size = new System.Drawing.Size(195, 20);
+            this.txtFeatureSourceRoot.TabIndex = 24;
+            // 
+            // chkLoadFeatureSources
+            // 
+            this.chkLoadFeatureSources.AutoSize = true;
+            this.chkLoadFeatureSources.Location = new System.Drawing.Point(4, 52);
+            this.chkLoadFeatureSources.Name = "chkLoadFeatureSources";
+            this.chkLoadFeatureSources.Size = new System.Drawing.Size(104, 17);
+            this.chkLoadFeatureSources.TabIndex = 23;
+            this.chkLoadFeatureSources.Text = "Feature Sources";
+            this.chkLoadFeatureSources.UseVisualStyleBackColor = true;
+            this.chkLoadFeatureSources.CheckedChanged += new System.EventHandler(this.chkLoadFeatureSources_CheckedChanged);
+            // 
+            // chkLoadLayers
+            // 
+            this.chkLoadLayers.AutoSize = true;
+            this.chkLoadLayers.Location = new System.Drawing.Point(4, 75);
+            this.chkLoadLayers.Name = "chkLoadLayers";
+            this.chkLoadLayers.Size = new System.Drawing.Size(104, 17);
+            this.chkLoadLayers.TabIndex = 22;
+            this.chkLoadLayers.Text = "Layer Definitions";
+            this.chkLoadLayers.UseVisualStyleBackColor = true;
+            this.chkLoadLayers.CheckedChanged += new System.EventHandler(this.chkLoadLayers_CheckedChanged);
+            // 
+            // btnBrowseResourceRoot
+            // 
+            this.btnBrowseResourceRoot.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnBrowseResourceRoot.Location = new System.Drawing.Point(459, 0);
+            this.btnBrowseResourceRoot.Name = "btnBrowseResourceRoot";
+            this.btnBrowseResourceRoot.Size = new System.Drawing.Size(26, 23);
+            this.btnBrowseResourceRoot.TabIndex = 21;
+            this.btnBrowseResourceRoot.Text = "...";
+            this.btnBrowseResourceRoot.UseVisualStyleBackColor = true;
+            this.btnBrowseResourceRoot.Click += new System.EventHandler(this.btnBrowseResourceRoot_Click);
+            // 
+            // txtRootPath
+            // 
+            this.txtRootPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtRootPath.Location = new System.Drawing.Point(145, 2);
+            this.txtRootPath.Name = "txtRootPath";
+            this.txtRootPath.ReadOnly = true;
+            this.txtRootPath.Size = new System.Drawing.Size(308, 20);
+            this.txtRootPath.TabIndex = 20;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(1, 5);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(138, 13);
+            this.label3.TabIndex = 19;
+            this.label3.Text = "Load Resources Into Folder";
+            // 
+            // LoadSettingsCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.label6);
+            this.Controls.Add(this.label5);
+            this.Controls.Add(this.label4);
+            this.Controls.Add(this.txtLayerFolderName);
+            this.Controls.Add(this.txtFeatureSourceFolderName);
+            this.Controls.Add(this.btnBrowseLayerRoot);
+            this.Controls.Add(this.txtLayerRoot);
+            this.Controls.Add(this.btnBrowseFsRoot);
+            this.Controls.Add(this.txtFeatureSourceRoot);
+            this.Controls.Add(this.chkLoadFeatureSources);
+            this.Controls.Add(this.chkLoadLayers);
+            this.Controls.Add(this.btnBrowseResourceRoot);
+            this.Controls.Add(this.txtRootPath);
+            this.Controls.Add(this.label3);
+            this.Name = "LoadSettingsCtrl";
+            this.Size = new System.Drawing.Size(488, 96);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        protected System.Windows.Forms.Label label6;
+        protected System.Windows.Forms.Label label5;
+        protected System.Windows.Forms.Label label4;
+        protected System.Windows.Forms.TextBox txtLayerFolderName;
+        protected System.Windows.Forms.TextBox txtFeatureSourceFolderName;
+        protected System.Windows.Forms.Button btnBrowseLayerRoot;
+        protected System.Windows.Forms.TextBox txtLayerRoot;
+        protected System.Windows.Forms.Button btnBrowseFsRoot;
+        protected System.Windows.Forms.TextBox txtFeatureSourceRoot;
+        protected System.Windows.Forms.CheckBox chkLoadFeatureSources;
+        protected System.Windows.Forms.CheckBox chkLoadLayers;
+        protected System.Windows.Forms.Button btnBrowseResourceRoot;
+        protected System.Windows.Forms.TextBox txtRootPath;
+        protected System.Windows.Forms.Label label3;
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,186 @@
+#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.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    public partial class LoadSettingsCtrl : UserControl
+    {
+        public event EventHandler Modified;
+
+        public LoadSettingsCtrl()
+        {
+            InitializeComponent();
+            this.LoadFeatureSources = false;
+            this.LoadLayers = false;
+        }
+
+        public EditorInterface Editor
+        {
+            get;
+            set;
+        }
+
+        private void RaiseModified()
+        {
+            var handler = this.Modified;
+            if (handler != null)
+                handler(this, EventArgs.Empty);
+        }
+
+        public string ResourceRootPath
+        {
+            get { return txtRootPath.Text; }
+            set 
+            {
+                string oldValue = txtRootPath.Text;
+                txtRootPath.Text = value; 
+                if (this.FeatureSourceRootPath == oldValue || string.IsNullOrEmpty(this.FeatureSourceRootPath))
+                {
+                    this.FeatureSourceRootPath = value;
+                }
+                if (this.LayerRootPath == oldValue || string.IsNullOrEmpty(this.LayerRootPath))
+                {
+                    this.LayerRootPath = value;
+                }
+
+                RaiseModified();
+            }
+        }
+
+        public string LayerRootPath
+        {
+            get { return txtLayerRoot.Text; }
+            set 
+            { 
+                txtLayerRoot.Text = value;
+                RaiseModified();
+            }
+        }
+
+        public string FeatureSourceRootPath
+        {
+            get { return txtFeatureSourceRoot.Text; }
+            set 
+            {
+                txtFeatureSourceRoot.Text = value;
+                RaiseModified();
+            }
+        }
+
+        public string LayerFolderName
+        {
+            get { return txtLayerFolderName.Text; }
+            set 
+            {
+                txtLayerFolderName.Text = value;
+                RaiseModified();
+            }
+        }
+
+        public string FeatureSourceFolderName
+        {
+            get { return txtFeatureSourceFolderName.Text; }
+            set 
+            { 
+                txtFeatureSourceFolderName.Text = value;
+                RaiseModified();
+            }
+        }
+
+        public bool LoadFeatureSources
+        {
+            get { return chkLoadFeatureSources.Checked; }
+            set 
+            { 
+                chkLoadFeatureSources.Checked = value;
+                RaiseModified();
+            }
+        }
+
+        public bool LoadLayers
+        {
+            get { return chkLoadLayers.Checked; }
+            set 
+            { 
+                chkLoadLayers.Checked = value;
+                RaiseModified();
+            }
+        }
+
+        private void chkLoadFeatureSources_CheckedChanged(object sender, EventArgs e)
+        {
+            txtFeatureSourceFolderName.Enabled = txtFeatureSourceRoot.Enabled = btnBrowseFsRoot.Enabled = chkLoadFeatureSources.Checked;
+            RaiseModified();
+        }
+
+        private void chkLoadLayers_CheckedChanged(object sender, EventArgs e)
+        {
+            txtLayerFolderName.Enabled = txtLayerRoot.Enabled = btnBrowseLayerRoot.Enabled = chkLoadLayers.Checked;
+            RaiseModified();
+        }
+
+        private string GetFolderPath()
+        {
+            if (this.Editor != null)
+            {
+                string value = this.Editor.BrowseResource("Folder");
+                if (value != null)
+                {
+                    return value;
+                }
+            }
+            return null;
+        }
+
+        private void btnBrowseResourceRoot_Click(object sender, EventArgs e)
+        {
+            string value = GetFolderPath();
+            if (value != null)
+            {
+                this.ResourceRootPath = value;
+            }
+        }
+
+        private void btnBrowseFolderRoot_Click(object sender, EventArgs e)
+        {
+            string value = GetFolderPath();
+            if (value != null)
+            {
+                this.FeatureSourceRootPath = value;
+            }
+        }
+
+        private void btnBrowseLayerRoot_Click(object sender, EventArgs e)
+        {
+            string value = GetFolderPath();
+            if (value != null)
+            {
+                this.LayerRootPath = value;
+            }
+        }
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.resx
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.resx	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/LoadSettingsCtrl.resx	2010-04-12 13:54:24 UTC (rev 4781)
@@ -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>

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,221 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class SdfLoadProcedureCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.sourceFilesCtrl1 = new OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors.SourceFilesCtrl();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.cmbSdfDuplicateStrategy = new System.Windows.Forms.ComboBox();
+            this.label3 = new System.Windows.Forms.Label();
+            this.numGeneralize = new System.Windows.Forms.NumericUpDown();
+            this.label2 = new System.Windows.Forms.Label();
+            this.btnBrowseCS = new System.Windows.Forms.Button();
+            this.txtDefaultCs = new System.Windows.Forms.TextBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.loadSettingsCtrl1 = new OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors.LoadSettingsCtrl();
+            this.groupBox1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.numGeneralize)).BeginInit();
+            this.groupBox3.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox1.Controls.Add(this.sourceFilesCtrl1);
+            this.groupBox1.Location = new System.Drawing.Point(3, 3);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(592, 130);
+            this.groupBox1.TabIndex = 0;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "Source Files";
+            // 
+            // sourceFilesCtrl1
+            // 
+            this.sourceFilesCtrl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.sourceFilesCtrl1.FileFilter = global::OSGeo.MapGuide.Maestro.ResourceEditors.LayoutControls.Strings.BasicCommand.DuplicateRenameError;
+            this.sourceFilesCtrl1.Location = new System.Drawing.Point(3, 16);
+            this.sourceFilesCtrl1.Name = "sourceFilesCtrl1";
+            this.sourceFilesCtrl1.Size = new System.Drawing.Size(586, 111);
+            this.sourceFilesCtrl1.SourceFiles = new string[0];
+            this.sourceFilesCtrl1.TabIndex = 0;
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox2.Controls.Add(this.cmbSdfDuplicateStrategy);
+            this.groupBox2.Controls.Add(this.label3);
+            this.groupBox2.Controls.Add(this.numGeneralize);
+            this.groupBox2.Controls.Add(this.label2);
+            this.groupBox2.Controls.Add(this.btnBrowseCS);
+            this.groupBox2.Controls.Add(this.txtDefaultCs);
+            this.groupBox2.Controls.Add(this.label1);
+            this.groupBox2.Location = new System.Drawing.Point(3, 139);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(592, 142);
+            this.groupBox2.TabIndex = 1;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "Transformation";
+            // 
+            // cmbSdfDuplicateStrategy
+            // 
+            this.cmbSdfDuplicateStrategy.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.cmbSdfDuplicateStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cmbSdfDuplicateStrategy.Enabled = false;
+            this.cmbSdfDuplicateStrategy.FormattingEnabled = true;
+            this.cmbSdfDuplicateStrategy.Location = new System.Drawing.Point(275, 74);
+            this.cmbSdfDuplicateStrategy.Name = "cmbSdfDuplicateStrategy";
+            this.cmbSdfDuplicateStrategy.Size = new System.Drawing.Size(311, 21);
+            this.cmbSdfDuplicateStrategy.TabIndex = 26;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Enabled = false;
+            this.label3.Location = new System.Drawing.Point(6, 77);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(252, 13);
+            this.label3.TabIndex = 25;
+            this.label3.Text = "For SDF files that contain records with the same key";
+            // 
+            // numGeneralize
+            // 
+            this.numGeneralize.Enabled = false;
+            this.numGeneralize.Location = new System.Drawing.Point(275, 48);
+            this.numGeneralize.Name = "numGeneralize";
+            this.numGeneralize.Size = new System.Drawing.Size(58, 20);
+            this.numGeneralize.TabIndex = 24;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Enabled = false;
+            this.label2.Location = new System.Drawing.Point(6, 50);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(171, 13);
+            this.label2.TabIndex = 23;
+            this.label2.Text = "Generalize data by this percentage";
+            // 
+            // btnBrowseCS
+            // 
+            this.btnBrowseCS.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnBrowseCS.Location = new System.Drawing.Point(560, 20);
+            this.btnBrowseCS.Name = "btnBrowseCS";
+            this.btnBrowseCS.Size = new System.Drawing.Size(26, 23);
+            this.btnBrowseCS.TabIndex = 22;
+            this.btnBrowseCS.Text = "...";
+            this.btnBrowseCS.UseVisualStyleBackColor = true;
+            this.btnBrowseCS.Click += new System.EventHandler(this.btnBrowseCS_Click);
+            // 
+            // txtDefaultCs
+            // 
+            this.txtDefaultCs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtDefaultCs.Location = new System.Drawing.Point(275, 22);
+            this.txtDefaultCs.Name = "txtDefaultCs";
+            this.txtDefaultCs.ReadOnly = true;
+            this.txtDefaultCs.Size = new System.Drawing.Size(281, 20);
+            this.txtDefaultCs.TabIndex = 1;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(6, 25);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(250, 13);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Use the following Coordinate System (if none found)";
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox3.Controls.Add(this.loadSettingsCtrl1);
+            this.groupBox3.Location = new System.Drawing.Point(3, 287);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(592, 121);
+            this.groupBox3.TabIndex = 2;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "Load Settings";
+            // 
+            // loadSettingsCtrl1
+            // 
+            this.loadSettingsCtrl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.loadSettingsCtrl1.Editor = null;
+            this.loadSettingsCtrl1.FeatureSourceFolderName = "";
+            this.loadSettingsCtrl1.FeatureSourceRootPath = "";
+            this.loadSettingsCtrl1.LayerFolderName = "";
+            this.loadSettingsCtrl1.LayerRootPath = "";
+            this.loadSettingsCtrl1.LoadFeatureSources = false;
+            this.loadSettingsCtrl1.LoadLayers = false;
+            this.loadSettingsCtrl1.Location = new System.Drawing.Point(3, 16);
+            this.loadSettingsCtrl1.Name = "loadSettingsCtrl1";
+            this.loadSettingsCtrl1.ResourceRootPath = "";
+            this.loadSettingsCtrl1.Size = new System.Drawing.Size(586, 102);
+            this.loadSettingsCtrl1.TabIndex = 0;
+            // 
+            // SdfLoadProcedureCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.groupBox3);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.Name = "SdfLoadProcedureCtrl";
+            this.Size = new System.Drawing.Size(598, 411);
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.numGeneralize)).EndInit();
+            this.groupBox3.ResumeLayout(false);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.GroupBox groupBox1;
+        private SourceFilesCtrl sourceFilesCtrl1;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private LoadSettingsCtrl loadSettingsCtrl1;
+        private System.Windows.Forms.TextBox txtDefaultCs;
+        private System.Windows.Forms.Label label1;
+        protected System.Windows.Forms.Button btnBrowseCS;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.NumericUpDown numGeneralize;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.ComboBox cmbSdfDuplicateStrategy;
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,143 @@
+#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.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.MaestroAPI;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    //NOTE: Except for Default CS, all transformation settings are disabled because
+    //backend support for those features does not exist for this load procedure yet.
+
+    public partial class SdfLoadProcedureCtrl : BaseFileLoadProcedureCtrl
+    {
+        public SdfLoadProcedureCtrl()
+        {
+            InitializeComponent();
+            cmbSdfDuplicateStrategy.DataSource = Enum.GetValues(typeof(SdfKeyTreatmentType));
+        }
+
+        public SdfLoadProcedureCtrl(EditorInterface ed)
+            : base(ed)
+        {
+            InitializeComponent();
+            cmbSdfDuplicateStrategy.DataSource = Enum.GetValues(typeof(SdfKeyTreatmentType));
+        }
+
+        public SdfLoadProcedureCtrl(EditorInterface ed, string resourceID)
+            : base(ed, resourceID)
+        {
+            InitializeComponent();
+            cmbSdfDuplicateStrategy.DataSource = Enum.GetValues(typeof(SdfKeyTreatmentType));
+        }
+
+        protected override void OnLoad(EventArgs e)
+        {
+            loadSettingsCtrl1.Editor = _ed;
+            sourceFilesCtrl1.FileFilter = "SDF Files (*.sdf)|*.sdf"; //TODO: Localize
+
+            loadSettingsCtrl1.Modified += (sender, evt) => { if (!_isUpdating) base.RaiseModified(); };
+            sourceFilesCtrl1.Modified += (sender, evt) => { if (!_isUpdating) base.RaiseModified(); };
+        }
+
+        private bool _isUpdating;
+
+        public override void UpdateDisplay()
+        {
+            LoadProcedure lp = this.Resource as LoadProcedure;
+            if (lp != null)
+            {
+                SdfLoadProcedureType sdfl = lp.Item as SdfLoadProcedureType;
+                if (sdfl != null)
+                {
+                    _isUpdating = true;
+                    sourceFilesCtrl1.SourceFiles = (sdfl.SourceFile != null) ? sdfl.SourceFile : new string[0];
+
+                    txtDefaultCs.Text = sdfl.CoordinateSystem;
+                    numGeneralize.Value = (decimal)sdfl.Generalization;
+                    cmbSdfDuplicateStrategy.SelectedItem = sdfl.SdfKeyTreatment;
+
+                    loadSettingsCtrl1.LoadFeatureSources = sdfl.GenerateSpatialDataSources;
+                    loadSettingsCtrl1.LoadLayers = sdfl.GenerateLayers;
+                    loadSettingsCtrl1.FeatureSourceFolderName = sdfl.SpatialDataSourcesFolder;
+                    loadSettingsCtrl1.FeatureSourceRootPath = sdfl.SpatialDataSourcesPath;
+                    loadSettingsCtrl1.LayerFolderName = sdfl.LayersFolder;
+                    loadSettingsCtrl1.LayerRootPath = sdfl.LayersPath;
+                    loadSettingsCtrl1.ResourceRootPath = sdfl.RootPath;
+                    _isUpdating = false;
+                }
+            }
+        }
+
+        public override bool Save(string savename)
+        {
+            LoadProcedure lp = this.Resource as LoadProcedure;
+            if (lp != null)
+            {
+                SdfLoadProcedureType sdfl = lp.Item as SdfLoadProcedureType;
+                if (sdfl != null)
+                {
+                    sdfl.SourceFile = sourceFilesCtrl1.SourceFiles;
+
+                    sdfl.CoordinateSystem = txtDefaultCs.Text;
+                    sdfl.Generalization = (double)numGeneralize.Value;
+                    sdfl.SdfKeyTreatment = (SdfKeyTreatmentType)cmbSdfDuplicateStrategy.SelectedItem;
+
+                    sdfl.GenerateSpatialDataSources = loadSettingsCtrl1.LoadFeatureSources;
+                    sdfl.GenerateLayers = loadSettingsCtrl1.LoadLayers;
+                    sdfl.SpatialDataSourcesFolder = loadSettingsCtrl1.FeatureSourceFolderName;
+                    sdfl.SpatialDataSourcesPath = loadSettingsCtrl1.FeatureSourceRootPath;
+                    sdfl.LayersFolder = loadSettingsCtrl1.LayerFolderName;
+                    sdfl.LayersPath = loadSettingsCtrl1.LayerRootPath;
+                    sdfl.RootPath = loadSettingsCtrl1.ResourceRootPath;
+                }
+            }
+            return false;
+        }
+
+        private void btnBrowseCS_Click(object sender, EventArgs e)
+        {
+            SelectCoordinateSystem dlg = new SelectCoordinateSystem(_ed.CurrentConnection);
+            dlg.SetWKT(txtDefaultCs.Text);
+            if (dlg.ShowDialog(this) == DialogResult.OK)
+                txtDefaultCs.Text = dlg.SelectedCoordSys.Projection;
+        }
+
+        public override string[] GetAffectedResourceIds()
+        {
+            List<string> affected = new List<string>();
+            foreach (string f in sourceFilesCtrl1.SourceFiles)
+            {
+                string name = System.IO.Path.GetFileNameWithoutExtension(f);
+
+                if (loadSettingsCtrl1.LoadFeatureSources)
+                    affected.Add(loadSettingsCtrl1.FeatureSourceRootPath + loadSettingsCtrl1.FeatureSourceFolderName + "/" + name + ".FeatureSource");
+                if (loadSettingsCtrl1.LoadLayers)
+                    affected.Add(loadSettingsCtrl1.LayerRootPath + loadSettingsCtrl1.LayerFolderName + "/" + name + ".LayerDefinition");
+            }
+            return affected.ToArray();
+        }
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.resx
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.resx	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SdfLoadProcedureCtrl.resx	2010-04-12 13:54:24 UTC (rev 4781)
@@ -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>

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,207 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class ShpLoadProcedureCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.loadSettingsCtrl1 = new OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors.LoadSettingsCtrl();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.chkConvertSdf = new System.Windows.Forms.CheckBox();
+            this.btnBrowseCS = new System.Windows.Forms.Button();
+            this.numGeneralize = new System.Windows.Forms.NumericUpDown();
+            this.label2 = new System.Windows.Forms.Label();
+            this.txtDefaultCs = new System.Windows.Forms.TextBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.sourceFilesCtrl1 = new OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors.SourceFilesCtrl();
+            this.groupBox3.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.numGeneralize)).BeginInit();
+            this.groupBox1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox3.Controls.Add(this.loadSettingsCtrl1);
+            this.groupBox3.Location = new System.Drawing.Point(3, 275);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(527, 121);
+            this.groupBox3.TabIndex = 5;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "Load Settings";
+            // 
+            // loadSettingsCtrl1
+            // 
+            this.loadSettingsCtrl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.loadSettingsCtrl1.Editor = null;
+            this.loadSettingsCtrl1.FeatureSourceFolderName = "";
+            this.loadSettingsCtrl1.FeatureSourceRootPath = "";
+            this.loadSettingsCtrl1.LayerFolderName = "";
+            this.loadSettingsCtrl1.LayerRootPath = "";
+            this.loadSettingsCtrl1.LoadFeatureSources = false;
+            this.loadSettingsCtrl1.LoadLayers = false;
+            this.loadSettingsCtrl1.Location = new System.Drawing.Point(3, 16);
+            this.loadSettingsCtrl1.Name = "loadSettingsCtrl1";
+            this.loadSettingsCtrl1.ResourceRootPath = "";
+            this.loadSettingsCtrl1.Size = new System.Drawing.Size(521, 102);
+            this.loadSettingsCtrl1.TabIndex = 0;
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox2.Controls.Add(this.chkConvertSdf);
+            this.groupBox2.Controls.Add(this.btnBrowseCS);
+            this.groupBox2.Controls.Add(this.numGeneralize);
+            this.groupBox2.Controls.Add(this.label2);
+            this.groupBox2.Controls.Add(this.txtDefaultCs);
+            this.groupBox2.Controls.Add(this.label1);
+            this.groupBox2.Location = new System.Drawing.Point(3, 139);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(527, 130);
+            this.groupBox2.TabIndex = 4;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "Transformation";
+            // 
+            // chkConvertSdf
+            // 
+            this.chkConvertSdf.AutoSize = true;
+            this.chkConvertSdf.Enabled = false;
+            this.chkConvertSdf.Location = new System.Drawing.Point(340, 41);
+            this.chkConvertSdf.Name = "chkConvertSdf";
+            this.chkConvertSdf.Size = new System.Drawing.Size(99, 17);
+            this.chkConvertSdf.TabIndex = 30;
+            this.chkConvertSdf.Text = "Convert to SDF";
+            this.chkConvertSdf.UseVisualStyleBackColor = true;
+            // 
+            // btnBrowseCS
+            // 
+            this.btnBrowseCS.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnBrowseCS.Location = new System.Drawing.Point(495, 11);
+            this.btnBrowseCS.Name = "btnBrowseCS";
+            this.btnBrowseCS.Size = new System.Drawing.Size(26, 23);
+            this.btnBrowseCS.TabIndex = 29;
+            this.btnBrowseCS.Text = "...";
+            this.btnBrowseCS.UseVisualStyleBackColor = true;
+            this.btnBrowseCS.Click += new System.EventHandler(this.btnBrowseCS_Click);
+            // 
+            // numGeneralize
+            // 
+            this.numGeneralize.Enabled = false;
+            this.numGeneralize.Location = new System.Drawing.Point(275, 39);
+            this.numGeneralize.Name = "numGeneralize";
+            this.numGeneralize.Size = new System.Drawing.Size(58, 20);
+            this.numGeneralize.TabIndex = 28;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Enabled = false;
+            this.label2.Location = new System.Drawing.Point(6, 41);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(171, 13);
+            this.label2.TabIndex = 27;
+            this.label2.Text = "Generalize data by this percentage";
+            // 
+            // txtDefaultCs
+            // 
+            this.txtDefaultCs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtDefaultCs.Location = new System.Drawing.Point(275, 13);
+            this.txtDefaultCs.Name = "txtDefaultCs";
+            this.txtDefaultCs.ReadOnly = true;
+            this.txtDefaultCs.Size = new System.Drawing.Size(215, 20);
+            this.txtDefaultCs.TabIndex = 26;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(6, 16);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(250, 13);
+            this.label1.TabIndex = 25;
+            this.label1.Text = "Use the following Coordinate System (if none found)";
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox1.Controls.Add(this.sourceFilesCtrl1);
+            this.groupBox1.Location = new System.Drawing.Point(3, 3);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(527, 130);
+            this.groupBox1.TabIndex = 3;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "Source Files";
+            // 
+            // sourceFilesCtrl1
+            // 
+            this.sourceFilesCtrl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.sourceFilesCtrl1.FileFilter = global::OSGeo.MapGuide.Maestro.ResourceEditors.LayoutControls.Strings.BasicCommand.DuplicateRenameError;
+            this.sourceFilesCtrl1.Location = new System.Drawing.Point(3, 16);
+            this.sourceFilesCtrl1.Name = "sourceFilesCtrl1";
+            this.sourceFilesCtrl1.Size = new System.Drawing.Size(521, 111);
+            this.sourceFilesCtrl1.SourceFiles = new string[0];
+            this.sourceFilesCtrl1.TabIndex = 0;
+            // 
+            // ShpLoadProcedureCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.groupBox3);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.Name = "ShpLoadProcedureCtrl";
+            this.Size = new System.Drawing.Size(533, 399);
+            this.groupBox3.ResumeLayout(false);
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.numGeneralize)).EndInit();
+            this.groupBox1.ResumeLayout(false);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.GroupBox groupBox3;
+        private LoadSettingsCtrl loadSettingsCtrl1;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private SourceFilesCtrl sourceFilesCtrl1;
+        private System.Windows.Forms.NumericUpDown numGeneralize;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox txtDefaultCs;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.CheckBox chkConvertSdf;
+        protected System.Windows.Forms.Button btnBrowseCS;
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,140 @@
+#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.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.MaestroAPI;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    //NOTE: Except for Default CS, all transformation settings are disabled because
+    //backend support for those features does not exist for this load procedure yet.
+
+    public partial class ShpLoadProcedureCtrl : BaseFileLoadProcedureCtrl
+    {
+        public ShpLoadProcedureCtrl()
+        {
+            InitializeComponent();
+        }
+
+        public ShpLoadProcedureCtrl(EditorInterface ed)
+            : base(ed)
+        {
+            InitializeComponent();
+        }
+
+        public ShpLoadProcedureCtrl(EditorInterface ed, string resourceID)
+            : base(ed, resourceID)
+        {
+            InitializeComponent();
+        }
+
+        protected override void OnLoad(EventArgs e)
+        {
+            loadSettingsCtrl1.Editor = _ed;
+            sourceFilesCtrl1.FileFilter = "SHP Files (*.shp)|*.shp"; //TODO: Localize
+
+            loadSettingsCtrl1.Modified += (sender, evt) => { if (!_isUpdating) base.RaiseModified(); };
+            sourceFilesCtrl1.Modified += (sender, evt) => { if (!_isUpdating) base.RaiseModified(); };
+        }
+
+        private bool _isUpdating;
+
+        public override void UpdateDisplay()
+        {
+            LoadProcedure lp = this.Resource as LoadProcedure;
+            if (lp != null)
+            {
+                ShpLoadProcedureType shpl = lp.Item as ShpLoadProcedureType;
+                if (shpl != null)
+                {
+                    _isUpdating = true;
+                    sourceFilesCtrl1.SourceFiles = (shpl.SourceFile != null) ? shpl.SourceFile : new string[0];
+
+                    txtDefaultCs.Text = shpl.CoordinateSystem;
+                    numGeneralize.Value = (decimal)shpl.Generalization;
+                    chkConvertSdf.Checked = shpl.ConvertToSdf;
+
+                    loadSettingsCtrl1.LoadFeatureSources = shpl.GenerateSpatialDataSources;
+                    loadSettingsCtrl1.LoadLayers = shpl.GenerateLayers;
+                    loadSettingsCtrl1.FeatureSourceFolderName = shpl.SpatialDataSourcesFolder;
+                    loadSettingsCtrl1.FeatureSourceRootPath = shpl.SpatialDataSourcesPath;
+                    loadSettingsCtrl1.LayerFolderName = shpl.LayersFolder;
+                    loadSettingsCtrl1.LayerRootPath = shpl.LayersPath;
+                    loadSettingsCtrl1.ResourceRootPath = shpl.RootPath;
+                    _isUpdating = false;
+                }
+            }
+        }
+
+        public override bool Save(string savename)
+        {
+            LoadProcedure lp = this.Resource as LoadProcedure;
+            if (lp != null)
+            {
+                ShpLoadProcedureType shpl = lp.Item as ShpLoadProcedureType;
+                if (shpl != null)
+                {
+                    shpl.SourceFile = sourceFilesCtrl1.SourceFiles;
+
+                    shpl.CoordinateSystem = txtDefaultCs.Text;
+                    shpl.Generalization = (double)numGeneralize.Value;
+                    shpl.ConvertToSdf = chkConvertSdf.Checked;
+
+                    shpl.GenerateSpatialDataSources = loadSettingsCtrl1.LoadFeatureSources ;
+                    shpl.GenerateLayers = loadSettingsCtrl1.LoadLayers;
+                    shpl.SpatialDataSourcesFolder = loadSettingsCtrl1.FeatureSourceFolderName;
+                    shpl.SpatialDataSourcesPath = loadSettingsCtrl1.FeatureSourceRootPath;
+                    shpl.LayersFolder = loadSettingsCtrl1.LayerFolderName;
+                    shpl.LayersPath = loadSettingsCtrl1.LayerRootPath;
+                    shpl.RootPath = loadSettingsCtrl1.ResourceRootPath;
+                }
+            }
+            return false;
+        }
+
+        private void btnBrowseCS_Click(object sender, EventArgs e)
+        {
+            SelectCoordinateSystem dlg = new SelectCoordinateSystem(_ed.CurrentConnection);
+            dlg.SetWKT(txtDefaultCs.Text);
+            if (dlg.ShowDialog(this) == DialogResult.OK)
+                txtDefaultCs.Text = dlg.SelectedCoordSys.Projection;
+        }
+
+        public override string[] GetAffectedResourceIds()
+        {
+            List<string> affected = new List<string>();
+            foreach (string f in sourceFilesCtrl1.SourceFiles)
+            {
+                string name = System.IO.Path.GetFileNameWithoutExtension(f);
+
+                if (loadSettingsCtrl1.LoadFeatureSources)
+                    affected.Add(loadSettingsCtrl1.FeatureSourceRootPath + loadSettingsCtrl1.FeatureSourceFolderName + "/" + name + ".FeatureSource");
+                if (loadSettingsCtrl1.LoadLayers)
+                    affected.Add(loadSettingsCtrl1.LayerRootPath + loadSettingsCtrl1.LayerFolderName + "/" + name + ".LayerDefinition");
+            }
+            return affected.ToArray();
+        }
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.resx
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.resx	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/ShpLoadProcedureCtrl.resx	2010-04-12 13:54:24 UTC (rev 4781)
@@ -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>

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.Designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.Designer.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,107 @@
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    partial class SourceFilesCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SourceFilesCtrl));
+            this.lstSourceFiles = new System.Windows.Forms.ListBox();
+            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.btnAddFiles = new System.Windows.Forms.ToolStripButton();
+            this.btnRemoveFiles = new System.Windows.Forms.ToolStripButton();
+            this.openFileDlg = new System.Windows.Forms.OpenFileDialog();
+            this.toolStrip1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // lstSourceFiles
+            // 
+            this.lstSourceFiles.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.lstSourceFiles.FormattingEnabled = true;
+            this.lstSourceFiles.Location = new System.Drawing.Point(0, 25);
+            this.lstSourceFiles.Name = "lstSourceFiles";
+            this.lstSourceFiles.Size = new System.Drawing.Size(316, 121);
+            this.lstSourceFiles.TabIndex = 3;
+            this.lstSourceFiles.SelectedIndexChanged += new System.EventHandler(this.lstSourceFiles_SelectedIndexChanged);
+            // 
+            // toolStrip1
+            // 
+            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.btnAddFiles,
+            this.btnRemoveFiles});
+            this.toolStrip1.Location = new System.Drawing.Point(0, 0);
+            this.toolStrip1.Name = "toolStrip1";
+            this.toolStrip1.Size = new System.Drawing.Size(316, 25);
+            this.toolStrip1.TabIndex = 2;
+            this.toolStrip1.Text = "toolStrip1";
+            // 
+            // btnAddFiles
+            // 
+            this.btnAddFiles.Image = ((System.Drawing.Image)(resources.GetObject("btnAddFiles.Image")));
+            this.btnAddFiles.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.btnAddFiles.Name = "btnAddFiles";
+            this.btnAddFiles.Size = new System.Drawing.Size(70, 22);
+            this.btnAddFiles.Text = "Add Files";
+            this.btnAddFiles.Click += new System.EventHandler(this.btnAddFiles_Click);
+            // 
+            // btnRemoveFiles
+            // 
+            this.btnRemoveFiles.Enabled = false;
+            this.btnRemoveFiles.Image = ((System.Drawing.Image)(resources.GetObject("btnRemoveFiles.Image")));
+            this.btnRemoveFiles.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.btnRemoveFiles.Name = "btnRemoveFiles";
+            this.btnRemoveFiles.Size = new System.Drawing.Size(90, 22);
+            this.btnRemoveFiles.Text = "Remove Files";
+            this.btnRemoveFiles.Click += new System.EventHandler(this.btnRemoveFiles_Click);
+            // 
+            // openFileDlg
+            // 
+            this.openFileDlg.Multiselect = true;
+            // 
+            // SourceFilesCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.lstSourceFiles);
+            this.Controls.Add(this.toolStrip1);
+            this.Name = "SourceFilesCtrl";
+            this.Size = new System.Drawing.Size(316, 150);
+            this.toolStrip1.ResumeLayout(false);
+            this.toolStrip1.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        protected System.Windows.Forms.ListBox lstSourceFiles;
+        protected System.Windows.Forms.ToolStrip toolStrip1;
+        protected System.Windows.Forms.ToolStripButton btnAddFiles;
+        protected System.Windows.Forms.ToolStripButton btnRemoveFiles;
+        private System.Windows.Forms.OpenFileDialog openFileDlg;
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.cs	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,114 @@
+#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.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OSGeo.MapGuide.Maestro.ResourceEditors.LoadProcedureEditors
+{
+    public partial class SourceFilesCtrl : UserControl
+    {
+        public SourceFilesCtrl()
+        {
+            InitializeComponent();
+        }
+
+        public string FileFilter
+        {
+            get { return openFileDlg.Filter; }
+            set { openFileDlg.Filter = value; }
+        }
+
+        public string[] SourceFiles
+        {
+            get
+            {
+                List<string> files = new List<string>();
+                foreach (object item in lstSourceFiles.Items)
+                {
+                    files.Add(item.ToString());
+                }
+                return files.ToArray();
+            }
+            set
+            {
+                lstSourceFiles.Items.Clear();
+                if (value != null)
+                {
+                    foreach (string str in value)
+                    {
+                        if (!string.IsNullOrEmpty(str))
+                            lstSourceFiles.Items.Add(str);
+                    }
+                }
+                RaiseModified();
+            }
+        }
+
+        public event EventHandler Modified;
+
+        private void RaiseModified()
+        {
+            var handler = this.Modified;
+            if (handler != null)
+                handler(this, EventArgs.Empty);
+        }
+
+        private void btnAddFiles_Click(object sender, EventArgs e)
+        {
+            if (openFileDlg.ShowDialog() == DialogResult.OK)
+            {
+                foreach (string f in openFileDlg.FileNames)
+                {
+                    if (!string.IsNullOrEmpty(f))
+                        lstSourceFiles.Items.Add(f);
+                }
+                RaiseModified();
+            }
+        }
+
+        private void btnRemoveFiles_Click(object sender, EventArgs e)
+        {
+            List<object> selected = new List<object>();
+            foreach (object obj in lstSourceFiles.SelectedItems)
+            {
+                selected.Add(obj);
+            }
+
+            if (selected.Count > 0)
+            {
+                foreach (object obj in selected)
+                {
+                    lstSourceFiles.Items.Remove(obj);
+                }
+                RaiseModified();
+            }
+        }
+
+        private void lstSourceFiles_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            btnRemoveFiles.Enabled = (lstSourceFiles.SelectedItems.Count > 0);
+        }
+    }
+}

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.resx
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.resx	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/LoadProcedureEditors/SourceFilesCtrl.resx	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="btnAddFiles.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+        U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+        VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+        QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+        /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+        cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+        3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+        dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+        NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+        s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="btnRemoveFiles.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+        U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+        VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+        QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+        /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+        cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+        3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+        dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+        NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+        s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+  </data>
+  <metadata name="openFileDlg.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>116, 17</value>
+  </metadata>
+</root>

Modified: trunk/Tools/Maestro/Maestro/ResourceEditors/ResourceEditors.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/ResourceEditors.csproj	2010-04-12 13:44:33 UTC (rev 4780)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/ResourceEditors.csproj	2010-04-12 13:54:24 UTC (rev 4781)
@@ -551,6 +551,61 @@
     <Compile Include="LayoutEditor.cs">
       <SubType>UserControl</SubType>
     </Compile>
+    <Compile Include="LoadProcedureEditors\AffectedResourceIdsDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\AffectedResourceIdsDlg.Designer.cs">
+      <DependentUpon>AffectedResourceIdsDlg.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\BaseFileLoadProcedureCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\BaseFileLoadProcedureCtrl.Designer.cs">
+      <DependentUpon>BaseFileLoadProcedureCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\DefaultLoadProcedureCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\DefaultLoadProcedureCtrl.Designer.cs">
+      <DependentUpon>DefaultLoadProcedureCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\ILoadProcedureEditor.cs" />
+    <Compile Include="LoadProcedureEditors\LoadProcedureCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\LoadProcedureCtrl.Designer.cs">
+      <DependentUpon>LoadProcedureCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\LoadProcedurePicker.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\LoadProcedurePicker.Designer.cs">
+      <DependentUpon>LoadProcedurePicker.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\LoadSettingsCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\LoadSettingsCtrl.Designer.cs">
+      <DependentUpon>LoadSettingsCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\SdfLoadProcedureCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\SdfLoadProcedureCtrl.Designer.cs">
+      <DependentUpon>SdfLoadProcedureCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\ShpLoadProcedureCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\ShpLoadProcedureCtrl.Designer.cs">
+      <DependentUpon>ShpLoadProcedureCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\SourceFilesCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="LoadProcedureEditors\SourceFilesCtrl.Designer.cs">
+      <DependentUpon>SourceFilesCtrl.cs</DependentUpon>
+    </Compile>
     <Compile Include="MapEditor.cs">
       <SubType>UserControl</SubType>
     </Compile>
@@ -1082,24 +1137,30 @@
   <ItemGroup>
     <EmbeddedResource Include="FeatureSourceEditors\Filebased\FilebasedFeatureSourceEditor.resx">
       <DependentUpon>FilebasedFeatureSourceEditor.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\Filebased\Managed.resx">
       <DependentUpon>Managed.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\Filebased\Unmanaged.resx">
       <DependentUpon>Unmanaged.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\Gdal\Strings\Composite.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Composite.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\Gdal\Strings\ConfigUpdater.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>ConfigUpdater.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\Gdal\Strings\Simple.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Simple.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\King.Informix\FeatureSourceEditorKingInformix.resx">
       <DependentUpon>FeatureSourceEditorKingInformix.cs</DependentUpon>
@@ -1119,27 +1180,34 @@
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\ODBC\DSNPicker.resx">
       <DependentUpon>DSNPicker.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\ODBC\Strings\FeatureSourceEditorODBC.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>FeatureSourceEditorODBC.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\OGR\Strings\Managed.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Managed.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\SDF\FeatureSourceEditorSDF.resx">
       <DependentUpon>FeatureSourceEditorSDF.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\SHP\FeatureSourceEditorSHP.resx">
       <DependentUpon>FeatureSourceEditorSHP.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceEditors\SQLite\FeatureSourceEditorSQLite.resx">
       <DependentUpon>FeatureSourceEditorSQLite.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FeatureSourceExtensions\Strings\FeatureSourceExtension.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>FeatureSourceExtension.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="FiniteDisplayScales.resx">
       <SubType>Designer</SubType>
@@ -1147,18 +1215,22 @@
     </EmbeddedResource>
     <EmbeddedResource Include="GeometryStyleEditors\ColorComboWithTransparency.resx">
       <DependentUpon>ColorComboWithTransparency.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="GeometryStyleEditors\Strings\ColorComboBox.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>ColorComboBox.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="GeometryStyleEditors\Strings\FontStyleEditor.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>FontStyleEditor.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="GeometryStyleEditors\Strings\PointFeatureStyleEditor.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>PointFeatureStyleEditor.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="LayerEditorControls\EditScales.resx">
       <SubType>Designer</SubType>
@@ -1167,82 +1239,126 @@
     <EmbeddedResource Include="LayerEditorControls\Strings\SchemaSelector.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>SchemaSelector.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="LayerEditorControls\Strings\VectorLayer.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>VectorLayer.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="LayoutControls\Strings\BasicCommand.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>BasicCommand.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="LayoutControls\Strings\InvokeURL.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>InvokeURL.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="LayoutControls\Strings\SearchCommand.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>SearchCommand.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="LoadProcedureEditors\LoadProcedureCtrl.resx">
+      <DependentUpon>LoadProcedureCtrl.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="LoadProcedureEditors\LoadProcedurePicker.resx">
+      <DependentUpon>LoadProcedurePicker.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="LoadProcedureEditors\LoadSettingsCtrl.resx">
+      <DependentUpon>LoadSettingsCtrl.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="LoadProcedureEditors\SdfLoadProcedureCtrl.resx">
+      <DependentUpon>SdfLoadProcedureCtrl.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="LoadProcedureEditors\ShpLoadProcedureCtrl.resx">
+      <DependentUpon>ShpLoadProcedureCtrl.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="LoadProcedureEditors\SourceFilesCtrl.resx">
+      <DependentUpon>SourceFilesCtrl.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
     <EmbeddedResource Include="Preview layout.ApplicationDefinition" />
     <EmbeddedResource Include="Strings\ColorBrewer.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>ColorBrewer.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\Common.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Common.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\CoordinateSystemOverride.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>CoordinateSystemOverride.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\CoordinateSystemOverrideDialog.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>CoordinateSystemOverrideDialog.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\FeatureSourceEditorBase.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>FeatureSourceEditorBase.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\FeatureSourceEditorGeneric.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>FeatureSourceEditorGeneric.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\FiniteDisplayScales.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>FiniteDisplayScales.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\LayerEditor.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>LayerEditor.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\LayoutEditor.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>LayoutEditor.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\MapEditor.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>MapEditor.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\ResourceDataEditor.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>ResourceDataEditor.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\ThemeCreator.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>ThemeCreator.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\XmlEditor.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>XmlEditor.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\XmlEditorControl.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>XmlEditorControl.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="ThemeCreator.resx">
       <DependentUpon>ThemeCreator.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="WaitForOperation.resx">
       <DependentUpon>WaitForOperation.cs</DependentUpon>
@@ -1250,6 +1366,7 @@
     </EmbeddedResource>
     <EmbeddedResource Include="XmlEditor.resx">
       <DependentUpon>XmlEditor.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
   </ItemGroup>
   <ItemGroup>
@@ -1264,6 +1381,13 @@
   <ItemGroup>
     <None Include="Resources\GeometryStyleComboDataset.xml" />
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Icons\Unknown.ico" />
+    <EmbeddedResource Include="LoadProcedureEditors\AffectedResourceIdsDlg.resx">
+      <DependentUpon>AffectedResourceIdsDlg.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
     <PreBuildEvent>

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/Templates/Sdf Load Procedure.LoadProcedure
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/Templates/Sdf Load Procedure.LoadProcedure	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/Templates/Sdf Load Procedure.LoadProcedure	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<LoadProcedure xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="LoadProcedure-1.0.0.xsd">
+    <SdfLoadProcedure>
+        <SourceFile />
+        <RootPath>Library://</RootPath>
+        <CoordinateSystem>LOCAL_CS["Non-Earth (Meter)",LOCAL_DATUM["Local Datum",0],UNIT["Meter", 1],AXIS["X",EAST],AXIS["Y",NORTH]]</CoordinateSystem>
+        <GenerateSpatialDataSources>true</GenerateSpatialDataSources>
+        <SpatialDataSourcesPath />
+        <SpatialDataSourcesFolder>Data</SpatialDataSourcesFolder>
+        <GenerateLayers>true</GenerateLayers>
+        <LayersPath />
+        <LayersFolder>Layers</LayersFolder>
+        <Generalization>100</Generalization>
+        <SdfKeyTreatment>AutogenerateAll</SdfKeyTreatment>
+    </SdfLoadProcedure>
+</LoadProcedure>

Added: trunk/Tools/Maestro/Maestro/ResourceEditors/Templates/Shp Load Procedure.LoadProcedure
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/Templates/Shp Load Procedure.LoadProcedure	                        (rev 0)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/Templates/Shp Load Procedure.LoadProcedure	2010-04-12 13:54:24 UTC (rev 4781)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LoadProcedure xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="LoadProcedure-1.0.0.xsd">
+    <ShpLoadProcedure>
+        <SourceFile />
+        <RootPath>Library://</RootPath>
+        <CoordinateSystem>LOCAL_CS["Non-Earth (Meter)",LOCAL_DATUM["Local Datum",0],UNIT["Meter", 1],AXIS["X",EAST],AXIS["Y",NORTH]]</CoordinateSystem>
+        <GenerateSpatialDataSources>true</GenerateSpatialDataSources>
+        <SpatialDataSourcesPath />
+        <SpatialDataSourcesFolder>Data</SpatialDataSourcesFolder>
+        <GenerateLayers>true</GenerateLayers>
+        <LayersPath />
+        <LayersFolder>Layers</LayersFolder>
+        <Generalization>100</Generalization>
+        <ConvertToSdf>false</ConvertToSdf>
+    </ShpLoadProcedure>
+</LoadProcedure>

Modified: trunk/Tools/Maestro/Maestro/Strings/TemplateNames.resx
===================================================================
--- trunk/Tools/Maestro/Maestro/Strings/TemplateNames.resx	2010-04-12 13:44:33 UTC (rev 4780)
+++ trunk/Tools/Maestro/Maestro/Strings/TemplateNames.resx	2010-04-12 13:54:24 UTC (rev 4781)
@@ -145,6 +145,14 @@
     <value>Print Layout</value>
     <comment>The name of the default Print Layout template</comment>
   </data>
+  <data name="Sdf_Load_Procedure" xml:space="preserve">
+    <value>SDF Load Procedure</value>
+    <comment>The name of the default SDF Load Procedure template</comment>
+  </data>
+  <data name="Shp_Load_Procedure" xml:space="preserve">
+    <value>SHP Load Procedure</value>
+    <comment>The name of the default SHP Load Procedure template</comment>
+  </data>
   <data name="Symbol_Definition" xml:space="preserve">
     <value>Symbol Definition</value>
     <comment>The name of the default Symbol Definition template</comment>
@@ -153,4 +161,4 @@
     <value>Symbol Library</value>
     <comment>The name of the default Symbol Library template</comment>
   </data>
-</root>
\ No newline at end of file
+</root>



More information about the mapguide-commits mailing list