Author: mkrueger
Date: 2008-02-06 22:07:04 -0500 (Wed, 06 Feb 2008)
New Revision: 95109

Added:
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolderNodeBuilder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs
Modified:
   trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilEvent.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilField.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilMethod.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilProperty.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
Log:
* MonoDevelop.AssemblyBrowser.Dom/DomCecilMethod.cs,
  MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs,
  MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs,
  MonoDevelop.AssemblyBrowser.Dom/DomCecilEvent.cs,
  MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs,
  MonoDevelop.AssemblyBrowser.Dom/DomCecilField.cs,
  MonoDevelop.AssemblyBrowser.Dom/DomCecilProperty.cs,
  MonoDevelop.AssemblyBrowser/BaseTypeFolderNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs,
  MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs: Worked on assembly
  browser (Now using dom output).

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog     
2008-02-07 03:06:21 UTC (rev 95108)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog     
2008-02-07 03:07:04 UTC (rev 95109)
@@ -1,4 +1,24 @@
 2008-02-07  Mike Krüger <[EMAIL PROTECTED]> 
 
+       * MonoDevelop.AssemblyBrowser.Dom/DomCecilMethod.cs,
+         MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs,
+         MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs,
+         MonoDevelop.AssemblyBrowser.Dom/DomCecilEvent.cs,
+         MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs,
+         MonoDevelop.AssemblyBrowser.Dom/DomCecilField.cs,
+         MonoDevelop.AssemblyBrowser.Dom/DomCecilProperty.cs,
+         MonoDevelop.AssemblyBrowser/BaseTypeFolderNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs,
+         MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs: Worked on assembly
+         browser (Now using dom output).
+
+2008-02-07  Mike Krüger <[EMAIL PROTECTED]> 
+
        
 

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
  2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
  2008-02-07 03:07:04 UTC (rev 95109)
@@ -61,7 +61,9 @@
                                new DomMethodNodeBuilder (),
                                new DomFieldNodeBuilder (),
                                new DomEventNodeBuilder (),
-                               new DomPropertyNodeBuilder ()
+                               new DomPropertyNodeBuilder (),
+                               new BaseTypeFolderNodeBuilder (),
+                               new DomReturnTypeNodeBuilder ()
                                }, new TreePadOption [] {});
                        scrolledwindow2.Add (treeView);
                        scrolledwindow2.ShowAll ();

Added: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs
 2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs
 2008-02-07 03:07:04 UTC (rev 95109)
@@ -0,0 +1,48 @@
+//
+// BaseTypeFolder.cs
+//
+// Author:
+//   Mike Krüger <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using MonoDevelop.Ide.Dom;
+namespace MonoDevelop.AssemblyBrowser
+{
+       public class BaseTypeFolder
+       {
+               IType type;
+               
+               public IType Type {
+                       get {
+                               return type;
+                       }
+               }
+               
+               public BaseTypeFolder (IType type)
+               {
+                       this.type = type;
+               }
+       }
+}

Added: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolderNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolderNodeBuilder.cs
      2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/BaseTypeFolderNodeBuilder.cs
      2008-02-07 03:07:04 UTC (rev 95109)
@@ -0,0 +1,78 @@
+//
+// BaseTypeFolderNodeBuilder.cs
+//
+// Author:
+//   Mike Krüger <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+using Mono.Cecil;
+
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Dom;
+using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.AssemblyBrowser.Dom;
+
+namespace MonoDevelop.AssemblyBrowser
+{
+       public class BaseTypeFolderNodeBuilder : TypeNodeBuilder
+       {
+               public override Type NodeDataType {
+                       get { return typeof(BaseTypeFolder); }
+               }
+               
+               public override string GetNodeName (ITreeNavigator thisNode, 
object dataObject)
+               {
+                       return "Base Types";
+               }
+               
+               public override void BuildNode (ITreeBuilder treeBuilder, 
object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf 
closedIcon)
+               {
+                       label      = MonoDevelop.Core.GettextCatalog.GetString 
("Base Types");
+                       icon       = Context.GetIcon (Stock.OpenFolder);
+                       closedIcon = Context.GetIcon (Stock.ClosedFolder);
+               }
+               
+               public override void BuildChildNodes (ITreeBuilder ctx, object 
dataObject)
+               {
+                       BaseTypeFolder baseTypeFolder = 
(BaseTypeFolder)dataObject;
+                       ctx.AddChild (baseTypeFolder.Type.BaseType);
+                       foreach (IType type in 
baseTypeFolder.Type.ImplementedInterfaces) {
+                               ctx.AddChild (type);
+                       }
+               }
+               
+               public override bool HasChildNodes (ITreeBuilder builder, 
object dataObject)
+               {
+                       return true;
+               }
+               public override int CompareObjects (ITreeNavigator thisNode, 
ITreeNavigator otherNode)
+               {
+                       return -1;
+               }
+       }
+}

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
    2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
    2008-02-07 03:07:04 UTC (rev 95109)
@@ -39,6 +39,8 @@
 {
        public class DomEventNodeBuilder : TypeNodeBuilder
        {
+               static readonly string[] iconTable = {Stock.Event, 
Stock.PrivateEvent, Stock.ProtectedEvent, Stock.InternalEvent};
+               
                public override Type NodeDataType {
                        get { return typeof(IEvent); }
                }
@@ -53,8 +55,9 @@
                {
                        IEvent evt = (IEvent)dataObject;
                        label = evt.Name;
-                       icon = Context.GetIcon (Stock.Event);
+                       icon = Context.GetIcon 
(iconTable[DomTypeNodeBuilder.GetModifierOffset (evt.Modifiers)]);
                }
+               
                public override int CompareObjects (ITreeNavigator thisNode, 
ITreeNavigator otherNode)
                {
                        if (otherNode.DataItem is IEvent)

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
    2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
    2008-02-07 03:07:04 UTC (rev 95109)
@@ -32,6 +32,7 @@
 
 using MonoDevelop.Core.Gui;
 using MonoDevelop.Ide.Dom;
+using MonoDevelop.Ide.Dom.Output;
 using MonoDevelop.Ide.Gui;
 using MonoDevelop.Ide.Gui.Pads;
 
@@ -39,6 +40,8 @@
 {
        public class DomFieldNodeBuilder : TypeNodeBuilder
        {
+               static readonly string[] iconTable = {Stock.Field, 
Stock.PrivateField, Stock.ProtectedField, Stock.InternalField};
+               
                public override Type NodeDataType {
                        get { return typeof(IField); }
                }
@@ -52,19 +55,21 @@
                public override void BuildNode (ITreeBuilder treeBuilder, 
object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf 
closedIcon)
                {
                        IField field = (IField)dataObject;
-                       label = field.Name;
-                       icon = Context.GetIcon (Stock.Field);
+                       label = AmbienceService.Default.GetString (field, 
OutputFlags.ClassBrowserEntries);
+                       icon = Context.GetIcon 
(iconTable[DomTypeNodeBuilder.GetModifierOffset (field.Modifiers)]);
                }
+               
                public override int CompareObjects (ITreeNavigator thisNode, 
ITreeNavigator otherNode)
                {
                        if (otherNode.DataItem is IMethod)
                                return 1;
                        if (otherNode.DataItem is IProperty)
                                return 1;
+                       if (otherNode.DataItem is BaseTypeFolder)
+                               return 1;
                        if (otherNode.DataItem is IField)
                                return 
((IField)thisNode.DataItem).Name.CompareTo (((IField)otherNode.DataItem).Name);
                        return -1;
                }
-               
        }
 }

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
   2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
   2008-02-07 03:07:04 UTC (rev 95109)
@@ -32,6 +32,7 @@
 
 using MonoDevelop.Core.Gui;
 using MonoDevelop.Ide.Dom;
+using MonoDevelop.Ide.Dom.Output;
 using MonoDevelop.Ide.Gui;
 using MonoDevelop.Ide.Gui.Pads;
 
@@ -39,6 +40,8 @@
 {
        public class DomMethodNodeBuilder : TypeNodeBuilder
        {
+               static readonly string[] iconTable = {Stock.Method, 
Stock.PrivateMethod, Stock.ProtectedMethod, Stock.InternalMethod};
+               
                public override Type NodeDataType {
                        get { return typeof(IMethod); }
                }
@@ -52,12 +55,14 @@
                public override void BuildNode (ITreeBuilder treeBuilder, 
object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf 
closedIcon)
                {
                        IMethod method = (IMethod)dataObject;
-                       System.Console.WriteLine("Method" + method);
-                       label = method.Name;
-                       icon = Context.GetIcon (Stock.Method);
+                       label = AmbienceService.Default.GetString (method, 
OutputFlags.ClassBrowserEntries);
+                       icon = Context.GetIcon 
(iconTable[DomTypeNodeBuilder.GetModifierOffset (method.Modifiers)]);
                }
+               
                public override int CompareObjects (ITreeNavigator thisNode, 
ITreeNavigator otherNode)
                {
+                       if (otherNode.DataItem is BaseTypeFolder)
+                               return 1;
                        if (otherNode.DataItem is IMethod)
                                return 
((IMethod)thisNode.DataItem).Name.CompareTo 
(((IMethod)otherNode.DataItem).Name);
                        

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
 2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
 2008-02-07 03:07:04 UTC (rev 95109)
@@ -32,6 +32,7 @@
 
 using MonoDevelop.Core.Gui;
 using MonoDevelop.Ide.Dom;
+using MonoDevelop.Ide.Dom.Output;
 using MonoDevelop.Ide.Gui;
 using MonoDevelop.Ide.Gui.Pads;
 
@@ -39,6 +40,8 @@
 {
        public class DomPropertyNodeBuilder : TypeNodeBuilder
        {
+               static readonly string[] iconTable = {Stock.Property, 
Stock.PrivateProperty, Stock.ProtectedProperty, Stock.InternalProperty};
+               
                public override Type NodeDataType {
                        get { return typeof(IProperty); }
                }
@@ -51,14 +54,16 @@
                
                public override void BuildNode (ITreeBuilder treeBuilder, 
object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf 
closedIcon)
                {
-                       IProperty poperty = (IProperty)dataObject;
-                       label = poperty.Name;
-                       icon = Context.GetIcon (Stock.Property);
+                       IProperty property = (IProperty)dataObject;
+                       label = AmbienceService.Default.GetString (property, 
OutputFlags.ClassBrowserEntries);
+                       icon = Context.GetIcon 
(iconTable[DomTypeNodeBuilder.GetModifierOffset (property.Modifiers)]);
                }
                public override int CompareObjects (ITreeNavigator thisNode, 
ITreeNavigator otherNode)
                {
                        if (otherNode.DataItem is IMethod)
                                return 1;
+                       if (otherNode.DataItem is BaseTypeFolder)
+                               return 1;
                        if (otherNode.DataItem is IProperty)
                                return 
((IProperty)thisNode.DataItem).Name.CompareTo 
(((IProperty)otherNode.DataItem).Name);
                        return -1;

Added: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs
       2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs
       2008-02-07 03:07:04 UTC (rev 95109)
@@ -0,0 +1,59 @@
+//
+// DomReturnTypeNodeBuilder.cs
+//
+// Author:
+//   Mike Krüger <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+using Mono.Cecil;
+
+using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Dom;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Pads;
+
+namespace MonoDevelop.AssemblyBrowser
+{
+       public class DomReturnTypeNodeBuilder : TypeNodeBuilder
+       {
+               public override Type NodeDataType {
+                       get { return typeof(IReturnType); }
+               }
+               
+               public override string GetNodeName (ITreeNavigator thisNode, 
object dataObject)
+               {
+                       IReturnType returnType = (IReturnType)dataObject;
+                       return returnType.FullName;
+               }
+               
+               public override void BuildNode (ITreeBuilder treeBuilder, 
object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf 
closedIcon)
+               {
+                       IReturnType returnType = (IReturnType)dataObject;
+                       label = returnType.Name;
+                       icon = Context.GetIcon (Stock.Class);
+               }
+       }
+}

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
     2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
     2008-02-07 03:07:04 UTC (rev 95109)
@@ -55,12 +55,38 @@
                        label = type.Name ?? "-";
                        label = label.Replace ("<", "&lt;");
                        label = label.Replace (">", "&gt;");
-                       icon = Context.GetIcon (Stock.Class);
+                       icon = Context.GetIcon (GetIcon (type));
                }
                
+               static string[,] iconTable = new string[,] {
+                       {Stock.Error,     Stock.Error,            Stock.Error,  
            Stock.Error},             // unknown
+                       {Stock.Class,     Stock.PrivateClass,     
Stock.ProtectedClass,     Stock.InternalClass},     // class
+                       {Stock.Enum,      Stock.PrivateEnum,      
Stock.ProtectedEnum,      Stock.InternalEnum},      // enum
+                       {Stock.Interface, Stock.PrivateInterface, 
Stock.ProtectedInterface, Stock.InternalInterface}, // interface
+                       {Stock.Struct,    Stock.PrivateStruct,    
Stock.ProtectedStruct,    Stock.InternalStruct},    // struct
+                       {Stock.Delegate,  Stock.PrivateDelegate,  
Stock.ProtectedDelegate,  Stock.InternalDelegate}   // delegate
+               };
+               
+               public static int GetModifierOffset (Modifiers modifier)
+               {
+                       if ((modifier & Modifiers.Private) == Modifiers.Private)
+                               return 1;
+                       if ((modifier & Modifiers.Protected) == 
Modifiers.Protected)
+                               return 2;
+                       if ((modifier & Modifiers.Internal) == 
Modifiers.Internal)
+                               return 3;
+                       return 0;
+               }
+               
+               public static string GetIcon (IType type)
+               {
+                       return iconTable[(int)type.ClassType, GetModifierOffset 
(type.Modifiers)];
+               }
+               
                public override void BuildChildNodes (ITreeBuilder ctx, object 
dataObject)
                {
                        IType type = (IType)dataObject;
+                       ctx.AddChild (new BaseTypeFolder (type));
                        foreach (object o in type.Members) {
                                ctx.AddChild (o);
                        }

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilEvent.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilEvent.cs
      2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilEvent.cs
      2008-02-07 03:07:04 UTC (rev 95109)
@@ -38,7 +38,7 @@
                {
                        this.eventDefinition = eventDefinition;
                        base.name            = eventDefinition.Name;
-                       base.modifiers       = DomCecilType.GetModifiers 
(eventDefinition.Attributes);
+                       base.modifiers       = DomCecilType.GetModifiers 
(eventDefinition.AddMethod.Attributes);
                }
        }
 }

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilField.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilField.cs
      2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilField.cs
      2008-02-07 03:07:04 UTC (rev 95109)
@@ -39,6 +39,7 @@
                        this.fieldDefinition = fieldDefinition;
                        base.name            = fieldDefinition.Name;
                        base.modifiers       = DomCecilType.GetModifiers 
(fieldDefinition.Attributes);
+                       base.returnType      = new DomCecilReturnType 
(fieldDefinition.FieldType);
                }
        }
 }

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilMethod.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilMethod.cs
     2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilMethod.cs
     2008-02-07 03:07:04 UTC (rev 95109)
@@ -40,6 +40,10 @@
                        this.methodDefinition = methodDefinition;
                        base.name             = methodDefinition.Name;
                        base.modifiers        = DomCecilType.GetModifiers 
(methodDefinition.Attributes);
+                       base.returnType       = new DomCecilReturnType 
(methodDefinition.ReturnType.ReturnType);
+                       foreach (ParameterDefinition paramDef in 
methodDefinition.Parameters) {
+                               base.parameters.Add (new DomCecilParameter 
(paramDef));
+                       }
                }
        }
 }

Added: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs
  2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs
  2008-02-07 03:07:04 UTC (rev 95109)
@@ -0,0 +1,46 @@
+//
+// DomCecilParameter.cs
+//
+// Author:
+//   Mike Krüger <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using Mono.Cecil;
+
+namespace MonoDevelop.AssemblyBrowser.Dom
+{
+       public class DomCecilParameter : MonoDevelop.Ide.Dom.DomParameter
+       {
+               ParameterDefinition parameterDefinition;
+               
+               public DomCecilParameter (ParameterDefinition 
parameterDefinition)
+               {
+                       this.parameterDefinition = parameterDefinition;
+                       base.name                = parameterDefinition.Name;
+//                     base.modifiers           = DomCecilType.GetModifiers 
(parameterDefinition..Attributes);
+                       base.returnType          = new DomCecilReturnType 
(parameterDefinition.ParameterType);
+               }
+       }
+}
\ No newline at end of file

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilProperty.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilProperty.cs
   2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilProperty.cs
   2008-02-07 03:07:04 UTC (rev 95109)
@@ -39,7 +39,8 @@
                {
                        this.propertyDefinition = propertyDefinition;
                        base.name               = propertyDefinition.Name;
-                       base.modifiers          = DomCecilType.GetModifiers 
(propertyDefinition.Attributes);
+                       base.modifiers          = DomCecilType.GetModifiers 
((propertyDefinition.GetMethod != null ? propertyDefinition.GetMethod : 
propertyDefinition.SetMethod).Attributes);
+                       base.returnType         = new DomCecilReturnType 
(propertyDefinition.PropertyType);
                }
        }
 }

Added: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
 2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
 2008-02-07 03:07:04 UTC (rev 95109)
@@ -0,0 +1,42 @@
+//
+// DomCecilReturnType.cs
+//
+// Author:
+//   Mike Krüger <[EMAIL PROTECTED]>
+//
+// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using Mono.Cecil;
+
+namespace MonoDevelop.AssemblyBrowser
+{
+       public class DomCecilReturnType : MonoDevelop.Ide.Dom.DomReturnType
+       {
+               public DomCecilReturnType (TypeReference typeReference)
+               {
+                       this.name   = typeReference.Name;
+                       this.nspace = typeReference.Namespace;
+               }
+       }
+}

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
       2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
       2008-02-07 03:07:04 UTC (rev 95109)
@@ -28,6 +28,7 @@
 
 using System;
 using Mono.Cecil;
+using MonoDevelop.Ide.Dom;
 
 namespace MonoDevelop.AssemblyBrowser.Dom
 {
@@ -35,13 +36,31 @@
        {
                TypeDefinition typeDefinition;
                
+               static ClassType GetClassType (TypeDefinition typeDefinition)
+               {
+                       if (typeDefinition.IsInterface)
+                               return ClassType.Interface;
+                       if (typeDefinition.IsEnum)
+                               return ClassType.Enum;
+                       if (typeDefinition.IsValueType)
+                               return ClassType.Struct;
+                       // Todo: Delegates
+                       return ClassType.Class;
+               }
+               
                public DomCecilType (TypeDefinition typeDefinition)
                {
                        this.typeDefinition = typeDefinition;
+                       this.classType      = GetClassType (typeDefinition);
                        this.name           = typeDefinition.Name;
                        this.namesp         = typeDefinition.Namespace;
                        this.modifiers      = GetModifiers 
(typeDefinition.Attributes);
+                       if (typeDefinition.BaseType != null)
+                               this.baseType = new DomCecilReturnType 
(typeDefinition.BaseType);
                        
+                       foreach (TypeReference interfaceReference in 
typeDefinition.Interfaces) {
+                               this.implementedInterfaces.Add (new 
DomCecilReturnType (interfaceReference));
+                       }
                        foreach (FieldDefinition fieldDefinition in 
typeDefinition.Fields)
                                base.members.Add (new DomCecilField 
(fieldDefinition));
                        foreach (MethodDefinition methodDefinition in 
typeDefinition.Methods)
@@ -55,30 +74,99 @@
                public static MonoDevelop.Ide.Dom.Modifiers GetModifiers 
(Mono.Cecil.TypeAttributes attr)
                {
                        MonoDevelop.Ide.Dom.Modifiers result = 
MonoDevelop.Ide.Dom.Modifiers.None;
+                       if ((attr & TypeAttributes.Abstract) == 
TypeAttributes.Abstract)
+                               result |= Modifiers.Abstract;
+                       if ((attr & TypeAttributes.Sealed) == 
TypeAttributes.Sealed)
+                               result |= Modifiers.Sealed;
+                       
+                       if ((attr & TypeAttributes.Public) == 
TypeAttributes.Public) {
+                               result |= Modifiers.Public;
+                       } else if ((attr & TypeAttributes.NestedFamANDAssem) == 
TypeAttributes.NestedFamANDAssem) {
+                               result |= Modifiers.ProtectedAndInternal;
+                       } else if ((attr & TypeAttributes.NestedFamORAssem) == 
TypeAttributes.NestedFamORAssem) {
+                               result |= Modifiers.ProtectedOrInternal;
+                       } else if ((attr & TypeAttributes.NestedFamily) == 
TypeAttributes.NestedFamily) {
+                               result |= Modifiers.Protected;
+                       } else if ((attr & TypeAttributes.NestedAssembly) == 
TypeAttributes.NestedAssembly) {
+                               result |= Modifiers.Internal;
+                       } else {
+                               result |= Modifiers.Private;
+                       }
                        return result;
                }
                
                public static MonoDevelop.Ide.Dom.Modifiers GetModifiers 
(Mono.Cecil.FieldAttributes attr)
                {
                        MonoDevelop.Ide.Dom.Modifiers result = 
MonoDevelop.Ide.Dom.Modifiers.None;
+                       
+                       if ((attr & FieldAttributes.Literal) == 
FieldAttributes.Literal) 
+                               result |= Modifiers.Literal;
+                       if ((attr & FieldAttributes.Static) == 
FieldAttributes.Static) 
+                               result |= Modifiers.Static;
+                       if ((attr & FieldAttributes.SpecialName) == 
FieldAttributes.SpecialName) 
+                               result |= Modifiers.SpecialName;
+                       if ((attr & FieldAttributes.InitOnly) == 
FieldAttributes.InitOnly) 
+                               result |= Modifiers.Readonly;
+                       
+                       if ((attr & FieldAttributes.Public) == 
FieldAttributes.Public) {
+                               result |= Modifiers.Public;
+                       } else if ((attr & FieldAttributes.FamANDAssem) == 
FieldAttributes.FamANDAssem) {
+                               result |= Modifiers.ProtectedAndInternal;
+                       } else if ((attr & FieldAttributes.FamORAssem) == 
FieldAttributes.FamORAssem) {
+                               result |= Modifiers.ProtectedOrInternal;
+                       } else if ((attr & FieldAttributes.Family) == 
FieldAttributes.Family) {
+                               result |= Modifiers.Protected;
+                       } else if ((attr & FieldAttributes.Assembly) == 
FieldAttributes.Assembly) {
+                               result |= Modifiers.Internal;
+                       } else {
+                               result |= Modifiers.Private;
+                       }
                        return result;
                }
                
                public static MonoDevelop.Ide.Dom.Modifiers GetModifiers 
(Mono.Cecil.EventAttributes attr)
                {
                        MonoDevelop.Ide.Dom.Modifiers result = 
MonoDevelop.Ide.Dom.Modifiers.None;
+                       if ((attr & EventAttributes.SpecialName) == 
EventAttributes.SpecialName) 
+                               result |= Modifiers.SpecialName;
                        return result;
                }
                
                public static MonoDevelop.Ide.Dom.Modifiers GetModifiers 
(Mono.Cecil.MethodAttributes attr)
                {
                        MonoDevelop.Ide.Dom.Modifiers result = 
MonoDevelop.Ide.Dom.Modifiers.None;
+                       
+                       if ((attr & MethodAttributes.Static) == 
MethodAttributes.Static) 
+                               result |= Modifiers.Static;
+                       if ((attr & MethodAttributes.Abstract) == 
MethodAttributes.Abstract) 
+                               result |= Modifiers.Static;
+                       if ((attr & MethodAttributes.Virtual) == 
MethodAttributes.Virtual) 
+                               result |= Modifiers.Virtual;
+                       if ((attr & MethodAttributes.Final) == 
MethodAttributes.Final) 
+                               result |= Modifiers.Final;
+                       
+                       if ((attr & MethodAttributes.Public) == 
MethodAttributes.Public) {
+                               result |= Modifiers.Public;
+                       } else if ((attr & MethodAttributes.FamANDAssem) == 
MethodAttributes.FamANDAssem) {
+                               result |= Modifiers.ProtectedAndInternal;
+                       } else if ((attr & MethodAttributes.FamORAssem) == 
MethodAttributes.FamORAssem) {
+                               result |= Modifiers.ProtectedOrInternal;
+                       } else if ((attr & MethodAttributes.Family) == 
MethodAttributes.Family) {
+                               result |= Modifiers.Protected;
+                       } else if ((attr & MethodAttributes.Assem) == 
MethodAttributes.Assem) {
+                               result |= Modifiers.Internal;
+                       } else {
+                               result |= Modifiers.Private;
+                       }
+                       
                        return result;
                }
                
                public static MonoDevelop.Ide.Dom.Modifiers GetModifiers 
(Mono.Cecil.PropertyAttributes attr)
                {
                        MonoDevelop.Ide.Dom.Modifiers result = 
MonoDevelop.Ide.Dom.Modifiers.None;
+                       if ((attr & PropertyAttributes.SpecialName) == 
PropertyAttributes.SpecialName) 
+                               result |= Modifiers.SpecialName;
                        return result;
                }
        }

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
       2008-02-07 03:06:21 UTC (rev 95108)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
       2008-02-07 03:07:04 UTC (rev 95109)
@@ -48,6 +48,11 @@
     <File name="MonoDevelop.AssemblyBrowser/ErrorNodeBuilder.cs" 
subtype="Code" buildaction="Compile" />
     <File name="MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs" 
subtype="Code" buildaction="Compile" />
     <File name="ChangeLog" subtype="Code" buildaction="Nothing" />
+    <File name="MonoDevelop.AssemblyBrowser/BaseTypeFolder.cs" subtype="Code" 
buildaction="Compile" />
+    <File name="MonoDevelop.AssemblyBrowser/BaseTypeFolderNodeBuilder.cs" 
subtype="Code" buildaction="Compile" />
+    <File name="MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs" 
subtype="Code" buildaction="Compile" />
+    <File name="MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs" 
subtype="Code" buildaction="Compile" />
+    <File name="MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs" 
subtype="Code" buildaction="Compile" />
   </Contents>
   <References>
     <ProjectReference type="Project" localcopy="True" refto="MonoDevelop.Core" 
/>

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

Reply via email to