[mapguide-commits] r5641 - in trunk/Tools/Maestro/Maestro.Base: Commands Properties UI

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sat Mar 19 12:24:59 EDT 2011


Author: jng
Date: 2011-03-19 09:24:59 -0700 (Sat, 19 Mar 2011)
New Revision: 5641

Modified:
   trunk/Tools/Maestro/Maestro.Base/Commands/PasteCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Properties/Resources.Designer.cs
   trunk/Tools/Maestro/Maestro.Base/Properties/Resources.resx
   trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs
Log:
This submission includes the following changes:
 - #1636: Guard against moving an open resource via drag/drop in Site Explorer
 - Immediately invalidate the TreeViewAdv control when flagging node state changes


Modified: trunk/Tools/Maestro/Maestro.Base/Commands/PasteCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/PasteCommand.cs	2011-03-19 15:35:38 UTC (rev 5640)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/PasteCommand.cs	2011-03-19 16:24:59 UTC (rev 5641)
@@ -53,7 +53,8 @@
                 return;
 
             var folder = exp.SelectedItems[0];
-
+            var sourceItemsNotMoved = new List<string>();
+            
             //.net FX 2.0 hack to compensate for lack of set collection
             Dictionary<string, string> folders = new Dictionary<string, string>();
 
@@ -98,6 +99,15 @@
                 }
                 else if (item.ClipboardState == RepositoryItem.ClipboardAction.Cut)
                 {
+                    if (!item.IsFolder)
+                    {
+                        if (omgr.IsOpen(item.ResourceId))
+                        {
+                            sourceItemsNotMoved.Add(item.ResourceId);
+                            continue;
+                        }
+                    }
+
                     //TODO: Should we prompt? That may be equivalent to saying
                     //"Shall I break your resources because you're moving" isn't it?
                     var res = conn.ResourceService.MoveResourceWithReferences(item.ResourceId, resId, null, null);
@@ -108,6 +118,9 @@
                 }
             }
 
+            if (sourceItemsNotMoved.Count > 0)
+                MessageService.ShowMessage(string.Format(Properties.Resources.ItemsNotMovedDueToBeingOpen, Environment.NewLine + string.Join(Environment.NewLine, sourceItemsNotMoved.ToArray())));
+
             ResetItems(omgr, itemsToPaste);
             exp.RefreshModel(folder.ResourceId);
             foreach (var f in folders.Keys)

Modified: trunk/Tools/Maestro/Maestro.Base/Properties/Resources.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Properties/Resources.Designer.cs	2011-03-19 15:35:38 UTC (rev 5640)
+++ trunk/Tools/Maestro/Maestro.Base/Properties/Resources.Designer.cs	2011-03-19 16:24:59 UTC (rev 5641)
@@ -759,6 +759,15 @@
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to The following items were not moved due to being already open in an editor: {0}.
+        /// </summary>
+        internal static string ItemsNotMovedDueToBeingOpen {
+            get {
+                return ResourceManager.GetString("ItemsNotMovedDueToBeingOpen", resourceCulture);
+            }
+        }
+        
         internal static System.Drawing.Bitmap layer {
             get {
                 object obj = ResourceManager.GetObject("layer", resourceCulture);
@@ -1149,7 +1158,7 @@
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to The following resources were not copied or moved because they would be overwriting resources currently open: {0}.
+        ///   Looks up a localized string similar to The following resources were not copied or moved because they would be overwriting resources currently open: {0}The following resources were not moved because they are currently open: {1}.
         /// </summary>
         internal static string NotCopiedOrMovedDueToOpenEditors {
             get {

Modified: trunk/Tools/Maestro/Maestro.Base/Properties/Resources.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Properties/Resources.resx	2011-03-19 15:35:38 UTC (rev 5640)
+++ trunk/Tools/Maestro/Maestro.Base/Properties/Resources.resx	2011-03-19 16:24:59 UTC (rev 5641)
@@ -869,6 +869,9 @@
     <value>Cannot save to {0} as it is already opened by another editor</value>
   </data>
   <data name="NotCopiedOrMovedDueToOpenEditors" xml:space="preserve">
-    <value>The following resources were not copied or moved because they would be overwriting resources currently open: {0}</value>
+    <value>The following resources were not copied or moved because they would be overwriting resources currently open: {0}The following resources were not moved because they are currently open: {1}</value>
   </data>
+  <data name="ItemsNotMovedDueToBeingOpen" xml:space="preserve">
+    <value>The following items were not moved due to being already open in an editor: {0}</value>
+  </data>
 </root>
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs	2011-03-19 15:35:38 UTC (rev 5640)
+++ trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs	2011-03-19 16:24:59 UTC (rev 5641)
@@ -296,6 +296,7 @@
                             item.Reset();
                             break;
                     }
+                    trvResources.Invalidate();
                 }
             }
         }
@@ -419,7 +420,8 @@
         private string [] MoveResources(ICollection<string> resIds, string folderId)
         {
             var wb = Workbench.Instance;
-            var notMoved = new List<string>();
+            var notMovedToTarget = new List<string>();
+            var notMovedFromSource = new List<string>();
             var omgr = ServiceRegistry.GetService<OpenResourceManager>();
             var dlg = new ProgressDialog();
             var worker = new ProgressDialog.DoBackgroundWork((w, e, args) =>
@@ -447,11 +449,16 @@
                     {
                         var rid = new ResourceIdentifier(r);
                         var target = folderId + rid.Name + "." + rid.Extension;
+                        if (omgr.IsOpen(r))
+                        {
+                            notMovedFromSource.Add(r);
+                            continue;
+                        }
 
                         if (!omgr.IsOpen(target))
                             _conn.ResourceService.MoveResourceWithReferences(r, target, null, cb);
                         else
-                            notMoved.Add(r);
+                            notMovedToTarget.Add(r);
                     }
                 }
 
@@ -471,8 +478,13 @@
 
             var affectedFolders = (IEnumerable<string>)dlg.RunOperationAsync(wb, worker, folderId, resIds);
 
-            if (notMoved.Count > 0)
-                MessageService.ShowMessage(string.Format(Properties.Resources.NotCopiedOrMovedDueToOpenEditors, Environment.NewLine + string.Join(Environment.NewLine, notMoved.ToArray())));
+            if (notMovedToTarget.Count > 0 || notMovedFromSource.Count > 0)
+            {
+                MessageService.ShowMessage(string.Format(
+                    Properties.Resources.NotCopiedOrMovedDueToOpenEditors,
+                    Environment.NewLine + string.Join(Environment.NewLine, notMovedToTarget.ToArray()) + Environment.NewLine,
+                    Environment.NewLine + string.Join(Environment.NewLine, notMovedFromSource.ToArray()) + Environment.NewLine));
+            }
 
             return new List<string>(affectedFolders).ToArray();
         }



More information about the mapguide-commits mailing list