Author: fejj
Date: 2007-05-25 14:46:53 -0400 (Fri, 25 May 2007)
New Revision: 77965

Modified:
   trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog
   
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Commands/RefactoryCommands.cs
Log:
2007-05-25  Jeffrey Stedfast  <[EMAIL PROTECTED]>

        * MonoDevelop.Ide.Commands/RefactoryCommands.cs (ImplementInterface):
        Moved the bulk of the logic to CodeRefactorer.



Modified: trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog        2007-05-25 
18:44:34 UTC (rev 77964)
+++ trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog        2007-05-25 
18:46:53 UTC (rev 77965)
@@ -1,3 +1,8 @@
+2007-05-25  Jeffrey Stedfast  <[EMAIL PROTECTED]>
+
+       * MonoDevelop.Ide.Commands/RefactoryCommands.cs (ImplementInterface):
+       Moved the bulk of the logic to CodeRefactorer.
+
 2007-05-25  Lluis Sanchez Gual <[EMAIL PROTECTED]> 
 
        * MonoDevelop.Ide.Templates/FileTemplate.cs,
@@ -79,11 +84,12 @@
 2007-05-18  Ankit Jain  <[EMAIL PROTECTED]>
 
        * MonoDevelop.Ide.Commands/ProjectCommands.cs
-       (ExportProjectHandler.Update): Override. Should be enabled only if there
-       is an open combine.
-       * MonoDevelop.Ide.Gui/ProjectOperations.cs (Export): Ensure that Destroy
-       is called.
+       (ExportProjectHandler.Update): Override. Should be enabled only if
+       there is an open combine.
 
+       * MonoDevelop.Ide.Gui/ProjectOperations.cs (Export): Ensure that
+       Destroy is called.
+
 2007-05-17  Jeffrey Stedfast  <[EMAIL PROTECTED]>
 
        * MonoDevelop.Ide.Gui.Dialogs/EncapsulateFieldDialog.cs

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Commands/RefactoryCommands.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Commands/RefactoryCommands.cs
    2007-05-25 18:44:34 UTC (rev 77964)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Commands/RefactoryCommands.cs
    2007-05-25 18:46:53 UTC (rev 77965)
@@ -415,62 +415,10 @@
                        }
                }
                
-               string ExplicitNamePrefix (IClass klass, IClass iface)
-               {
-                       if (iface.Namespace == klass.Namespace)
-                               return iface.Name + ".";
-                       
-                       string name = iface.FullyQualifiedName;
-                       int maxLen = name.LastIndexOf ('.') - 1;
-                       
-                       if (maxLen < 0)
-                               return iface.Name + ".";
-                       
-                       string longestMatch = null;
-                       
-                       if (name.StartsWith (klass.Namespace + "."))
-                               longestMatch = klass.Namespace;
-                       
-                       if (pinfo.BestCompilationUnit != null) {
-                               ICompilationUnit compilationUnit = 
(ICompilationUnit) pinfo.BestCompilationUnit;
-                               bool found = false;
-                               string prefix;
-                               IUsing use;
-                               int i, j;
-                               
-                               for (i = 0; i < compilationUnit.Usings.Count && 
!found; i++) {
-                                       if ((use = compilationUnit.Usings[i]) 
== null)
-                                               continue;
-                                       
-                                       for (j = 0; j < use.Usings.Count; j++) {
-                                               prefix = use.Usings[j];
-                                               if (name.StartsWith (prefix + 
".")) {
-                                                       if (longestMatch == 
null || prefix.Length > longestMatch.Length) {
-                                                               longestMatch = 
prefix;
-                                                               if 
(longestMatch.Length == maxLen) {
-                                                                       found = 
true;
-                                                                       break;
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-                       
-                       if (longestMatch != null)
-                               return name.Substring (longestMatch.Length + 1) 
+ ".";
-                       
-                       return name + ".";
-               }
-               
                void ImplementInterface (bool explicitly)
                {
                        CodeRefactorer refactorer = 
IdeApp.ProjectOperations.CodeRefactorer;
                        IClass iface = item as IClass;
-                       IMember newMember;
-                       bool alreadyImplemented;
-                       string prefix = null;
-                       int i, j;
                        
                        if (klass == null)
                                return;
@@ -478,105 +426,7 @@
                        if (iface == null)
                                return;
                        
-                       if (explicitly)
-                               prefix = ExplicitNamePrefix (klass, iface);
-                       
-                       // Add stubs in reverse order
-                       
-                       // Stub out non-implemented events defined by @iface
-                       for (i = iface.Events.Count - 1; i >= 0; i--) {
-                               IEvent ev = iface.Events[i];
-                               
-                               for (j = 0, alreadyImplemented = false; j < 
klass.Events.Count; j++) {
-                                       if (klass.Events[j].FullyQualifiedName 
== ev.FullyQualifiedName) {
-                                               alreadyImplemented = true;
-                                               break;
-                                       }
-                               }
-                               
-                               if (alreadyImplemented)
-                                       continue;
-                               
-                               CodeMemberEvent member;
-                               
-                               member = new CodeMemberEvent ();
-                               if (explicitly)
-                                       member.Name = prefix + ev.Name;
-                               else
-                                       member.Name = ev.Name;
-                               
-                               member.Type = new CodeTypeReference 
(ev.ReturnType.Name);
-                               
-                               // Update @klass so we have the most recent info
-                               if ((newMember = refactorer.AddMember (klass, 
member)) != null)
-                                       klass = newMember.DeclaringType;
-                       }
-                       
-                       // Stub out non-implemented methods defined by @iface
-                       for (i = iface.Methods.Count - 1; i >= 0; i--) {
-                               IMethod method = iface.Methods[i];
-                               
-                               for (j = 0, alreadyImplemented = false; j < 
klass.Methods.Count; j++) {
-                                       if (klass.Methods[j].FullyQualifiedName 
== method.FullyQualifiedName) {
-                                               alreadyImplemented = true;
-                                               break;
-                                       }
-                               }
-                               
-                               if (alreadyImplemented)
-                                       continue;
-                               
-                               CodeMemberMethod member;
-                               member = new CodeMemberMethod ();
-                               if (explicitly)
-                                       member.Name = prefix + method.Name;
-                               else
-                                       member.Name = method.Name;
-                               
-                               member.ReturnType = new CodeTypeReference 
(method.ReturnType.Name);
-                               member.Attributes = MemberAttributes.Public;
-                               foreach (IParameter param in method.Parameters) 
{
-                                       CodeParameterDeclarationExpression par;
-                                       par = new 
CodeParameterDeclarationExpression (param.ReturnType.Name, param.Name);
-                                       member.Parameters.Add (par);
-                               }
-                               
-                               // Update @klass so we have the most recent info
-                               if ((newMember = refactorer.AddMember (klass, 
member)) != null)
-                                       klass = newMember.DeclaringType;
-                       }
-                       
-                       // Stub out non-implemented properties defined by @iface
-                       for (i = iface.Properties.Count - 1; i >= 0; i--) {
-                               IProperty prop = iface.Properties[i];
-                               
-                               for (j = 0, alreadyImplemented = false; j < 
klass.Properties.Count; j++) {
-                                       if 
(klass.Properties[j].FullyQualifiedName == prop.FullyQualifiedName) {
-                                               alreadyImplemented = true;
-                                               break;
-                                       }
-                               }
-                               
-                               if (alreadyImplemented)
-                                       continue;
-                               
-                               CodeMemberProperty member;
-                               
-                               member = new CodeMemberProperty ();
-                               if (explicitly)
-                                       member.Name = prefix + prop.Name;
-                               else
-                                       member.Name = prop.Name;
-                               
-                               member.Type = new CodeTypeReference 
(prop.ReturnType.Name);
-                               member.Attributes = MemberAttributes.Public;
-                               member.HasGet = prop.CanGet;
-                               member.HasSet = prop.CanSet;
-                               
-                               // Update @klass so we have the most recent info
-                               if ((newMember = refactorer.AddMember (klass, 
member)) != null)
-                                       klass = newMember.DeclaringType;
-                       }
+                       refactorer.ImplementInterface (pinfo, klass, iface, 
explicitly);
                }
                
                public void ImplementImplicitInterface ()

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

Reply via email to