[mapguide-commits] r5036 - in sandbox/maestro-3.0: Generated
Maestro.Base Maestro.Base/Commands/SiteExplorer
Maestro.Base/Properties Maestro.Base/UI MaestroAPITests
OSGeo.MapGuide.MaestroAPI OSGeo.MapGuide.MaestroAPI/ObjectModels
OSGeo.MapGuide.MaestroAPI/Services
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Mon Jul 19 07:20:33 EDT 2010
Author: jng
Date: 2010-07-19 11:20:33 +0000 (Mon, 19 Jul 2010)
New Revision: 5036
Added:
sandbox/maestro-3.0/Maestro.Base/Commands/SiteExplorer/ResourcePropertiesCommand.cs
sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.cs
sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.designer.cs
sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.resx
sandbox/maestro-3.0/Maestro.Base/UI/ResourceIconCache.cs
sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.Designer.cs
sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.cs
sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.resx
sandbox/maestro-3.0/MaestroAPITests/ObjectTests.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/Envelope.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ResourceList.cs
Modified:
sandbox/maestro-3.0/Generated/Envelope-1.0.0.designer.cs
sandbox/maestro-3.0/Maestro.Base/Maestro.Base.addin
sandbox/maestro-3.0/Maestro.Base/Maestro.Base.csproj
sandbox/maestro-3.0/Maestro.Base/Properties/Resources.Designer.cs
sandbox/maestro-3.0/Maestro.Base/Properties/Resources.resx
sandbox/maestro-3.0/MaestroAPITests/MaestroAPITests.csproj
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerDefinition.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ObjectFactory.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/readme.txt
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ServerConnectionBase.cs
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Services/IFeatureService.cs
Log:
This submission includes the following changes:
- Port the resource properties dialog from 2.1 branch
- Add properties command to the selected object context menu
- Fix incorrect generated code for Envelope xml class.
- Use built in generated Envelope class instead of Topology.Geometries.IEnvelope to avoid having to leak out the TF.net library in our API.
- Add tests for ObjectFactory to verify non-null child object properties of the objects it creates.
Modified: sandbox/maestro-3.0/Generated/Envelope-1.0.0.designer.cs
===================================================================
--- sandbox/maestro-3.0/Generated/Envelope-1.0.0.designer.cs 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/Generated/Envelope-1.0.0.designer.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -258,20 +258,21 @@
public partial class EnvelopeLowerLeftCoordinate : System.ComponentModel.INotifyPropertyChanged {
[EditorBrowsable(EditorBrowsableState.Never)]
- private string xField;
+ private double xField;
[EditorBrowsable(EditorBrowsableState.Never)]
- private string yField;
+ private double yField;
[EditorBrowsable(EditorBrowsableState.Never)]
- private string zField;
+ private double zField;
[EditorBrowsable(EditorBrowsableState.Never)]
- private string mField;
+ private double mField;
private static System.Xml.Serialization.XmlSerializer serializer;
-
- public string X {
+
+ public double X
+ {
get {
return this.xField;
}
@@ -288,8 +289,9 @@
}
}
}
-
- public string Y {
+
+ public double Y
+ {
get {
return this.yField;
}
@@ -306,8 +308,9 @@
}
}
}
-
- public string Z {
+
+ public double Z
+ {
get {
return this.zField;
}
@@ -324,8 +327,9 @@
}
}
}
-
- public string M {
+
+ public double M
+ {
get {
return this.mField;
}
@@ -526,20 +530,21 @@
public partial class EnvelopeUpperRightCoordinate : System.ComponentModel.INotifyPropertyChanged {
[EditorBrowsable(EditorBrowsableState.Never)]
- private string xField;
+ private double xField;
[EditorBrowsable(EditorBrowsableState.Never)]
- private string yField;
+ private double yField;
[EditorBrowsable(EditorBrowsableState.Never)]
- private string zField;
+ private double zField;
[EditorBrowsable(EditorBrowsableState.Never)]
- private string mField;
+ private double mField;
private static System.Xml.Serialization.XmlSerializer serializer;
-
- public string X {
+
+ public double X
+ {
get {
return this.xField;
}
@@ -556,8 +561,9 @@
}
}
}
-
- public string Y {
+
+ public double Y
+ {
get {
return this.yField;
}
@@ -574,8 +580,9 @@
}
}
}
-
- public string Z {
+
+ public double Z
+ {
get {
return this.zField;
}
@@ -592,8 +599,9 @@
}
}
}
-
- public string M {
+
+ public double M
+ {
get {
return this.mField;
}
Added: sandbox/maestro-3.0/Maestro.Base/Commands/SiteExplorer/ResourcePropertiesCommand.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Commands/SiteExplorer/ResourcePropertiesCommand.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/Commands/SiteExplorer/ResourcePropertiesCommand.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,47 @@
+#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;
+using ICSharpCode.Core;
+using Maestro.Base.Services;
+using Maestro.Base.UI;
+
+namespace Maestro.Base.Commands.SiteExplorer
+{
+ internal class ResourcePropertiesCommand : AbstractMenuCommand
+ {
+ public override void Run()
+ {
+ var wb = Workbench.Instance;
+ var items = wb.ActiveSiteExplorer.SelectedItems;
+ var connMgr = ServiceRegistry.GetService<ServerConnectionManager>();
+ var conn = connMgr.GetConnection(wb.ActiveSiteExplorer.ConnectionName);
+
+ //Can only show properties of one selected item
+ if (items.Length == 1)
+ {
+ var icons = ResourceIconCache.CreateDefault();
+ var dlg = new ResourcePropertiesDialog(icons, conn, items[0].ResourceId);
+ dlg.ShowDialog(wb);
+ }
+ }
+ }
+}
Modified: sandbox/maestro-3.0/Maestro.Base/Maestro.Base.addin
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Maestro.Base.addin 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/Maestro.Base/Maestro.Base.addin 2010-07-19 11:20:33 UTC (rev 5036)
@@ -302,6 +302,10 @@
<MenuItem id="Paste"
label="${res:SiteExplorer_SelectedFolder_Paste}"
class="Maestro.Base.Commands.NotImplementedCommand" />
+ <MenuItem type="Separator" />
+ <MenuItem id="Properties"
+ label="${res:SiteExplorer_SelectedItem_Properties}"
+ class="Maestro.Base.Commands.SiteExplorer.ResourcePropertiesCommand" />
</Condition>
</Path>
Modified: sandbox/maestro-3.0/Maestro.Base/Maestro.Base.csproj
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Maestro.Base.csproj 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/Maestro.Base/Maestro.Base.csproj 2010-07-19 11:20:33 UTC (rev 5036)
@@ -34,6 +34,7 @@
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
+ <Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
@@ -64,6 +65,7 @@
<Compile Include="Commands\SiteExplorer\DisconnectCommand.cs" />
<Compile Include="Commands\SiteExplorer\OpenResourceCommand.cs" />
<Compile Include="Commands\SiteExplorer\RefreshCommand.cs" />
+ <Compile Include="Commands\SiteExplorer\ResourcePropertiesCommand.cs" />
<Compile Include="Commands\StartupCommand.cs" />
<Compile Include="Commands\Test\OpenCoordinateSystemPickerCommand.cs" />
<Compile Include="Commands\Test\OpenResourceCommand.cs" />
@@ -166,6 +168,12 @@
<Compile Include="UI\AboutDialog.cs">
<SubType>Form</SubType>
</Compile>
+ <Compile Include="UI\BoundsPicker.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="UI\BoundsPicker.designer.cs">
+ <DependentUpon>BoundsPicker.cs</DependentUpon>
+ </Compile>
<Compile Include="UI\BroadcastTextWriter.cs" />
<Compile Include="UI\EmbeddedWebBrowser.cs">
<SubType>UserControl</SubType>
@@ -187,6 +195,13 @@
<DependentUpon>NewResourceDialog.cs</DependentUpon>
</Compile>
<Compile Include="UI\RepositoryTreeModel.cs" />
+ <Compile Include="UI\ResourceIconCache.cs" />
+ <Compile Include="UI\ResourcePropertiesDialog.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="UI\ResourcePropertiesDialog.Designer.cs">
+ <DependentUpon>ResourcePropertiesDialog.cs</DependentUpon>
+ </Compile>
<Compile Include="UI\SingletonViewContent.cs">
<SubType>UserControl</SubType>
</Compile>
@@ -312,6 +327,10 @@
<DependentUpon>AboutDialog.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
+ <EmbeddedResource Include="UI\BoundsPicker.resx">
+ <DependentUpon>BoundsPicker.cs</DependentUpon>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
<EmbeddedResource Include="UI\EmbeddedWebBrowser.resx">
<DependentUpon>EmbeddedWebBrowser.cs</DependentUpon>
<SubType>Designer</SubType>
@@ -324,6 +343,10 @@
<DependentUpon>NewResourceDialog.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
+ <EmbeddedResource Include="UI\ResourcePropertiesDialog.resx">
+ <DependentUpon>ResourcePropertiesDialog.cs</DependentUpon>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
<EmbeddedResource Include="UI\SiteExplorer.resx">
<DependentUpon>SiteExplorer.cs</DependentUpon>
<SubType>Designer</SubType>
Modified: sandbox/maestro-3.0/Maestro.Base/Properties/Resources.Designer.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Properties/Resources.Designer.cs 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/Maestro.Base/Properties/Resources.Designer.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -144,6 +144,90 @@
}
/// <summary>
+ /// Looks up a localized string similar to Failed to decode the current bounds,
+ ///you may enter new bounds, and these will replace the current.
+ ///Error message: {0}.
+ /// </summary>
+ internal static string BoundsPicker_BoundsDecodeError {
+ get {
+ return ResourceManager.GetString("BoundsPicker_BoundsDecodeError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to You have not entered all the required information..
+ /// </summary>
+ internal static string BoundsPicker_IncompleBoundsError {
+ get {
+ return ResourceManager.GetString("BoundsPicker_IncompleBoundsError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to convert the Max X value.
+ /// </summary>
+ internal static string BoundsPicker_InvalidMaxXError {
+ get {
+ return ResourceManager.GetString("BoundsPicker_InvalidMaxXError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to convert the Max Y value.
+ /// </summary>
+ internal static string BoundsPicker_InvalidMaxYError {
+ get {
+ return ResourceManager.GetString("BoundsPicker_InvalidMaxYError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to convert the Min X value.
+ /// </summary>
+ internal static string BoundsPicker_InvalidMinXError {
+ get {
+ return ResourceManager.GetString("BoundsPicker_InvalidMinXError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to convert the Min Y value.
+ /// </summary>
+ internal static string BoundsPicker_InvalidMinYError {
+ get {
+ return ResourceManager.GetString("BoundsPicker_InvalidMinYError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Missing bounds tag.
+ /// </summary>
+ internal static string BoundsPicker_MissingBoundsError {
+ get {
+ return ResourceManager.GetString("BoundsPicker_MissingBoundsError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to The values you have entered appears to be in local regional format, but are required in US regional format.
+ ///Do you want to convert the values?.
+ /// </summary>
+ internal static string BoundsPicker_NumbersInRegionalError {
+ get {
+ return ResourceManager.GetString("BoundsPicker_NumbersInRegionalError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to The coordinates you have entered appears to be invalid, do you want to use them anyway?.
+ /// </summary>
+ internal static string BoundsPicker_UseInvalidCoordinatesWarning {
+ get {
+ return ResourceManager.GetString("BoundsPicker_UseInvalidCoordinatesWarning", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Done.
/// </summary>
internal static string Browser_Complete {
@@ -650,6 +734,136 @@
}
}
+ /// <summary>
+ /// Looks up a localized string similar to Failed to decode the current bounds,
+ ///you must re-enter the epsg code in the SRS tag manually.
+ ///Error message: {0}..
+ /// </summary>
+ internal static string ResProp_BoundsDecodeError {
+ get {
+ return ResourceManager.GetString("ResProp_BoundsDecodeError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to You must manually enter the EPSG code for the generated bounds..
+ /// </summary>
+ internal static string ResProp_EpsgMissingWarning {
+ get {
+ return ResourceManager.GetString("ResProp_EpsgMissingWarning", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Inherited.
+ /// </summary>
+ internal static string ResProp_InheritedAccess {
+ get {
+ return ResourceManager.GetString("ResProp_InheritedAccess", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Missing bounds tag.
+ /// </summary>
+ internal static string ResProp_MissingBoundsError {
+ get {
+ return ResourceManager.GetString("ResProp_MissingBoundsError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to No access.
+ /// </summary>
+ internal static string ResProp_NoAccess {
+ get {
+ return ResourceManager.GetString("ResProp_NoAccess", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to No spatial data found in FeatureSource.
+ /// </summary>
+ internal static string ResProp_NoSpatialDataError {
+ get {
+ return ResourceManager.GetString("ResProp_NoSpatialDataError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to No spatial data found in FeatureSource, one or more queries failed to execute.
+ /// </summary>
+ internal static string ResProp_NoSpatialDataWithFailuresError {
+ get {
+ return ResourceManager.GetString("ResProp_NoSpatialDataWithFailuresError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Read only.
+ /// </summary>
+ internal static string ResProp_ReadOnlyAccess {
+ get {
+ return ResourceManager.GetString("ResProp_ReadOnlyAccess", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Read/write.
+ /// </summary>
+ internal static string ResProp_ReadWriteAccess {
+ get {
+ return ResourceManager.GetString("ResProp_ReadWriteAccess", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to read resource references.
+ /// </summary>
+ internal static string ResProp_ReferenceReadError {
+ get {
+ return ResourceManager.GetString("ResProp_ReferenceReadError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to read resource references: {0}.
+ /// </summary>
+ internal static string ResProp_ReferenceReadSpecificError {
+ get {
+ return ResourceManager.GetString("ResProp_ReferenceReadSpecificError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to save the resource properties: {0}.
+ /// </summary>
+ internal static string ResProp_SaveError {
+ get {
+ return ResourceManager.GetString("ResProp_SaveError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to obtain the extent for the WFS data.
+ ///Error message: {0}.
+ /// </summary>
+ internal static string ResProp_WFSBoundsReadError {
+ get {
+ return ResourceManager.GetString("ResProp_WFSBoundsReadError", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Failed to obtain the extent for the WMS data.
+ ///Error message: {0}.
+ /// </summary>
+ internal static string ResProp_WMSBoundsReadError {
+ get {
+ return ResourceManager.GetString("ResProp_WMSBoundsReadError", resourceCulture);
+ }
+ }
+
internal static System.Drawing.Bitmap scissors_blue {
get {
object obj = ResourceManager.GetObject("scissors_blue", resourceCulture);
@@ -791,6 +1005,15 @@
}
/// <summary>
+ /// Looks up a localized string similar to Properties.
+ /// </summary>
+ internal static string SiteExplorer_SelectedItem_Properties {
+ get {
+ return ResourceManager.GetString("SiteExplorer_SelectedItem_Properties", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Rename.
/// </summary>
internal static string SiteExplorer_SelectedItem_Rename {
Modified: sandbox/maestro-3.0/Maestro.Base/Properties/Resources.resx
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Properties/Resources.resx 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/Maestro.Base/Properties/Resources.resx 2010-07-19 11:20:33 UTC (rev 5036)
@@ -463,4 +463,106 @@
<data name="SITE_EXPLORER_TOOLTIP_TEMPLATE" xml:space="preserve">
<value>Resource Name: {1}{0}Resource Type: {2}{0}Created: {3}{0}Last Modified: {4}{0}Owner: {5}</value>
</data>
+ <data name="ResProp_BoundsDecodeError" xml:space="preserve">
+ <value>Failed to decode the current bounds,
+you must re-enter the epsg code in the SRS tag manually.
+Error message: {0}.</value>
+ <comment>An error message that is displayed if the bounds are in an unexpected format</comment>
+ </data>
+ <data name="ResProp_EpsgMissingWarning" xml:space="preserve">
+ <value>You must manually enter the EPSG code for the generated bounds.</value>
+ <comment>A warning that is displayed when the user must re-enter the EPSG code</comment>
+ </data>
+ <data name="ResProp_InheritedAccess" xml:space="preserve">
+ <value>Inherited</value>
+ <comment>A value that indicates that the user has inherited access to the resource</comment>
+ </data>
+ <data name="ResProp_MissingBoundsError" xml:space="preserve">
+ <value>Missing bounds tag</value>
+ <comment>An error message that is shown if the resource is missing an expected bounds tag</comment>
+ </data>
+ <data name="ResProp_NoAccess" xml:space="preserve">
+ <value>No access</value>
+ <comment>A value that indicates that the user has no access to the resource</comment>
+ </data>
+ <data name="ResProp_NoSpatialDataError" xml:space="preserve">
+ <value>No spatial data found in FeatureSource</value>
+ <comment>An error message that is displayed if the attempt to read the data reveals that there are no spatial data in the featuresource</comment>
+ </data>
+ <data name="ResProp_NoSpatialDataWithFailuresError" xml:space="preserve">
+ <value>No spatial data found in FeatureSource, one or more queries failed to execute</value>
+ <comment>An error message that is displayed if the attempt to read the data reveals that there are no spatial data in the featuresource and that the resource produced an error</comment>
+ </data>
+ <data name="ResProp_ReadOnlyAccess" xml:space="preserve">
+ <value>Read only</value>
+ <comment>A value that indicates that the user has readonly access to the resource</comment>
+ </data>
+ <data name="ResProp_ReadWriteAccess" xml:space="preserve">
+ <value>Read/write</value>
+ <comment>A value that indicates that the user has read/write access to the resource</comment>
+ </data>
+ <data name="ResProp_ReferenceReadError" xml:space="preserve">
+ <value>Failed to read resource references</value>
+ <comment>An error message that is displayed when an attempt to read the resource references fail</comment>
+ </data>
+ <data name="ResProp_ReferenceReadSpecificError" xml:space="preserve">
+ <value>Failed to read resource references: {0}</value>
+ <comment>An error message that is displayed when an attempt to read the resource references fail</comment>
+ </data>
+ <data name="ResProp_SaveError" xml:space="preserve">
+ <value>Failed to save the resource properties: {0}</value>
+ <comment>An error message that is displayed if the save operation fails</comment>
+ </data>
+ <data name="ResProp_WFSBoundsReadError" xml:space="preserve">
+ <value>Failed to obtain the extent for the WFS data.
+Error message: {0}</value>
+ <comment>An error message that is displayed if the attempt to read the data bounds fail</comment>
+ </data>
+ <data name="ResProp_WMSBoundsReadError" xml:space="preserve">
+ <value>Failed to obtain the extent for the WMS data.
+Error message: {0}</value>
+ <comment>An error message that is displayed if the attempt to read the data bounds fail</comment>
+ </data>
+ <data name="BoundsPicker_BoundsDecodeError" xml:space="preserve">
+ <value>Failed to decode the current bounds,
+you may enter new bounds, and these will replace the current.
+Error message: {0}</value>
+ <comment>An error message that is displayed when the bounds fails to parse</comment>
+ </data>
+ <data name="BoundsPicker_IncompleBoundsError" xml:space="preserve">
+ <value>You have not entered all the required information.</value>
+ <comment>An error message that is displayed if the user clicks OK before filling out all required fields</comment>
+ </data>
+ <data name="BoundsPicker_InvalidMaxXError" xml:space="preserve">
+ <value>Failed to convert the Max X value</value>
+ <comment>An error message that is displayed when the Max X value is invalid</comment>
+ </data>
+ <data name="BoundsPicker_InvalidMaxYError" xml:space="preserve">
+ <value>Failed to convert the Max Y value</value>
+ <comment>An error message that is displayed when the Max Y value is invalid</comment>
+ </data>
+ <data name="BoundsPicker_InvalidMinXError" xml:space="preserve">
+ <value>Failed to convert the Min X value</value>
+ <comment>An error message that is displayed when the Min X value is invalid</comment>
+ </data>
+ <data name="BoundsPicker_InvalidMinYError" xml:space="preserve">
+ <value>Failed to convert the Min Y value</value>
+ <comment>An error message that is displayed when the Min Y value is invalid</comment>
+ </data>
+ <data name="BoundsPicker_MissingBoundsError" xml:space="preserve">
+ <value>Missing bounds tag</value>
+ <comment>An error message that indicates that there was no bound tag</comment>
+ </data>
+ <data name="BoundsPicker_NumbersInRegionalError" xml:space="preserve">
+ <value>The values you have entered appears to be in local regional format, but are required in US regional format.
+Do you want to convert the values?</value>
+ <comment>A message that is displayed when it is detected that the user enters number in local format</comment>
+ </data>
+ <data name="BoundsPicker_UseInvalidCoordinatesWarning" xml:space="preserve">
+ <value>The coordinates you have entered appears to be invalid, do you want to use them anyway?</value>
+ <comment>A message displayed when the coordinates cannot be validated</comment>
+ </data>
+ <data name="SiteExplorer_SelectedItem_Properties" xml:space="preserve">
+ <value>Properties</value>
+ </data>
</root>
\ No newline at end of file
Added: sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,180 @@
+#region Disclaimer / License
+// Copyright (C) 2009, Kenneth Skovhede
+// http://www.hexad.dk, opensource at hexad.dk
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.MaestroAPI.Exceptions;
+
+namespace Maestro.Base.UI
+{
+ public partial class BoundsPicker : Form
+ {
+ private string m_bounds;
+ public string SRSBounds
+ {
+ get { return m_bounds; }
+ }
+
+ public BoundsPicker(string bounds, string[] coordsys)
+ : this()
+ {
+ m_bounds = bounds;
+
+ if (coordsys == null)
+ {
+ SRSLabel.Visible =
+ SRSCombo.Visible =
+ false;
+ this.Height -= 30;
+ }
+ else
+ SRSCombo.Items.AddRange(coordsys);
+
+ if (!string.IsNullOrEmpty(bounds))
+ {
+ try
+ {
+ System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
+ if (bounds.Trim().StartsWith("<"))
+ bounds = System.Web.HttpUtility.HtmlDecode(bounds);
+ bounds = "<root>" + bounds + "</root>";
+ doc.LoadXml(bounds);
+ System.Xml.XmlNode root = doc["root"];
+ if (root["Bounds"] != null)
+ {
+ if (root["Bounds"].Attributes["SRS"] != null)
+ SRSCombo.Text = root["Bounds"].Attributes["SRS"].Value;
+
+ if (root["Bounds"].Attributes["west"] != null)
+ MinX.Text = root["Bounds"].Attributes["west"].Value;
+ if (root["Bounds"].Attributes["east"] != null)
+ MaxX.Text = root["Bounds"].Attributes["east"].Value;
+
+ if (root["Bounds"].Attributes["south"] != null)
+ MinY.Text = root["Bounds"].Attributes["south"].Value;
+ if (root["Bounds"].Attributes["north"] != null)
+ MaxY.Text = root["Bounds"].Attributes["north"].Value;
+ }
+ else
+ throw new Exception(Properties.Resources.BoundsPicker_MissingBoundsError);
+ }
+ catch(Exception ex)
+ {
+ string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
+ MessageBox.Show(this, string.Format(Properties.Resources.BoundsPicker_BoundsDecodeError, msg), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+
+ private BoundsPicker()
+ {
+ InitializeComponent();
+ }
+
+ private void OKBtn_Click(object sender, EventArgs e)
+ {
+ string srs;
+ if (SRSCombo.Text.Trim().Length == 0 || SRSCombo.Visible == false)
+ srs = null;
+ else
+ srs = SRSCombo.Text;
+
+ if (MinX.Text.Trim().Length == 0 || MaxX.Text.Trim().Length == 0 || MinY.Text.Trim().Length == 0 || MaxY.Text.Trim().Length == 0 || (srs == null && SRSCombo.Visible))
+ {
+ MessageBox.Show(this, Properties.Resources.BoundsPicker_IncompleBoundsError, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
+ double temp;
+ System.Globalization.CultureInfo localCI = System.Globalization.CultureInfo.CurrentUICulture;
+ System.Globalization.CultureInfo usCI = System.Globalization.CultureInfo.InvariantCulture;
+
+ bool isUs = double.TryParse(MinX.Text, System.Globalization.NumberStyles.Float, usCI, out temp) &&
+ double.TryParse(MaxX.Text, System.Globalization.NumberStyles.Float, usCI, out temp) &&
+ double.TryParse(MinY.Text, System.Globalization.NumberStyles.Float, usCI, out temp) &&
+ double.TryParse(MaxY.Text, System.Globalization.NumberStyles.Float, usCI, out temp);
+
+ bool isLocal = double.TryParse(MinX.Text, System.Globalization.NumberStyles.Float, localCI, out temp) &&
+ double.TryParse(MaxX.Text, System.Globalization.NumberStyles.Float, localCI, out temp) &&
+ double.TryParse(MinY.Text, System.Globalization.NumberStyles.Float, localCI, out temp) &&
+ double.TryParse(MaxY.Text, System.Globalization.NumberStyles.Float, localCI, out temp);
+
+ if (!isUs && isLocal)
+ {
+ switch (MessageBox.Show(this, Properties.Resources.BoundsPicker_NumbersInRegionalError, Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question))
+ {
+ case DialogResult.Yes:
+ if (double.TryParse(MinX.Text, System.Globalization.NumberStyles.Float, localCI, out temp))
+ MinX.Text = temp.ToString(usCI);
+ else
+ {
+ MessageBox.Show(this, Properties.Resources.BoundsPicker_InvalidMinXError, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ if (double.TryParse(MaxX.Text, System.Globalization.NumberStyles.Float, localCI, out temp))
+ MaxX.Text = temp.ToString(usCI);
+ else
+ {
+ MessageBox.Show(this, Properties.Resources.BoundsPicker_InvalidMaxXError, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ if (double.TryParse(MinY.Text, System.Globalization.NumberStyles.Float, localCI, out temp))
+ MinY.Text = temp.ToString(usCI);
+ else
+ {
+ MessageBox.Show(this, Properties.Resources.BoundsPicker_InvalidMinYError, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ if (double.TryParse(MaxY.Text, System.Globalization.NumberStyles.Float, localCI, out temp))
+ MaxY.Text = temp.ToString(usCI);
+ else
+ {
+ MessageBox.Show(this, Properties.Resources.BoundsPicker_InvalidMaxYError, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ break;
+ case DialogResult.Cancel:
+ return;
+ }
+ }
+
+ if (!isUs && !isLocal)
+ {
+ if (MessageBox.Show(this, Properties.Resources.BoundsPicker_UseInvalidCoordinatesWarning, Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error) != DialogResult.Yes)
+ return;
+ }
+
+ m_bounds = "<Bounds west=\"" + MinX.Text + "\" east=\"" + MaxX.Text + "\" south=\"" + MinY.Text + "\" north=\"" + MaxY.Text + "\" ";
+ if (srs != null)
+ {
+ m_bounds += " SRS=\"" + srs + "\"";
+ }
+ m_bounds += " />";
+
+ this.DialogResult = DialogResult.OK;
+ this.Close();
+ }
+ }
+}
\ No newline at end of file
Added: sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.designer.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.designer.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.designer.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,160 @@
+namespace Maestro.Base.UI
+{
+ partial class BoundsPicker
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BoundsPicker));
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.MinX = new System.Windows.Forms.TextBox();
+ this.MaxX = new System.Windows.Forms.TextBox();
+ this.MinY = new System.Windows.Forms.TextBox();
+ this.MaxY = new System.Windows.Forms.TextBox();
+ this.SRSLabel = new System.Windows.Forms.Label();
+ this.SRSCombo = new System.Windows.Forms.ComboBox();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.CancelBtn = new System.Windows.Forms.Button();
+ this.OKBtn = new System.Windows.Forms.Button();
+ this.panel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ resources.ApplyResources(this.label1, "label1");
+ this.label1.Name = "label1";
+ //
+ // label2
+ //
+ resources.ApplyResources(this.label2, "label2");
+ this.label2.Name = "label2";
+ //
+ // label3
+ //
+ resources.ApplyResources(this.label3, "label3");
+ this.label3.Name = "label3";
+ //
+ // label4
+ //
+ resources.ApplyResources(this.label4, "label4");
+ this.label4.Name = "label4";
+ //
+ // MinX
+ //
+ resources.ApplyResources(this.MinX, "MinX");
+ this.MinX.Name = "MinX";
+ //
+ // MaxX
+ //
+ resources.ApplyResources(this.MaxX, "MaxX");
+ this.MaxX.Name = "MaxX";
+ //
+ // MinY
+ //
+ resources.ApplyResources(this.MinY, "MinY");
+ this.MinY.Name = "MinY";
+ //
+ // MaxY
+ //
+ resources.ApplyResources(this.MaxY, "MaxY");
+ this.MaxY.Name = "MaxY";
+ //
+ // SRSLabel
+ //
+ resources.ApplyResources(this.SRSLabel, "SRSLabel");
+ this.SRSLabel.Name = "SRSLabel";
+ //
+ // SRSCombo
+ //
+ this.SRSCombo.FormattingEnabled = true;
+ resources.ApplyResources(this.SRSCombo, "SRSCombo");
+ this.SRSCombo.Name = "SRSCombo";
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.CancelBtn);
+ this.panel1.Controls.Add(this.OKBtn);
+ resources.ApplyResources(this.panel1, "panel1");
+ this.panel1.Name = "panel1";
+ //
+ // CancelBtn
+ //
+ resources.ApplyResources(this.CancelBtn, "CancelBtn");
+ this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.CancelBtn.Name = "CancelBtn";
+ this.CancelBtn.UseVisualStyleBackColor = true;
+ //
+ // OKBtn
+ //
+ resources.ApplyResources(this.OKBtn, "OKBtn");
+ this.OKBtn.Name = "OKBtn";
+ this.OKBtn.UseVisualStyleBackColor = true;
+ this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
+ //
+ // BoundsPicker
+ //
+ resources.ApplyResources(this, "$this");
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.CancelBtn;
+ this.Controls.Add(this.panel1);
+ this.Controls.Add(this.SRSCombo);
+ this.Controls.Add(this.SRSLabel);
+ this.Controls.Add(this.MaxY);
+ this.Controls.Add(this.MinY);
+ this.Controls.Add(this.MaxX);
+ this.Controls.Add(this.MinX);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
+ this.Name = "BoundsPicker";
+ this.panel1.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.TextBox MinX;
+ private System.Windows.Forms.TextBox MaxX;
+ private System.Windows.Forms.TextBox MinY;
+ private System.Windows.Forms.TextBox MaxY;
+ private System.Windows.Forms.Label SRSLabel;
+ private System.Windows.Forms.ComboBox SRSCombo;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.Button CancelBtn;
+ private System.Windows.Forms.Button OKBtn;
+ }
+}
\ No newline at end of file
Added: sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.resx
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.resx (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/UI/BoundsPicker.resx 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+ <value>True</value>
+ </data>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+ <value>8, 8</value>
+ </data>
+ <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+ <value>34, 13</value>
+ </data>
+ <data name="label1.TabIndex" type="System.Int32, mscorlib">
+ <value>0</value>
+ </data>
+ <data name="label1.Text" xml:space="preserve">
+ <value>Min X</value>
+ </data>
+ <data name=">>label1.Name" xml:space="preserve">
+ <value>label1</value>
+ </data>
+ <data name=">>label1.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>label1.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>label1.ZOrder" xml:space="preserve">
+ <value>10</value>
+ </data>
+ <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+ <value>True</value>
+ </data>
+ <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+ <value>8, 32</value>
+ </data>
+ <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+ <value>37, 13</value>
+ </data>
+ <data name="label2.TabIndex" type="System.Int32, mscorlib">
+ <value>1</value>
+ </data>
+ <data name="label2.Text" xml:space="preserve">
+ <value>Max X</value>
+ </data>
+ <data name=">>label2.Name" xml:space="preserve">
+ <value>label2</value>
+ </data>
+ <data name=">>label2.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>label2.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>label2.ZOrder" xml:space="preserve">
+ <value>9</value>
+ </data>
+ <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+ <value>True</value>
+ </data>
+ <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+ <value>8, 56</value>
+ </data>
+ <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+ <value>34, 13</value>
+ </data>
+ <data name="label3.TabIndex" type="System.Int32, mscorlib">
+ <value>2</value>
+ </data>
+ <data name="label3.Text" xml:space="preserve">
+ <value>Min Y</value>
+ </data>
+ <data name=">>label3.Name" xml:space="preserve">
+ <value>label3</value>
+ </data>
+ <data name=">>label3.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>label3.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>label3.ZOrder" xml:space="preserve">
+ <value>8</value>
+ </data>
+ <data name="label4.AutoSize" type="System.Boolean, mscorlib">
+ <value>True</value>
+ </data>
+ <data name="label4.Location" type="System.Drawing.Point, System.Drawing">
+ <value>8, 80</value>
+ </data>
+ <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+ <value>37, 13</value>
+ </data>
+ <data name="label4.TabIndex" type="System.Int32, mscorlib">
+ <value>3</value>
+ </data>
+ <data name="label4.Text" xml:space="preserve">
+ <value>Max Y</value>
+ </data>
+ <data name=">>label4.Name" xml:space="preserve">
+ <value>label4</value>
+ </data>
+ <data name=">>label4.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>label4.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>label4.ZOrder" xml:space="preserve">
+ <value>7</value>
+ </data>
+ <data name="MinX.Location" type="System.Drawing.Point, System.Drawing">
+ <value>64, 8</value>
+ </data>
+ <data name="MinX.Size" type="System.Drawing.Size, System.Drawing">
+ <value>160, 20</value>
+ </data>
+ <data name="MinX.TabIndex" type="System.Int32, mscorlib">
+ <value>4</value>
+ </data>
+ <data name=">>MinX.Name" xml:space="preserve">
+ <value>MinX</value>
+ </data>
+ <data name=">>MinX.Type" xml:space="preserve">
+ <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>MinX.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>MinX.ZOrder" xml:space="preserve">
+ <value>6</value>
+ </data>
+ <data name="MaxX.Location" type="System.Drawing.Point, System.Drawing">
+ <value>64, 32</value>
+ </data>
+ <data name="MaxX.Size" type="System.Drawing.Size, System.Drawing">
+ <value>160, 20</value>
+ </data>
+ <data name="MaxX.TabIndex" type="System.Int32, mscorlib">
+ <value>5</value>
+ </data>
+ <data name=">>MaxX.Name" xml:space="preserve">
+ <value>MaxX</value>
+ </data>
+ <data name=">>MaxX.Type" xml:space="preserve">
+ <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>MaxX.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>MaxX.ZOrder" xml:space="preserve">
+ <value>5</value>
+ </data>
+ <data name="MinY.Location" type="System.Drawing.Point, System.Drawing">
+ <value>64, 56</value>
+ </data>
+ <data name="MinY.Size" type="System.Drawing.Size, System.Drawing">
+ <value>160, 20</value>
+ </data>
+ <data name="MinY.TabIndex" type="System.Int32, mscorlib">
+ <value>6</value>
+ </data>
+ <data name=">>MinY.Name" xml:space="preserve">
+ <value>MinY</value>
+ </data>
+ <data name=">>MinY.Type" xml:space="preserve">
+ <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>MinY.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>MinY.ZOrder" xml:space="preserve">
+ <value>4</value>
+ </data>
+ <data name="MaxY.Location" type="System.Drawing.Point, System.Drawing">
+ <value>64, 80</value>
+ </data>
+ <data name="MaxY.Size" type="System.Drawing.Size, System.Drawing">
+ <value>160, 20</value>
+ </data>
+ <data name="MaxY.TabIndex" type="System.Int32, mscorlib">
+ <value>7</value>
+ </data>
+ <data name=">>MaxY.Name" xml:space="preserve">
+ <value>MaxY</value>
+ </data>
+ <data name=">>MaxY.Type" xml:space="preserve">
+ <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>MaxY.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>MaxY.ZOrder" xml:space="preserve">
+ <value>3</value>
+ </data>
+ <data name="SRSLabel.AutoSize" type="System.Boolean, mscorlib">
+ <value>True</value>
+ </data>
+ <data name="SRSLabel.Location" type="System.Drawing.Point, System.Drawing">
+ <value>8, 112</value>
+ </data>
+ <data name="SRSLabel.Size" type="System.Drawing.Size, System.Drawing">
+ <value>29, 13</value>
+ </data>
+ <data name="SRSLabel.TabIndex" type="System.Int32, mscorlib">
+ <value>8</value>
+ </data>
+ <data name="SRSLabel.Text" xml:space="preserve">
+ <value>SRS</value>
+ </data>
+ <data name=">>SRSLabel.Name" xml:space="preserve">
+ <value>SRSLabel</value>
+ </data>
+ <data name=">>SRSLabel.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>SRSLabel.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>SRSLabel.ZOrder" xml:space="preserve">
+ <value>2</value>
+ </data>
+ <data name="SRSCombo.Location" type="System.Drawing.Point, System.Drawing">
+ <value>64, 112</value>
+ </data>
+ <data name="SRSCombo.Size" type="System.Drawing.Size, System.Drawing">
+ <value>160, 21</value>
+ </data>
+ <data name="SRSCombo.TabIndex" type="System.Int32, mscorlib">
+ <value>9</value>
+ </data>
+ <data name=">>SRSCombo.Name" xml:space="preserve">
+ <value>SRSCombo</value>
+ </data>
+ <data name=">>SRSCombo.Type" xml:space="preserve">
+ <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>SRSCombo.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>SRSCombo.ZOrder" xml:space="preserve">
+ <value>1</value>
+ </data>
+ <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <data name="CancelBtn.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+ <value>Bottom</value>
+ </data>
+ <data name="CancelBtn.Location" type="System.Drawing.Point, System.Drawing">
+ <value>121, 8</value>
+ </data>
+ <data name="CancelBtn.Size" type="System.Drawing.Size, System.Drawing">
+ <value>75, 23</value>
+ </data>
+ <data name="CancelBtn.TabIndex" type="System.Int32, mscorlib">
+ <value>1</value>
+ </data>
+ <data name="CancelBtn.Text" xml:space="preserve">
+ <value>Cancel</value>
+ </data>
+ <data name=">>CancelBtn.Name" xml:space="preserve">
+ <value>CancelBtn</value>
+ </data>
+ <data name=">>CancelBtn.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>CancelBtn.Parent" xml:space="preserve">
+ <value>panel1</value>
+ </data>
+ <data name=">>CancelBtn.ZOrder" xml:space="preserve">
+ <value>0</value>
+ </data>
+ <data name="OKBtn.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+ <value>Bottom</value>
+ </data>
+ <data name="OKBtn.Location" type="System.Drawing.Point, System.Drawing">
+ <value>33, 8</value>
+ </data>
+ <data name="OKBtn.Size" type="System.Drawing.Size, System.Drawing">
+ <value>75, 23</value>
+ </data>
+ <data name="OKBtn.TabIndex" type="System.Int32, mscorlib">
+ <value>0</value>
+ </data>
+ <data name="OKBtn.Text" xml:space="preserve">
+ <value>OK</value>
+ </data>
+ <data name=">>OKBtn.Name" xml:space="preserve">
+ <value>OKBtn</value>
+ </data>
+ <data name=">>OKBtn.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>OKBtn.Parent" xml:space="preserve">
+ <value>panel1</value>
+ </data>
+ <data name=">>OKBtn.ZOrder" xml:space="preserve">
+ <value>1</value>
+ </data>
+ <data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+ <value>Bottom</value>
+ </data>
+ <data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
+ <value>0, 142</value>
+ </data>
+ <data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
+ <value>235, 40</value>
+ </data>
+ <data name="panel1.TabIndex" type="System.Int32, mscorlib">
+ <value>10</value>
+ </data>
+ <data name=">>panel1.Name" xml:space="preserve">
+ <value>panel1</value>
+ </data>
+ <data name=">>panel1.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>panel1.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>panel1.ZOrder" xml:space="preserve">
+ <value>0</value>
+ </data>
+ <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+ <value>6, 13</value>
+ </data>
+ <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+ <value>235, 182</value>
+ </data>
+ <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
+ <value>CenterParent</value>
+ </data>
+ <data name="$this.Text" xml:space="preserve">
+ <value>Enter the data bounds</value>
+ </data>
+ <data name=">>$this.Name" xml:space="preserve">
+ <value>BoundsPicker</value>
+ </data>
+ <data name=">>$this.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+</root>
\ No newline at end of file
Added: sandbox/maestro-3.0/Maestro.Base/UI/ResourceIconCache.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/UI/ResourceIconCache.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/UI/ResourceIconCache.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,124 @@
+#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;
+using System.Windows.Forms;
+using System.Drawing;
+using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.MaestroAPI.Resource;
+
+namespace Maestro.Base.UI
+{
+ public interface IResourceIconCache
+ {
+ ImageList SmallImageList { get; }
+
+ ImageList LargeImageList { get; }
+
+ string GetImageKeyFromResourceID(string resourceId);
+
+ int GetImageIndexFromResourceID(string resourceId);
+ }
+
+ public class ResourceIconCache : IResourceIconCache
+ {
+ private ImageList _small;
+ private ImageList _large;
+
+ private ResourceIconCache()
+ {
+ _small = new ImageList();
+ _large = new ImageList();
+ }
+
+ const string UNKNOWN = "UNKNOWN";
+
+ public static ResourceIconCache CreateDefault()
+ {
+ var icons = new ResourceIconCache();
+
+ //TODO: Externalize
+ icons._small.Images.Add(ResourceTypes.DrawingSource.ToString(), Properties.Resources.blueprints);
+ icons._small.Images.Add(ResourceTypes.FeatureSource.ToString(), Properties.Resources.database_share);
+ icons._small.Images.Add(ResourceTypes.Folder.ToString(), Properties.Resources.folder_horizontal);
+ icons._small.Images.Add(ResourceTypes.LayerDefinition.ToString(), Properties.Resources.layer);
+ icons._small.Images.Add(ResourceTypes.MapDefinition.ToString(), Properties.Resources.map);
+ icons._small.Images.Add(ResourceTypes.WebLayout.ToString(), Properties.Resources.application_browser);
+ icons._small.Images.Add(ResourceTypes.ApplicationDefinition.ToString(), Properties.Resources.applications_stack);
+ icons._small.Images.Add(ResourceTypes.SymbolLibrary.ToString(), Properties.Resources.images_stack);
+ icons._small.Images.Add(ResourceTypes.PrintLayout.ToString(), Properties.Resources.printer);
+ icons._small.Images.Add(Properties.Resources.document);
+
+ icons._large.Images.Add(ResourceTypes.DrawingSource.ToString(), Properties.Resources.blueprints);
+ icons._large.Images.Add(ResourceTypes.FeatureSource.ToString(), Properties.Resources.database_share);
+ icons._large.Images.Add(ResourceTypes.Folder.ToString(), Properties.Resources.folder_horizontal);
+ icons._large.Images.Add(ResourceTypes.LayerDefinition.ToString(), Properties.Resources.layer);
+ icons._large.Images.Add(ResourceTypes.MapDefinition.ToString(), Properties.Resources.map);
+ icons._large.Images.Add(ResourceTypes.WebLayout.ToString(), Properties.Resources.application_browser);
+ icons._large.Images.Add(ResourceTypes.ApplicationDefinition.ToString(), Properties.Resources.applications_stack);
+ icons._large.Images.Add(ResourceTypes.SymbolLibrary.ToString(), Properties.Resources.images_stack);
+ icons._large.Images.Add(ResourceTypes.PrintLayout.ToString(), Properties.Resources.printer);
+ icons._large.Images.Add(Properties.Resources.document);
+
+ return icons;
+ }
+
+ public string GetImageKeyFromResourceID(string resourceId)
+ {
+ var rt = ResourceIdentifier.GetResourceType(resourceId);
+ switch (rt)
+ {
+ case ResourceTypes.DrawingSource:
+ case ResourceTypes.FeatureSource:
+ case ResourceTypes.Folder:
+ case ResourceTypes.LayerDefinition:
+ case ResourceTypes.MapDefinition:
+ case ResourceTypes.WebLayout:
+ case ResourceTypes.ApplicationDefinition:
+ case ResourceTypes.SymbolLibrary:
+ case ResourceTypes.PrintLayout:
+ return rt.ToString();
+ default:
+ return UNKNOWN;
+ }
+ }
+
+ public int GetImageIndexFromResourceID(string resourceId)
+ {
+ int idx = _small.Images.IndexOfKey(ResourceIdentifier.GetResourceType(resourceId).ToString());
+
+ if (idx < 0)
+ return _small.Images.IndexOfKey(UNKNOWN);
+
+ return idx;
+ }
+
+ public ImageList SmallImageList
+ {
+ get { return _small; }
+ }
+
+ public ImageList LargeImageList
+ {
+ get { return _large; }
+ }
+ }
+}
Added: sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.Designer.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.Designer.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.Designer.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,1034 @@
+namespace Maestro.Base.UI
+{
+ partial class ResourcePropertiesDialog
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ResourcePropertiesDialog));
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.SecurityTab = new System.Windows.Forms.TabPage();
+ this.UseInherited = new System.Windows.Forms.CheckBox();
+ this.UsersAndGroups = new System.Windows.Forms.ListView();
+ this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
+ this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
+ this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
+ this.WMSTab = new System.Windows.Forms.TabPage();
+ this.WMSClearHeaderButton = new System.Windows.Forms.Button();
+ this.groupBox2 = new System.Windows.Forms.GroupBox();
+ this.AutoGenerateWMSBounds = new System.Windows.Forms.Button();
+ this.EditWMSBounds = new System.Windows.Forms.Button();
+ this.WMSBounds = new System.Windows.Forms.TextBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.WMSOpaque = new System.Windows.Forms.CheckBox();
+ this.WMSQueryable = new System.Windows.Forms.CheckBox();
+ this.WMSAvalible = new System.Windows.Forms.CheckBox();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.WMSMetadata = new System.Windows.Forms.TextBox();
+ this.WMSAbstract = new System.Windows.Forms.TextBox();
+ this.WMSKeyWords = new System.Windows.Forms.TextBox();
+ this.WMSTitle = new System.Windows.Forms.TextBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.WFSTab = new System.Windows.Forms.TabPage();
+ this.WFSClearHeaderButton = new System.Windows.Forms.Button();
+ this.groupBox4 = new System.Windows.Forms.GroupBox();
+ this.AutoGenerateWFSBounds = new System.Windows.Forms.Button();
+ this.WFSOtherSRS = new System.Windows.Forms.ComboBox();
+ this.WFSPrimarySRS = new System.Windows.Forms.ComboBox();
+ this.label12 = new System.Windows.Forms.Label();
+ this.label11 = new System.Windows.Forms.Label();
+ this.EditWFSBounds = new System.Windows.Forms.Button();
+ this.WFSBounds = new System.Windows.Forms.TextBox();
+ this.label10 = new System.Windows.Forms.Label();
+ this.WFSAvalible = new System.Windows.Forms.CheckBox();
+ this.groupBox3 = new System.Windows.Forms.GroupBox();
+ this.WFSMetadata = new System.Windows.Forms.TextBox();
+ this.WFSAbstract = new System.Windows.Forms.TextBox();
+ this.WFSKeywords = new System.Windows.Forms.TextBox();
+ this.WFSTitle = new System.Windows.Forms.TextBox();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.CustomTab = new System.Windows.Forms.TabPage();
+ this.ClearHeaderButton = new System.Windows.Forms.Button();
+ this.dataGridView1 = new System.Windows.Forms.DataGridView();
+ this.ItemKey = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.ItemValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.ReferenceTab = new System.Windows.Forms.TabPage();
+ this.LoadingReferences = new System.Windows.Forms.ProgressBar();
+ this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.OutReferences = new System.Windows.Forms.GroupBox();
+ this.OutReferenceList = new System.Windows.Forms.ListView();
+ this.InReferences = new System.Windows.Forms.GroupBox();
+ this.InReferenceList = new System.Windows.Forms.ListView();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.ResourceID = new System.Windows.Forms.TextBox();
+ this.label13 = new System.Windows.Forms.Label();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.CancelBtn = new System.Windows.Forms.Button();
+ this.OKBtn = new System.Windows.Forms.Button();
+ this.ReferenceWorker = new System.ComponentModel.BackgroundWorker();
+ this.UserAndGroupImages = new System.Windows.Forms.ImageList(this.components);
+ this.securityContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.readWriteAccessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.readOnlyAccessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.denyAccessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.inheritedAccessRightsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+ this.tabControl1.SuspendLayout();
+ this.SecurityTab.SuspendLayout();
+ this.WMSTab.SuspendLayout();
+ this.groupBox2.SuspendLayout();
+ this.groupBox1.SuspendLayout();
+ this.WFSTab.SuspendLayout();
+ this.groupBox4.SuspendLayout();
+ this.groupBox3.SuspendLayout();
+ this.CustomTab.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+ this.ReferenceTab.SuspendLayout();
+ this.splitContainer1.Panel1.SuspendLayout();
+ this.splitContainer1.Panel2.SuspendLayout();
+ this.splitContainer1.SuspendLayout();
+ this.OutReferences.SuspendLayout();
+ this.InReferences.SuspendLayout();
+ this.panel2.SuspendLayout();
+ this.panel1.SuspendLayout();
+ this.securityContextMenu.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // tabControl1
+ //
+ this.tabControl1.Controls.Add(this.SecurityTab);
+ this.tabControl1.Controls.Add(this.WMSTab);
+ this.tabControl1.Controls.Add(this.WFSTab);
+ this.tabControl1.Controls.Add(this.CustomTab);
+ this.tabControl1.Controls.Add(this.ReferenceTab);
+ this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControl1.Location = new System.Drawing.Point(0, 32);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(354, 387);
+ this.tabControl1.TabIndex = 4;
+ this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
+ //
+ // SecurityTab
+ //
+ this.SecurityTab.Controls.Add(this.UseInherited);
+ this.SecurityTab.Controls.Add(this.UsersAndGroups);
+ this.SecurityTab.Location = new System.Drawing.Point(4, 22);
+ this.SecurityTab.Name = "SecurityTab";
+ this.SecurityTab.Padding = new System.Windows.Forms.Padding(3);
+ this.SecurityTab.Size = new System.Drawing.Size(346, 361);
+ this.SecurityTab.TabIndex = 0;
+ this.SecurityTab.Text = "Security";
+ this.SecurityTab.UseVisualStyleBackColor = true;
+ //
+ // UseInherited
+ //
+ this.UseInherited.AutoSize = true;
+ this.UseInherited.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.UseInherited.Location = new System.Drawing.Point(16, 16);
+ this.UseInherited.Name = "UseInherited";
+ this.UseInherited.Size = new System.Drawing.Size(166, 17);
+ this.UseInherited.TabIndex = 1;
+ this.UseInherited.Text = "Use inherited security settings";
+ this.UseInherited.UseVisualStyleBackColor = true;
+ this.UseInherited.CheckedChanged += new System.EventHandler(this.UseInherited_CheckedChanged);
+ //
+ // UsersAndGroups
+ //
+ this.UsersAndGroups.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.UsersAndGroups.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+ this.columnHeader1,
+ this.columnHeader2,
+ this.columnHeader3});
+ this.UsersAndGroups.Enabled = false;
+ this.UsersAndGroups.FullRowSelect = true;
+ this.UsersAndGroups.Location = new System.Drawing.Point(16, 40);
+ this.UsersAndGroups.Name = "UsersAndGroups";
+ this.UsersAndGroups.Size = new System.Drawing.Size(316, 310);
+ this.UsersAndGroups.TabIndex = 0;
+ this.UsersAndGroups.UseCompatibleStateImageBehavior = false;
+ this.UsersAndGroups.View = System.Windows.Forms.View.Details;
+ //
+ // columnHeader1
+ //
+ this.columnHeader1.Text = "Name";
+ this.columnHeader1.Width = 88;
+ //
+ // columnHeader2
+ //
+ this.columnHeader2.Text = "Description";
+ this.columnHeader2.Width = 104;
+ //
+ // columnHeader3
+ //
+ this.columnHeader3.Text = "Access";
+ this.columnHeader3.Width = 93;
+ //
+ // WMSTab
+ //
+ this.WMSTab.Controls.Add(this.WMSClearHeaderButton);
+ this.WMSTab.Controls.Add(this.groupBox2);
+ this.WMSTab.Controls.Add(this.groupBox1);
+ this.WMSTab.Location = new System.Drawing.Point(4, 22);
+ this.WMSTab.Name = "WMSTab";
+ this.WMSTab.Padding = new System.Windows.Forms.Padding(3);
+ this.WMSTab.Size = new System.Drawing.Size(346, 361);
+ this.WMSTab.TabIndex = 1;
+ this.WMSTab.Text = "WMS";
+ this.WMSTab.UseVisualStyleBackColor = true;
+ //
+ // WMSClearHeaderButton
+ //
+ this.WMSClearHeaderButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.WMSClearHeaderButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.WMSClearHeaderButton.Location = new System.Drawing.Point(220, 325);
+ this.WMSClearHeaderButton.Name = "WMSClearHeaderButton";
+ this.WMSClearHeaderButton.Size = new System.Drawing.Size(119, 23);
+ this.WMSClearHeaderButton.TabIndex = 10;
+ this.WMSClearHeaderButton.Text = "Clear all WMS data";
+ this.WMSClearHeaderButton.UseVisualStyleBackColor = true;
+ //
+ // groupBox2
+ //
+ this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox2.Controls.Add(this.AutoGenerateWMSBounds);
+ this.groupBox2.Controls.Add(this.EditWMSBounds);
+ this.groupBox2.Controls.Add(this.WMSBounds);
+ this.groupBox2.Controls.Add(this.label4);
+ this.groupBox2.Controls.Add(this.WMSOpaque);
+ this.groupBox2.Controls.Add(this.WMSQueryable);
+ this.groupBox2.Controls.Add(this.WMSAvalible);
+ this.groupBox2.Location = new System.Drawing.Point(8, 176);
+ this.groupBox2.Name = "groupBox2";
+ this.groupBox2.Size = new System.Drawing.Size(332, 144);
+ this.groupBox2.TabIndex = 9;
+ this.groupBox2.TabStop = false;
+ this.groupBox2.Text = "Functionality";
+ //
+ // AutoGenerateWMSBounds
+ //
+ this.AutoGenerateWMSBounds.Image = ((System.Drawing.Image)(resources.GetObject("AutoGenerateWMSBounds.Image")));
+ this.AutoGenerateWMSBounds.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.AutoGenerateWMSBounds.Location = new System.Drawing.Point(304, 116);
+ this.AutoGenerateWMSBounds.Name = "AutoGenerateWMSBounds";
+ this.AutoGenerateWMSBounds.Size = new System.Drawing.Size(24, 20);
+ this.AutoGenerateWMSBounds.TabIndex = 9;
+ this.AutoGenerateWMSBounds.UseVisualStyleBackColor = true;
+ //
+ // EditWMSBounds
+ //
+ this.EditWMSBounds.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.EditWMSBounds.Location = new System.Drawing.Point(304, 96);
+ this.EditWMSBounds.Name = "EditWMSBounds";
+ this.EditWMSBounds.Size = new System.Drawing.Size(24, 20);
+ this.EditWMSBounds.TabIndex = 8;
+ this.EditWMSBounds.Text = "...";
+ this.EditWMSBounds.UseVisualStyleBackColor = true;
+ //
+ // WMSBounds
+ //
+ this.WMSBounds.Location = new System.Drawing.Point(88, 96);
+ this.WMSBounds.Multiline = true;
+ this.WMSBounds.Name = "WMSBounds";
+ this.WMSBounds.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.WMSBounds.Size = new System.Drawing.Size(216, 40);
+ this.WMSBounds.TabIndex = 7;
+ this.WMSBounds.TextChanged += new System.EventHandler(this.WMSBounds_TextChanged);
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label4.Location = new System.Drawing.Point(8, 96);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(43, 13);
+ this.label4.TabIndex = 5;
+ this.label4.Text = "Bounds";
+ //
+ // WMSOpaque
+ //
+ this.WMSOpaque.AutoSize = true;
+ this.WMSOpaque.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.WMSOpaque.Location = new System.Drawing.Point(8, 72);
+ this.WMSOpaque.Name = "WMSOpaque";
+ this.WMSOpaque.Size = new System.Drawing.Size(64, 17);
+ this.WMSOpaque.TabIndex = 6;
+ this.WMSOpaque.Text = "Opaque";
+ this.WMSOpaque.UseVisualStyleBackColor = true;
+ this.WMSOpaque.CheckedChanged += new System.EventHandler(this.WMSOpaque_CheckedChanged);
+ //
+ // WMSQueryable
+ //
+ this.WMSQueryable.AutoSize = true;
+ this.WMSQueryable.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.WMSQueryable.Location = new System.Drawing.Point(8, 48);
+ this.WMSQueryable.Name = "WMSQueryable";
+ this.WMSQueryable.Size = new System.Drawing.Size(74, 17);
+ this.WMSQueryable.TabIndex = 3;
+ this.WMSQueryable.Text = "Queryable";
+ this.WMSQueryable.UseVisualStyleBackColor = true;
+ this.WMSQueryable.CheckedChanged += new System.EventHandler(this.WMSQueryable_CheckedChanged);
+ //
+ // WMSAvalible
+ //
+ this.WMSAvalible.AutoSize = true;
+ this.WMSAvalible.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.WMSAvalible.Location = new System.Drawing.Point(8, 24);
+ this.WMSAvalible.Name = "WMSAvalible";
+ this.WMSAvalible.Size = new System.Drawing.Size(63, 17);
+ this.WMSAvalible.TabIndex = 4;
+ this.WMSAvalible.Text = "Avalible";
+ this.WMSAvalible.UseVisualStyleBackColor = true;
+ this.WMSAvalible.CheckedChanged += new System.EventHandler(this.WMSAvalible_CheckedChanged);
+ //
+ // 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.WMSMetadata);
+ this.groupBox1.Controls.Add(this.WMSAbstract);
+ this.groupBox1.Controls.Add(this.WMSKeyWords);
+ this.groupBox1.Controls.Add(this.WMSTitle);
+ this.groupBox1.Controls.Add(this.label1);
+ this.groupBox1.Controls.Add(this.label5);
+ this.groupBox1.Controls.Add(this.label2);
+ this.groupBox1.Controls.Add(this.label3);
+ this.groupBox1.Location = new System.Drawing.Point(8, 8);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(332, 160);
+ this.groupBox1.TabIndex = 8;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Description";
+ //
+ // WMSMetadata
+ //
+ this.WMSMetadata.Location = new System.Drawing.Point(80, 112);
+ this.WMSMetadata.Multiline = true;
+ this.WMSMetadata.Name = "WMSMetadata";
+ this.WMSMetadata.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.WMSMetadata.Size = new System.Drawing.Size(248, 40);
+ this.WMSMetadata.TabIndex = 11;
+ this.WMSMetadata.TextChanged += new System.EventHandler(this.WMSMetadata_TextChanged);
+ //
+ // WMSAbstract
+ //
+ this.WMSAbstract.Location = new System.Drawing.Point(80, 64);
+ this.WMSAbstract.Multiline = true;
+ this.WMSAbstract.Name = "WMSAbstract";
+ this.WMSAbstract.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.WMSAbstract.Size = new System.Drawing.Size(248, 40);
+ this.WMSAbstract.TabIndex = 10;
+ this.WMSAbstract.TextChanged += new System.EventHandler(this.WMSAbstract_TextChanged);
+ //
+ // WMSKeyWords
+ //
+ this.WMSKeyWords.Location = new System.Drawing.Point(80, 40);
+ this.WMSKeyWords.Name = "WMSKeyWords";
+ this.WMSKeyWords.Size = new System.Drawing.Size(248, 20);
+ this.WMSKeyWords.TabIndex = 9;
+ this.WMSKeyWords.TextChanged += new System.EventHandler(this.WMSKeyWords_TextChanged);
+ //
+ // WMSTitle
+ //
+ this.WMSTitle.Location = new System.Drawing.Point(80, 16);
+ this.WMSTitle.Name = "WMSTitle";
+ this.WMSTitle.Size = new System.Drawing.Size(248, 20);
+ this.WMSTitle.TabIndex = 8;
+ this.WMSTitle.TextChanged += new System.EventHandler(this.WMSTitle_TextChanged);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label1.Location = new System.Drawing.Point(8, 16);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(27, 13);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "Title";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label5.Location = new System.Drawing.Point(8, 64);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(46, 13);
+ this.label5.TabIndex = 7;
+ this.label5.Text = "Abstract";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label2.Location = new System.Drawing.Point(8, 112);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(52, 13);
+ this.label2.TabIndex = 1;
+ this.label2.Text = "Metadata";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label3.Location = new System.Drawing.Point(8, 40);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(53, 13);
+ this.label3.TabIndex = 2;
+ this.label3.Text = "Keywords";
+ //
+ // WFSTab
+ //
+ this.WFSTab.Controls.Add(this.WFSClearHeaderButton);
+ this.WFSTab.Controls.Add(this.groupBox4);
+ this.WFSTab.Controls.Add(this.groupBox3);
+ this.WFSTab.Location = new System.Drawing.Point(4, 22);
+ this.WFSTab.Name = "WFSTab";
+ this.WFSTab.Padding = new System.Windows.Forms.Padding(3);
+ this.WFSTab.Size = new System.Drawing.Size(346, 361);
+ this.WFSTab.TabIndex = 2;
+ this.WFSTab.Text = "WFS";
+ this.WFSTab.UseVisualStyleBackColor = true;
+ //
+ // WFSClearHeaderButton
+ //
+ this.WFSClearHeaderButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.WFSClearHeaderButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.WFSClearHeaderButton.Location = new System.Drawing.Point(220, 324);
+ this.WFSClearHeaderButton.Name = "WFSClearHeaderButton";
+ this.WFSClearHeaderButton.Size = new System.Drawing.Size(119, 23);
+ this.WFSClearHeaderButton.TabIndex = 11;
+ this.WFSClearHeaderButton.Text = "Clear all WFS data";
+ this.WFSClearHeaderButton.UseVisualStyleBackColor = true;
+ this.WFSClearHeaderButton.Click += new System.EventHandler(this.WFSClearHeaderButton_Click);
+ //
+ // groupBox4
+ //
+ this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox4.Controls.Add(this.AutoGenerateWFSBounds);
+ this.groupBox4.Controls.Add(this.WFSOtherSRS);
+ this.groupBox4.Controls.Add(this.WFSPrimarySRS);
+ this.groupBox4.Controls.Add(this.label12);
+ this.groupBox4.Controls.Add(this.label11);
+ this.groupBox4.Controls.Add(this.EditWFSBounds);
+ this.groupBox4.Controls.Add(this.WFSBounds);
+ this.groupBox4.Controls.Add(this.label10);
+ this.groupBox4.Controls.Add(this.WFSAvalible);
+ this.groupBox4.Location = new System.Drawing.Point(7, 176);
+ this.groupBox4.Name = "groupBox4";
+ this.groupBox4.Size = new System.Drawing.Size(332, 144);
+ this.groupBox4.TabIndex = 10;
+ this.groupBox4.TabStop = false;
+ this.groupBox4.Text = "Functionality";
+ //
+ // AutoGenerateWFSBounds
+ //
+ this.AutoGenerateWFSBounds.Image = ((System.Drawing.Image)(resources.GetObject("AutoGenerateWFSBounds.Image")));
+ this.AutoGenerateWFSBounds.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.AutoGenerateWFSBounds.Location = new System.Drawing.Point(304, 116);
+ this.AutoGenerateWFSBounds.Name = "AutoGenerateWFSBounds";
+ this.AutoGenerateWFSBounds.Size = new System.Drawing.Size(24, 20);
+ this.AutoGenerateWFSBounds.TabIndex = 15;
+ this.AutoGenerateWFSBounds.UseVisualStyleBackColor = true;
+ //
+ // WFSOtherSRS
+ //
+ this.WFSOtherSRS.FormattingEnabled = true;
+ this.WFSOtherSRS.Location = new System.Drawing.Point(88, 72);
+ this.WFSOtherSRS.Name = "WFSOtherSRS";
+ this.WFSOtherSRS.Size = new System.Drawing.Size(240, 21);
+ this.WFSOtherSRS.TabIndex = 14;
+ this.WFSOtherSRS.TextChanged += new System.EventHandler(this.WFSOtherSRS_TextChanged);
+ //
+ // WFSPrimarySRS
+ //
+ this.WFSPrimarySRS.FormattingEnabled = true;
+ this.WFSPrimarySRS.Location = new System.Drawing.Point(88, 48);
+ this.WFSPrimarySRS.Name = "WFSPrimarySRS";
+ this.WFSPrimarySRS.Size = new System.Drawing.Size(240, 21);
+ this.WFSPrimarySRS.TabIndex = 13;
+ //
+ // label12
+ //
+ this.label12.AutoSize = true;
+ this.label12.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label12.Location = new System.Drawing.Point(8, 72);
+ this.label12.Name = "label12";
+ this.label12.Size = new System.Drawing.Size(58, 13);
+ this.label12.TabIndex = 11;
+ this.label12.Text = "Other SRS";
+ //
+ // label11
+ //
+ this.label11.AutoSize = true;
+ this.label11.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label11.Location = new System.Drawing.Point(8, 48);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(66, 13);
+ this.label11.TabIndex = 9;
+ this.label11.Text = "Primary SRS";
+ //
+ // EditWFSBounds
+ //
+ this.EditWFSBounds.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.EditWFSBounds.Location = new System.Drawing.Point(304, 96);
+ this.EditWFSBounds.Name = "EditWFSBounds";
+ this.EditWFSBounds.Size = new System.Drawing.Size(24, 20);
+ this.EditWFSBounds.TabIndex = 8;
+ this.EditWFSBounds.Text = "...";
+ this.EditWFSBounds.UseVisualStyleBackColor = true;
+ //
+ // WFSBounds
+ //
+ this.WFSBounds.Location = new System.Drawing.Point(88, 96);
+ this.WFSBounds.Multiline = true;
+ this.WFSBounds.Name = "WFSBounds";
+ this.WFSBounds.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.WFSBounds.Size = new System.Drawing.Size(216, 40);
+ this.WFSBounds.TabIndex = 7;
+ this.WFSBounds.TextChanged += new System.EventHandler(this.WFSBounds_TextChanged);
+ //
+ // label10
+ //
+ this.label10.AutoSize = true;
+ this.label10.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label10.Location = new System.Drawing.Point(8, 96);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(43, 13);
+ this.label10.TabIndex = 5;
+ this.label10.Text = "Bounds";
+ //
+ // WFSAvalible
+ //
+ this.WFSAvalible.AutoSize = true;
+ this.WFSAvalible.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.WFSAvalible.Location = new System.Drawing.Point(8, 24);
+ this.WFSAvalible.Name = "WFSAvalible";
+ this.WFSAvalible.Size = new System.Drawing.Size(63, 17);
+ this.WFSAvalible.TabIndex = 4;
+ this.WFSAvalible.Text = "Avalible";
+ this.WFSAvalible.UseVisualStyleBackColor = true;
+ //
+ // groupBox3
+ //
+ this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox3.Controls.Add(this.WFSMetadata);
+ this.groupBox3.Controls.Add(this.WFSAbstract);
+ this.groupBox3.Controls.Add(this.WFSKeywords);
+ this.groupBox3.Controls.Add(this.WFSTitle);
+ this.groupBox3.Controls.Add(this.label6);
+ this.groupBox3.Controls.Add(this.label7);
+ this.groupBox3.Controls.Add(this.label8);
+ this.groupBox3.Controls.Add(this.label9);
+ this.groupBox3.Location = new System.Drawing.Point(7, 8);
+ this.groupBox3.Name = "groupBox3";
+ this.groupBox3.Size = new System.Drawing.Size(332, 160);
+ this.groupBox3.TabIndex = 9;
+ this.groupBox3.TabStop = false;
+ this.groupBox3.Text = "Description";
+ //
+ // WFSMetadata
+ //
+ this.WFSMetadata.Location = new System.Drawing.Point(80, 112);
+ this.WFSMetadata.Multiline = true;
+ this.WFSMetadata.Name = "WFSMetadata";
+ this.WFSMetadata.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.WFSMetadata.Size = new System.Drawing.Size(248, 40);
+ this.WFSMetadata.TabIndex = 11;
+ //
+ // WFSAbstract
+ //
+ this.WFSAbstract.Location = new System.Drawing.Point(80, 64);
+ this.WFSAbstract.Multiline = true;
+ this.WFSAbstract.Name = "WFSAbstract";
+ this.WFSAbstract.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.WFSAbstract.Size = new System.Drawing.Size(248, 40);
+ this.WFSAbstract.TabIndex = 10;
+ //
+ // WFSKeywords
+ //
+ this.WFSKeywords.Location = new System.Drawing.Point(80, 40);
+ this.WFSKeywords.Name = "WFSKeywords";
+ this.WFSKeywords.Size = new System.Drawing.Size(248, 20);
+ this.WFSKeywords.TabIndex = 9;
+ //
+ // WFSTitle
+ //
+ this.WFSTitle.Location = new System.Drawing.Point(80, 16);
+ this.WFSTitle.Name = "WFSTitle";
+ this.WFSTitle.Size = new System.Drawing.Size(248, 20);
+ this.WFSTitle.TabIndex = 8;
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label6.Location = new System.Drawing.Point(8, 16);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(27, 13);
+ this.label6.TabIndex = 0;
+ this.label6.Text = "Title";
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label7.Location = new System.Drawing.Point(8, 64);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(46, 13);
+ this.label7.TabIndex = 7;
+ this.label7.Text = "Abstract";
+ //
+ // label8
+ //
+ this.label8.AutoSize = true;
+ this.label8.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label8.Location = new System.Drawing.Point(8, 112);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(52, 13);
+ this.label8.TabIndex = 1;
+ this.label8.Text = "Metadata";
+ //
+ // label9
+ //
+ this.label9.AutoSize = true;
+ this.label9.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label9.Location = new System.Drawing.Point(8, 40);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(53, 13);
+ this.label9.TabIndex = 2;
+ this.label9.Text = "Keywords";
+ //
+ // CustomTab
+ //
+ this.CustomTab.Controls.Add(this.ClearHeaderButton);
+ this.CustomTab.Controls.Add(this.dataGridView1);
+ this.CustomTab.Location = new System.Drawing.Point(4, 22);
+ this.CustomTab.Name = "CustomTab";
+ this.CustomTab.Size = new System.Drawing.Size(346, 361);
+ this.CustomTab.TabIndex = 3;
+ this.CustomTab.Text = "Custom Metadata";
+ this.CustomTab.UseVisualStyleBackColor = true;
+ //
+ // ClearHeaderButton
+ //
+ this.ClearHeaderButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.ClearHeaderButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.ClearHeaderButton.Location = new System.Drawing.Point(224, 328);
+ this.ClearHeaderButton.Name = "ClearHeaderButton";
+ this.ClearHeaderButton.Size = new System.Drawing.Size(119, 23);
+ this.ClearHeaderButton.TabIndex = 11;
+ this.ClearHeaderButton.Text = "Clear all metadata";
+ this.ClearHeaderButton.UseVisualStyleBackColor = true;
+ this.ClearHeaderButton.Click += new System.EventHandler(this.ClearHeaderButton_Click);
+ //
+ // dataGridView1
+ //
+ this.dataGridView1.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)));
+ dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
+ this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.ItemKey,
+ this.ItemValue});
+ dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
+ dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
+ dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2;
+ this.dataGridView1.Location = new System.Drawing.Point(8, 8);
+ this.dataGridView1.Name = "dataGridView1";
+ dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dataGridView1.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
+ this.dataGridView1.Size = new System.Drawing.Size(336, 312);
+ this.dataGridView1.TabIndex = 0;
+ this.dataGridView1.Leave += new System.EventHandler(this.dataGridView1_Leave);
+ //
+ // ItemKey
+ //
+ this.ItemKey.HeaderText = "Key";
+ this.ItemKey.Name = "ItemKey";
+ //
+ // ItemValue
+ //
+ this.ItemValue.HeaderText = "Value";
+ this.ItemValue.Name = "ItemValue";
+ //
+ // ReferenceTab
+ //
+ this.ReferenceTab.Controls.Add(this.LoadingReferences);
+ this.ReferenceTab.Controls.Add(this.splitContainer1);
+ this.ReferenceTab.Location = new System.Drawing.Point(4, 22);
+ this.ReferenceTab.Name = "ReferenceTab";
+ this.ReferenceTab.Padding = new System.Windows.Forms.Padding(3);
+ this.ReferenceTab.Size = new System.Drawing.Size(346, 361);
+ this.ReferenceTab.TabIndex = 4;
+ this.ReferenceTab.Text = "References";
+ this.ReferenceTab.UseVisualStyleBackColor = true;
+ //
+ // LoadingReferences
+ //
+ this.LoadingReferences.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.LoadingReferences.Location = new System.Drawing.Point(32, 88);
+ this.LoadingReferences.Name = "LoadingReferences";
+ this.LoadingReferences.Size = new System.Drawing.Size(288, 23);
+ this.LoadingReferences.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
+ this.LoadingReferences.TabIndex = 1;
+ //
+ // splitContainer1
+ //
+ this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.splitContainer1.Location = new System.Drawing.Point(3, 3);
+ this.splitContainer1.Name = "splitContainer1";
+ this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ //
+ // splitContainer1.Panel1
+ //
+ this.splitContainer1.Panel1.Controls.Add(this.OutReferences);
+ //
+ // splitContainer1.Panel2
+ //
+ this.splitContainer1.Panel2.Controls.Add(this.InReferences);
+ this.splitContainer1.Size = new System.Drawing.Size(340, 355);
+ this.splitContainer1.SplitterDistance = 175;
+ this.splitContainer1.TabIndex = 0;
+ //
+ // OutReferences
+ //
+ this.OutReferences.Controls.Add(this.OutReferenceList);
+ this.OutReferences.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.OutReferences.Enabled = false;
+ this.OutReferences.Location = new System.Drawing.Point(0, 0);
+ this.OutReferences.Name = "OutReferences";
+ this.OutReferences.Size = new System.Drawing.Size(340, 175);
+ this.OutReferences.TabIndex = 0;
+ this.OutReferences.TabStop = false;
+ this.OutReferences.Text = "This resource references";
+ //
+ // OutReferenceList
+ //
+ this.OutReferenceList.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.OutReferenceList.FullRowSelect = true;
+ this.OutReferenceList.GridLines = true;
+ this.OutReferenceList.Location = new System.Drawing.Point(3, 16);
+ this.OutReferenceList.Name = "OutReferenceList";
+ this.OutReferenceList.Size = new System.Drawing.Size(334, 156);
+ this.OutReferenceList.TabIndex = 0;
+ this.OutReferenceList.UseCompatibleStateImageBehavior = false;
+ this.OutReferenceList.View = System.Windows.Forms.View.List;
+ //
+ // InReferences
+ //
+ this.InReferences.Controls.Add(this.InReferenceList);
+ this.InReferences.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.InReferences.Enabled = false;
+ this.InReferences.Location = new System.Drawing.Point(0, 0);
+ this.InReferences.Name = "InReferences";
+ this.InReferences.Size = new System.Drawing.Size(340, 176);
+ this.InReferences.TabIndex = 1;
+ this.InReferences.TabStop = false;
+ this.InReferences.Text = "This resource is referenced by";
+ //
+ // InReferenceList
+ //
+ this.InReferenceList.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.InReferenceList.FullRowSelect = true;
+ this.InReferenceList.GridLines = true;
+ this.InReferenceList.Location = new System.Drawing.Point(3, 16);
+ this.InReferenceList.Name = "InReferenceList";
+ this.InReferenceList.Size = new System.Drawing.Size(334, 157);
+ this.InReferenceList.TabIndex = 1;
+ this.InReferenceList.UseCompatibleStateImageBehavior = false;
+ this.InReferenceList.View = System.Windows.Forms.View.List;
+ //
+ // panel2
+ //
+ this.panel2.Controls.Add(this.ResourceID);
+ this.panel2.Controls.Add(this.label13);
+ this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
+ this.panel2.Location = new System.Drawing.Point(0, 0);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(354, 32);
+ this.panel2.TabIndex = 5;
+ //
+ // ResourceID
+ //
+ this.ResourceID.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.ResourceID.Location = new System.Drawing.Point(88, 6);
+ this.ResourceID.Name = "ResourceID";
+ this.ResourceID.ReadOnly = true;
+ this.ResourceID.Size = new System.Drawing.Size(260, 20);
+ this.ResourceID.TabIndex = 1;
+ //
+ // label13
+ //
+ this.label13.AutoSize = true;
+ this.label13.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.label13.Location = new System.Drawing.Point(8, 8);
+ this.label13.Name = "label13";
+ this.label13.Size = new System.Drawing.Size(67, 13);
+ this.label13.TabIndex = 0;
+ this.label13.Text = "Resource ID";
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.CancelBtn);
+ this.panel1.Controls.Add(this.OKBtn);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.panel1.Location = new System.Drawing.Point(0, 419);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(354, 40);
+ this.panel1.TabIndex = 3;
+ //
+ // CancelBtn
+ //
+ this.CancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.CancelBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.CancelBtn.Location = new System.Drawing.Point(261, 8);
+ this.CancelBtn.Name = "CancelBtn";
+ this.CancelBtn.Size = new System.Drawing.Size(75, 23);
+ this.CancelBtn.TabIndex = 1;
+ this.CancelBtn.Text = "Cancel";
+ this.CancelBtn.UseVisualStyleBackColor = true;
+ this.CancelBtn.Click += new System.EventHandler(this.CancelBtn_Click);
+ //
+ // OKBtn
+ //
+ this.OKBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.OKBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.OKBtn.Location = new System.Drawing.Point(180, 8);
+ this.OKBtn.Name = "OKBtn";
+ this.OKBtn.Size = new System.Drawing.Size(75, 23);
+ this.OKBtn.TabIndex = 0;
+ this.OKBtn.Text = "OK";
+ this.OKBtn.UseVisualStyleBackColor = true;
+ this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
+ //
+ // ReferenceWorker
+ //
+ this.ReferenceWorker.WorkerReportsProgress = true;
+ this.ReferenceWorker.WorkerSupportsCancellation = true;
+ this.ReferenceWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.ReferenceWorker_DoWork);
+ this.ReferenceWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.ReferenceWorker_RunWorkerCompleted);
+ //
+ // UserAndGroupImages
+ //
+ this.UserAndGroupImages.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("UserAndGroupImages.ImageStream")));
+ this.UserAndGroupImages.TransparentColor = System.Drawing.Color.Transparent;
+ this.UserAndGroupImages.Images.SetKeyName(0, "WriteUser.ico");
+ this.UserAndGroupImages.Images.SetKeyName(1, "ReadOnlyUser.ico");
+ this.UserAndGroupImages.Images.SetKeyName(2, "DenyUser.ico");
+ this.UserAndGroupImages.Images.SetKeyName(3, "WriteGroup.ico");
+ this.UserAndGroupImages.Images.SetKeyName(4, "ReadOnlyGroup.ico");
+ this.UserAndGroupImages.Images.SetKeyName(5, "DenyGroup.ico");
+ this.UserAndGroupImages.Images.SetKeyName(6, "InheritedUser.ico");
+ this.UserAndGroupImages.Images.SetKeyName(7, "InheritedGroup.ico");
+ //
+ // securityContextMenu
+ //
+ this.securityContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.readWriteAccessToolStripMenuItem,
+ this.readOnlyAccessToolStripMenuItem,
+ this.denyAccessToolStripMenuItem,
+ this.inheritedAccessRightsToolStripMenuItem});
+ this.securityContextMenu.Name = "securityContextMenu";
+ this.securityContextMenu.Size = new System.Drawing.Size(184, 92);
+ //
+ // readWriteAccessToolStripMenuItem
+ //
+ this.readWriteAccessToolStripMenuItem.Name = "readWriteAccessToolStripMenuItem";
+ this.readWriteAccessToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
+ this.readWriteAccessToolStripMenuItem.Text = "Read write access";
+ //
+ // readOnlyAccessToolStripMenuItem
+ //
+ this.readOnlyAccessToolStripMenuItem.Name = "readOnlyAccessToolStripMenuItem";
+ this.readOnlyAccessToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
+ this.readOnlyAccessToolStripMenuItem.Text = "Read only access";
+ //
+ // denyAccessToolStripMenuItem
+ //
+ this.denyAccessToolStripMenuItem.Name = "denyAccessToolStripMenuItem";
+ this.denyAccessToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
+ this.denyAccessToolStripMenuItem.Text = "Deny access";
+ //
+ // inheritedAccessRightsToolStripMenuItem
+ //
+ this.inheritedAccessRightsToolStripMenuItem.Name = "inheritedAccessRightsToolStripMenuItem";
+ this.inheritedAccessRightsToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
+ this.inheritedAccessRightsToolStripMenuItem.Text = "Inherited access rights";
+ //
+ // ResourcePropertiesDialog
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(354, 459);
+ this.Controls.Add(this.tabControl1);
+ this.Controls.Add(this.panel2);
+ this.Controls.Add(this.panel1);
+ this.Name = "ResourcePropertiesDialog";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Resource Properties";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnFormClosing);
+ this.tabControl1.ResumeLayout(false);
+ this.SecurityTab.ResumeLayout(false);
+ this.SecurityTab.PerformLayout();
+ this.WMSTab.ResumeLayout(false);
+ this.groupBox2.ResumeLayout(false);
+ this.groupBox2.PerformLayout();
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ this.WFSTab.ResumeLayout(false);
+ this.groupBox4.ResumeLayout(false);
+ this.groupBox4.PerformLayout();
+ this.groupBox3.ResumeLayout(false);
+ this.groupBox3.PerformLayout();
+ this.CustomTab.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+ this.ReferenceTab.ResumeLayout(false);
+ this.splitContainer1.Panel1.ResumeLayout(false);
+ this.splitContainer1.Panel2.ResumeLayout(false);
+ this.splitContainer1.ResumeLayout(false);
+ this.OutReferences.ResumeLayout(false);
+ this.InReferences.ResumeLayout(false);
+ this.panel2.ResumeLayout(false);
+ this.panel2.PerformLayout();
+ this.panel1.ResumeLayout(false);
+ this.securityContextMenu.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage SecurityTab;
+ private System.Windows.Forms.CheckBox UseInherited;
+ private System.Windows.Forms.ListView UsersAndGroups;
+ private System.Windows.Forms.ColumnHeader columnHeader1;
+ private System.Windows.Forms.ColumnHeader columnHeader2;
+ private System.Windows.Forms.ColumnHeader columnHeader3;
+ private System.Windows.Forms.TabPage WMSTab;
+ private System.Windows.Forms.Button WMSClearHeaderButton;
+ private System.Windows.Forms.GroupBox groupBox2;
+ private System.Windows.Forms.Button AutoGenerateWMSBounds;
+ private System.Windows.Forms.Button EditWMSBounds;
+ private System.Windows.Forms.TextBox WMSBounds;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.CheckBox WMSOpaque;
+ private System.Windows.Forms.CheckBox WMSQueryable;
+ private System.Windows.Forms.CheckBox WMSAvalible;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.TextBox WMSMetadata;
+ private System.Windows.Forms.TextBox WMSAbstract;
+ private System.Windows.Forms.TextBox WMSKeyWords;
+ private System.Windows.Forms.TextBox WMSTitle;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.TabPage WFSTab;
+ private System.Windows.Forms.Button WFSClearHeaderButton;
+ private System.Windows.Forms.GroupBox groupBox4;
+ private System.Windows.Forms.Button AutoGenerateWFSBounds;
+ private System.Windows.Forms.ComboBox WFSOtherSRS;
+ private System.Windows.Forms.ComboBox WFSPrimarySRS;
+ private System.Windows.Forms.Label label12;
+ private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.Button EditWFSBounds;
+ private System.Windows.Forms.TextBox WFSBounds;
+ private System.Windows.Forms.Label label10;
+ private System.Windows.Forms.CheckBox WFSAvalible;
+ private System.Windows.Forms.GroupBox groupBox3;
+ private System.Windows.Forms.TextBox WFSMetadata;
+ private System.Windows.Forms.TextBox WFSAbstract;
+ private System.Windows.Forms.TextBox WFSKeywords;
+ private System.Windows.Forms.TextBox WFSTitle;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.TabPage CustomTab;
+ private System.Windows.Forms.Button ClearHeaderButton;
+ private System.Windows.Forms.DataGridView dataGridView1;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ItemKey;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ItemValue;
+ private System.Windows.Forms.TabPage ReferenceTab;
+ private System.Windows.Forms.ProgressBar LoadingReferences;
+ private System.Windows.Forms.SplitContainer splitContainer1;
+ private System.Windows.Forms.GroupBox OutReferences;
+ private System.Windows.Forms.ListView OutReferenceList;
+ private System.Windows.Forms.GroupBox InReferences;
+ private System.Windows.Forms.ListView InReferenceList;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.TextBox ResourceID;
+ private System.Windows.Forms.Label label13;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.Button CancelBtn;
+ private System.Windows.Forms.Button OKBtn;
+ private System.ComponentModel.BackgroundWorker ReferenceWorker;
+ private System.Windows.Forms.ImageList UserAndGroupImages;
+ private System.Windows.Forms.ContextMenuStrip securityContextMenu;
+ private System.Windows.Forms.ToolStripMenuItem readWriteAccessToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem readOnlyAccessToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem denyAccessToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem inheritedAccessRightsToolStripMenuItem;
+ private System.Windows.Forms.ToolTip toolTip;
+ }
+}
\ No newline at end of file
Added: sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,1013 @@
+#region Disclaimer / License
+// Copyright (C) 2010, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels.Common;
+using OSGeo.MapGuide.MaestroAPI.Resource;
+using System.Collections.Specialized;
+using OSGeo.MapGuide.MaestroAPI.ObjectModels;
+using OSGeo.MapGuide.MaestroAPI.Exceptions;
+using OSGeo.MapGuide.ObjectModels.LayerDefinition;
+using OSGeo.MapGuide.ObjectModels.FeatureSource;
+
+namespace Maestro.Base.UI
+{
+ public partial class ResourcePropertiesDialog : Form
+ {
+ private ResourcePropertiesDialog()
+ {
+ InitializeComponent();
+ }
+
+ private IResourceIconCache m_icons;
+ private IServerConnection m_connection;
+ private ResourceIdentifier m_resourceId;
+
+ private ResourceDocumentHeaderType m_resourceHeader;
+ private ResourceFolderHeaderType m_folderHeader;
+
+ private bool m_isUpdating = false;
+ private string[] m_srslist = null;
+
+ private const int RWUSER = 0;
+ private const int ROUSER = 1;
+ private const int NOUSER = 2;
+ private const int RWGROUP = 3;
+ private const int ROGROUP = 4;
+ private const int NOGROUP = 5;
+ private const int IHUSER = 6;
+ private const int IHGROUP = 7;
+
+ private string[] StatusNames =
+ {
+ Properties.Resources.ResProp_ReadWriteAccess,
+ Properties.Resources.ResProp_ReadOnlyAccess,
+ Properties.Resources.ResProp_NoAccess,
+ Properties.Resources.ResProp_ReadWriteAccess,
+ Properties.Resources.ResProp_ReadOnlyAccess,
+ Properties.Resources.ResProp_NoAccess,
+ Properties.Resources.ResProp_InheritedAccess,
+ Properties.Resources.ResProp_InheritedAccess
+ };
+
+ private object m_lock = new object();
+ private volatile System.Threading.Thread m_backgroundThread = null;
+ private bool m_hasLoadedRefs = false;
+
+ private string m_openResource = null;
+
+ /// <summary>
+ /// A resource that the main form should open after this form has closed
+ /// </summary>
+ public string OpenResource { get { return m_openResource; } }
+
+ public ResourcePropertiesDialog(IResourceIconCache icons, IServerConnection connection, string resourceId)
+ : this()
+ {
+ m_connection = connection;
+ m_resourceId = resourceId;
+ ResourceID.Text = resourceId;
+ m_icons = icons;
+
+ InReferenceList.SmallImageList = OutReferenceList.SmallImageList = icons.SmallImageList;
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ Dictionary<string, ListViewItem> ul = new Dictionary<string, ListViewItem>();
+ Dictionary<string, ListViewItem> gl = new Dictionary<string, ListViewItem>();
+
+ UsersAndGroups.Items.Clear();
+ foreach (UserListUser u in m_connection.ResourceService.EnumerateUsers().Items)
+ {
+ ListViewItem lvi = new ListViewItem(new string[] { u.FullName, u.Description, StatusNames[IHUSER] }, IHUSER);
+ lvi.Tag = u;
+ UsersAndGroups.Items.Add(lvi);
+ ul.Add(u.Name, lvi);
+ }
+
+ foreach (GroupListGroup g in m_connection.ResourceService.EnumerateGroups().Group)
+ {
+ ListViewItem lvi = new ListViewItem(new string[] { g.Name, g.Description, StatusNames[IHGROUP] }, IHGROUP);
+ lvi.Tag = g;
+ UsersAndGroups.Items.Add(lvi);
+ gl.Add(g.Name, lvi);
+ }
+
+ if (m_resourceId.IsFolder)
+ {
+ m_folderHeader = m_connection.ResourceService.GetFolderHeader(m_resourceId);
+ if (m_folderHeader.Security.Users != null && m_folderHeader.Security.Users.User != null)
+ foreach (ResourceSecurityTypeUsersUser u in m_folderHeader.Security.Users.User)
+ if (ul.ContainsKey(u.Name))
+ UpdateListItem(u, ul[u.Name]);
+
+ if (m_folderHeader.Security.Groups != null && m_folderHeader.Security.Groups.Group != null)
+ foreach (ResourceSecurityTypeGroupsGroup g in m_folderHeader.Security.Groups.Group)
+ if (gl.ContainsKey(g.Name))
+ UpdateListItem(g, gl[g.Name]);
+
+ UseInherited.Checked = m_folderHeader.Security.Inherited;
+ tabControl1.TabPages.Remove(WMSTab);
+ tabControl1.TabPages.Remove(WFSTab);
+ tabControl1.TabPages.Remove(CustomTab);
+ tabControl1.TabPages.Remove(ReferenceTab);
+ }
+ else
+ {
+ m_resourceHeader = m_connection.ResourceService.GetResourceHeader(m_resourceId);
+ if (m_resourceHeader.Security.Users != null && m_resourceHeader.Security.Users.User != null)
+ foreach (ResourceSecurityTypeUsersUser u in m_resourceHeader.Security.Users.User)
+ if (ul.ContainsKey(u.Name))
+ UpdateListItem(u, ul[u.Name]);
+
+ if (m_resourceHeader.Security.Groups != null && m_resourceHeader.Security.Groups.Group != null)
+ foreach (ResourceSecurityTypeGroupsGroup g in m_resourceHeader.Security.Groups.Group)
+ if (gl.ContainsKey(g.Name))
+ UpdateListItem(g, gl[g.Name]);
+
+ UseInherited.Checked = m_resourceHeader.Security.Inherited;
+ if (m_resourceId.Extension != "LayerDefinition")
+ tabControl1.TabPages.Remove(WMSTab);
+ else
+ UpdateWMSDisplay();
+
+ if (m_resourceId.Extension != "FeatureSource")
+ tabControl1.TabPages.Remove(WFSTab);
+ else
+ UpdateWFSDisplay();
+ }
+
+ //Hide the tabControl if it only has one tab
+ if (tabControl1.TabCount == 1)
+ {
+ foreach (Control c in new System.Collections.ArrayList(tabControl1.TabPages[0].Controls))
+ {
+ tabControl1.Controls.Remove(c);
+ c.Top += tabControl1.Top;
+ this.Controls.Add(c);
+
+ }
+
+ this.Controls.Remove(tabControl1);
+ }
+
+ this.Text = m_resourceId;
+ UseInherited_CheckedChanged(null, null);
+
+ }
+
+ private void UpdateWFSDisplay()
+ {
+ try
+ {
+ m_isUpdating = true;
+ if (m_resourceHeader.Metadata != null && m_resourceHeader.Metadata.Simple != null && m_resourceHeader.Metadata.Simple.Property != null)
+ {
+ var props = m_resourceHeader.Metadata.GetProperties();
+
+ WFSTitle.Text = props["_Title"];
+ WFSKeywords.Text = props["_Keywords"];
+ WFSAbstract.Text = props["_Abstract"];
+ WFSMetadata.Text = props["_ExtendedMetadata"];
+
+ WFSPrimarySRS.Text = props["_PrimarySRS"];
+ WFSOtherSRS.Text = props["_OtherSRS"];
+ WFSAvalible.Checked = props["_IsPublished"] == "1";
+ WFSBounds.Text = props["_Bounds"];
+ }
+ else
+ {
+ WFSTitle.Text =
+ WFSKeywords.Text =
+ WFSAbstract.Text =
+ WFSMetadata.Text = "";
+
+ WFSPrimarySRS.Text =
+ WFSOtherSRS.Text =
+ WFSBounds.Text = "";
+ WFSAvalible.Checked = false;
+ }
+ }
+ finally
+ {
+ m_isUpdating = false;
+ }
+
+ UpdateCustomDisplay();
+ }
+
+ private void UpdateWMSDisplay()
+ {
+ try
+ {
+ m_isUpdating = true;
+ if (m_resourceHeader.Metadata != null && m_resourceHeader.Metadata.Simple != null && m_resourceHeader.Metadata.Simple.Property != null)
+ {
+ var props = m_resourceHeader.Metadata.GetProperties();
+ WMSTitle.Text = props["_Title"];
+ WMSKeyWords.Text = props["_Keywords"];
+ WMSAbstract.Text = props["_Abstract"];
+ WMSMetadata.Text = props["_ExtendedMetadata"];
+
+ WMSQueryable.Checked = props["_Queryable"] == "1";
+ WMSOpaque.Checked = props["_Opaque"] == "1";
+ WMSAvalible.Checked = props["_IsPublished"] == "1";
+ WMSBounds.Text = props["_Bounds"];
+ }
+ else
+ {
+ WMSTitle.Text =
+ WMSKeyWords.Text =
+ WMSAbstract.Text =
+ WMSMetadata.Text = "";
+
+ WMSQueryable.Checked =
+ WMSOpaque.Checked =
+ WMSAvalible.Checked = false;
+
+ WMSBounds.Text = "";
+ }
+ }
+ finally
+ {
+ m_isUpdating = false;
+ }
+ UpdateCustomDisplay();
+ }
+
+ private void UpdateCustomDisplay()
+ {
+ dataGridView1.Rows.Clear();
+ if (m_resourceHeader.Metadata != null && m_resourceHeader.Metadata.Simple != null && m_resourceHeader.Metadata.Simple.Property != null)
+ {
+ foreach (ResourceDocumentHeaderTypeMetadataSimpleProperty prop in m_resourceHeader.Metadata.Simple.Property)
+ dataGridView1.Rows.Add(new string[] { prop.Name, prop.Value });
+ }
+ }
+
+ private void UseInherited_CheckedChanged(object sender, EventArgs e)
+ {
+ UsersAndGroups.Enabled = !UseInherited.Checked;
+ }
+
+ private void UpdateListItem(ResourceSecurityTypeUsersUser u, ListViewItem lvi)
+ {
+ if (u == null)
+ lvi.ImageIndex = IHUSER;
+
+ switch (u.Permissions)
+ {
+ case PermissionsType.rw:
+ lvi.ImageIndex = RWUSER;
+ break;
+ case PermissionsType.r:
+ lvi.ImageIndex = ROUSER;
+ break;
+ case PermissionsType.n:
+ lvi.ImageIndex = NOUSER;
+ break;
+ }
+
+ lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+ }
+
+ private void UpdateListItem(ResourceSecurityTypeGroupsGroup g, ListViewItem lvi)
+ {
+ if (g == null)
+ lvi.ImageIndex = IHGROUP;
+
+ switch (g.Permissions)
+ {
+ case PermissionsType.rw:
+ lvi.ImageIndex = RWGROUP;
+ break;
+ case PermissionsType.r:
+ lvi.ImageIndex = ROGROUP;
+ break;
+ case PermissionsType.n:
+ lvi.ImageIndex = NOGROUP;
+ break;
+ }
+ lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+ }
+
+ private void ClearHeaderButton_Click(object sender, EventArgs e)
+ {
+ m_resourceHeader.Metadata = null;
+ UpdateCustomDisplay();
+ }
+
+ private void WMSTitle_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Title", WMSTitle.Text);
+ }
+
+ private void EnsureMetaData()
+ {
+ if (m_resourceHeader != null)
+ {
+ /*
+ if (m_resourceHeader.Metadata == null)
+ m_resourceHeader.Metadata = new ResourceDocumentHeaderTypeMetadata();
+ if (m_resourceHeader.Metadata.Simple == null)
+ m_resourceHeader.Metadata.Simple = new ResourceDocumentHeaderTypeMetadataSimple();
+ if (m_resourceHeader.Metadata.Simple.Property == null)
+ m_resourceHeader.Metadata.Simple.Property = new ResourceDocumentHeaderTypeMetadataSimplePropertyCollection();
+ */
+
+ if (m_resourceId.Extension == "LayerDefinition")
+ {
+ if (m_resourceHeader.Metadata == null)
+ m_resourceHeader.Metadata = ObjectFactory.CreateMetadata();
+
+ var props = m_resourceHeader.Metadata.GetProperties();
+ bool apply = false;
+
+ if (props["_Title"] == null)
+ {
+ props["_Title"] = "";
+ apply = true;
+ }
+
+ if (props["_Keywords"] == null)
+ {
+ props["_Keywords"] = "";
+ apply = true;
+ }
+
+ if (props["_Abstract"] == null)
+ {
+ props["_Abstract"] = "";
+ apply = true;
+ }
+
+ if (props["_ExtendedMetadata"] == null)
+ {
+ props["_ExtendedMetadata"] = "";
+ apply = true;
+ }
+
+ if (props["_Queryable"] == null)
+ {
+ props["_Queryable"] = "0";
+ apply = true;
+ }
+
+ if (props["_Opaque"] == null)
+ {
+ props["_Opaque"] = "0";
+ apply = true;
+ }
+
+ if (props["_IsPublished"] == null)
+ {
+ props["_IsPublished"] = "0";
+ apply = true;
+ }
+
+ if (props["_Bounds"] == null)
+ {
+ props["_Bounds"] = "";
+ apply = true;
+ }
+
+ if (apply)
+ m_resourceHeader.Metadata.ApplyProperties(props);
+ }
+ }
+ }
+
+ private void WMSKeyWords_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Keywords", WMSKeyWords.Text);
+ }
+
+ private void WMSAbstract_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Abstract", WMSAbstract.Text);
+ }
+
+ private void WMSMetadata_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_ExtendedMetadata", WMSMetadata.Text);
+ }
+
+ private void WMSAvalible_CheckedChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_IsPublished", Convert.ToInt32(WMSAvalible.Checked).ToString());
+ }
+
+ private void WMSBounds_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Bounds", WMSBounds.Text);
+ }
+
+ private void WMSQueryable_CheckedChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Queryable", Convert.ToInt32(WMSQueryable.Checked).ToString());
+ }
+
+ private void WMSOpaque_CheckedChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Opaque", Convert.ToInt32(WMSOpaque.Checked).ToString());
+ }
+
+ private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (tabControl1.SelectedTab == CustomTab)
+ UpdateCustomDisplay();
+ else if (tabControl1.SelectedTab == WMSTab)
+ UpdateWMSDisplay();
+ else if (tabControl1.SelectedTab == WFSTab)
+ {
+ FillCoordSysLists();
+ UpdateWFSDisplay();
+ }
+ else if (tabControl1.SelectedTab == ReferenceTab)
+ {
+ if (!m_hasLoadedRefs)
+ {
+ LoadingReferences.Visible = true;
+ ReferenceWorker.RunWorkerAsync(m_resourceId);
+ }
+ }
+ }
+
+ private void FillCoordSysLists()
+ {
+ if (WFSPrimarySRS.Items.Count == 0)
+ {
+ try
+ {
+ List<string> items = new List<string>();
+ foreach (OSGeo.MapGuide.MaestroAPI.CoordinateSystem.CoordinateSystemBase c in m_connection.CoordinateSystemCatalog.Coordsys)
+ {
+ if (c.Code.StartsWith("EPSG:"))
+ items.Add(c.Code);
+ }
+
+ m_srslist = items.ToArray();
+ try
+ {
+ WFSPrimarySRS.BeginUpdate();
+ WFSPrimarySRS.Items.AddRange(m_srslist);
+ }
+ finally
+ {
+ WFSPrimarySRS.EndUpdate();
+ }
+
+ try
+ {
+ WFSOtherSRS.BeginUpdate();
+ WFSOtherSRS.Items.AddRange(m_srslist);
+ }
+ finally
+ {
+ WFSOtherSRS.EndUpdate();
+ }
+ }
+ catch
+ {
+ }
+ }
+ }
+
+ private void WFSTitle_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Title", WFSTitle.Text);
+ }
+
+ private void WFSKeywords_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Keywords", WFSKeywords.Text);
+ }
+
+ private void WFSAbstract_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Abstract", WFSAbstract.Text);
+ }
+
+ private void WFSMetadata_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_ExtendedMetadata", WFSMetadata.Text);
+ }
+
+ private void checkBox3_CheckedChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_IsPublished", Convert.ToInt32(WFSAvalible.Checked).ToString());
+ }
+
+ private void WFSPrimarySRS_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_PrimarySRS", WFSPrimarySRS.Text);
+ }
+
+ private void WFSOtherSRS_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_OtherSRS", WFSOtherSRS.Text);
+ }
+
+ private void WFSBounds_TextChanged(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ EnsureMetaData();
+ m_resourceHeader.Metadata.SetProperty("_Bounds", WFSBounds.Text);
+ }
+
+ private void WFSClearHeaderButton_Click(object sender, EventArgs e)
+ {
+ if (m_isUpdating)
+ return;
+ m_resourceHeader.Metadata = null;
+ UpdateWFSDisplay();
+ }
+
+ private void dataGridView1_Leave(object sender, EventArgs e)
+ {
+ EnsureMetaData();
+ m_resourceHeader.Metadata.Simple.Property.Clear();
+
+ foreach (DataGridViewRow dr in dataGridView1.Rows)
+ {
+ string k = dr.Cells[0].Value == null || dr.Cells[0].Value == DBNull.Value ? "" : dr.Cells[0].Value.ToString();
+ string v = dr.Cells[1].Value == null || dr.Cells[1].Value == DBNull.Value ? "" : dr.Cells[1].Value.ToString();
+
+ if (!string.IsNullOrEmpty(k))
+ m_resourceHeader.Metadata.SetProperty(k, v);
+ }
+ }
+
+ private void OKBtn_Click(object sender, EventArgs e)
+ {
+ m_openResource = null;
+
+ try
+ {
+ //Update security info
+ if (m_resourceId.IsFolder)
+ {
+ m_folderHeader.Security.Inherited = UseInherited.Checked;
+ if (m_folderHeader.Security.Inherited)
+ {
+ m_folderHeader.Security.Groups = null;
+ m_folderHeader.Security.Users = null;
+ }
+ else
+ {
+ m_folderHeader.Security.Groups = ObjectFactory.CreateSecurityGroup();
+ m_folderHeader.Security.Users = ObjectFactory.CreateSecurityUser();
+ //m_folderHeader.Security.Groups.Group = new ResourceSecurityTypeGroupsGroupCollection();
+ //m_folderHeader.Security.Users.User = new ResourceSecurityTypeUsersUserCollection();
+ ReadSecurityData(m_folderHeader.Security.Groups.Group, m_folderHeader.Security.Users.User);
+ }
+ }
+ else
+ {
+ m_resourceHeader.Security.Inherited = UseInherited.Checked;
+ if (m_resourceHeader.Security.Inherited)
+ {
+ m_resourceHeader.Security.Groups = null;
+ m_resourceHeader.Security.Users = null;
+ }
+ else
+ {
+ m_resourceHeader.Security.Groups = ObjectFactory.CreateSecurityGroup();
+ m_resourceHeader.Security.Users = ObjectFactory.CreateSecurityUser();
+ //m_resourceHeader.Security.Groups.Group = new ResourceSecurityTypeGroupsGroupCollection();
+ //m_resourceHeader.Security.Users.User = new ResourceSecurityTypeUsersUserCollection();
+ ReadSecurityData(m_resourceHeader.Security.Groups.Group, m_resourceHeader.Security.Users.User);
+ }
+ }
+
+ //Save header
+ if (m_resourceId.IsFolder)
+ m_connection.ResourceService.SetFolderHeader(m_resourceId, m_folderHeader);
+ else
+ m_connection.ResourceService.SetResourceHeader(m_resourceId, m_resourceHeader);
+ }
+ catch (Exception ex)
+ {
+ string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
+ MessageBox.Show(this, string.Format(Properties.Resources.ResProp_SaveError, msg), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
+ this.DialogResult = DialogResult.OK;
+ this.Close();
+ }
+
+ private void ReadSecurityData(IList<ResourceSecurityTypeGroupsGroup> groups, IList<ResourceSecurityTypeUsersUser> users)
+ {
+ foreach (ListViewItem lvi in UsersAndGroups.Items)
+ {
+ if (lvi.Tag as UserListUser != null)
+ {
+ ResourceSecurityTypeUsersUser u = new ResourceSecurityTypeUsersUser();
+ u.Name = (lvi.Tag as UserListUser).Name;
+ if (lvi.ImageIndex == RWUSER)
+ u.Permissions = PermissionsType.rw;
+ else if (lvi.ImageIndex == ROUSER)
+ u.Permissions = PermissionsType.r;
+ else if (lvi.ImageIndex == NOUSER)
+ u.Permissions = PermissionsType.n;
+ else
+ continue;
+ users.Add(u);
+ }
+ else if (lvi.Tag as GroupListGroup != null && lvi.ImageIndex != IHGROUP)
+ {
+ ResourceSecurityTypeGroupsGroup g = new ResourceSecurityTypeGroupsGroup();
+ g.Name = (lvi.Tag as GroupListGroup).Name;
+ if (lvi.ImageIndex == RWGROUP)
+ g.Permissions = PermissionsType.rw;
+ else if (lvi.ImageIndex == ROGROUP)
+ g.Permissions = PermissionsType.r;
+ else if (lvi.ImageIndex == NOGROUP)
+ g.Permissions = PermissionsType.n;
+ else
+ continue;
+ groups.Add(g);
+ }
+ }
+ }
+
+ private void securityContextMenu_Opening(object sender, CancelEventArgs e)
+ {
+ readWriteAccessToolStripMenuItem.Enabled =
+ readOnlyAccessToolStripMenuItem.Enabled =
+ denyAccessToolStripMenuItem.Enabled =
+ inheritedAccessRightsToolStripMenuItem.Enabled =
+ UsersAndGroups.SelectedItems.Count > 0;
+ }
+
+ private void readWriteAccessToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
+ {
+ if (lvi.Tag as UserListUser != null)
+ lvi.ImageIndex = RWUSER;
+ else
+ lvi.ImageIndex = RWGROUP;
+
+ lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+ }
+ }
+
+ private void readOnlyAccessToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
+ {
+ if (lvi.Tag as UserListUser != null)
+ lvi.ImageIndex = ROUSER;
+ else
+ lvi.ImageIndex = ROGROUP;
+
+ lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+ }
+ }
+
+ private void denyAccessToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
+ {
+ if (lvi.Tag as UserListUser != null)
+ lvi.ImageIndex = NOUSER;
+ else
+ lvi.ImageIndex = NOGROUP;
+
+ lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+ }
+ }
+
+ private void inheritedAccessRightsToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
+ {
+ if (lvi.Tag as UserListUser != null)
+ lvi.ImageIndex = IHUSER;
+ else
+ lvi.ImageIndex = IHGROUP;
+
+ lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
+ }
+ }
+
+ private void EditWMSBounds_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (m_srslist == null)
+ {
+ List<string> items = new List<string>();
+ foreach (OSGeo.MapGuide.MaestroAPI.CoordinateSystem.CoordinateSystemBase c in m_connection.CoordinateSystemCatalog.Coordsys)
+ {
+ if (c.Code.StartsWith("EPSG:"))
+ items.Add(c.Code);
+ }
+
+ m_srslist = items.ToArray();
+ }
+ }
+ catch
+ {
+ }
+
+ BoundsPicker bp = new BoundsPicker(WMSBounds.Text, m_srslist);
+ if (bp.ShowDialog(this) == DialogResult.OK)
+ WMSBounds.Text = bp.SRSBounds;
+ }
+
+ private void EditWFSBounds_Click(object sender, EventArgs e)
+ {
+ BoundsPicker bp = new BoundsPicker(WFSBounds.Text, null);
+ if (bp.ShowDialog(this) == DialogResult.OK)
+ WFSBounds.Text = bp.SRSBounds;
+ }
+
+ private void AutoGenerateWMSBounds_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ string srs = "EPSG:????";
+ string bounds = WMSBounds.Text;
+ bool warnedEPSG = false;
+
+ try
+ {
+ if (!string.IsNullOrEmpty(bounds))
+ {
+ System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
+ if (bounds.Trim().StartsWith("<"))
+ bounds = System.Web.HttpUtility.HtmlDecode(bounds);
+ bounds = "<root>" + bounds + "</root>";
+ doc.LoadXml(bounds);
+ System.Xml.XmlNode root = doc["root"];
+ if (root["Bounds"] != null)
+ {
+ if (root["Bounds"].Attributes["SRS"] != null)
+ srs = root["Bounds"].Attributes["SRS"].Value;
+ }
+ else
+ throw new Exception(Properties.Resources.ResProp_MissingBoundsError);
+ }
+ }
+ catch (Exception ex)
+ {
+ string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
+ warnedEPSG = true;
+ MessageBox.Show(this, string.Format(Properties.Resources.ResProp_BoundsDecodeError, msg), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ System.Globalization.CultureInfo ic = System.Globalization.CultureInfo.InvariantCulture;
+ ILayerDefinition ldef = (ILayerDefinition)m_connection.ResourceService.GetResource(m_resourceId);
+ var env = ldef.GetSpatialExtent(true);
+
+ //TODO: Convert to lon/lat
+
+ bounds = "<Bounds west=\"" + env.MinX.ToString(ic) + "\" east=\"" + env.MaxX.ToString(ic) + "\" south=\"" + env.MinY.ToString(ic) + "\" north=\"" + env.MaxY.ToString(ic) + "\" ";
+ bounds += " SRS=\"" + srs + "\"";
+ bounds += " />";
+
+ WMSBounds.Text = bounds;
+
+ if ((srs == "" || srs == "EPSG:????") && !warnedEPSG)
+ {
+ MessageBox.Show(this, Properties.Resources.ResProp_EpsgMissingWarning, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ WMSBounds.SelectionStart = WMSBounds.Text.IndexOf("SRS=\"") + "SRS=\"".Length;
+ WMSBounds.SelectionLength = WMSBounds.Text.IndexOf("\"", WMSBounds.SelectionStart) - WMSBounds.SelectionStart;
+ WMSBounds.ScrollToCaret();
+ WMSBounds.Focus();
+ }
+ }
+ catch (Exception ex)
+ {
+ string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
+ MessageBox.Show(this, string.Format(Properties.Resources.ResProp_WMSBoundsReadError, msg), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void AutoGenerateWFSBounds_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ System.Globalization.CultureInfo ic = System.Globalization.CultureInfo.InvariantCulture;
+ FeatureSourceType fs = (FeatureSourceType)m_connection.ResourceService.GetResource(m_resourceId);
+ bool failures = false;
+
+ Envelope env = null;
+ foreach (FeatureSourceDescription.FeatureSourceSchema scm in fs.Describe().Schemas)
+ {
+ foreach (FeatureSetColumn col in scm.Columns)
+ {
+ if (col.Type == Utility.GeometryType || col.Type == Utility.RasterType)
+ {
+ try
+ {
+ Envelope re = m_connection.FeatureService.GetSpatialExtent(fs.ResourceID, scm.Name, col.Name, true);
+ if (env == null)
+ env = re;
+ else
+ env.ExpandToInclude(re);
+ }
+ catch
+ {
+ failures = true;
+ }
+ }
+ }
+ }
+
+ if (env == null)
+ throw new Exception(failures ? Properties.Resources.ResProp_NoSpatialDataWithFailuresError : Properties.Resources.ResProp_NoSpatialDataError);
+
+ WFSBounds.Text = "<Bounds west=\"" + env.MinX.ToString(ic) + "\" east=\"" + env.MaxX.ToString(ic) + "\" south=\"" + env.MinY.ToString(ic) + "\" north=\"" + env.MaxY.ToString(ic) + "\" />";
+ }
+ catch (Exception ex)
+ {
+ string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
+ MessageBox.Show(this, string.Format(Properties.Resources.ResProp_WFSBoundsReadError, msg), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void ReferenceWorker_DoWork(object sender, DoWorkEventArgs e)
+ {
+ try
+ {
+ lock(m_lock)
+ m_backgroundThread = System.Threading.Thread.CurrentThread;
+
+ string resourceId = (ResourceIdentifier)e.Argument;
+
+ List<string> lst = new List<string>();
+ foreach (string s in m_connection.ResourceService.EnumerateResourceReferences(resourceId).ResourceId)
+ if (!lst.Contains(s))
+ lst.Add(s);
+
+ System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
+ using (var ms = m_connection.ResourceService.GetResourceXmlData(resourceId))
+ {
+ doc.Load(ms);
+ }
+
+ List<KeyValuePair<System.Xml.XmlNode, string>> refs = Utility.GetResourceIdPointers(doc);
+ List<string> r = new List<string>();
+ foreach (KeyValuePair<System.Xml.XmlNode, string> s in refs)
+ if (!r.Contains(s.Value))
+ r.Add(s.Value);
+ e.Result = new object[] { lst, r };
+ }
+ catch(System.Threading.ThreadAbortException)
+ {
+ System.Threading.Thread.ResetAbort();
+ e.Cancel = true;
+ return;
+ }
+ finally
+ {
+ lock(m_lock)
+ m_backgroundThread = null;
+ }
+ }
+
+ private void ReferenceWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
+ {
+ LoadingReferences.Visible = false;
+
+ if (e.Cancelled)
+ {
+ this.Close();
+ return;
+ }
+ if (e.Error != null || e.Result as object[] == null || (e.Result as object[]).Length != 2)
+ {
+ if (e.Error != null)
+ MessageBox.Show(this, string.Format(Properties.Resources.ResProp_ReferenceReadSpecificError, e.Error.Message), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ else
+ MessageBox.Show(this, Properties.Resources.ResProp_ReferenceReadError, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+
+ return;
+ }
+
+ OutReferences.Enabled = InReferences.Enabled = true;
+
+ List<string> l1 = ((object[])e.Result)[0] as List<string>;
+ List<string> l2 = ((object[])e.Result)[1] as List<string>;
+
+ foreach (string s in l2)
+ OutReferenceList.Items.Add(s, m_icons.GetImageIndexFromResourceID(s));
+
+ foreach (string s in l1)
+ InReferenceList.Items.Add(s, m_icons.GetImageIndexFromResourceID(s));
+
+ m_hasLoadedRefs = true;
+ }
+
+ private void OutReferenceList_DoubleClick(object sender, EventArgs e)
+ {
+ if (OutReferenceList.SelectedItems.Count == 1)
+ {
+ m_openResource = OutReferenceList.SelectedItems[0].Text;
+ this.Close();
+ }
+ }
+
+ private void InReferenceList_DoubleClick(object sender, EventArgs e)
+ {
+ if (InReferenceList.SelectedItems.Count == 1)
+ {
+ m_openResource = InReferenceList.SelectedItems[0].Text;
+ this.Close();
+ }
+ }
+
+ private void CancelBtn_Click(object sender, EventArgs e)
+ {
+ m_openResource = null;
+ }
+
+ private void OnFormClosing(object sender, FormClosingEventArgs e)
+ {
+ lock (m_lock)
+ {
+ if (m_backgroundThread != null)
+ {
+ this.Enabled = false;
+ m_backgroundThread.Abort();
+ e.Cancel = true;
+ return;
+ }
+ }
+ }
+ }
+}
Added: sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.resx
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.resx (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/UI/ResourcePropertiesDialog.resx 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="AutoGenerateWMSBounds.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAXNJREFUOE+tkrFL
+ AnEcxYWmoD+gsc3FpaFNqsnBKBpqCII22xy6IQNxqcEWwUmIDiKMME2oJSEi4VoqCCoIo646Q07zyAw8
+ 0OJevZ8YRkIcdfAdjt+9z/e9dz+H47+f22APXi9WQa6p7aCcmYaRGUf1RBLTcV8kEkE4HMbV8RaeUv2o
+ Hg2hcjiIh5gTpZQHDWMG5rUXpaQLzwfe76B4fAO6rqO4O4fHFSca92Ow7gZgXnqghrpQSvThrTiBen4S
+ utwtYOXtXpj59aabaDQK06yhdrOHwtqo2PxeGBGCYmIYdUMRkIoy25zP8x9RCDEMA7ncObSYS1jfX3JD
+ S06JLS+noc7Z2wtp9XC27EZ2cxGBhQCCwfnfhe0QWZYhSRLoiN2wWJ/PZw9CoN/vF2JC6OzPEDoilEBb
+ 944idkFhezxbEAI4BGiaBlVVRSxbEPbBGJZlieEvtw1hDEVRviC8fITacsKP0+m0gDCO7VJb22ifnfD9
+ A5gpQ9n5eKQcAAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="AutoGenerateWFSBounds.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAXNJREFUOE+tkrFL
+ AnEcxYWmoD+gsc3FpaFNqsnBKBpqCII22xy6IQNxqcEWwUmIDiKMME2oJSEi4VoqCCoIo646Q07zyAw8
+ 0OJevZ8YRkIcdfAdjt+9z/e9dz+H47+f22APXi9WQa6p7aCcmYaRGUf1RBLTcV8kEkE4HMbV8RaeUv2o
+ Hg2hcjiIh5gTpZQHDWMG5rUXpaQLzwfe76B4fAO6rqO4O4fHFSca92Ow7gZgXnqghrpQSvThrTiBen4S
+ utwtYOXtXpj59aabaDQK06yhdrOHwtqo2PxeGBGCYmIYdUMRkIoy25zP8x9RCDEMA7ncObSYS1jfX3JD
+ S06JLS+noc7Z2wtp9XC27EZ2cxGBhQCCwfnfhe0QWZYhSRLoiN2wWJ/PZw9CoN/vF2JC6OzPEDoilEBb
+ 944idkFhezxbEAI4BGiaBlVVRSxbEPbBGJZlieEvtw1hDEVRviC8fITacsKP0+m0gDCO7VJb22ifnfD9
+ A5gpQ9n5eKQcAAAAAElFTkSuQmCC
+</value>
+ </data>
+ <metadata name="ItemKey.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <metadata name="ItemValue.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+ <metadata name="ReferenceWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+ <metadata name="UserAndGroupImages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>154, 17</value>
+ </metadata>
+ <data name="UserAndGroupImages.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAS
+ KwAAAk1TRnQBSQFMAgEBCAEAARQBAAEUAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
+ AwABMAMAAQEBAAEgBgABMP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AQgABVQICAasBUQFU
+ AWIB+WAAAR4BbAEQAf4BZAGlAWMB/wFxAa8BcAH/AW0BrAFtAf8BaAGoAWgB/wFkAaUBZAH/AWIBowFh
+ Af8BZQGmAWUB/wFnAacBZgH/AWkBqQFpAf8BQwGBAUMB/wEMAUEBDAH/ATYCAQFXFAABRQIBAXkBNgGF
+ ATYB/wFQAZcBTwH/AU0BlQFMAf8BSAGRAUgB/wFCAY0BQgH/AUEBjAFBAf8BRgGPAUUB/wFEAYsBRAH/
+ AQwBOgEMAf8BHwGBAR8B/wEuAgEBRhQAAQcCAQIHAgEBCAEFAgEBBQFgAggB1QFNAaIBwAH+AVEBVAFj
+ AfkBBQIBAQUBAgMBIAABBwIBAgcCAQEIAQUCAQEFAQMCAQIDAgEBAwEeAgEBKQErARcBTwH7ASsBFwF+
+ AfsBKwEXAVsB+wE/AgEBaQgAAT8CAQFpAYEB1QGBAf8BPQG9ATsB/wE9Ab0BOwH/AT0BvQE7Af8BPQG9
+ ATsB/wFDAb4BQQH/AWAByAFfAf8BPQG9ATsB/wE9Ab0BOwH/AT0BvQE7Af8BWAF/AS4B/wGTAQwBHQH/
+ ARwBgQEcAf8UAAFUAZoBVAH/AT0BvQE7Af8BPQG9ATsB/wE9Ab0BOwH/AT0BvQE7Af8BUwHEAVEB/wFO
+ AcIBTAH/AT0BvQE7Af8BOwG3ATkB/wGUAQwBHgH/AT0BvQE7Af8BNgGGATYB/wwAAQ0CAQEPAXoBigFm
+ Af4BgAGiAXYB/gGAAaIBdgH+AYABogF3Af4BgAGgAXcB/gFGAYsBqQH+AZIBzAHqAf8BqwGlAaYB/wGp
+ AaoBowH/AbEBsAGrAf8BrQKYAf4BBgIBAQYMAAENAgEBDwF6AYoBZgH+AYABogF2Af4BgAGiAXYB/gGA
+ AaIBdwH+AYABoAF3Af4BgAGWAXQB/gIRAecB/wETARUBtAH/AUMBTAFBAf4BLQEgAWoB/gEmARMBsQH+
+ AUECAQFwBAABUQICAZ4BaAHKAWcB/wE9Ab0BOwH/AT0BvQE7Af8BPQG9ATsB/wE9Ab0BOwH/AVIBmAFR
+ Af8BMgGBATAB/wF8AdEBegH/AT0BvQE7Af8BPQG9ATsB/wE8AbwBOgH/ATEBkAEvAf8BUAGXAU8B/xQA
+ AXUBswF0Af8BPQG9ATsB/wE9Ab0BOwH/AT0BvQE7Af8BRAG/AUIB/wEgAYEBHgH/AR8BgQEeAf8BQQG+
+ AT8B/wE9Ab0BOwH/ASgBegEnAf8BPQG9ATsB/wFjAaUBYgH/DAABQwIBAXYBUwGXAUEB/gFLAZIBQQH+
+ AUsBkgFBAf4BSwGSAUEB/gF4AYcBZAH+AYABngF4Af4BpQGiAaAB/wHFAdwBqwH/AcoB2wGZAf8B3AHb
+ AZ0B/wFaAgUBwQG1AqQB/gwAAUMCAQF2AVMBlwFBAf4BSwGSAUEB/gFLAZIBQQH+AUsBkgFBAf4BeAGH
+ AWQB/gE1ASgBYgH+AREBEwHgAf8BEwEYAYAB/wE/AVgBLwH+AYABoAF3Af4BXQEPAREB6gEsARUBcwH8
+ BAABUgICAaIBZgHJAWUB/wE8AbwBOwH/ATwBvAE7Af8BPAG8ATsB/wF1Ac4BdAH/AWwBoAFoAv8C9wH/
+ AVoBngFZAf8BPAG8ATsB/wE8AbwBOwH/ATABjQEvAf8BjQEMAR0B/wEsAVABJgH/CAABFgIBARwBQAIB
+ AW0BQQIBAW8BegG2AXkB/wE8AbsBOwH/ATwBuwE7Af8BPAG7ATsB/wGGAdABhQH/AecB6gHgAf8B1AHh
+ Ac4B/wGEAdMBgwH/ATwBuwE7Af8BlAEMAR4B/wExAT0BGwH/AWoBqQFpAf8MAAFJAgIBgwFQAZUBQQH+
+ AUsBkgFBAf4BSwGSAUEB/gFxAZ4BXQH+AZgBngF/Af4BUAF/AUEB/gGnAqIB/wHJAdsBmQH/AckB1wGL
+ Af8B2wHWAYYB/wFeAgYBygF5ATYBMwH2DAABSQICAYMBUAGVAUEB/gFLAZIBQQH+AUsBkgFBAf4BcQGe
+ AV0B/gGYAZ4BfwH+AREBEwGTAf8BEgEVAZQB/wFLAZIBQQH+ARIBFQGjAf8BcgF/AV4B/gFNAgIBkwEm
+ ARMBsQH+BAABTQICAZMBbQHJAWwB/wE7AbgBOgH/ATsBuAE6Af8BOwG4AToB/wGBAbkBgAH/AfwB9QH0
+ Af8B/gL2Af8BQwGLAT8B/wFUAcEBUwH/ATsBuAE6Af8BOwG4AToB/wFGAaMBNgH/AZQBDAEeAf8BLQIB
+ AUQBEwIBARgB6AG4AYIB/wHkAZ8BUwH/AcwBjgFLAf8BdAGvAXIB/wE6AbYBOQH/AToBtgE5Af8BOgG2
+ ATkB/wFMAZMBSQH/AfwB9QH0Af8B/AH1AfQB/wFYAZsBVgH/AToBtgE5Af8BPAGyATkB/wGRARABHgH/
+ ASUBOQEYAf8BDQIBARABsAF/AWgB/gG8AYIBcwH+AYABfwFBAf4BUgGSAUEB/gFKAY0BQAH+AUoBjQFA
+ Af4BegGGAWUB/gHTAbwBuwH+AcMBtgGwAf4BsQKsAf8ByQHWAYsB/wHJAdABgQH/AeEB1wGEAf8BZwIO
+ AeUBigFNAUwB+QENAgEBEAGwAX8BaAH+AbwBggFzAf4BgAF/AUEB/gFSAZIBQQH+AUoBjQFAAf4BSgGN
+ AUAB/gF6AYYBZQH+AdMBvAG7Af4BSgE+AWkB/gIRAecB/wFKAYcBQAH+AUoBiQFAAf4BEwEVAccB/wFe
+ ARMBGwHyASwBFQFpAfwEAAEzAgEBUAGIAdMBhwH/ATkBswE4Af8BOQGzATgB/wE9AbQBPAH/ATUBgQEx
+ Af8B3wLYAf8B2QLSAf8BwAHNAbkB/wGOAdABjQH/AXQBDAEYAf8BSAGYATQB/wE6AbMBOgH/AZQBDAEe
+ Af8BNgIBAVUBPAIBAWQB5QGgAVUB/wHjAZgBRQH/AdUBjwFBAf8BPwGKAToB/wE8AbEBPAH/ATgBsAE3
+ Af8BTgG2AU0B/wFlAYoBYAH/AYEBmgHAAf8BgQGbAcAB/wE9AQ0BEgH/AW4BXwEqAf8BOAGwATcB/wGC
+ ASkBIgH/AU8BHgEMAfUBQgIBAXIBvAF/AUEB/gG8AX8BQQH+AY0BewE/Af4BgAGcAXAB/gFJAYYBPgH+
+ AUoBhgE/Af4BUgF/AUEB/gGOAYQBlAH+AZ8BjQGVAf4BpQGoAaEB/wG+Ac0BngH/AdEB0AGBAf8B7QHg
+ AacB/wFhAggB1gFyAisB9QFCAgEBcgG8AX8BQQH+AbwBfwFBAf4BjQF7AT8B/gGAAZwBcAH+AUkBhgE+
+ Af4BSgGGAT8B/gFSAX8BQQH+AY4BhAGUAf4BmwGKAZEB/gIRAdkB/wERARMB3AH/AS0BKAFXAf4BFQEX
+ AacB/wEmARMBsQH+ASwCAQFCCAABUQGVAUwB/wFQAbYBTwH/ATcBrAE3Af8BcQG0AXEB/wEmAXkBmAH/
+ AREBdwHVAf8BKwGBAdkB/wETAXYB0gH/AUkBgQFaAf8BJwErARYB/wGDAQwBGwH/AZQBDAEeAf8BXAIS
+ Ae8EAAE+AgEBZwHjAZ4BUwH/AeEBlgFEAf8B4AGVAUQB/wGuAY0BbAH/AVkBmgFUAf8BgQHJAYEB/wFK
+ AYoBnwH/AYABrgHqAf8BqQHWAf4B/wGqAdcB/gH/AVwBXgFlAf8BfwEMARoB/wGUAQwBHgH/AWQBDAEW
+ Af8BBwIBAQcBRQIBAXkBvAF/AUEB/gG8AX8BQQH+AbMBfwFBAf4BVQF1ATwB/gGAAZcBegH+AV0BfwFy
+ Af4BcQF/Aa8B/gGTAaUBwAH+AZcBpgHAAf4BRAF8AaYB/gGeAY0BiQH+AdEBzgHNAf8BqQGTAZIB/gFt
+ AhQB7AQAAUUCAQF5AbwBfwFBAf4BvAF/AUEB/gGzAX8BQQH+AVUBdQE8Af4BgAGXAXoB/gFdAX8BcgH+
+ AXEBfwGvAf4BkwGlAcAB/gGXAaYBwAH+AUUBegGkAf4BNgEpAVsB/gESARMBpgH/AUoBEgEuAfgBHwIB
+ ASoMAAEJAgEBCgFPATYBIgH2AXMBpwFwAf8BDgF1AdIB/wG4Ad0B/QH/AY0BygL/AYwByQL/AZYBzgH+
+ Af8BcAGlAecB/wFiAZUBjAH/AU0BkgFHAf8BSQICAYQIAAEwAgEBSQHgAZ0BXQH/AdwBjQFCAf8B3AGN
+ AUIB/wGvAW0BTQH/AdcC0QH/AY0BmAGeAf8BmwHIAfMB/wGKAcgC/wGJAcgC/wGJAcgC/wGIAccC/wGK
+ AbwB7wH/ASYCAQE2CAABNgIBAVYBuAF/AUEB/gG3AX8BQQH+AbwBfwFhAf4BvQGlAaMB/gGfAYcBhgH+
+ AX0BfwGyAf4BgAGbAcEB/gGAAZsBwQH+AYABmwHBAf4BgAGbAcEB/gFHATUBVQH5EAABNgIBAVYBuAF/
+ AUEB/gG3AX8BQQH+AbwBfwFhAf4BvQGlAaMB/gGfAYcBhgH+AX0BfwGyAf4BgAGbAcEB/gGAAZsBwQH+
+ AYABmwHBAf4BgAGbAcEB/gFHATUBVQH5IAABVAICAagBtgHcAf0B/wGIAccC/wGIAccC/wGIAccC/wGH
+ AccC/wGJAccB/gH/ATcBgwHeAf8BBQIBAQUQAAHUAaABgQH/AdQBggFAAf8B0QGHAU4B/wFuAXcBhwH/
+ AR8BeAHLAf8BFAF5AdcB/wGHAcYB/gH/AYMBxAL/AYMBwwL/AYIBwwL/AYEBwwL/AYcBxQH+Af8BXQIJ
+ AdkMAAGwAX8BcwH+AbMBfwFBAf4BgAF8AX4B/gFQAX8BqgH+AUYBcwGZAf4BgAGcAcEB/gGAAZgBwQH+
+ AYABmAHBAf4BgAGXAcEB/gGAAZcBwQH+AYsBoAG+Af4BBAIBAQQQAAGwAX8BcwH+AbMBfwFBAf4BgAF8
+ AX4B/gFQAX8BqgH+AUYBcwGZAf4BgAGcAcEB/gGAAZgBwQH+AYABmAHBAf4BgAGXAcEB/gGAAZcBwQH+
+ AYsBoAG+Af4BBAIBAQQcAAEoAYEB4QH/AYMBxAL/AYMBwwL/AYIBwwL/AYEBwwL/AYEBwgL/AYEBwgL/
+ AbMB2gH9Af8BPAIBAWIQAAEcAgEBJgGxAXIBUQH/ASoBfAHIAf8BpQHVAf4B/wGDAb0B8AH/AT0BjAHq
+ Af8BgQHAAv8BgQG/Av8BgQG/Av8BgQG/Av8BgQG+Av8BgQG+Av8BKAGBAegB/wwAAQMCAQECAVsCBAG/
+ AYwBoQG+Af4BgAGbAcAB/gFHAX8BpwH+AYABlQHBAf4BgAGTAcEB/gGAAZMBwQH+AYABkgHBAf4BgAGS
+ AcEB/gGCAZ8BwAH+ARsCAQEkEAABAwIBAQIBWwIEAb8BjAGhAb4B/gGAAZsBwAH+AUcBfwGnAf4BgAGV
+ AcEB/gGAAZMBwQH+AYABkwHBAf4BgAGSAcEB/gGAAZIBwQH+AYIBnwHAAf4BGwIBASQcAAF1AawB8QH/
+ AYEBwAL/AYEBvwL/AYEBvwL/AYEBvwL/AYEBvgL/AYEBvgL/AY4ByQH+Af8BVwIDAbQUAAEaAgEBIgGr
+ AdYB/AH/AYYBxgL/AYEBuQHwAf8BMAGIAfEB/wGAAbsC/wF/AbsC/wF+AboC/wF+AboC/wF9AboC/wF8
+ AbkC/wEfAYEB8AH/EAABZQEOARAB5wGAAZgBwQH+AYABmAHBAf4BVgF/AaYB/gGAAZgBwQH+AYABjgHB
+ Af4BgAGOAcEB/gGAAY0BwQH+AX8BjQHBAf4BgAGdAb8B/gECAwEUAAFlAQ4BEAHnAYABmAHBAf4BgAGY
+ AcEB/gFWAX8BpgH+AYABmAHBAf4BgAGOAcEB/gGAAY4BwQH+AYABjQHBAf4BfwGNAcEB/gGAAZ0BvwH+
+ AQIDARwAAWsBqQH0Af8BgQG8Av8BgAG7Av8BfwG7Av8BfwG7Av8BfgG6Av8BfQG6Av8BjQHHAf4B/wFT
+ AgIBoxQAAU8CAgGZAYEBwgH+Af8BgQHAAv8BgQG8AfkB/wE0AYYB5gH/AYEBwQH+Af8BdwG3Av8BdwG2
+ Av8BdgG2Av8BdQG2Av8BhgHEAf4B/wFPAgIBmBAAAVoBfwG3Af4BgAGTAcEB/gGAAZMBwQH+AXoBfwGs
+ Af4BcQGCAcAB/gF6AYoBwQH+AXkBigHBAf4BeQGJAcEB/gF9AYwBwQH+AWQBGQEjAfEYAAFaAX8BtwH+
+ AYABkwHBAf4BgAGTAcEB/gF6AX8BrAH+AXEBggHAAf4BegGKAcEB/gF5AYoBwQH+AXkBiQHBAf4BfQGM
+ AcEB/gFkARkBIwHxIAABHwGDAfYB/wF+AboB/gH/AXkBtwL/AXgBtwL/AXgBtwL/AXcBtgL/AXcBtgL/
+ AaQB0QH8Af8BIgIBAS8UAAFPAgIBlQGBAb0B/gH/AYABuwL/AX8BugH+Af8BbQGeAdkB/wFIAZsB/gH/
+ AXkBtwH+Af8BcAGzAv8BcAGzAv8BewG4Af4B/wE8AZUB/gH/FAABXgIFAckBgAGNAcEB/gF/AY0BwQH+
+ AX0BiwHAAf4BYQF/AaMB/gFdAX8BwAH+AYABnQHAAf4BgAGcAcAB/gFPASsBQQH2HAABXgIFAckBgAGN
+ AcEB/gF/AY0BwQH+AX0BiwHAAf4BYQF/AaMB/gFdAX8BwAH+AYABnQHAAf4BgAGcAcAB/gFPASsBQQH2
+ JAABMAIBAUkBmgHMAf0B/wFzAbQC/wFyAbQC/wFyAbQC/wFxAbMC/wGBAb0B/gH/ATIBfwHPAf4YAAER
+ AgEBFQGcAc4B/QH/AXcBtgL/AXYBtgL/AXQBtAH8Af8BYQGWAdQB/wEhAYYB/AH/AXoBtQH+Af8BeAG0
+ Af4B/wFbARwBJgHuGAABAwIBAQMBgAGQAcAB/gF3AYgBwQH+AXYBiAHBAf4BgAGaAcAB/gE1AgEBVAEG
+ AgEBBgECAwEgAAEDAgEBAwGAAZABwAH+AXcBiAHBAf4BdgGIAcEB/gGAAZoBwAH+ATUCAQFUAQYCAQEG
+ AQIDASwAAVQCAgGnAYEBvQH9Af8BggHBAf4B/wGBAbsB/gH/AaUB0gH9Af8BKQGMAf4B/wEDAgEBAxwA
+ AV4BBQEGAckBjwHHAf4B/wFvAbIC/wFzAbQB/gH/AYABuAH9Af8BDgIBAREoAAEDAgEBAgFUAgIBqAFd
+ AgUBxAEaAgEBIzAAAQMCAQECAVQCAgGoAV0CBQHEARoCAQEjPAABDAIBAQ4BUgICAaUBWgIEAccBPAIB
+ AWIoAAEsAgEBQgFcAgUByAFSAgIBnwECAwFAAAEiAgEBMDwAAVUCAgGrAVEBVAFiAfl4AAEiAgEBMCQA
+ ARgCAQEfAT8CAQFqAUECAQFvAT0CAQFmATsCAQFgATgCAQFaAT8CAQFpAXwBpwGwAf4BXQIHAdEBNAIB
+ AVIBAwIBAQIUAAEYAgEBHwE/AgEBagFBAgEBbwE9AgEBZgE7AgEBYAE4AgEBWgFRATgBSQH4AU0BogHA
+ Af4BTgFiAXEB+gE0AgEBUgEDAgEBAhQAARgCAQEfAT8CAQFqAUECAQFvAT0CAQFmATsCAQFgATgCAQFa
+ ATsCAQFgATwCAQFjAT4CAQFnASsBFwFPAfsBKwEXAX4B+wErARcBWwH7AT8CAQFpGAABBwIBAgcCAQEI
+ AQUCAQEFAQoCAQELAXwBpwGwAf4BXQIHAdEBBQIBAQUBAgMBEAABOwIBAWABgAGhAX8B/gFvAZ0BWgH+
+ AW0BnAFYAf4BcQGeAVwB/gF0AZ4BYAH+AXcBnwFjAf4BdAGeAWAB/gEwAbAB8wH/ASkBoQHnAf8BPgGh
+ AeQB/wFuAX8BWgH+AQUCAQEFDAABOwIBAWABgAGhAX8B/gFvAZ0BWgH+AW0BnAFYAf4BcQGeAVwB/gF0
+ AZ4BYAH+AXcBnwFjAf4BdAGeAWAB/gFEAYoBpwH+AZIBzAHqAf8BqwGlAaYB/wGsAaoBpgH/AXQCIgHz
+ Aa0CmAH+AQYCAQEGBAABOwIBAWABgAGhAX8B/gFvAZ0BWgH+AW0BnAFYAf4BcQGeAVwB/gF0AZ4BYAH+
+ AXcBnwFjAf4BdAGeAWAB/gFwAZMBWwH+AhEB5wH/ARIBFQGzAf8BTAFNAUEB/gFcARIBFQHvASYBEwGx
+ Af4BQQIBAXAMAAENAgEBDwF6AYoBZgH+AYABogF2Af4BgAGiAXYB/gGAAaIBdwH+AYABoAF3Af4BMQGw
+ AfMB/wEpAaEB5wH/AUoBfwGvAf4BgAGfAXcB/gFEAX8BNAH+DAABXwIHAdIBTwGUAUEB/gFLAZIBQQH+
+ AUsBkgFBAf4BSwGSAUEB/gF3AZ8BYgH+AVMBfwFBAf4BUwGXAUEB/gFLAZIBQQH+ATQBwAHvAf8BKQGh
+ AecB/wFIAX8BrQH+ATwCAQFkDAABXwIHAdIBTwGUAUEB/gFLAZIBQQH+AUsBkgFBAf4BSwGSAUEB/gF3
+ AZ8BYgH+AVMBfwFBAf4BUwGXAUEB/gFLAZIBQQH+AaUBogGgAf8BxQHcAasB/wHVAd4BpQH/AWACCAHY
+ AVwCBQHAAbUCpAH+BAABXwIHAdIBTwGUAUEB/gFLAZIBQQH+AUsBkgFBAf4BSwGSAUEB/gF3AZ8BYgH+
+ AVMBfwFBAf4BUwGXAUEB/gEsASYBWAH+AREBEwHgAf8BKAEaAW8B/gFSAWQBQQH+ATwCAQFkAWABDgEP
+ AegBLAEVAXMB/AwAAUMCAQF2AVMBlwFBAf4BSwGSAUEB/gFLAZIBQQH+AUsBkgFBAf4BeAGHAWQB/gGA
+ AZ4BeAH+ATQBwAHvAf8BKQGhAecB/wE/AX8BoQH+AYABoAF3Af4BAwIBAQIIAAFfAgwB4gFNAZMBQQH+
+ AUsBkgFBAf4BSwGSAUEB/gFLAZIBQQH+AUsBfwFBAf4B0gG8AboB/gF+AYkBaQH+AUsBkgFBAf4BSwGS
+ AUEB/gE0AcAB8AH/ASkBoQHnAf8BYwIJAdwMAAFfAgwB4gFNAZMBQQH+AUsBkgFBAf4BSwGSAUEB/gFL
+ AZIBQQH+AUsBfwFBAf4B0gG8AboB/gF+AYkBaQH+AUsBkgFBAf4BpwKiAf8ByQHbAZkB/wHTAdoBlAH/
+ AWMCCQHcAV4CBQHJAXkBNgEzAfYEAAFfAgwB4gFNAZMBQQH+AUsBkgFBAf4BSwGSAUEB/gFLAZIBQQH+
+ AUsBfwFBAf4B0gG8AboB/gF+AYkBaQH+AREBFAGTAf8BEgEVAZQB/wFLAZIBQQH+ARIBFQGjAf8BSQIC
+ AYYBSwICAYsBJgETAbEB/gwAAUkCAgGDAVABlQFBAf4BSwGSAUEB/gFLAZIBQQH+AXEBngFdAf4BmAGe
+ AX8B/gFQAX8BQQH+AU0BkwFBAf4BNAHAAfAB/wEpAaEB5wH/AYABhAGYAf4BBwIBAQgIAAFdAggB2QFN
+ AZABQQH+AUsBjwFBAf4BSwGPAUEB/gFnAZoBVAH+AYABhwF5Af4B0wK8Af4BSgF/AT0B/gFOAZEBQQH+
+ AUsBjwFBAf4BSwGPAUEB/gGWAcgB2AH/AZsChgH+AWQBCQEKAdoIAAFdAggB2QFNAZABQQH+AUsBjwFB
+ Af4BSwGPAUEB/gFnAZoBVAH+AYABhwF5Af4B0wK8Af4BSgF/AT0B/gFOAZEBQQH+AbECrAH/AckB1gGL
+ Af8C1AGBAf8BZgIMAeIBZwIOAeUBigFNAUwB+QQAAV0CCAHZAU0BkAFBAf4BSwGPAUEB/gFLAY8BQQH+
+ AWcBmgFUAf4BgAGHAXkB/gHTArwB/gFKAX8BPQH+ATUBNgFMAf4CEQHnAf8BSgGJAUAB/gFpAZcBVQH+
+ ATUBFgGcAf0BXgETARsB8gEsARUBaQH8AQ0CAQEQAbABfwFoAf4BvAGCAXMB/gGAAX8BQQH+AVIBkgFB
+ Af4BSgGNAUAB/gFKAY0BQAH+AXoBhgFlAf4B0wG8AbsB/gHDAbYBsAH+AYABnwF3Af4BSgGNAUAB/gGW
+ AcgB1wH/AbICsAH/AWQBCQEKAdoIAAFSAgIBoAFWAZEBQgH+AUoBiQE/Af4BSgGJAT8B/gGAAZgBfQH+
+ AcABrgGtAf4BuwKnAf4BpQGeAYwB/gGAAaABewH+AUoBiQE/Af4BSgGJAT8B/gGAAaABeQH+AYABfwGa
+ Af4BUQFBAZoB/gFSAgIBnwQAAVICAgGgAVYBkQFCAf4BSgGJAT8B/gFKAYkBPwH+AYABmAF9Af4BwAGu
+ Aa0B/gG7AqcB/gGlAZ4BjAH+AYABoAF7Af4BjwGFAX8B/gG+Ac4BnwH/AeEB1gGDAf8BagEPAQ4B5gFh
+ AggB1gFyAisB9QQAAVICAgGgAVYBkQFCAf4BSgGJAT8B/gFKAYkBPwH+AYABmAF9Af4BwAGuAa0B/gG7
+ AqcB/gGlAZ4BjAH+AYABngF7Af4BEQESAdkB/wERARMB3AH/ATYBLAFgAf4BUwEPATcB9wEmARMBsQH+
+ ASwCAQJCAgEBcgG8AX8BQQH+AbwBfwFBAf4BjQF7AT8B/gGAAZwBcAH+AUkBhgE+Af4BSgGGAT8B/gFS
+ AX8BQQH+AY4BhAGUAf4BnwGNAZUB/gFoAX8BUgH+AUkBhgE+Af4BSQGGAT4B/gGRAY4BxwH/AVEBQQGa
+ Af4BUgICAZ8EAAEIAgEBCQGAAYwBcgH+AUsBhAFBAf4BSAF/AT0B/gFFAW4BWQH+AS0BbAGkAf4BTgF/
+ AaoB/gEsAWoBogH+AWMBfwFhAf4BSQGBAT0B/gFSAYkBQQH+AV0BfwFFAf4EAAFhAgkB2wECAwEEAAEI
+ AgEBCQGAAYwBcgH+AUsBhAFBAf4BSAF/AT0B/gFFAW4BWQH+AS0BbAGkAf4BTgF/AaoB/gEsAWoBogH+
+ AWMBfwFhAf4BSQGBAT0B/gGYAY8BggH+AdEBzgHNAf8BqQGTAZIB/gFtAhQB7AgAAQgCAQEJAYABjAFy
+ Af4BSwGEAUEB/gFIAX8BPQH+AUUBbgFZAf4BLQFsAaQB/gFOAX8BqgH+ASwBagGiAf4BYwF/AWEB/gFI
+ AX8BPQH+ATABKgFUAf4BEQETAaUB/wFTAQ8BKAH3AR8CAQEqBAABRQIBAXkBvAF/AUEB/gG8AX8BQQH+
+ AbMBfwFBAf4BVQF1ATwB/gGAAZcBegH+AV0BfwFyAf4BcQF/Aa8B/gGTAaUBwAH+AZcBpgHAAf4BRAF8
+ AaYB/gFrAYQBWQH+AYABjAFxAf4BPAIBAWQBYQIJAdsBAgMBCAABEwIBARgBXwEYARUB8AFMAn8B/gGS
+ AaIBvAH+AYABnAHBAf4BgAGcAcEB/gGAAZ0BwQH+AYABiQG0Af4BWQF/AWcB/gFcAgcB0wECAwEUAAET
+ AgEBGAFfARgBFQHwAUwCfwH+AZIBogG8Af4BgAGcAcEB/gGAAZwBwQH+AYABnQHBAf4BgAGJAbQB/gFZ
+ AX8BZwH+AVwCBwHTAQIDARQAARMCAQEYAV8BGAEVAfABTAJ/Af4BkgGiAbwB/gGAAZwBwQH+AYABnAHB
+ Af4BgAGdAcEB/gGAAYkBtAH+AVkBfwFnAf4BXAIHAdMBAgMBDAABNgIBAVYBuAF/AUEB/gG3AX8BQQH+
+ AbwBfwFhAf4BvQGlAaMB/gGfAYcBhgH+AX0BfwGyAf4BgAGbAcEB/gGAAZsBwQH+AYABmwHBAf4BgAGb
+ AcEB/gFHATUBVQH5HAABBAIBAQQBegGpAeoB/wGAAZoBwQH+AYcBxgL/AYABmgHBAf4BgAGaAcEB/gGA
+ AZoBwQH+AUIBfAGqAf4gAAEEAgEBBAF6AakB6gH/AYABmgHBAf4BhwHGAv8BgAGaAcEB/gGAAZoBwQH+
+ AYABmgHBAf4BQgF8AaoB/iAAAQQCAQEEAXoBqQHqAf8BgAGaAcEB/gGHAcYC/wGAAZoBwQH+AYABmgHB
+ Af4BgAGaAcEB/gFCAXwBqgH+GAABsAF/AXMB/gGzAX8BQQH+AYABfAF+Af4BUAF/AaoB/gFGAXMBmQH+
+ AYABnAHBAf4BgAGYAcEB/gGAAZgBwQH+AYABlwHBAf4BgAGXAcEB/gGLAaABvgH+AQQCAQEEGAABNwIB
+ AVkBiwGiAcEB/gGAAZgBwQH+AYABlwHBAf4BgAGXAcEB/gGAAZYBwQH+AYABlgHBAf4BhgGeAb0B/gEF
+ AgEBBRwAATcCAQFZAYsBogHBAf4BgAGYAcEB/gGAAZcBwQH+AYABlwHBAf4BgAGWAcEB/gGAAZYBwQH+
+ AYYBngG9Af4BBQIBAQUcAAE3AgEBWQGLAaIBwQH+AYABmAHBAf4BgAGXAcEB/gGAAZcBwQH+AYABlgHB
+ Af4BgAGWAcEB/gGGAZ4BvQH+AQUCAQEFFAABAwIBAQIBWwIEAb8BjAGhAb4B/gGAAZsBwAH+AUcBfwGn
+ Af4BgAGVAcEB/gGAAZMBwQH+AYABkwHBAf4BgAGSAcEB/gGAAZIBwQH+AYIBnwHAAf4BGwIBASQYAAFI
+ AgIBgQGOAcgB/gH/AYABkwHBAf4BgQG9Av8BgAGTAcEB/gGAAZIBwQH+AYABkgHBAf4BlAGkAcAB/gEW
+ AgEBHBwAAUgCAgGBAY4ByAH+Af8BgAGTAcEB/gGBAb0C/wGAAZMBwQH+AYABkgHBAf4BgAGSAcEB/gGU
+ AaQBwAH+ARYCAQEcHAABSAICAYEBjgHIAf4B/wGAAZMBwQH+AYEBvQL/AYABkwHBAf4BgAGSAcEB/gGA
+ AZIBwQH+AZQBpAHAAf4BFgIBARwYAAFlAQ4BEAHnAYABmAHBAf4BgAGYAcEB/gFWAX8BpgH+AYABmAHB
+ Af4BgAGOAcEB/gGAAY4BwQH+AYABjQHBAf4BfwGNAcEB/gGAAZ0BvwH+AQIDARgAASgCAQE5AYwBogHA
+ Af4BgAGPAcEB/gGAAY4BwQH+AYABjgHBAf4BgAGOAcEB/gGAAY0BwQH+AYABlwG+Af4gAAEoAgEBOQGM
+ AaIBwAH+AYABjwHBAf4BgAGOAcEB/gGAAY4BwQH+AYABjgHBAf4BgAGNAcEB/gGAAZcBvgH+IAABKAIB
+ ATkBjAGiAcAB/gGAAY8BwQH+AYABjgHBAf4BgAGOAcEB/gGAAY4BwQH+AYABjQHBAf4BgAGXAb4B/hwA
+ AVoBfwG3Af4BgAGTAcEB/gGAAZMBwQH+AXoBfwGsAf4BcQGCAcAB/gF6AYoBwQH+AXkBigHBAf4BeQGJ
+ AcEB/gF9AYwBwQH+AWQBGQEjAfEgAAFMAZoB+wH/AXwBiwHBAf4BeQG1Av8BegGKAcEB/gF6AYoBwQH+
+ AYABjwHBAf4BTgEoAT8B9iQAAUwBmgH7Af8BfAGLAcEB/gF5AbUC/wF6AYoBwQH+AXoBigHBAf4BgAGP
+ AcEB/gFOASgBPwH2JAABTAGaAfsB/wF8AYsBwQH+AXkBtQL/AXoBigHBAf4BegGKAcEB/gGAAY8BwQH+
+ AU4BKAE/AfYcAAFeAgUByQGAAY0BwQH+AX8BjQHBAf4BfQGLAcAB/gFhAX8BowH+AV0BfwHAAf4BgAGd
+ AcAB/gGAAZwBwAH+AU8BKwFBAfYkAAEaAgEBIwFsAYABwQH+AYABkwHBAf4BegGKAcEB/gGAAZkBwQH+
+ AUsBfwHBAf4BAgMBJAABGgIBASMBbAGAAcEB/gGAAZMBwQH+AXoBigHBAf4BgAGZAcEB/gFLAX8BwQH+
+ AQIDASQAARoCAQEjAWwBgAHBAf4BgAGTAcEB/gF6AYoBwQH+AYABmQHBAf4BSwF/AcEB/gECAwEcAAED
+ AgEBAwGAAZABwAH+AXcBiAHBAf4BdgGIAcEB/gGAAZoBwAH+ATUCAQFUAQYCAQEGAQIDATAAAU0CAgGT
+ AV4CBgHPAUMCAQF2NAABTQICAZMBXgIGAc8BQwIBAXY0AAFNAgIBkwFeAgYBzwFDAgEBdigAAQMCAQEC
+ AVQCAgGoAV0CBQHEARoCAQEjJAABQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEAAQEFAAGAAQEWAAP/
+ gQAB/wE/Av8BwAEBAfABAAH4AQcB+AEBAYABAQHwAQAB4AEAAeABAAGAAQEB8AEAAeABAAHgAQABgAEB
+ AYABAAHgAQAB4AEAAYAHAAGABwABwAEBAwABAQEAAQEBwAEDAQABAwEAAQ8BAAEPAfABBwGAAQMBgAEH
+ AYABBwHwAQcBgAEDAYABBwGAAQcB8AEHAcABAwHAAQcBwAEHAfABBwHAAQMBwAEPAcABDwHwAQcBwAEH
+ AcABHwHAAR8B8AEPAcABDwHAAT8BwAE/AfgBDwHgAX8B4QH/AeEB/wH8AT8B8AL/AX8B/wE/A/8BfwHA
+ AQcBwAEHAcABAQH4AQcBgAEDAYABAAGAAQAB4AEDAYABAwGAAQABgAEAAeABAQGAAQMBgAEAAYABAAHg
+ AQEBgAEBAYABAAGAAgABAQGAAQABgAEAAYADAAGAAQQBgAEBAYABAQIAAcABBwHAAQcBwAEHAQABDwHg
+ AR8B4AEfAeABHwGAAQcB4AEPAeABDwHgAQ8BgAEHAeABDwHgAQ8B4AEPAcABBwHgAR8B4AEfAeABHwHA
+ AQ8B8AEfAfABHwHwAR8BwAEfAfABHwHwAR8B8AEfAcABPwH8AX8B/AF/AfwBfwHhAf8L
+</value>
+ </data>
+ <metadata name="securityContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>314, 17</value>
+ </metadata>
+ <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>470, 17</value>
+ </metadata>
+</root>
\ No newline at end of file
Modified: sandbox/maestro-3.0/MaestroAPITests/MaestroAPITests.csproj
===================================================================
--- sandbox/maestro-3.0/MaestroAPITests/MaestroAPITests.csproj 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/MaestroAPITests/MaestroAPITests.csproj 2010-07-19 11:20:33 UTC (rev 5036)
@@ -47,6 +47,7 @@
<Compile Include="CapabilityTests.cs" />
<Compile Include="FeatureReaderTests.cs" />
<Compile Include="HttpConnectionTests.cs" />
+ <Compile Include="ObjectTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
Added: sandbox/maestro-3.0/MaestroAPITests/ObjectTests.cs
===================================================================
--- sandbox/maestro-3.0/MaestroAPITests/ObjectTests.cs (rev 0)
+++ sandbox/maestro-3.0/MaestroAPITests/ObjectTests.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,75 @@
+#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;
+using NUnit.Framework;
+using OSGeo.MapGuide.MaestroAPI.ObjectModels;
+
+namespace MaestroAPITests
+{
+ /// <summary>
+ /// This test fixture is to ensure all objects created by <see cref="ObjectFactory"/> have no
+ /// null child object properties where there shouldn't be any.
+ /// </summary>
+ [TestFixture]
+ public class ObjectTests
+ {
+ [Test]
+ public void TestEnvelope()
+ {
+ var env = ObjectFactory.CreateEnvelope(-.1, -.1, .1, .1);
+ Assert.IsNotNull(env.LowerLeftCoordinate);
+ Assert.IsNotNull(env.UpperRightCoordinate);
+ Assert.AreEqual(env.MinX, -.1);
+ Assert.AreEqual(env.MinY, -.1);
+ Assert.AreEqual(env.MaxX, .1);
+ Assert.AreEqual(env.MaxY, .1);
+
+ Assert.Catch<ArgumentException>(() => ObjectFactory.CreateEnvelope(.1, -.1, -.1, .1));
+ Assert.Catch<ArgumentException>(() => ObjectFactory.CreateEnvelope(-.1, .1, .1, -.1));
+ Assert.Catch<ArgumentException>(() => ObjectFactory.CreateEnvelope(.1, .1, -.1, -.1));
+ }
+
+ [Test]
+ public void TestSecurityUser()
+ {
+ var user = ObjectFactory.CreateSecurityUser();
+ Assert.IsNotNull(user.User);
+ }
+
+ [Test]
+ public void TestSecurityGroup()
+ {
+ var group = ObjectFactory.CreateSecurityGroup();
+ Assert.IsNotNull(group.Group);
+ }
+
+ [Test]
+ public void TestResourceMetadata()
+ {
+ var meta = ObjectFactory.CreateMetadata();
+ Assert.IsNotNull(meta.Simple);
+ Assert.IsNotNull(meta.Simple.Property);
+
+ Assert.AreEqual(0, meta.GetProperties().Count);
+ }
+ }
+}
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj 2010-07-19 11:20:33 UTC (rev 5036)
@@ -188,6 +188,7 @@
<Compile Include="Mapping\RuntimeMapBase.cs" />
<Compile Include="ObjectModels\ApplicationDefinition.cs" />
<Compile Include="ObjectModels\DrawingSource.cs" />
+ <Compile Include="ObjectModels\Envelope.cs" />
<Compile Include="ObjectModels\FeatureSource.cs" />
<Compile Include="ObjectModels\LayerDefinition.cs" />
<Compile Include="ObjectModels\LoadProcedure.cs" />
@@ -195,6 +196,7 @@
<Compile Include="ObjectModels\ObjectFactory.cs" />
<Compile Include="ObjectModels\PrintLayout.cs" />
<Compile Include="ObjectModels\ResourceItems.cs" />
+ <Compile Include="ObjectModels\ResourceList.cs" />
<Compile Include="ObjectModels\SymbolDefinition.cs" />
<Compile Include="ObjectModels\SymbolLibrary.cs" />
<Compile Include="ObjectModels\UnmanagedDataList.cs" />
Added: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/Envelope.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/Envelope.cs (rev 0)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/Envelope.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,85 @@
+#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.ObjectModels.Common
+{
+ partial class Envelope
+ {
+ internal Envelope() { }
+
+ /// <summary>
+ /// Gets or sets the lower X value
+ /// </summary>
+ public double MinX
+ {
+ get { return this.lowerLeftCoordinateField.X; }
+ set { this.lowerLeftCoordinateField.X = value; }
+ }
+
+ /// <summary>
+ /// Gets or set the lower Y value
+ /// </summary>
+ public double MinY
+ {
+ get { return this.lowerLeftCoordinateField.Y; }
+ set { this.lowerLeftCoordinateField.Y = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the upper X value
+ /// </summary>
+ public double MaxX
+ {
+ get { return this.upperRightCoordinateField.X; }
+ set { this.upperRightCoordinateField.X = value; }
+ }
+
+ /// <summary>
+ /// Gets or sets the upper Y value
+ /// </summary>
+ public double MaxY
+ {
+ get { return this.upperRightCoordinateField.Y; }
+ set { this.upperRightCoordinateField.Y = value; }
+ }
+
+ /// <summary>
+ /// Expands this envelope to accomodate the given envelope
+ /// </summary>
+ /// <param name="env"></param>
+ public void ExpandToInclude(Envelope env)
+ {
+ if (env.MinX < this.MinX)
+ this.MinX = env.MinX;
+
+ if (env.MinY < this.MinY)
+ this.MinY = env.MinY;
+
+ if (env.MaxX > this.MaxX)
+ this.MaxX = env.MaxX;
+
+ if (env.MaxY > this.MaxY)
+ this.MaxY = env.MaxY;
+ }
+ }
+}
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -252,5 +252,14 @@
return this.ConnectionString.Contains(ALIAS_PREFIX);
}
}
+
+ /// <summary>
+ /// Convenience method to return the description of this feature source
+ /// </summary>
+ /// <returns></returns>
+ public FeatureSourceDescription Describe()
+ {
+ return this.CurrentConnection.FeatureService.DescribeFeatureSource(this.ResourceID);
+ }
}
}
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerDefinition.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerDefinition.cs 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerDefinition.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -23,11 +23,17 @@
using OSGeo.MapGuide.MaestroAPI.Resource;
using System.Xml.Serialization;
using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.ObjectModels.Common;
namespace OSGeo.MapGuide.ObjectModels.LayerDefinition
{
- partial class LayerDefinition : IResource
+ public interface ILayerDefinition : IResource
{
+ Envelope GetSpatialExtent(bool allowFallbackToContextInformation);
+ }
+
+ partial class LayerDefinition : ILayerDefinition
+ {
private static readonly Version RES_VERSION = new Version(1, 0, 0);
[XmlIgnore]
@@ -105,7 +111,7 @@
/// </summary>
/// <param name="allowFallbackToContextInformation">True to allow reading spatial extents from the spatial context information, if the spatial query fails.</param>
/// <returns>The envelope for the data in the table</returns>
- public Topology.Geometries.IEnvelope GetSpatialExtent(bool allowFallbackToContextInformation)
+ public Envelope GetSpatialExtent(bool allowFallbackToContextInformation)
{
if (this.CurrentConnection == null)
throw new System.Exception("No server set for object");
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ObjectFactory.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ObjectFactory.cs 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ObjectFactory.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -30,6 +30,7 @@
using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
using OSGeo.MapGuide.ObjectModels.PrintLayout;
using OSGeo.MapGuide.ObjectModels.LoadProcedure;
+using OSGeo.MapGuide.ObjectModels.Common;
namespace OSGeo.MapGuide.MaestroAPI.ObjectModels
{
@@ -46,9 +47,14 @@
return new LayerDefinition();
}
- public static FeatureSourceType CreateFeatureSource()
+ public static FeatureSourceType CreateFeatureSource(string provider, string connectionString)
{
- return new FeatureSourceType();
+ var fs = new FeatureSourceType()
+ {
+ Provider = provider,
+ ConnectionString = connectionString
+ };
+ return fs;
}
public static MapDefinition CreateMapDefinition()
@@ -85,5 +91,75 @@
{
return new LoadProcedure();
}
+
+ /// <summary>
+ /// Creates an empty resource document header metadata object
+ /// </summary>
+ /// <returns></returns>
+ public static ResourceDocumentHeaderTypeMetadata CreateMetadata()
+ {
+ return new ResourceDocumentHeaderTypeMetadata()
+ {
+ Simple = new ResourceDocumentHeaderTypeMetadataSimple()
+ {
+ Property = new System.ComponentModel.BindingList<ResourceDocumentHeaderTypeMetadataSimpleProperty>()
+ }
+ };
+ }
+
+ /// <summary>
+ /// Creates an envelope (bounding box)
+ /// </summary>
+ /// <param name="minx"></param>
+ /// <param name="miny"></param>
+ /// <param name="maxx"></param>
+ /// <param name="maxy"></param>
+ /// <returns></returns>
+ public static Envelope CreateEnvelope(double minx, double miny, double maxx, double maxy)
+ {
+ if (minx > maxx)
+ throw new ArgumentException("minx > maxx", "minx");
+
+ if (miny > maxy)
+ throw new ArgumentException("miny > maxy", "miny");
+
+ return new Envelope()
+ {
+ LowerLeftCoordinate = new EnvelopeLowerLeftCoordinate()
+ {
+ X = minx,
+ Y = miny
+ },
+ UpperRightCoordinate = new EnvelopeUpperRightCoordinate()
+ {
+ X = maxx,
+ Y = maxy
+ }
+ };
+ }
+
+ /// <summary>
+ /// Creates an empty group security object
+ /// </summary>
+ /// <returns></returns>
+ public static ResourceSecurityTypeGroups CreateSecurityGroup()
+ {
+ return new ResourceSecurityTypeGroups()
+ {
+ Group = new System.ComponentModel.BindingList<ResourceSecurityTypeGroupsGroup>()
+ };
+ }
+
+ /// <summary>
+ /// Creates an empty user security object
+ /// </summary>
+ /// <returns></returns>
+ public static ResourceSecurityTypeUsers CreateSecurityUser()
+ {
+ return new ResourceSecurityTypeUsers()
+ {
+ User = new System.ComponentModel.BindingList<ResourceSecurityTypeUsersUser>()
+ };
+ }
}
}
Added: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ResourceList.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ResourceList.cs (rev 0)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/ResourceList.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -0,0 +1,135 @@
+#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;
+using System.Collections.Specialized;
+using System.Xml.Serialization;
+
+namespace OSGeo.MapGuide.ObjectModels.Common
+{
+ partial class ResourceSecurityTypeGroups
+ {
+ internal ResourceSecurityTypeGroups() { }
+ }
+
+ partial class ResourceSecurityTypeUsers
+ {
+ internal ResourceSecurityTypeUsers() { }
+ }
+
+ partial class ResourceDocumentHeaderType
+ {
+ internal ResourceDocumentHeaderType() { }
+
+ //Required for saving/updating
+
+ [XmlAttribute("noNamespaceSchemaLocation", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
+ public string ValidatingSchema
+ {
+ get { return "ResourceDocumentHeader-1.0.0.xsd"; }
+ set { }
+ }
+ }
+
+ partial class ResourceFolderHeaderType
+ {
+ internal ResourceFolderHeaderType() { }
+
+ //Required for saving/updating
+
+ [XmlAttribute("noNamespaceSchemaLocation", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
+ public string ValidatingSchema
+ {
+ get { return "ResourceFolderHeader-1.0.0.xsd"; }
+ set { }
+ }
+ }
+
+ partial class ResourceDocumentHeaderTypeMetadataSimple
+ {
+ internal ResourceDocumentHeaderTypeMetadataSimple() { }
+ }
+
+ partial class ResourceDocumentHeaderTypeMetadata
+ {
+ internal ResourceDocumentHeaderTypeMetadata() { }
+
+ /// <summary>
+ /// Returns a <see cref="NameValueCollection"/> of all the metadata properties
+ /// </summary>
+ /// <returns></returns>
+ public NameValueCollection GetProperties()
+ {
+ var dict = new NameValueCollection();
+ foreach (var val in this.Simple.Property)
+ {
+ dict.Add(val.Name, val.Value);
+ }
+ return dict;
+ }
+
+ /// <summary>
+ /// Sets a metadata property.
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="value"></param>
+ public void SetProperty(string name, string value)
+ {
+ foreach (var val in this.Simple.Property)
+ {
+ if (val.Name == name)
+ {
+ val.Value = value;
+ return;
+ }
+ }
+
+ this.Simple.Property.Add(new ResourceDocumentHeaderTypeMetadataSimpleProperty()
+ {
+ Name = name,
+ Value = value
+ });
+ }
+
+ /// <summary>
+ /// Applies the specified set of properties to this instance
+ /// </summary>
+ /// <param name="values"></param>
+ public void ApplyProperties(NameValueCollection values)
+ {
+ var dict = GetProperties();
+ foreach (string key in values.Keys)
+ {
+ dict[key] = values[key];
+ }
+
+ this.Simple.Property.Clear();
+ foreach (string key in dict.Keys)
+ {
+ this.Simple.Property.Add(new ResourceDocumentHeaderTypeMetadataSimpleProperty()
+ {
+ Name = key,
+ Value = dict[key]
+ });
+ }
+ }
+ }
+}
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/readme.txt
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/readme.txt 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/readme.txt 2010-07-19 11:20:33 UTC (rev 5036)
@@ -13,4 +13,13 @@
XmlElement[]
-A simple search for XmlAnyElementAttribute will reveal the bits of code that need to change.
\ No newline at end of file
+A simple search for XmlAnyElementAttribute will reveal the bits of code that need to change.
+
+
+A special note about ObjectFactory
+----------------------------------
+
+Due to the fragile nature of serializing auto-generated classes and the need to avoid NullReferenceExceptions
+at all costs, all constructors of all auto-generated classes are marked internal. External consumers of this
+API will need to use ObjectFactory to create these classes. That way, ObjectFactory ensures that any
+child object properties are properly initialized.
\ No newline at end of file
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ServerConnectionBase.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ServerConnectionBase.cs 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ServerConnectionBase.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -1539,38 +1539,49 @@
/// <returns>A FeatureSetReader with the aggregated values</returns>
public abstract FeatureSetReader AggregateQueryFeatureSource(string resourceID, string schema, string filter, System.Collections.Specialized.NameValueCollection aggregateFunctions);
- public virtual Topology.Geometries.IEnvelope GetSpatialExtent(string resourceID, string schema, string geometry)
+ public virtual OSGeo.MapGuide.ObjectModels.Common.Envelope GetSpatialExtent(string resourceID, string schema, string geometry)
{
return GetSpatialExtent(resourceID, schema, geometry, null, false);
}
- public virtual Topology.Geometries.IEnvelope GetSpatialExtent(string resourceID, string schema, string geometry, string filter)
+ public virtual OSGeo.MapGuide.ObjectModels.Common.Envelope GetSpatialExtent(string resourceID, string schema, string geometry, string filter)
{
return GetSpatialExtent(resourceID, schema, geometry, filter, false);
}
- public virtual Topology.Geometries.IEnvelope GetSpatialExtent(string resourceID, string schema, string geometry, bool allowFallbackToContextInformation)
+ public virtual OSGeo.MapGuide.ObjectModels.Common.Envelope GetSpatialExtent(string resourceID, string schema, string geometry, bool allowFallbackToContextInformation)
{
return GetSpatialExtent(resourceID, schema, geometry, null, allowFallbackToContextInformation);
}
- protected virtual Topology.Geometries.IEnvelope GetSpatialExtent(string resourceID, string schema, string geometry, string filter, bool allowFallbackToContextInformation)
+ protected virtual OSGeo.MapGuide.ObjectModels.Common.Envelope GetSpatialExtent(string resourceID, string schema, string geometry, string filter, bool allowFallbackToContextInformation)
{
try
{
System.Collections.Specialized.NameValueCollection fun = new System.Collections.Specialized.NameValueCollection();
fun.Add("extent", "SpatialExtents(\"" + geometry + "\")");
using (FeatureSetReader fsr = AggregateQueryFeatureSource(resourceID, schema, filter, fun))
+ {
if (fsr.Read())
{
Topology.Geometries.IGeometry geom = fsr.Row["extent"] as Topology.Geometries.IGeometry;
if (geom == null)
+ {
throw new Exception("No data found in resource: " + resourceID);
+ }
else
- return geom.EnvelopeInternal;
+ {
+ var env = geom.EnvelopeInternal;
+ return OSGeo.MapGuide.MaestroAPI.ObjectModels.ObjectFactory.CreateEnvelope(
+ env.MinX,
+ env.MinY,
+ env.MaxX,
+ env.MaxY);
+ }
}
else
throw new Exception("No data found in resource: " + resourceID);
+ }
}
catch
{
@@ -1580,7 +1591,7 @@
ObjCommon.FdoSpatialContextList lst = this.GetSpatialContextInfo(resourceID, false);
if (lst.SpatialContext != null && lst.SpatialContext.Count >= 1)
{
- return new Topology.Geometries.Envelope(
+ return OSGeo.MapGuide.MaestroAPI.ObjectModels.ObjectFactory.CreateEnvelope(
double.Parse(lst.SpatialContext[0].Extent.LowerLeftCoordinate.X, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture),
double.Parse(lst.SpatialContext[0].Extent.UpperRightCoordinate.X, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture),
double.Parse(lst.SpatialContext[0].Extent.LowerLeftCoordinate.Y, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture),
Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Services/IFeatureService.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Services/IFeatureService.cs 2010-07-16 21:14:16 UTC (rev 5035)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Services/IFeatureService.cs 2010-07-19 11:20:33 UTC (rev 5036)
@@ -81,9 +81,9 @@
FeatureSetReader AggregateQueryFeatureSource(string resourceID, string schema, string filter, string[] columns);
FeatureSetReader AggregateQueryFeatureSource(string resourceID, string schema, string filter, NameValueCollection aggregateFunctions);
- Topology.Geometries.IEnvelope GetSpatialExtent(string resourceID, string schema, string geometry);
- Topology.Geometries.IEnvelope GetSpatialExtent(string resourceID, string schema, string geometry, string filter);
- Topology.Geometries.IEnvelope GetSpatialExtent(string resourceID, string schema, string geometry, bool allowFallbackToContextInformation);
+ ObjCommon.Envelope GetSpatialExtent(string resourceID, string schema, string geometry);
+ ObjCommon.Envelope GetSpatialExtent(string resourceID, string schema, string geometry, string filter);
+ ObjCommon.Envelope GetSpatialExtent(string resourceID, string schema, string geometry, bool allowFallbackToContextInformation);
FeatureSourceDescription DescribeFeatureSource(string resourceID);
FeatureSourceDescription DescribeFeatureSource(string resourceID, string schema);
More information about the mapguide-commits
mailing list