Author: mkrueger
Date: 2008-02-07 12:34:55 -0500 (Thu, 07 Feb 2008)
New Revision: 95163

Added:
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs
Modified:
   trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.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/AssemblyNodeBuilder.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
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs
Log:
* MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs,
  MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs,
  MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs,
  MonoDevelop.AssemblyBrowser.mdp,
  MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs,
  MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs,
  MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs,
  MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs: Worked
  on assembly browser.

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog     
2008-02-07 17:33:53 UTC (rev 95162)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/ChangeLog     
2008-02-07 17:34:55 UTC (rev 95163)
@@ -1,5 +1,24 @@
 2008-02-07  Mike Krüger <[EMAIL PROTECTED]> 
 
+       * MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs,
+         MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs,
+         MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs,
+         MonoDevelop.AssemblyBrowser.mdp,
+         MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs,
+         MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs,
+         MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs,
+         MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs: Worked on
+         assembly browser.
+
+2008-02-07  Mike Krüger <[EMAIL PROTECTED]> 
+
        * MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs: Changed pane
          positioning.
 

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 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
  2008-02-07 17:34:55 UTC (rev 95163)
@@ -52,13 +52,13 @@
                        treeView = new MonoDevelopTreeView (new NodeBuilder[] { 
                                new ErrorNodeBuilder (),
                                new AssemblyNodeBuilder (),
+                               new ModuleReferenceNodeBuilder (),
                                new ModuleDefinitionNodeBuilder (),
                                new ReferenceFolderNodeBuilder (this),
-                               new ModuleReferenceNodeBuilder (),
                                new ResourceFolderNodeBuilder (),
                                new ResourceNodeBuilder (),
                                new NamespaceBuilder (),
-                               new DomTypeNodeBuilder (),
+                               new DomTypeNodeBuilder (this),
                                new DomMethodNodeBuilder (),
                                new DomFieldNodeBuilder (),
                                new DomEventNodeBuilder (),
@@ -69,23 +69,24 @@
                        scrolledwindow2.Add (treeView);
                        scrolledwindow2.ShowAll ();
             
-                       disassemblerTextview.ModifyFont 
(Pango.FontDescription.FromString ("Monospace 10"));
-            disassemblerTextview.ModifyBase (Gtk.StateType.Normal, new 
Gdk.Color (255, 255, 220));
+                       this.descriptionLabel.ModifyFont 
(Pango.FontDescription.FromString ("Sans 9"));
+                       this.disassemblerLabel.ModifyFont 
(Pango.FontDescription.FromString ("Monospace 10"));
+            this.disassemblerLabel.ModifyBg (Gtk.StateType.Normal, new 
Gdk.Color (255, 255, 220));
                        
                        this.vpaned1.ExposeEvent += VPaneExpose;
                        this.hpaned1.ExposeEvent += HPaneExpose;
                                
                        treeView.Tree.CursorChanged += delegate {
                                ITreeNavigator nav = treeView.GetSelectedNode 
();
+                                       
                                if (nav != null) {
-                                       
System.Console.WriteLine(nav.TypeNodeBuilder);
                                        IAssemblyBrowserNodeBuilder builder = 
nav.TypeNodeBuilder as IAssemblyBrowserNodeBuilder;
-                                       
+                                       System.Console.WriteLine("builder:" + 
nav.TypeNodeBuilder);
                                        if (builder != null) {
-                                               this.label2.Markup              
      = builder.GetDescription (nav.DataItem);
-                                               
this.disassemblerTextview.Buffer.Text = builder.GetDisassembly (nav.DataItem);
+                                               this.descriptionLabel.Markup   
= builder.GetDescription (nav);
+                                               this.disassemblerLabel.Markup = 
builder.GetDisassembly (nav);
                                        } else {
-                                               this.label2.Markup =  
this.disassemblerTextview.Buffer.Text = "";
+                                               this.descriptionLabel.Markup =  
this.disassemblerLabel.Markup = "";
                                        }
                                }
                        };
@@ -93,7 +94,7 @@
                int oldSize = -1;
                void VPaneExpose (object sender, Gtk.ExposeEventArgs args)
                {
-                       int size = this.vpaned1.Allocation.Height - 80;
+                       int size = this.vpaned1.Allocation.Height - 96;
                        if (size == oldSize)
                                return;
                        this.vpaned1.Position = oldSize = size;
@@ -105,7 +106,7 @@
                        if (size == oldSize2)
                                return;
                        oldSize2 = size;
-                       this.hpaned1.Position = this.hpaned1.Allocation.Width - 
250;
+                       this.hpaned1.Position = Math.Min (350, 
this.Allocation.Width * 2 / 3);
                }
                public void AddReference (string fileName)
                {

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs
    2008-02-07 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyNodeBuilder.cs
    2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,16 +27,19 @@
 //
 
 using System;
+using System.Text;
 
 using Mono.Cecil;
 
+using MonoDevelop.Core;
 using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Dom.Output;
 using MonoDevelop.Ide.Gui;
 using MonoDevelop.Ide.Gui.Pads;
 
 namespace MonoDevelop.AssemblyBrowser
 {
-       public class AssemblyNodeBuilder : TypeNodeBuilder
+       public class AssemblyNodeBuilder : TypeNodeBuilder, 
IAssemblyBrowserNodeBuilder
        {
                public override Type NodeDataType {
                        get { return typeof(AssemblyDefinition); }
@@ -70,5 +73,58 @@
                        return assemblyDefinition.Modules.Count > 0;
                }
                
+               #region IAssemblyBrowserNodeBuilder
+               static void PrintAssemblyHeader (StringBuilder result, 
AssemblyDefinition assemblyDefinition)
+               {
+                       result.Append ("<span font_family=\"monospace\">");
+                       
+                       result.Append 
(AmbienceService.Default.SingleLineComment (
+                               String.Format (GettextCatalog.GetString 
("Assembly <b>{0}</b>, Version {1}"),
+                                                         
assemblyDefinition.Name.Name,
+                                                         
assemblyDefinition.Name.Version)));
+                       result.Append ("</span>");
+                       result.AppendLine ();
+               }
+               
+               static string GetTypeString (AssemblyKind kind)
+               {
+                       switch (kind) {
+                       case AssemblyKind.Console:
+                               return GettextCatalog.GetString ("Console 
application");
+                       case AssemblyKind.Dll:
+                               return GettextCatalog.GetString ("Library");
+                       case AssemblyKind.Windows:
+                               return GettextCatalog.GetString ("Application");
+                       }
+                       return GettextCatalog.GetString ("Unknown");
+               }
+               
+               string IAssemblyBrowserNodeBuilder.GetDescription 
(ITreeNavigator navigator)
+               {
+                       AssemblyDefinition assemblyDefinition = 
(AssemblyDefinition)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       PrintAssemblyHeader (result, assemblyDefinition);
+                       
+                       result.Append (String.Format (GettextCatalog.GetString 
("<b>Name:</b>\t{0}"),
+                                                     
assemblyDefinition.Name.FullName));
+                       result.AppendLine ();
+                       result.Append (String.Format (GettextCatalog.GetString 
("<b>Type:</b>\t{0}"),
+                                                     GetTypeString 
(assemblyDefinition.Kind)));
+                       result.AppendLine ();
+                       return result.ToString ();
+               }
+               
+               string IAssemblyBrowserNodeBuilder.GetDisassembly 
(ITreeNavigator navigator)
+               {
+                       AssemblyDefinition assemblyDefinition = 
(AssemblyDefinition)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       PrintAssemblyHeader (result, assemblyDefinition);
+                       foreach (CustomAttribute attr in 
assemblyDefinition.CustomAttributes) {
+                               result.Append 
(AmbienceService.Default.GetString (new DomCecilAttribute (attr), 
OutputFlags.AssemblyBrowserDescription));
+                               result.AppendLine ();
+                       }
+                       return result.ToString ();
+               }
+               #endregion
        }
 }

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 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomEventNodeBuilder.cs
    2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Text;
 
 using Mono.Cecil;
 
@@ -66,15 +67,28 @@
                        return 1;
                }
                
-               public string GetDescription (object dataObject)
+               #region IAssemblyBrowserNodeBuilder
+               string IAssemblyBrowserNodeBuilder.GetDescription 
(ITreeNavigator navigator)
                {
-                       IEvent evt = (IEvent)dataObject;
-                       return AmbienceService.Default.GetString (evt, 
OutputFlags.AssemblyBrowserDescription);
+                       IEvent evt = (IEvent)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append ("<span font_family=\"monospace\">");
+                       result.Append (AmbienceService.Default.GetString (evt, 
OutputFlags.AssemblyBrowserDescription));
+                       result.Append ("</span>");
+                       result.AppendLine ();
+                       DomMethodNodeBuilder.PrintDeclaringType (result, 
navigator);
+                       DomTypeNodeBuilder.PrintAssembly (result, navigator);
+                       return result.ToString ();
                }
-               public string GetDisassembly (object dataObject)
+               
+               string IAssemblyBrowserNodeBuilder.GetDisassembly 
(ITreeNavigator navigator)
                {
-                       return "TODO";
+                       IEvent evt = (IEvent)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append (AmbienceService.Default.GetString (evt, 
OutputFlags.AssemblyBrowserDescription));
+                       return result.ToString ();
                }
+               #endregion
                
        }
 }
\ No newline at end of file

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 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomFieldNodeBuilder.cs
    2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Text;
 
 using Mono.Cecil;
 
@@ -72,15 +73,27 @@
                        return -1;
                }
                
-               public string GetDescription (object dataObject)
+               #region IAssemblyBrowserNodeBuilder
+               string IAssemblyBrowserNodeBuilder.GetDescription 
(ITreeNavigator navigator)
                {
-                       IField field = (IField)dataObject;
-                       return AmbienceService.Default.GetString (field, 
OutputFlags.AssemblyBrowserDescription);
+                       IField field = (IField)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append ("<span font_family=\"monospace\">");
+                       result.Append (AmbienceService.Default.GetString 
(field, OutputFlags.AssemblyBrowserDescription));
+                       result.Append ("</span>");
+                       result.AppendLine ();
+                       DomMethodNodeBuilder.PrintDeclaringType (result, 
navigator);
+                       DomTypeNodeBuilder.PrintAssembly (result, navigator);
+                       return result.ToString ();
                }
                
-               public string GetDisassembly (object dataObject)
+               string IAssemblyBrowserNodeBuilder.GetDisassembly 
(ITreeNavigator navigator)
                {
-                       return "TODO";
+                       IField field = (IField)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append (AmbienceService.Default.GetString 
(field, OutputFlags.AssemblyBrowserDescription));
+                       return result.ToString ();
                }
+               #endregion
        }
 }

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 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomMethodNodeBuilder.cs
   2008-02-07 17:34:55 UTC (rev 95163)
@@ -32,6 +32,7 @@
 using Mono.Cecil;
 using Mono.Cecil.Cil;
 
+using MonoDevelop.Core;
 using MonoDevelop.Core.Gui;
 using MonoDevelop.Ide.Dom;
 using MonoDevelop.Ide.Dom.Output;
@@ -72,33 +73,70 @@
                        return -1;
                }
                
-               public string GetDescription (object dataObject)
+               #region IAssemblyBrowserNodeBuilder
+               internal static void PrintDeclaringType (StringBuilder result, 
ITreeNavigator navigator)
                {
-                       IMethod method = (IMethod)dataObject;
-                       return AmbienceService.Default.GetString (method, 
OutputFlags.AssemblyBrowserDescription);
+                       IType type = (IType)navigator.GetParentDataItem (typeof 
(IType), false);
+                       if (type == null)
+                               return;
+                       
+                       result.Append (String.Format (GettextCatalog.GetString 
("<b>Declaring Type:</b>\t{0}"), type.FullName));
+                       result.AppendLine ();
                }
                
-               public string GetDisassembly (object dataObject)
+               string IAssemblyBrowserNodeBuilder.GetDescription 
(ITreeNavigator navigator)
                {
-                       DomCecilMethod method = dataObject as DomCecilMethod;
+                       IMethod method = (IMethod)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append ("<span font_family=\"monospace\">");
+                       result.Append (AmbienceService.Default.GetString 
(method, OutputFlags.AssemblyBrowserDescription));
+                       result.Append ("</span>");
+                       result.AppendLine ();
+                       PrintDeclaringType (result, navigator);
+                       DomTypeNodeBuilder.PrintAssembly (result, navigator);
+                       return result.ToString ();
+               }
+               
+               static string GetInstructionOffset (Instruction instruction)
+               {
+                       return String.Format ("IL_{0:X4}", instruction.Offset);
+               }
+               
+               string IAssemblyBrowserNodeBuilder.GetDisassembly 
(ITreeNavigator navigator)
+               {
+                       DomCecilMethod method = navigator.DataItem as 
DomCecilMethod;
                        if (method == null)
                                return "";
                        if (method.MethodDefinition.IsPInvokeImpl)
-                               return "Method is P/Invoke";
-                       if (method.MethodDefinition.Body == null)
-                               return "Interface method";
+                               return GettextCatalog.GetString ("Method is 
P/Invoke");
+                       if (method.MethodDefinition.Body == null) {
+                               IType type = (IType)navigator.GetParentDataItem 
(typeof (IType), false);
+                               return type == null || type.ClassType == 
ClassType.Interface ? GettextCatalog.GetString ("Interface method") : 
GettextCatalog.GetString ("Abstract method");
+                       }
+                       
                        StringBuilder result = new StringBuilder ();
                        foreach (Instruction instruction in 
method.MethodDefinition.Body.Instructions ) {
-                           result.Append (String.Format ("IL_{0:X4} {1} ", 
-                                                             
instruction.Offset,
-                                                             
instruction.OpCode));
-                               if (instruction.Operand != null)
-                                       result.Append 
(instruction.Operand.GetType() == typeof(string) ? String.Format( "\"{0}\"", 
instruction.Operand ) :instruction.Operand.ToString());
+                               result.Append (GetInstructionOffset 
(instruction));
+                               result.Append (' ');
+                               result.Append (instruction.OpCode);
+                               if (instruction.Operand != null) {
+                                       result.Append (' ');
+                                       if (instruction.Operand is string) {
+                                               result.Append ('"');
+                                               result.Append 
(instruction.Operand);
+                                               result.Append ('"');
+                                       } else if (instruction.Operand is 
Mono.Cecil.Cil.Instruction) {
+                                               result.Append 
(GetInstructionOffset ((Mono.Cecil.Cil.Instruction)instruction.Operand));
+                                       } else {
+                                               result.Append 
(instruction.Operand);
+                                       }
+                               }
                                result.AppendLine ();
                        }
                                        
                        return result.ToString ();
                }
+               #endregion
 
        }
 }

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 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomPropertyNodeBuilder.cs
 2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Text;
 
 using Mono.Cecil;
 
@@ -69,15 +70,28 @@
                        return -1;
                }
                
-               public string GetDescription (object dataObject)
+               #region IAssemblyBrowserNodeBuilder
+               string IAssemblyBrowserNodeBuilder.GetDescription 
(ITreeNavigator navigator)
                {
-                       IProperty property = (IProperty)dataObject;
-                       return AmbienceService.Default.GetString (property, 
OutputFlags.AssemblyBrowserDescription);
+                       IProperty property = (IProperty)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append ("<span font_family=\"monospace\">");
+                       result.Append (AmbienceService.Default.GetString 
(property, OutputFlags.AssemblyBrowserDescription));
+                       result.Append ("</span>");
+                       result.AppendLine ();
+                       DomMethodNodeBuilder.PrintDeclaringType (result, 
navigator);
+                       DomTypeNodeBuilder.PrintAssembly (result, navigator);
+                       return result.ToString ();
                }
-               public string GetDisassembly (object dataObject)
+               
+               string IAssemblyBrowserNodeBuilder.GetDisassembly 
(ITreeNavigator navigator)
                {
-                       return "TODO";
+                       IProperty property = (IProperty)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append (AmbienceService.Default.GetString 
(property, OutputFlags.AssemblyBrowserDescription));
+                       return result.ToString ();
                }
+               #endregion
 
        }
 }

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 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DomTypeNodeBuilder.cs
     2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,14 +27,17 @@
 //
 
 using System;
+using System.Text;
 
 using Mono.Cecil;
 
+using MonoDevelop.Core;
 using MonoDevelop.Core.Gui;
 using MonoDevelop.Ide.Dom;
 using MonoDevelop.Ide.Dom.Output;
 using MonoDevelop.Ide.Gui;
 using MonoDevelop.Ide.Gui.Pads;
+using MonoDevelop.AssemblyBrowser.Dom;
 
 namespace MonoDevelop.AssemblyBrowser
 {
@@ -44,6 +47,14 @@
                        get { return typeof(IType); }
                }
                
+               AssemblyBrowserWidget widget;
+               
+               public DomTypeNodeBuilder (AssemblyBrowserWidget widget)
+               {
+                       this.widget = widget;
+               }
+               
+               
                public override string GetNodeName (ITreeNavigator thisNode, 
object dataObject)
                {
                        IType type = (IType)dataObject;
@@ -96,15 +107,127 @@
                        return true;
                }
                
-               public string GetDescription (object dataObject)
+               #region IAssemblyBrowserNodeBuilder
+               internal static void PrintAssembly (StringBuilder result, 
ITreeNavigator navigator)
                {
-                       IType type = (IType)dataObject;
-                       return AmbienceService.Default.GetString (type, 
OutputFlags.AssemblyBrowserDescription);
+                       AssemblyDefinition assemblyDefinition = 
(AssemblyDefinition)navigator.GetParentDataItem (typeof (AssemblyDefinition), 
false);
+                       if (assemblyDefinition == null)
+                               return;
+                       
+                       result.Append (String.Format (GettextCatalog.GetString 
("<b>Assembly:</b>\t{0}, Version={1}"),
+                                                     
assemblyDefinition.Name.Name,
+                                                     
assemblyDefinition.Name.Version));
+                       result.AppendLine ();
                }
-               public string GetDisassembly (object dataObject)
+               
+               string IAssemblyBrowserNodeBuilder.GetDescription 
(ITreeNavigator navigator)
                {
-                       return "TODO";
+                       IType type = (IType)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append ("<span font_family=\"monospace\">");
+                       result.Append (AmbienceService.Default.GetString (type, 
OutputFlags.AssemblyBrowserDescription));
+                       result.Append ("</span>");
+                       result.AppendLine ();
+                       result.Append (String.Format (GettextCatalog.GetString 
("<b>Name:</b>\t{0}"),
+                                                     type.FullName));
+                       result.AppendLine ();
+                       PrintAssembly (result, navigator);
+                       return result.ToString ();
                }
                
+               string IAssemblyBrowserNodeBuilder.GetDisassembly 
(ITreeNavigator navigator)
+               {
+                       IType type = (IType)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       result.Append (AmbienceService.Default.GetString (type, 
OutputFlags.AssemblyBrowserDescription));
+                       result.AppendLine ();
+                       bool first = true;
+                       
+                       if (type.ClassType == ClassType.Enum) {
+                               int length = result.Length;
+                               foreach (IField field in type.Fields) {
+                                       if ((field.Modifiers & 
Modifiers.SpecialName) == Modifiers.SpecialName)
+                                               continue;
+                                       result.Append ("\t");
+                                       result.Append (field.Name);
+                                       length = result.Length;
+                                       result.Append (",");
+                                       result.AppendLine ();
+                               }
+                               result.Length = length;
+                               return result.ToString ();
+                       }
+                       
+//                     Style colorStyle = 
TextEditorOptions.Options.GetColorStyle (widget);
+//                     ChunkStyle comments = colorStyle.GetChunkStyle 
("comment");
+//                     string commentSpan = String.Format ("<span 
foreground=\"#{0:X6}\">", comments.Color.Pixel);
+                       
+                       string commentSpan = "<span foreground=\"#666666\">";
+                       foreach (IField field in type.Fields) {
+                               if ((field.Modifiers & Modifiers.SpecialName) 
== Modifiers.SpecialName)
+                                       continue;
+                               if (first) {
+                                       result.AppendLine ();
+                                       result.Append ("\t");
+                                       result.Append (commentSpan);
+                                       result.Append 
(AmbienceService.Default.SingleLineComment (GettextCatalog.GetString 
("Fields")));
+                                       result.Append ("</span>");
+                                       result.AppendLine ();
+                               }
+                               first = false;
+                               result.Append ("\t");
+                               result.Append 
(AmbienceService.Default.GetString (field, 
OutputFlags.AssemblyBrowserDescription));
+                               result.AppendLine ();
+                       }
+                       first = true;
+                       foreach (IEvent evt in type.Events) {
+                               if (first) {
+                                       result.Append ("\t");
+                                       result.Append (commentSpan);
+                                       result.Append 
(AmbienceService.Default.SingleLineComment (GettextCatalog.GetString 
("Events")));
+                                       result.Append ("</span>");
+                                       result.AppendLine ();
+                               }
+                               first = false;
+                               result.Append ("\t");
+                               result.Append 
(AmbienceService.Default.GetString (evt, 
OutputFlags.AssemblyBrowserDescription));
+                               result.AppendLine ();
+                       }
+                       first = true;
+                       foreach (IMethod method in type.Methods) {
+                               if ((method.Modifiers & Modifiers.SpecialName) 
== Modifiers.SpecialName)
+                                       continue;
+                               if (first) {
+                                       result.AppendLine ();
+                                       result.Append ("\t");
+                                       result.Append (commentSpan);
+                                       result.Append 
(AmbienceService.Default.SingleLineComment (GettextCatalog.GetString 
("Methods")));
+                                       result.Append ("</span>");
+                                       result.AppendLine ();
+                               }
+                               first = false;
+                               result.Append ("\t");
+                               result.Append 
(AmbienceService.Default.GetString (method, 
OutputFlags.AssemblyBrowserDescription));
+                               result.AppendLine ();
+                       }
+                       first = true;
+                       foreach (IProperty property in type.Properties) {
+                               if (first) {
+                                       result.AppendLine ();
+                                       result.Append ("\t");
+                                       result.Append (commentSpan);
+                                       result.Append 
(AmbienceService.Default.SingleLineComment (GettextCatalog.GetString 
("Properties")));
+                                       result.Append ("</span>");
+                                       result.AppendLine ();
+                               }
+                               first = false;
+                               result.Append ("\t");
+                               result.Append 
(AmbienceService.Default.GetString (property, 
OutputFlags.AssemblyBrowserDescription));
+                               result.AppendLine ();
+                       }
+                       return result.ToString ();
+               }
+               #endregion
+               
        }
 }

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs
    2008-02-07 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs
    2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,12 +27,13 @@
 //
 
 using System;
+using MonoDevelop.Ide.Gui.Pads;
 
 namespace MonoDevelop.AssemblyBrowser
 {
        public interface IAssemblyBrowserNodeBuilder
        {
-               string GetDescription (object dataObject);
-               string GetDisassembly (object dataObject);
+               string GetDescription (ITreeNavigator navigator);
+               string GetDisassembly (ITreeNavigator navigator);
        }
 }

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs
    2008-02-07 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleDefinitionNodeBuilder.cs
    2008-02-07 17:34:55 UTC (rev 95163)
@@ -27,18 +27,21 @@
 //
 
 using System;
+using System.Text;
 using System.Collections.Generic;
 
 using Mono.Cecil;
 
+using MonoDevelop.Core;
 using MonoDevelop.Core.Gui;
+using MonoDevelop.Ide.Dom.Output;
 using MonoDevelop.Ide.Gui;
 using MonoDevelop.Ide.Gui.Pads;
 using MonoDevelop.AssemblyBrowser.Dom;
 
 namespace MonoDevelop.AssemblyBrowser
 {
-       public class ModuleDefinitionNodeBuilder : TypeNodeBuilder
+       public class ModuleDefinitionNodeBuilder : TypeNodeBuilder, 
IAssemblyBrowserNodeBuilder
        {
                public override Type NodeDataType {
                        get { return typeof(ModuleDefinition); }
@@ -78,5 +81,37 @@
                {
                        return true;
                }
+               
+               #region IAssemblyBrowserNodeBuilder
+               static void PrintModuleHeader (StringBuilder result, 
ModuleDefinition moduleDefinition)
+               {
+                       result.Append ("<span font_family=\"monospace\">");
+                       result.Append 
(AmbienceService.Default.SingleLineComment (
+                                           String.Format 
(GettextCatalog.GetString ("Module <b>{0}</b>"),
+                                           moduleDefinition.Name)));
+                       result.Append ("</span>");
+                       result.AppendLine ();
+               }
+               
+               string IAssemblyBrowserNodeBuilder.GetDescription 
(ITreeNavigator navigator)
+               {
+                       ModuleDefinition moduleDefinition = 
(ModuleDefinition)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       PrintModuleHeader (result, moduleDefinition);
+                       
+                       result.Append (String.Format (GettextCatalog.GetString 
("<b>Version:</b>\t{0}"),
+                                                     moduleDefinition.Mvid));
+                       result.AppendLine ();
+                       return result.ToString ();
+               }
+               
+               string IAssemblyBrowserNodeBuilder.GetDisassembly 
(ITreeNavigator navigator)
+               {
+                       ModuleDefinition moduleDefinition = 
(ModuleDefinition)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       PrintModuleHeader (result, moduleDefinition);
+                       return result.ToString ();
+               }
+               #endregion              
        }
 }

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs
     2008-02-07 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/ModuleReferenceNodeBuilder.cs
     2008-02-07 17:34:55 UTC (rev 95163)
@@ -53,6 +53,8 @@
                
                public override void BuildNode (ITreeBuilder treeBuilder, 
object dataObject, ref string label, ref Gdk.Pixbuf icon, ref Gdk.Pixbuf 
closedIcon)
                {
+                       if (dataObject is ModuleDefinition)
+                               return;
                        ModuleReference reference = (ModuleReference)dataObject;
                        label = reference.Name;
                        icon = Context.GetIcon (Stock.MiscFiles);

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs
       2008-02-07 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NamespaceBuilder.cs
       2008-02-07 17:34:55 UTC (rev 95163)
@@ -73,15 +73,38 @@
                        return true;
                }
                
-               public string GetDescription (object dataObject)
+               #region IAssemblyBrowserNodeBuilder
+               string IAssemblyBrowserNodeBuilder.GetDescription 
(ITreeNavigator navigator)
                {
-                       Namespace ns = (Namespace)dataObject;
-                       return AmbienceService.Default.GetString (ns.Name, 
OutputFlags.AssemblyBrowserDescription);
+                       Namespace ns = (Namespace)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       if (!String.IsNullOrEmpty (ns.Name)) {
+                               result.Append ("<span 
font_family=\"monospace\">");
+                               result.Append 
(AmbienceService.Default.GetString (ns.Name, 
OutputFlags.AssemblyBrowserDescription));
+                               result.Append ("</span>");
+                               result.AppendLine ();
+                       }
+                       DomTypeNodeBuilder.PrintAssembly (result, navigator);
+                       return result.ToString ();
                }
                
-               public string GetDisassembly (object dataObject)
+               string IAssemblyBrowserNodeBuilder.GetDisassembly 
(ITreeNavigator navigator)
                {
-                       return "TODO";
+                       Namespace ns = (Namespace)navigator.DataItem;
+                       StringBuilder result = new StringBuilder ();
+                       if (!String.IsNullOrEmpty (ns.Name)) {
+                               result.Append 
(AmbienceService.Default.GetString (ns.Name, 
OutputFlags.AssemblyBrowserDescription));
+                               result.AppendLine ();
+                       }
+                       foreach (IType type in ns.Types) {
+                               if (!String.IsNullOrEmpty (ns.Name))
+                                       result.Append ("\t");
+                               result.Append 
(AmbienceService.Default.GetString (type, 
OutputFlags.AssemblyBrowserDescription));
+                               result.AppendLine ();
+                       }
+                       result.AppendLine ();
+                       return result.ToString ();
                }
+               #endregion
        }
 }

Added: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs
  2008-02-07 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.cs
  2008-02-07 17:34:55 UTC (rev 95163)
@@ -0,0 +1,47 @@
+//
+// DomCecilAttribute.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 DomCecilAttribute : MonoDevelop.Ide.Dom.DomAttribute
+       {
+               CustomAttribute customAttribute;
+               
+               public DomCecilAttribute (CustomAttribute customAttribute)
+               {
+                       this.customAttribute = customAttribute;
+                       base.attributeType = new DomCecilReturnType 
(customAttribute.Constructor);
+                       foreach (object param in 
customAttribute.ConstructorParameters)
+                               base.positionalArguments.Add (param);
+//                     base.AttributeTarget = 
customAttribute.ConstructorParameters
+               }
+       }
+}

Modified: 
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 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilReturnType.cs
 2008-02-07 17:34:55 UTC (rev 95163)
@@ -38,5 +38,10 @@
                        this.name   = typeReference.Name;
                        this.nspace = typeReference.Namespace;
                }
+               public DomCecilReturnType (MethodReference methodReference)
+               {
+                       this.name   = methodReference.DeclaringType.Name;
+                       this.nspace = methodReference.DeclaringType.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 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.Dom/DomCecilType.cs
       2008-02-07 17:34:55 UTC (rev 95163)
@@ -82,6 +82,12 @@
                                return members;
                        }
                }
+
+               public TypeDefinition TypeDefinition {
+                       get {
+                               return typeDefinition;
+                       }
+               }
                                
                
                public static MonoDevelop.Ide.Dom.Modifiers GetModifiers 
(Mono.Cecil.TypeAttributes attr)

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
       2008-02-07 17:33:53 UTC (rev 95162)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.mdp
       2008-02-07 17:34:55 UTC (rev 95163)
@@ -54,6 +54,7 @@
     <File name="MonoDevelop.AssemblyBrowser/DomReturnTypeNodeBuilder.cs" 
subtype="Code" buildaction="Compile" />
     <File name="MonoDevelop.AssemblyBrowser.Dom/DomCecilParameter.cs" 
subtype="Code" buildaction="Compile" />
     <File name="MonoDevelop.AssemblyBrowser/IAssemblyBrowserNodeBuilder.cs" 
subtype="Code" buildaction="Compile" />
+    <File name="MonoDevelop.AssemblyBrowser.Dom/DomCecilAttribute.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