[mapguide-commits] r5021 - in sandbox/maestro-3.0: Generated
Maestro.Base Maestro.Base/Commands/Test Maestro.Editors
Maestro.Editors/Common OSGeo.MapGuide.MaestroAPI
OSGeo.MapGuide.MaestroAPI/ObjectModels
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Sat Jul 10 09:51:04 EDT 2010
Author: jng
Date: 2010-07-10 13:51:04 +0000 (Sat, 10 Jul 2010)
New Revision: 5021
Added:
sandbox/maestro-3.0/Maestro.Base/Commands/Test/OpenUnmanagedResourceCommand.cs
sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.Designer.cs
sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.cs
sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.resx
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/UnmanagedDataList.cs
Modified:
sandbox/maestro-3.0/Generated/UnmanagedDataList-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.Editors/Maestro.Editors.csproj
sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
Log:
This submission includes the following changes:
- Implement the Unmanaged File Browser
- Add a test command to test the unmanaged file browser
- Modify some of the generated code for UnmanagedDataList and add some helper properties for UnmanagedDataListUnmanagedDataFile and UnmanagedDataListUnmanagedDataFolder
Modified: sandbox/maestro-3.0/Generated/UnmanagedDataList-1.0.0.designer.cs
===================================================================
--- sandbox/maestro-3.0/Generated/UnmanagedDataList-1.0.0.designer.cs 2010-07-09 19:49:00 UTC (rev 5020)
+++ sandbox/maestro-3.0/Generated/UnmanagedDataList-1.0.0.designer.cs 2010-07-10 13:51:04 UTC (rev 5021)
@@ -493,10 +493,10 @@
private System.DateTime modifiedDateField;
[EditorBrowsable(EditorBrowsableState.Never)]
- private string numberOfFoldersField;
+ private int numberOfFoldersField;
[EditorBrowsable(EditorBrowsableState.Never)]
- private string numberOfFilesField;
+ private int numberOfFilesField;
private static System.Xml.Serialization.XmlSerializer serializer;
@@ -542,8 +542,8 @@
}
}
- [System.Xml.Serialization.XmlElementAttribute(DataType="integer")]
- public string NumberOfFolders {
+ [System.Xml.Serialization.XmlElementAttribute]
+ public int NumberOfFolders {
get {
return this.numberOfFoldersField;
}
@@ -561,8 +561,8 @@
}
}
- [System.Xml.Serialization.XmlElementAttribute(DataType="integer")]
- public string NumberOfFiles {
+ [System.Xml.Serialization.XmlElementAttribute]
+ public int NumberOfFiles {
get {
return this.numberOfFilesField;
}
Added: sandbox/maestro-3.0/Maestro.Base/Commands/Test/OpenUnmanagedResourceCommand.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Commands/Test/OpenUnmanagedResourceCommand.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Base/Commands/Test/OpenUnmanagedResourceCommand.cs 2010-07-10 13:51:04 UTC (rev 5021)
@@ -0,0 +1,49 @@
+#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.Editors.Common;
+using Maestro.Base.Services;
+
+namespace Maestro.Base.Commands.Test
+{
+ public class OpenUnmanagedResourceCommand : AbstractMenuCommand
+ {
+ public override void Run()
+ {
+ var wb = Workbench.Instance;
+ var exp = wb.ActiveSiteExplorer;
+ var mgr = ServiceRegistry.GetService<ServerConnectionManager>();
+ var conn = mgr.GetConnection(exp.ConnectionName);
+
+ var picker = new UnmanagedFileBrowser(conn.ResourceService);
+ if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ MessageService.ShowMessage(picker.SelectedFile);
+ }
+ else
+ {
+ MessageService.ShowMessage("Cancelled");
+ }
+ }
+ }
+}
Modified: sandbox/maestro-3.0/Maestro.Base/Maestro.Base.addin
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Maestro.Base.addin 2010-07-09 19:49:00 UTC (rev 5020)
+++ sandbox/maestro-3.0/Maestro.Base/Maestro.Base.addin 2010-07-10 13:51:04 UTC (rev 5021)
@@ -69,6 +69,9 @@
<MenuItem id="Menu_Test_OpenFolder"
label="Open Folder"
class="Maestro.Base.Commands.Test.OpenFolderCommand" />
+ <MenuItem id="Menu_Test_OpenUnmanagedFile"
+ label="Open Unmanaged Resource"
+ class="Maestro.Base.Commands.Test.OpenUnmanagedResourceCommand" />
<MenuItem id="Menu_Test_SelectCoordSys"
label="Select Coordinate System"
class="Maestro.Base.Commands.Test.OpenCoordinateSystemPickerCommand" />
Modified: sandbox/maestro-3.0/Maestro.Base/Maestro.Base.csproj
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Maestro.Base.csproj 2010-07-09 19:49:00 UTC (rev 5020)
+++ sandbox/maestro-3.0/Maestro.Base/Maestro.Base.csproj 2010-07-10 13:51:04 UTC (rev 5021)
@@ -3,7 +3,7 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>9.0.30729</ProductVersion>
+ <ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{F1E2F468-5030-4DBA-968C-9620284AFAA1}</ProjectGuid>
<OutputType>Library</OutputType>
@@ -68,6 +68,7 @@
<Compile Include="Commands\Test\OpenCoordinateSystemPickerCommand.cs" />
<Compile Include="Commands\Test\OpenResourceCommand.cs" />
<Compile Include="Commands\Test\OpenSymbolBrowserCommand.cs" />
+ <Compile Include="Commands\Test\OpenUnmanagedResourceCommand.cs" />
<Compile Include="Commands\Test\SelectFdoProviderCommand.cs" />
<Compile Include="Commands\Toggle\ToggleMessagesCommand.cs" />
<Compile Include="Commands\ValidateResourceCommand.cs" />
@@ -272,6 +273,7 @@
<ItemGroup>
<EmbeddedResource Include="Editor\DrawingSourceEditor.resx">
<DependentUpon>DrawingSourceEditor.cs</DependentUpon>
+ <SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Editor\EditorContentBase.resx">
<DependentUpon>EditorContentBase.cs</DependentUpon>
@@ -291,6 +293,7 @@
</EmbeddedResource>
<EmbeddedResource Include="Editor\MapDefinitionEditor.resx">
<DependentUpon>MapDefinitionEditor.cs</DependentUpon>
+ <SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Editor\WebLayoutEditor.resx">
<DependentUpon>WebLayoutEditor.cs</DependentUpon>
Added: sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.Designer.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.Designer.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.Designer.cs 2010-07-10 13:51:04 UTC (rev 5021)
@@ -0,0 +1,246 @@
+namespace Maestro.Editors.Common
+{
+ partial class UnmanagedFileBrowser
+ {
+ /// <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(UnmanagedFileBrowser));
+ this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.label3 = new System.Windows.Forms.Label();
+ this.trvFolders = new Aga.Controls.Tree.TreeViewAdv();
+ this.NODE_ICON = new Aga.Controls.Tree.NodeControls.NodeIcon();
+ this.NODE_NAME = new Aga.Controls.Tree.NodeControls.NodeTextBox();
+ this.lstResources = new System.Windows.Forms.ListView();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.txtFile = new System.Windows.Forms.TextBox();
+ this.btnOK = new System.Windows.Forms.Button();
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.imgFileList = new System.Windows.Forms.ImageList(this.components);
+ this.splitContainer1.Panel1.SuspendLayout();
+ this.splitContainer1.Panel2.SuspendLayout();
+ this.splitContainer1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // splitContainer1
+ //
+ this.splitContainer1.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.splitContainer1.Location = new System.Drawing.Point(0, 0);
+ this.splitContainer1.Name = "splitContainer1";
+ //
+ // splitContainer1.Panel1
+ //
+ this.splitContainer1.Panel1.Controls.Add(this.label3);
+ this.splitContainer1.Panel1.Controls.Add(this.trvFolders);
+ //
+ // splitContainer1.Panel2
+ //
+ this.splitContainer1.Panel2.Controls.Add(this.lstResources);
+ this.splitContainer1.Panel2.Controls.Add(this.label4);
+ this.splitContainer1.Size = new System.Drawing.Size(607, 274);
+ this.splitContainer1.SplitterDistance = 201;
+ this.splitContainer1.TabIndex = 11;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(9, 9);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(41, 13);
+ this.label3.TabIndex = 8;
+ this.label3.Text = "Folders";
+ //
+ // trvFolders
+ //
+ this.trvFolders.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.trvFolders.BackColor = System.Drawing.SystemColors.Window;
+ this.trvFolders.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.trvFolders.DefaultToolTipProvider = null;
+ this.trvFolders.DragDropMarkColor = System.Drawing.Color.Black;
+ this.trvFolders.LineColor = System.Drawing.SystemColors.ControlDark;
+ this.trvFolders.LoadOnDemand = true;
+ this.trvFolders.Location = new System.Drawing.Point(12, 31);
+ this.trvFolders.Model = null;
+ this.trvFolders.Name = "trvFolders";
+ this.trvFolders.NodeControls.Add(this.NODE_ICON);
+ this.trvFolders.NodeControls.Add(this.NODE_NAME);
+ this.trvFolders.SelectedNode = null;
+ this.trvFolders.Size = new System.Drawing.Size(186, 229);
+ this.trvFolders.TabIndex = 0;
+ this.trvFolders.Text = "treeViewAdv1";
+ this.trvFolders.SelectionChanged += new System.EventHandler(this.trvFolders_SelectionChanged);
+ //
+ // NODE_ICON
+ //
+ this.NODE_ICON.DataPropertyName = "Icon";
+ this.NODE_ICON.LeftMargin = 1;
+ this.NODE_ICON.ParentColumn = null;
+ this.NODE_ICON.ScaleMode = Aga.Controls.Tree.ImageScaleMode.Clip;
+ //
+ // NODE_NAME
+ //
+ this.NODE_NAME.DataPropertyName = "Name";
+ this.NODE_NAME.IncrementalSearchEnabled = true;
+ this.NODE_NAME.LeftMargin = 3;
+ this.NODE_NAME.ParentColumn = null;
+ //
+ // lstResources
+ //
+ this.lstResources.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.lstResources.LargeImageList = this.imgFileList;
+ this.lstResources.Location = new System.Drawing.Point(3, 31);
+ this.lstResources.MultiSelect = false;
+ this.lstResources.Name = "lstResources";
+ this.lstResources.Size = new System.Drawing.Size(387, 229);
+ this.lstResources.SmallImageList = this.imgFileList;
+ this.lstResources.TabIndex = 1;
+ this.lstResources.UseCompatibleStateImageBehavior = false;
+ this.lstResources.View = System.Windows.Forms.View.List;
+ this.lstResources.SelectedIndexChanged += new System.EventHandler(this.lstResources_SelectedIndexChanged);
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(3, 9);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(68, 13);
+ this.label4.TabIndex = 9;
+ this.label4.Text = "Files in folder";
+ //
+ // label1
+ //
+ this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(9, 283);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(68, 13);
+ this.label1.TabIndex = 12;
+ this.label1.Text = "Selected File";
+ //
+ // txtFile
+ //
+ this.txtFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtFile.Location = new System.Drawing.Point(83, 280);
+ this.txtFile.Name = "txtFile";
+ this.txtFile.ReadOnly = true;
+ this.txtFile.Size = new System.Drawing.Size(512, 20);
+ this.txtFile.TabIndex = 13;
+ this.txtFile.TextChanged += new System.EventHandler(this.txtFile_TextChanged);
+ //
+ // btnOK
+ //
+ this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnOK.Enabled = false;
+ this.btnOK.Location = new System.Drawing.Point(438, 306);
+ this.btnOK.Name = "btnOK";
+ this.btnOK.Size = new System.Drawing.Size(75, 23);
+ this.btnOK.TabIndex = 14;
+ this.btnOK.Text = "OK";
+ this.btnOK.UseVisualStyleBackColor = true;
+ this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+ //
+ // btnCancel
+ //
+ this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.btnCancel.Location = new System.Drawing.Point(520, 306);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(75, 23);
+ this.btnCancel.TabIndex = 15;
+ this.btnCancel.Text = "Cancel";
+ this.btnCancel.UseVisualStyleBackColor = true;
+ //
+ // imgFileList
+ //
+ this.imgFileList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgFileList.ImageStream")));
+ this.imgFileList.TransparentColor = System.Drawing.Color.Transparent;
+ this.imgFileList.Images.SetKeyName(0, "document.png");
+ this.imgFileList.Images.SetKeyName(1, "application.png");
+ this.imgFileList.Images.SetKeyName(2, "document-word.png");
+ this.imgFileList.Images.SetKeyName(3, "document-access.png");
+ this.imgFileList.Images.SetKeyName(4, "document-excel.png");
+ this.imgFileList.Images.SetKeyName(5, "document-excel-csv.png");
+ this.imgFileList.Images.SetKeyName(6, "document-film.png");
+ this.imgFileList.Images.SetKeyName(7, "document-globe.png");
+ this.imgFileList.Images.SetKeyName(8, "document-image.png");
+ this.imgFileList.Images.SetKeyName(9, "document-pdf.png");
+ this.imgFileList.Images.SetKeyName(10, "document-php.png");
+ this.imgFileList.Images.SetKeyName(11, "document-powerpoint.png");
+ this.imgFileList.Images.SetKeyName(12, "document-text.png");
+ this.imgFileList.Images.SetKeyName(13, "document-zipper.png");
+ this.imgFileList.Images.SetKeyName(14, "document-code.png");
+ //
+ // UnmanagedFileBrowser
+ //
+ this.AcceptButton = this.btnOK;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.btnCancel;
+ this.ClientSize = new System.Drawing.Size(607, 341);
+ this.ControlBox = false;
+ this.Controls.Add(this.btnCancel);
+ this.Controls.Add(this.btnOK);
+ this.Controls.Add(this.txtFile);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.splitContainer1);
+ this.Name = "UnmanagedFileBrowser";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Select File";
+ this.splitContainer1.Panel1.ResumeLayout(false);
+ this.splitContainer1.Panel1.PerformLayout();
+ this.splitContainer1.Panel2.ResumeLayout(false);
+ this.splitContainer1.Panel2.PerformLayout();
+ this.splitContainer1.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.SplitContainer splitContainer1;
+ private System.Windows.Forms.Label label3;
+ private Aga.Controls.Tree.TreeViewAdv trvFolders;
+ private System.Windows.Forms.ListView lstResources;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox txtFile;
+ private System.Windows.Forms.Button btnOK;
+ private System.Windows.Forms.Button btnCancel;
+ private Aga.Controls.Tree.NodeControls.NodeIcon NODE_ICON;
+ private Aga.Controls.Tree.NodeControls.NodeTextBox NODE_NAME;
+ private System.Windows.Forms.ImageList imgFileList;
+ }
+}
\ No newline at end of file
Added: sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.cs (rev 0)
+++ sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.cs 2010-07-10 13:51:04 UTC (rev 5021)
@@ -0,0 +1,269 @@
+#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.Services;
+using Aga.Controls.Tree;
+using OSGeo.MapGuide.ObjectModels.Common;
+
+namespace Maestro.Editors.Common
+{
+ public partial class UnmanagedFileBrowser : Form
+ {
+ abstract class ModelBase<T>
+ {
+ public ModelBase(T item) { this.Tag = item; }
+
+ public T Tag { get; private set; }
+ }
+
+ class FolderModel : ModelBase<UnmanagedDataListUnmanagedDataFolder>
+ {
+ public FolderModel(UnmanagedDataListUnmanagedDataFolder folder)
+ : base(folder)
+ {
+ this.Name = folder.FolderName;
+ this.HasChildren = (folder.NumberOfFolders > 0);
+ }
+
+ public string Name { get; private set; }
+
+ public bool HasChildren { get; private set; }
+
+ public Image Icon { get { return Properties.Resources.folder_horizontal; } }
+ }
+
+ class FolderTreeModel : ITreeModel
+ {
+ private IResourceService _resSvc;
+
+ public FolderTreeModel(IResourceService resSvc)
+ {
+ _resSvc = resSvc;
+ }
+
+ public System.Collections.IEnumerable GetChildren(TreePath treePath)
+ {
+ if (treePath.IsEmpty())
+ {
+ var list = _resSvc.EnumerateUnmanagedData(null, null, false, OSGeo.MapGuide.MaestroAPI.UnmanagedDataTypes.Folders);
+ foreach (var item in list.Items)
+ {
+ if (typeof(UnmanagedDataListUnmanagedDataFolder).IsAssignableFrom(item.GetType()))
+ {
+ var folder = (UnmanagedDataListUnmanagedDataFolder)item;
+
+ yield return new FolderModel(folder);
+ }
+ }
+ }
+ else
+ {
+ var mdl = treePath.LastNode as FolderModel;
+ if (mdl != null)
+ {
+ var folder = mdl.Tag;
+ if (folder.NumberOfFolders > 0)
+ {
+ var list = _resSvc.EnumerateUnmanagedData(folder.UnmanagedDataId, null, false, OSGeo.MapGuide.MaestroAPI.UnmanagedDataTypes.Folders);
+ foreach (var item in list.Items)
+ {
+ if (typeof(UnmanagedDataListUnmanagedDataFolder).IsAssignableFrom(item.GetType()))
+ {
+ var fl = (UnmanagedDataListUnmanagedDataFolder)item;
+
+ yield return new FolderModel(fl);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public bool IsLeaf(TreePath treePath)
+ {
+ var mdl = treePath.LastNode as FolderModel;
+ if (mdl != null)
+ return mdl.Tag.NumberOfFolders == 0;
+ else
+ return true;
+ }
+
+ public event EventHandler<TreeModelEventArgs> NodesChanged;
+
+ public event EventHandler<TreeModelEventArgs> NodesInserted;
+
+ public event EventHandler<TreeModelEventArgs> NodesRemoved;
+
+ public event EventHandler<TreePathEventArgs> StructureChanged;
+ }
+
+
+ private UnmanagedFileBrowser()
+ {
+ InitializeComponent();
+ }
+
+ private IResourceService _resSvc;
+
+ public UnmanagedFileBrowser(IResourceService resSvc)
+ : this()
+ {
+ _resSvc = resSvc;
+ trvFolders.Model = new FolderTreeModel(_resSvc);
+ }
+
+ public string SelectedFile
+ {
+ get { return txtFile.Text; }
+ }
+
+ private void trvFolders_SelectionChanged(object sender, EventArgs e)
+ {
+ if (trvFolders.SelectedNode != null)
+ {
+ var mdl = trvFolders.SelectedNode.Tag as FolderModel;
+ if (mdl != null)
+ {
+ //TODO: file filter
+ var list = _resSvc.EnumerateUnmanagedData(mdl.Tag.UnmanagedDataId, null, false, OSGeo.MapGuide.MaestroAPI.UnmanagedDataTypes.Files);
+ PopulateFileList(list);
+ }
+ }
+ }
+
+ private void PopulateFileList(UnmanagedDataList list)
+ {
+ lstResources.Items.Clear();
+ foreach (var item in list.Items)
+ {
+ if (typeof(UnmanagedDataListUnmanagedDataFile).IsAssignableFrom(item.GetType()))
+ {
+ var file = (UnmanagedDataListUnmanagedDataFile)item;
+ var li = new ListViewItem();
+ li.Name = file.UnmanagedDataId;
+ li.Text = file.FileName;
+ li.ImageIndex = GetImageIndex(li.Text);
+
+ lstResources.Items.Add(li);
+ }
+ }
+ }
+
+ private int GetImageIndex(string fileName)
+ {
+ string ext = fileName.Substring(fileName.LastIndexOf(".") + 1);
+ switch (ext.ToUpper())
+ {
+ case "EXE":
+ return IDX_FILE_EXE;
+ case "DOC":
+ case "DOCX":
+ return IDX_FILE_DOC;
+ case "MDB":
+ case "ACCDB":
+ return IDX_FILE_MDB;
+ case "XLS":
+ case "XLSX":
+ return IDX_FILE_XLS;
+ case "CSV":
+ return IDX_FILE_CSV;
+ case "MOV":
+ case "MPG":
+ case "AVI":
+ case "MP4":
+ case "WMV":
+ case "ASF":
+ case "FLV":
+ return IDX_FILE_MOVIE;
+ case "HTM":
+ case "HTML":
+ return IDX_FILE_HTML;
+ case "PNG":
+ case "JPG":
+ case "GIF":
+ case "ICO":
+ case "BMP":
+ case "TGA":
+ return IDX_FILE_IMAGE;
+ case "PDF":
+ return IDX_FILE_PDF;
+ case "PHP":
+ return IDX_FILE_PHP;
+ case "PPT":
+ case "PPTX":
+ return IDX_FILE_PPT;
+ case "TXT":
+ return IDX_FILE_TXT;
+ case "ZIP":
+ case "RAR":
+ case "ACE":
+ case "7Z":
+ case "GZ":
+ case "TAR":
+ case "BZ2":
+ return IDX_FILE_ARCHIVE;
+ case "XML":
+ return IDX_FILE_XML;
+ default:
+ return IDX_FILE_UNKNOWN;
+ }
+ }
+
+ const int IDX_FILE_UNKNOWN = 0;
+ const int IDX_FILE_EXE = 1;
+ const int IDX_FILE_DOC = 2;
+ const int IDX_FILE_MDB = 3;
+ const int IDX_FILE_XLS = 4;
+ const int IDX_FILE_CSV = 5;
+ const int IDX_FILE_MOVIE = 6;
+ const int IDX_FILE_HTML = 7;
+ const int IDX_FILE_IMAGE = 8;
+ const int IDX_FILE_PDF = 9;
+ const int IDX_FILE_PHP = 10;
+ const int IDX_FILE_PPT = 11;
+ const int IDX_FILE_TXT = 12;
+ const int IDX_FILE_ARCHIVE = 13;
+ const int IDX_FILE_XML = 14;
+
+ private void lstResources_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (lstResources.SelectedItems.Count == 1)
+ {
+ txtFile.Text = lstResources.SelectedItems[0].Name;
+ }
+ }
+
+ private void txtFile_TextChanged(object sender, EventArgs e)
+ {
+ btnOK.Enabled = !string.IsNullOrEmpty(txtFile.Text);
+ }
+
+ private void btnOK_Click(object sender, EventArgs e)
+ {
+ this.DialogResult = DialogResult.OK;
+ }
+ }
+}
Added: sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.resx
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.resx (rev 0)
+++ sandbox/maestro-3.0/Maestro.Editors/Common/UnmanagedFileBrowser.resx 2010-07-10 13:51:04 UTC (rev 5021)
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="imgFileList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+ <data name="imgFileList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADg
+ GAAAAk1TRnQBSQFMAgEBDwEAARMBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ AwABQAMAAUADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+ AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+ AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+ AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+ AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+ AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+ ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+ AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+ AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+ AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+ AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+ AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+ ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+ AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+ AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+ AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+ ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+ Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+ AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+ AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+ AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+ AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+ AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAAaEBhQwEAYUCoQGF
+ BQQBXwYEAYUCoQGFDAQBhQGhEAACoQEECv8BBAShAQQE/wEHAesE/wEEBKEBBAr/AQQCoRIAAaYH/wP1
+ AaYEAAGmA/8BBwHrAv8D9QGmBAABpgf/A/UBphQAAaYB/wLuAfABvAH/AvUB9AH1AaYEAAGmBP8BBwHr
+ AvUB9AH1AaYEAAGmBv8C9QH0AfUBphQAAYYB/wTzAvUC9AH1AYYEAAGGA/8BBwHrAvUC9AH1AYYEAAGG
+ Av8B8AHqAvIB6gG8AfQB9QGGFAABhgH/Ae4B8AHuAQcCvAHuAbwB9QGGBAABhgT/AQcB6wP0AfUBhgQA
+ AYYB/wHzAW0BBwL1AQcBbQHyAfUBhhQAAYYB/wPzAfIE8QH1AYYEAAGGA/8BBwHrBPQB9QGGBAABhgH/
+ Ae8B9wL1AvQB9wHvAfUBhhQAAYYB/wHuAgcBvAEHArwBBwH0AYYEAAGGAv8C9QEHAesE9AGGBAABhgH/
+ AfMB+AHuAvQBBwH4AfIB9AGGFAABhgH/AfMB8gbxAfQBhgQAAYYB/wL1AQcB6wGSAvQB8wH0AYYEAAGG
+ Af8B9QHxAewB8wHyAewBvAHzAfQBhhQAAYYB/wEHAbwEBwHuAQcB9AGGBAABhgH/AfUB9AGSAfEB6wH0
+ AvMB9AGGBAABhgH/AfUF9ALzAfQBhhQAAYYB9QTxAfQC8wHxAfQBhgQAAYYB9QL0AQcBkgHrAvMB8QH0
+ AYYEAAGGAfUF9ALzAfEB9AGGFAABhgH1AgcBvAEHAvMC8QH0AYYEAAGGAfUC9AEHAfMB6wHzAvEB9AGG
+ BAABhgH1BPQC8wLxAfQBhhQAAYYB9QP0AvMB8QP3AaYEAAGGAfUC9AEHAfEB6wHxA/cBpgQAAYYB9QP0
+ AvMB8QP3AaYUAAGGAfUC9ALzAvEB7wH/AYYBoQQAAYYB9QL0AQcBvAHrAfEB7wH/AYYBoQQAAYYB9QL0
+ AvMC8QHvAf8BhgGhFAABpwL1BfQBBwGnAaEFAAGnAvUB9AGSAQcBkgH0AQcBpwGhBQABpwL1BfQBBwGn
+ AaEVAAmnAaEGAASnAYYBBAGGAqcBoQYACacBoRQAAaEBhQwEAYUCoQGFDAQBhQKhAYUMBAGFAqEBhQwE
+ AYUDoQEECv8BBAShAQQK/wEEBKEBBAr/AQQEoQEECv8BBAKhAgABpgH/BSoBMQIqAfUBpgQAAaYH/wP1
+ AaYEAAGmB/8D9QGmBAABpgf/A/UBpgQAAaYB/wUxATcCMQH1AaYEAAGmBv8C9QH0AfUBpgQAAaYG/wL1
+ AfQB9QGmBAABpgb/AvUB9AH1AaYEAAGGAf8BKgMwATEBWQFYATEB9QGGBAABhgX/AvUC9AH1AYYEAAGG
+ Bf8C9QL0AfUBhgQAAYYF/wL1AvQB9QGGBAABhgH/AQ8BQwFEAUsBeQGgAXkBWAH1AYYCAAFhBx8BbwP0
+ AfUBhgQAAYYE/wL1A/QB9QGGAgABRQclAUwD9AH1AYYEAAGGAf8BFQFEAlgBegLlAVkB9QGGAgACHwMg
+ BB8D9AH1AYYDAAGhAYYErgG8BPQB9QGGAgABJQH2BfQB9gElA/QB9QGGBAABhgH/AUQBUQJYAVkB5QFZ
+ AVgB9AGGAgACIAHzAZMCRgEgAh8E9AGGAgABoQGuBc8BrgHuBPQBhgIAASsB9gEaA0wBGgH2ASsE9AGG
+ BAABhgH/AVIHWAH0AYYCAAIgAW8BvQGUAb0B9AFvAR8C9AHzAfQBhgIAAYYHtQGuAvQB8wH0AYYCAAEr
+ AfYBUgMrAVIB9gErAvQB8wH0AYYEAAGGAf8IWAH0AYYCAAMgAeMBbwG9AUYCIAH0AvMB9AGGAgABrgG1
+ AQABtQEAAbUBAAG1Aa4B9ALzAfQBhgIAAUwB9QJMAfQBGgF0AfUBTAH0AvMB9AGGBAABhgH1CDEB9AGG
+ AgADIAFGAb0BbwMgAvMB8QH0AYYCAAGuCLUC8wHxAfQBhgIAAUwB/wF1AUwBGgH2AZQB/wFMAvMB8QH0
+ AYYEAAGGAfUE9ALzAvEB9AGGAgADIAH5Af8BRgMgAfMC8QH0AYYCAAGnAc8FtQHPAe4B8wLxAfQBhgIA
+ AUwB/wH0AnUBmgH0Af8BTAHzAvEB9AGGBAABhgH1A/QC8wHxA/cBpgIAAiAC+QUgAfED9wGmAwABpwGu
+ A88BtQG8AfMB8QP3AaYCAAFTB/8BUwHxA/cBpgQAAYYB9QL0AvMC8QHvAf8BhgGhAgABYQcgAW8B8QHv
+ Af8BhgGhBAABhgH1AvQC8wLxAe8B/wGGAaECAAFvB1MBdAHxAe8B/wGGAaEEAAGnAvUF9AEHAacBoQUA
+ AacC9QX0AQcBpwGhBQABpwL1BfQBBwGnAaEFAAGnAvUF9AEHAacBoQUACacBoQYACacBoQYACacBoQYA
+ CacBoQQAAaEBhQwEAYUCoQGFDAQBhQKhAYUMBAGFAqEBhQwEAYUDoQEECv8BBAShAQQK/wEEBKEBBAr/
+ AQQEoQEECv8BBAKhAgABpgf/A/UBpgQAAaYH/wHsAbwB9QGmBAABpgH/AfgBEwQPARMB6wH1AaYEAAGm
+ Av8BGQG0ArMBtAEZAvUBpgQAAaYG/wL1AfQB9QGmBAABpgb/AvUBbQH1AaYEAAGmAf8B6gEHAUMBtAG1
+ AREBBwHqAfUBpgQAAaYB/wHyArMC1AKzAfEB9QGmBAABhgX/AvUC9AH1AYYEAAGGBf8C9QHtAW0B9QGG
+ BAABhgH/Am0BFQK0AUMCbQH1AYYEAAGGAf8BtAazAbQB9QGGAgABbAdPAXID9AH1AYYCAAFsB08BcgH0
+ AvgB9QGGBAABhgH/AW0BBwEVArQBFQEHAW0B9QGGBAABhgH/AYsDswGtAdQBrQGLAfUBhgIAAU8H9AFP
+ A/QB9QGGAgABTwf0AU8D9AH1AYYEAAGGAf8CbQEUAeoBQwEVAm0B9QGGBAABhgH/AYsFswHbAYsB9QGG
+ AgABUAH0A5gCUAH0AVAE9AGGAgABUAH0A5gCUAH0AVAE9AGGBAABhgH/AW0BBwETArUBFAEHAW0B9AGG
+ BAABhgH/AbQB3AG6AQkBugEJAdwBtAH0AYYCAAFQAfQBcwJQAQgBUAH0AVAC9AHzAfQBhgIAAVAB9AFz
+ AlABCAFQAfQBUAL0AfMB9AGGBAABhgH/AusBEwK1ARQC6wH0AYYEAAGGAf8BGQG0AdwBCQLcAbQB8AH0
+ AYYCAAFQAfUBCAFQAQgBUAEIAfUBUAH0AvMB9AGGAgABUAH1AQgBUAEIAVABCAH1AVAB9ALzAfQBhgQA
+ AYYB/wHrAbwBEgK1ARMBvAHrAfQBhgQAAYYB/wH1ARkB2wLUAdsBCQHzAfQBhgIAAXIB/wFyAfACcgF4
+ Af8BcgLzAfEB9AGGAgABcgH/AXIB8AJyAXgB/wFyAvMB8QH0AYYEAAGGAfUB7QHrBBIB6wHtAfQBhgQA
+ AYYB9QX0AvMB8QH0AYYCAAFyAf8CcgHxAZgBcgH/AXIB8wLxAfQBhgIAAXIB/wJyAfEBmAFyAf8BcgHz
+ AvEB9AGGBAABhgH1BPQC8wLxAfQBhgQAAYYB9QT0AvMC8QH0AYYCAAFzB/8BcwHxA/cBpgIAAXMH/wFz
+ AfED9wGmBAABhgH1A/QC8wHxA/cBpgQAAYYB9QP0AvMB8QP3AaYCAAHrB3MBmAHxAe8B/wGGAaECAAHr
+ B3MBmAHxAe8B/wGGAaEEAAGGAfUC9ALzAvEB7wH/AYYBoQQAAYYB9QL0AvMC8QHvAf8BhgGhBAABpwL1
+ BfQBBwGnAaEFAAGnAvUF9AEHAacBoQUAAacC9QX0AQcBpwGhBQABpwL1BfQBBwGnAaEFAAmnAaEGAAmn
+ AaEGAAmnAaEGAAmnAaEEAAGhAYUMBAGFAaEQAAGhAYUMBAGFAqEBhQwEAYUDoQEECv8BBBShAQQK/wEE
+ BKEBBAr/AQQCoQIAAaYH/wP1AaYCAAEEDl8BBAIAAaYH/wP1AaYEAAGmB/8D9QGmBAABpgb/AvUB9AH1
+ AaYCAAEEAfMM8gHzAQQCAAGmBv8C9QH0AfUBpgQAAaYG/wL1AfQB9QGmBAABhgX/AvUC9AH1AYYCAAEE
+ AfMM8gHzAQQCAAGGBf8C9QL0AfUBhgQAAYYF/wL1AvQB9QGGBAABhgT/AvUD9AH1AYYCAAGGAfMM8gHz
+ AYYIpgGtA/QB9QGGAgABBQdiAYgD9AH1AYYEAAGGA/8C9QT0AfUBhgIAAYYB9AzzAfQChgf0AYYD9AH1
+ AYYCAAFjB/QBYwP0AfUBhgQAAYYC/wL1BvQBhgIAAYYB9AzzAfQChgH0Aa0BiwHwAYsB8AH0AYYE9AGG
+ AgABYwH0AWMBsAPzAfQBYwT0AYYEAAGGAf8C9QX0AfMB9AGGAgABhg70AoYB9AGtAbQBtQG0AbUB9AGG
+ AvQB8wH0AYYCAAGIAfQBtgGIArYBvQH0AYgC9AHzAfQBhgQAAYYB/wH1BfQC8wH0AYYCAAGGDv8BhgGL
+ AfUBrQEJAc8BCQHPAfUBiwH0AvMB9AGGAgABiAH1AfQBtgOIAfUBiAH0AvMB9AGGBAABhgH1BfQC8wHx
+ AfQBhgIAAYYO/wGGAa0B/wGtAfQBrQH0Aa0B/wGtAvMB8QH0AYYCAAGIAf8B9QG3AYgBtwGIAf8BiALz
+ AfEB9AGGBAABhgH1BPQC8wLxAfQBhgIAAYYO/wGGAa0B3QGtAQkBrQEJAa0B3QGtAfMC8QH0AYYCAAGI
+ Av8BvQKIAbcB/wGIAfMC8QH0AYYEAAGGAfUD9ALzAfED9wGmAgABhgMHBu8D9wKSAQQBrQf/Aa0B8QP3
+ AaYCAAGPB/8BjwHxA/cBpgQAAYYB9QL0AvMC8QHvAf8BhgGhAgABhgG1AvEC8AK8AgcD7gG8AbUBhgGt
+ B88BtAHxAe8B/wGGAaECAAGqB48BsAHxAe8B/wGGAaEEAAGnAvUF9AEHAacBoQMAAaEOhgGhAgABpwL1
+ BfQBBwGnAaEFAAGnAvUF9AEHAacBoQUACacBoRYACacBoQYACacBoQQAAUIBTQE+BwABPgMAASgDAAFA
+ AwABQAMAAQEBAAEBBgABAhYAA/8RAAHAAQMBwAEDAcABAwIAAcABAwHAAQMBwAEDAgABwAEDAcABAwHA
+ AQMCAAHAAQMBwAEDAcABAwIAAcABAwHAAQMBwAEDAgABwAEDAcABAwHAAQMCAAHAAQMBwAEDAcABAwIA
+ AcABAwHAAQMBwAEDAgABwAEDAcABAwHAAQMCAAHAAQMBwAEDAcABAwIAAcABAwHAAQMBwAEDAgABwAED
+ AcABAwHAAQMCAAHAAQcBwAEHAcABBwIAAcABDwHAAQ8BwAEPEgABwAEDAcABAwHAAQMBwAEDAcABAwHA
+ AQMBwAEDAcABAwHAAQMBwAEDAcABAwHAAQMBwAEDAQABAwHAAQMBAAEDAcABAwEAAQMBgAEDAQABAwHA
+ AQMBAAEDAQABAwEAAQMBwAEDAQABAwEAAQMBAAEDAcABAwEAAQMBAAEDAQABAwHAAQMBAAEDAQABAwEA
+ AQMBwAEDAQABAwEAAQMBAAEDAcABAwEAAQMBgAEDAQABAwHAAQMBAAEDAcABAwEAAQMBwAEHAcABBwHA
+ AQcBwAEHAcABDwHAAQ8BwAEPAcABDxAAAcABAwHAAQMBwAEDAcABAwHAAQMBwAEDAcABAwHAAQMBwAED
+ AcABAwHAAQMBwAEDAQABAwEAAQMBwAEDAcABAwEAAQMBAAEDAcABAwHAAQMBAAEDAQABAwHAAQMBwAED
+ AQABAwEAAQMBwAEDAcABAwEAAQMBAAEDAcABAwHAAQMBAAEDAQABAwHAAQMBwAEDAQABAwEAAQMBwAED
+ AcABAwEAAQMBAAEDAcABAwHAAQMBAAEDAQABAwHAAQMBwAEDAcABBwHAAQcBwAEHAcABBwHAAQ8BwAEP
+ AcABDwHAAQ8CAAL/DAABwAEDAgABwAEDAcABAwHAAQMCAAHAAQMBwAEDAcABAwIAAcABAwHAAQMBwAED
+ AwABAwEAAQMBwAEDAwABAwEAAQMBwAEDAwABAwEAAQMBwAEDAwABAwEAAQMBwAEDAwABAwEAAQMBwAED
+ AwABAwEAAQMBwAEDAwABAwEAAQMBwAEDAwABAwEAAQMBwAEDAwABAwEAAQMBwAEHAgABwAEHAcABBwHA
+ AQ8C/wHAAQ8BwAEPCw==
+</value>
+ </data>
+</root>
\ No newline at end of file
Modified: sandbox/maestro-3.0/Maestro.Editors/Maestro.Editors.csproj
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/Maestro.Editors.csproj 2010-07-09 19:49:00 UTC (rev 5020)
+++ sandbox/maestro-3.0/Maestro.Editors/Maestro.Editors.csproj 2010-07-10 13:51:04 UTC (rev 5021)
@@ -91,6 +91,12 @@
<Compile Include="Common\SymbolPicker.Designer.cs">
<DependentUpon>SymbolPicker.cs</DependentUpon>
</Compile>
+ <Compile Include="Common\UnmanagedFileBrowser.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="Common\UnmanagedFileBrowser.Designer.cs">
+ <DependentUpon>UnmanagedFileBrowser.cs</DependentUpon>
+ </Compile>
<Compile Include="DrawingSource\DrawingSourceEditorCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
@@ -453,6 +459,10 @@
<DependentUpon>SymbolPicker.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
+ <EmbeddedResource Include="Common\UnmanagedFileBrowser.resx">
+ <DependentUpon>UnmanagedFileBrowser.cs</DependentUpon>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
<EmbeddedResource Include="DrawingSource\DrawingSourceEditorCtrl.resx">
<DependentUpon>DrawingSourceEditorCtrl.cs</DependentUpon>
<SubType>Designer</SubType>
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-09 19:49:00 UTC (rev 5020)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj 2010-07-10 13:51:04 UTC (rev 5021)
@@ -197,6 +197,7 @@
<Compile Include="ObjectModels\ResourceItems.cs" />
<Compile Include="ObjectModels\SymbolDefinition.cs" />
<Compile Include="ObjectModels\SymbolLibrary.cs" />
+ <Compile Include="ObjectModels\UnmanagedDataList.cs" />
<Compile Include="ObjectModels\UntypedResource.cs" />
<Compile Include="ObjectModels\WebLayout.cs" />
<Compile Include="Platform.cs" />
Added: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/UnmanagedDataList.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/UnmanagedDataList.cs (rev 0)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/UnmanagedDataList.cs 2010-07-10 13:51:04 UTC (rev 5021)
@@ -0,0 +1,81 @@
+#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.Xml.Serialization;
+using System.Diagnostics;
+
+namespace OSGeo.MapGuide.ObjectModels.Common
+{
+ partial class UnmanagedDataListUnmanagedDataFile
+ {
+ [XmlIgnore]
+ public string FileName
+ {
+ get
+ {
+ string str = this.unmanagedDataIdField;
+ if (!string.IsNullOrEmpty(str))
+ {
+ if (str.Contains("/"))
+ {
+ return str.Substring(str.LastIndexOf("/") + 1);
+ }
+ else
+ {
+ return str.Substring(str.LastIndexOf("]") + 1);
+ }
+ }
+ return string.Empty;
+ }
+ }
+ }
+
+ partial class UnmanagedDataListUnmanagedDataFolder
+ {
+ [XmlIgnore]
+ public string FolderName
+ {
+ get
+ {
+ string str = this.unmanagedDataIdField;
+ if (!string.IsNullOrEmpty(str))
+ {
+ if (str.EndsWith("/"))
+ str = str.Substring(0, str.Length - 1);
+
+ var tokens = str.Split('/');
+ if (tokens.Length == 1)
+ {
+ var p = tokens[0];
+ if (p.EndsWith("]"))
+ return p;
+ else
+ return p.Substring(p.IndexOf("]") + 1);
+ }
+ else
+ return tokens[tokens.Length - 1];
+ }
+ return string.Empty;
+ }
+ }
+ }
+}
More information about the mapguide-commits
mailing list