Author: lluis
Date: 2007-03-06 14:41:51 -0500 (Tue, 06 Mar 2007)
New Revision: 73838

Added:
   
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/ICommandTargetVisitor.cs
Modified:
   trunk/monodevelop/Core/src/MonoDevelop.Components/ChangeLog
   trunk/monodevelop/Core/src/MonoDevelop.Components/Makefile.am
   
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/CommandManager.cs
   trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.mdp
Log:
* Makefile.am, MonoDevelop.Components.mdp: Updated.
* MonoDevelop.Components.Commands/CommandManager.cs,
  MonoDevelop.Components.Commands/ICommandTargetVisitor.cs: Added
  support for custom command target visitors.

Modified: trunk/monodevelop/Core/src/MonoDevelop.Components/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Components/ChangeLog 2007-03-06 
19:39:03 UTC (rev 73837)
+++ trunk/monodevelop/Core/src/MonoDevelop.Components/ChangeLog 2007-03-06 
19:41:51 UTC (rev 73838)
@@ -1,3 +1,10 @@
+2007-03-06  Lluis Sanchez Gual <[EMAIL PROTECTED]> 
+
+       * Makefile.am, MonoDevelop.Components.mdp: Updated.
+       * MonoDevelop.Components.Commands/CommandManager.cs,
+         MonoDevelop.Components.Commands/ICommandTargetVisitor.cs: Added
+         support for custom command target visitors.
+
 2007-02-20  Lluis Sanchez Gual <[EMAIL PROTECTED]> 
 
        * MonoDevelop.Components.Commands/CommandToolbar.cs,

Modified: trunk/monodevelop/Core/src/MonoDevelop.Components/Makefile.am
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Components/Makefile.am       
2007-03-06 19:39:03 UTC (rev 73837)
+++ trunk/monodevelop/Core/src/MonoDevelop.Components/Makefile.am       
2007-03-06 19:41:51 UTC (rev 73838)
@@ -50,6 +50,7 @@
        MonoDevelop.Components.Commands/ICommandDelegatorRouter.cs \
        MonoDevelop.Components.Commands/ICommandMenuItem.cs \
        MonoDevelop.Components.Commands/ICommandRouter.cs \
+       MonoDevelop.Components.Commands/ICommandTargetVisitor.cs \
        MonoDevelop.Components.Commands/ICommandUserItem.cs \
        MonoDevelop.Components.Commands/LinkCommandEntry.cs \
        MonoDevelop.Components.Commands/LocalCommandEntry.cs \

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/CommandManager.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/CommandManager.cs
 2007-03-06 19:39:03 UTC (rev 73837)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/CommandManager.cs
 2007-03-06 19:41:51 UTC (rev 73838)
@@ -42,6 +42,7 @@
                ArrayList toolbars = new ArrayList ();
                ArrayList globalHandlers = new ArrayList ();
                ArrayList commandUpdateErrors = new ArrayList ();
+               ArrayList visitors = new ArrayList ();
                Hashtable overloadedAccelCommands = new Hashtable ();
                Stack delegatorStack = new Stack ();
                bool disposed;
@@ -102,7 +103,7 @@
                        set {
                                if (enableToolbarUpdate != value) {
                                        if (value) {
-                                               if (toolbars.Count > 0) {
+                                               if (toolbars.Count > 0 || 
visitors.Count > 0) {
                                                        if 
(!toolbarUpdaterRunning) {
                                                                
GLib.Timeout.Add (500, new GLib.TimeoutHandler (UpdateStatus));
                                                                
toolbarUpdaterRunning = true;
@@ -154,6 +155,20 @@
                        globalHandlers.Remove (handler);
                }
                
+               public void RegisterCommandTargetVisitor (ICommandTargetVisitor 
visitor)
+               {
+                       visitors.Add (visitor);
+                       if (enableToolbarUpdate && !toolbarUpdaterRunning) {
+                               GLib.Timeout.Add (500, new GLib.TimeoutHandler 
(UpdateStatus));
+                               toolbarUpdaterRunning = true;
+                       }
+               }
+               
+               public void UnregisterCommandTargetVisitor 
(ICommandTargetVisitor visitor)
+               {
+                       visitors.Remove (visitor);
+               }
+               
                public Command GetCommand (object cmdId)
                {
                        Command cmd = cmds [cmdId] as Command;
@@ -379,6 +394,23 @@
                        return info;
                }
                
+               public object VisitCommandTargets (ICommandTargetVisitor 
visitor, object initialTarget)
+               {
+                       int globalPos = -1;
+                       object cmdTarget = initialTarget != null ? 
initialTarget : GetFirstCommandTarget (out globalPos);
+                       
+                       while (cmdTarget != null)
+                       {
+                               if (visitor.Visit (cmdTarget))
+                                       return cmdTarget;
+
+                               cmdTarget = GetNextCommandTarget (cmdTarget, 
ref globalPos);
+                       }
+                       
+                       visitor.Visit (null);
+                       return null;
+               }
+               
                internal ArrayList FindAlternateAccelCommands (object commandId)
                {
                        return (ArrayList) overloadedAccelCommands [commandId];
@@ -548,7 +580,7 @@
                        Gtk.Window[] wins = Gtk.Window.ListToplevels ();
                        
                        foreach (Gtk.Window w in wins) {
-                               if (w.IsActive && w.Visible && w.Type == 
Gtk.WindowType.Toplevel) {
+                               if (w.IsActive && w.Visible && w.Type == 
Gtk.WindowType.Toplevel && !(w is Gtk.Dialog)) {
                                        win = w;
                                        break;
                                }
@@ -596,6 +628,9 @@
                                if (toolbar.Visible)
                                        toolbar.Update (activeWidget);
                        }
+                       foreach (ICommandTargetVisitor v in visitors)
+                               VisitCommandTargets (v, null);
+                               
                }
                
                public void ReportError (object commandId, string message, 
Exception ex)

Added: 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/ICommandTargetVisitor.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/ICommandTargetVisitor.cs
  2007-03-06 19:39:03 UTC (rev 73837)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.Commands/ICommandTargetVisitor.cs
  2007-03-06 19:41:51 UTC (rev 73838)
@@ -0,0 +1,10 @@
+
+using System;
+
+namespace MonoDevelop.Components.Commands
+{
+       public interface ICommandTargetVisitor
+       {
+               bool Visit (object ob);
+       }
+}

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.mdp
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.mdp    
    2007-03-06 19:39:03 UTC (rev 73837)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Components/MonoDevelop.Components.mdp    
    2007-03-06 19:41:51 UTC (rev 73838)
@@ -95,20 +95,21 @@
     <File name="./gtk-gui/objects.xml" subtype="Code" 
buildaction="EmbedAsResource" />
     <File name="./gtk-gui/generated.cs" subtype="Code" buildaction="Compile" />
     <File name="./AssemblyInfo.cs" subtype="Code" buildaction="Compile" />
+    <File name="./MonoDevelop.Components.Commands/ICommandTargetVisitor.cs" 
subtype="Code" buildaction="Compile" />
   </Contents>
   <References>
-    <ProjectReference type="Gac" localcopy="True" refto="System, 
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-    <ProjectReference type="Gac" localcopy="True" refto="System.Drawing, 
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-    <ProjectReference type="Gac" localcopy="True" refto="System.Xml, 
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-    <ProjectReference type="Gac" localcopy="True" refto="gecko-sharp, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=ccf7d78a55e9f021" />
-    <ProjectReference type="Gac" localcopy="True" refto="glade-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="gnome-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="pango-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="atk-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="gdk-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Project" localcopy="True" refto="MonoDevelop.Core" 
/>
-    <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, 
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+    <ProjectReference type="Gac" localcopy="False" refto="System, 
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="False" refto="System.Drawing, 
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+    <ProjectReference type="Gac" localcopy="False" refto="System.Xml, 
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+    <ProjectReference type="Gac" localcopy="False" refto="gecko-sharp, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=ccf7d78a55e9f021" />
+    <ProjectReference type="Gac" localcopy="False" refto="glade-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="False" refto="gnome-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="False" refto="pango-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="False" refto="atk-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="False" refto="gdk-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Gac" localcopy="False" refto="gtk-sharp, 
Version=2.4.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <ProjectReference type="Project" localcopy="False" 
refto="MonoDevelop.Core" />
+    <ProjectReference type="Gac" localcopy="False" refto="Mono.Posix, 
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
   </References>
   <MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="True" 
RelativeMakefileName="./Makefile.am" BuildTargetName="" CleanTargetName="" 
SyncReferences="True" IsAutotoolsProject="True" 
RelativeConfigureInPath="../../../">
     <ExcludedFiles>

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to