[mono/monodevelop] 1c5c4454: Switched assembly browser model.

Mike Krüger ([email protected]) <[email protected]>
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <00000141dadd8565-c91607a1-869e-4df5-9266-f64f7293b10a-000000@email.amazonses.com>
   Branch: refs/heads/ng-assemblybrowser
     Home: https://github.com/mono/monodevelop
  Compare: https://github.com/mono/monodevelop/commit/1c5c4454fa64

   Commit: 1c5c4454fa6483e3dfb0906dcf891934dbc56a08
   Author: Mike Krüger <[email protected]> (mkrueger)
     Date: 2013-10-21 11:13:28 GMT
      URL: https://github.com/mono/monodevelop/commit/1c5c4454fa6483e3dfb0906dcf891934dbc56a08

Switched assembly browser model.

Changed paths:
  M main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.addin.xml
  M main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj
  M main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserHandler.cs
  M main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs
  M main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
  M main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DisplayBinding.cs
  M main/src/addins/MonoDevelop.AssemblyBrowser/gtk-gui/generated.cs
  M main/src/addins/MonoDevelop.AssemblyBrowser/gtk-gui/gui.stetic
  M main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs
Added paths:
  A main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserPad.cs
  A main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContentWidget.cs
Removed paths:
  D main/src/addins/MonoDevelop.AssemblyBrowser/gtk-gui/MonoDevelop.AssemblyBrowser.AssemblyBrowserWidget.cs

Modified: main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.addin.xml
===================================================================
@@ -26,4 +26,14 @@
 		<CommandItem id = "MonoDevelop.AssemblyBrowser.ShowAssemblyBrowser" insertbefore="ViewSeparator3" />
 	</Extension>
 
+	<Extension path = "/MonoDevelop/Ide/Pads">
+		<Pad id = "MonoDevelop.AssemblyBrowser.AssemblyBrowserPad"
+			icon = "md-class" 
+			_label = "Assemblies"
+			class = "MonoDevelop.AssemblyBrowser.AssemblyBrowserPad"
+			defaultPlacement = "Left"
+			defaultStatus="AutoHide"
+			defaultLayout="*"/>
+	</Extension>
+
 </ExtensionModel>

Modified: main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj
===================================================================
@@ -24,8 +24,8 @@
     </Execution>
     <AssemblyOriginatorKeyFile>.</AssemblyOriginatorKeyFile>
     <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
-    <GenerateDocumentation>true</GenerateDocumentation>
     <NoWarn>1591;1573</NoWarn>
+    <DocumentationFile>..\..\..\build\AddIns\DisplayBindings\AssemblyBrowser\MonoDevelop.AssemblyBrowser.xml</DocumentationFile>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
@@ -39,8 +39,8 @@
     </Execution>
     <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
     <DebugSymbols>true</DebugSymbols>
-    <GenerateDocumentation>true</GenerateDocumentation>
     <NoWarn>1591;1573</NoWarn>
+    <DocumentationFile>..\..\..\build\AddIns\DisplayBindings\AssemblyBrowser\MonoDevelop.AssemblyBrowser.xml</DocumentationFile>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Mono.Posix" />
@@ -125,6 +125,10 @@
       <Name>ICSharpCode.NRefactory.Cecil</Name>
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\..\..\external\xwt\Xwt\Xwt.csproj">
+      <Project>{92494904-35FA-4DC9-BDE9-3A3E87AC49D3}</Project>
+      <Name>Xwt</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="AssemblyInfo.cs" />
@@ -135,7 +139,6 @@
     <Compile Include="MonoDevelop.AssemblyBrowser\BaseTypeFolder.cs" />
     <Compile Include="MonoDevelop.AssemblyBrowser\IAssemblyBrowserNodeBuilder.cs" />
     <Compile Include="gtk-gui\generated.cs" />
-    <Compile Include="gtk-gui\MonoDevelop.AssemblyBrowser.AssemblyBrowserWidget.cs" />
     <Compile Include="MonoDevelop.AssemblyBrowser\DocumentationPanel.cs" />
     <Compile Include="MonoDevelop.AssemblyBrowser\ColoredCSharpFormatter.cs" />
     <Compile Include="MonoDevelop.AssemblyBrowser\TreeNodes\DomEventNodeBuilder.cs" />
@@ -163,6 +166,8 @@
     <Compile Include="XmlDocIdLib\OperatorType.cs" />
     <Compile Include="XmlDocIdLib\XmlDocIdGenerator.cs" />
     <Compile Include="AddinInfo.cs" />
+    <Compile Include="MonoDevelop.AssemblyBrowser\AssemblyBrowserPad.cs" />
+    <Compile Include="MonoDevelop.AssemblyBrowser\AssemblyBrowserViewContentWidget.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="gtk-gui\gui.stetic">

Modified: main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserHandler.cs
===================================================================
@@ -42,7 +42,7 @@ protected override void Run ()
 			}
 			var binding = DisplayBindingService.GetBindings<AssemblyBrowserDisplayBinding> ().FirstOrDefault ();
 			var assemblyBrowserView = binding != null ? binding.GetViewContent () : new AssemblyBrowserViewContent ();
-			assemblyBrowserView.FillWidget ();
+			//			assemblyBrowserView.FillWidget ();
 
 			IdeApp.Workbench.OpenDocument (assemblyBrowserView, true);
 		}

Added: main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserPad.cs
===================================================================
@@ -0,0 +1,75 @@
+//
+// AssemblyBrowserPad.cs
+//
+// Author:
+//       Mike Krüger <[email protected]>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://xamarin.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 System.ComponentModel;
+using System.Text;
+using System.Xml;
+using Gtk;
+
+using Mono.Cecil;
+using MonoDevelop.Components.Commands;
+using MonoDevelop.Core;
+using MonoDevelop.Ide;
+using MonoDevelop.Ide.Commands;
+using MonoDevelop.Ide.Gui.Components;
+using System.Linq;
+using Mono.TextEditor;
+using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory.Documentation;
+using ICSharpCode.NRefactory.TypeSystem;
+using MonoDevelop.Projects;
+using ICSharpCode.NRefactory.TypeSystem.Implementation;
+using Mono.TextEditor.Theatrics;
+using MonoDevelop.SourceEditor;
+using XmlDocIdLib;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Components;
+using System.Threading.Tasks;
+using System.Threading;
+
+namespace MonoDevelop.AssemblyBrowser
+{
+	class AssemblyBrowserPad : AbstractPadContent
+	{
+		readonly AssemblyBrowserWidget widget = new AssemblyBrowserWidget ();
+		public AssemblyBrowserWidget AssemblyBrowserWidget { 
+			get {
+				return widget;
+			}
+		}
+		#region implemented abstract members of AbstractPadContent
+		public override Gtk.Widget Control {
+			get {
+				return widget;
+				// return (Gtk.Widget)Toolkit.CurrentEngine.GetNativeWidget (widget);
+			}
+		}
+		#endregion
+	}
+}
+

Modified: main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs
===================================================================
@@ -38,19 +38,10 @@
 
 namespace MonoDevelop.AssemblyBrowser
 {
-	class AssemblyBrowserViewContent : AbstractViewContent, IOpenNamedElementHandler, INavigable
+	class AssemblyBrowserViewContent : AbstractViewContent, INavigable
 	{
 		readonly static string[] defaultAssemblies = new string[] { "mscorlib", "System", "System.Core", "System.Xml" };
-		AssemblyBrowserWidget widget;
-		
-		protected override void OnWorkbenchWindowChanged (EventArgs e)
-		{
-			base.OnWorkbenchWindowChanged (e);
-			if (WorkbenchWindow != null) {
-				var toolbar = WorkbenchWindow.GetToolbar (this);
-				widget.SetToolbar (toolbar);
-			}
-		}
+		AssemblyBrowserViewContentWidget widget;
 
 		public override Gtk.Widget Control {
 			get {
@@ -58,7 +49,7 @@ protected override void OnWorkbenchWindowChanged (EventArgs e)
 			}
 		}
 		
-		internal AssemblyBrowserWidget Widget {
+		internal AssemblyBrowserViewContentWidget Widget {
 			get {
 				return widget;
 			}
@@ -67,14 +58,12 @@ protected override void OnWorkbenchWindowChanged (EventArgs e)
 		public AssemblyBrowserViewContent()
 		{
 			ContentName = GettextCatalog.GetString ("Assembly Browser");
-			widget = new AssemblyBrowserWidget ();
+			widget = new AssemblyBrowserViewContentWidget ();
 			IsDisposed = false;
 		}
 		
 		public override void Load (string fileName)
 		{
-			ContentName = GettextCatalog.GetString ("Assembly Browser");
-			widget.AddReferenceByFileName (fileName);
 		}
 		
 		public override bool IsFile {
@@ -105,24 +94,7 @@ public NavigationPoint BuildNavigationPoint ()
 		
 		#endregion
 
-		#region IUrlHandler implementation 
-		
-		public void Open (INamedElement element)
-		{
-			var member = element as IUnresolvedEntity;
-			if (member == null) {
-				var entity = element as IMember;
-				if (entity != null)
-					member = entity.UnresolvedMember;
-			}
-			if (member == null)
-				return;
-			var url = AssemblyBrowserWidget.GetIdString (member); 
-			widget.Open (url);
-		}
-		
-		#endregion 
-
+		/*
 		[MonoDevelop.Components.Commands.CommandHandler(MonoDevelop.Refactoring.RefactoryCommands.FindReferences)]
 		public void FindReferences ()
 		{
@@ -161,7 +133,7 @@ public void FillWidget ()
 					}
 				}
 			}
-		}
+		}*/
 	}
 
 	class AssemblyBrowserNavigationPoint : NavigationPoint
@@ -177,7 +149,7 @@ Document DoShow ()
 
 			var binding = DisplayBindingService.GetBindings<AssemblyBrowserDisplayBinding> ().FirstOrDefault ();
 			var assemblyBrowserView = binding != null ? binding.GetViewContent () : new AssemblyBrowserViewContent ();
-			assemblyBrowserView.FillWidget ();
+			//			assemblyBrowserView.FillWidget ();
 
 			return Ide.IdeApp.Workbench.OpenDocument (assemblyBrowserView, true);
 		}

Added: main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContentWidget.cs
===================================================================
@@ -0,0 +1,240 @@
+//
+// AssemblyBrowserViewContentWidget.cs
+//
+// Author:
+//       Mike Krüger <[email protected]>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://xamarin.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 System.ComponentModel;
+using System.Text;
+using System.Xml;
+using Gtk;
+
+using Mono.Cecil;
+using MonoDevelop.Components.Commands;
+using MonoDevelop.Core;
+using MonoDevelop.Ide;
+using MonoDevelop.Ide.Commands;
+using MonoDevelop.Ide.Gui.Components;
+using System.Linq;
+using Mono.TextEditor;
+using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory.Documentation;
+using ICSharpCode.NRefactory.TypeSystem;
+using MonoDevelop.Projects;
+using ICSharpCode.NRefactory.TypeSystem.Implementation;
+using Mono.TextEditor.Theatrics;
+using MonoDevelop.SourceEditor;
+using XmlDocIdLib;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Components;
+using System.Threading.Tasks;
+using System.Threading;
+
+namespace MonoDevelop.AssemblyBrowser
+{
+	public class AssemblyBrowserViewContentWidget : Gtk.VBox
+	{
+		public bool PublicApiOnly {
+			get {
+				return true;
+			}
+		}
+
+		readonly Ambience ambience = AmbienceService.GetAmbience ("text/x-csharp");
+		public Ambience Ambience {
+			get { return ambience; }
+		}
+
+		readonly TextEditor inspectEditor;
+
+		public class AssemblyBrowserTreeView : ExtensibleTreeView
+		{
+			bool publicApiOnly = true;
+
+			public bool PublicApiOnly {
+				get {
+					return publicApiOnly;
+				}
+				set {
+					if (publicApiOnly == value)
+						return;
+					publicApiOnly = value;
+					var root = GetRootNode ();
+					if (root != null)
+						RefreshNode (root);
+				}
+			}
+
+			public AssemblyBrowserTreeView (NodeBuilder[] builders, TreePadOption[] options) : base (builders, options)
+			{
+			}
+		}
+
+		public AssemblyBrowserViewContentWidget ()
+		{
+			var options = new MonoDevelop.Ide.Gui.CommonTextEditorOptions () {
+				ShowFoldMargin = false,
+				ShowIconMargin = false,
+				ShowLineNumberMargin = false,
+				HighlightCaretLine = true,
+			};
+			inspectEditor = new TextEditor (new TextDocument (), options);
+			inspectEditor.ButtonPressEvent += HandleInspectEditorButtonPressEvent;
+
+			this.inspectEditor.Document.ReadOnly = true;
+//			this.inspectEditor.Document.SyntaxMode = new Mono.TextEditor.Highlighting.MarkupSyntaxMode ();
+			this.inspectEditor.TextViewMargin.GetLink = delegate(Mono.TextEditor.MarginMouseEventArgs arg) {
+				var loc = inspectEditor.PointToLocation (arg.X, arg.Y);
+				int offset = inspectEditor.LocationToOffset (loc);
+				var referencedSegment = ReferencedSegments != null ? ReferencedSegments.FirstOrDefault (seg => seg.Segment.Contains (offset)) : null;
+				if (referencedSegment == null)
+					return null;
+				if (referencedSegment.Reference is TypeDefinition)
+					return new XmlDocIdGenerator ().GetXmlDocPath ((TypeDefinition)referencedSegment.Reference);
+
+				if (referencedSegment.Reference is MethodDefinition)
+					return new XmlDocIdGenerator ().GetXmlDocPath ((MethodDefinition)referencedSegment.Reference);
+
+				if (referencedSegment.Reference is PropertyDefinition)
+					return new XmlDocIdGenerator ().GetXmlDocPath ((PropertyDefinition)referencedSegment.Reference);
+
+				if (referencedSegment.Reference is FieldDefinition)
+					return new XmlDocIdGenerator ().GetXmlDocPath ((FieldDefinition)referencedSegment.Reference);
+
+				if (referencedSegment.Reference is EventDefinition)
+					return new XmlDocIdGenerator ().GetXmlDocPath ((EventDefinition)referencedSegment.Reference);
+
+				if (referencedSegment.Reference is FieldDefinition)
+					return new XmlDocIdGenerator ().GetXmlDocPath ((FieldDefinition)referencedSegment.Reference);
+
+				if (referencedSegment.Reference is TypeReference) {
+					return new XmlDocIdGenerator ().GetXmlDocPath ((TypeReference)referencedSegment.Reference);
+				}
+				return referencedSegment.Reference.ToString ();
+			};
+			this.inspectEditor.LinkRequest += InspectEditorhandleLinkRequest;
+
+			var documentationScrolledWindow = new CompactScrolledWindow ();
+			documentationScrolledWindow.Child = inspectEditor;
+			this.PackStart (documentationScrolledWindow, true, true, 0);
+
+			this.ShowAll ();
+		}
+
+		[CommandHandler (EditCommands.Copy)]
+		protected void OnCopyCommand ()
+		{
+			inspectEditor.RunAction (Mono.TextEditor.ClipboardActions.Copy);
+		}
+
+		[CommandHandler (EditCommands.SelectAll)]
+		protected void OnSelectAllCommand ()
+		{
+			inspectEditor.RunAction (Mono.TextEditor.SelectionActions.SelectAll);
+		}
+
+		void HandleInspectEditorButtonPressEvent (object o, ButtonPressEventArgs args)
+		{
+			if (args.Event.Button != 3)
+				return;
+			var menuSet = new CommandEntrySet ();
+			menuSet.AddItem (EditCommands.SelectAll);
+			menuSet.AddItem (EditCommands.Copy);
+			IdeApp.CommandService.ShowContextMenu (menuSet, this);
+		}
+
+		void InspectEditorhandleLinkRequest (object sender, Mono.TextEditor.LinkEventArgs args)
+		{
+			/*
+			var loader = (AssemblyLoader)this.TreeView.GetSelectedNode ().GetParentDataItem (typeof(AssemblyLoader), true);
+
+			if (args.Button == 2 || (args.Button == 1 && (args.ModifierState & Gdk.ModifierType.ShiftMask) == Gdk.ModifierType.ShiftMask)) {
+				AssemblyBrowserViewContent assemblyBrowserView = new AssemblyBrowserViewContent ();
+				foreach (var cu in definitions) {
+					assemblyBrowserView.Load (cu.UnresolvedAssembly.AssemblyName);
+				}
+				IdeApp.Workbench.OpenDocument (assemblyBrowserView, true);
+				((AssemblyBrowserWidget)assemblyBrowserView.Control).Open (args.Link);
+			} else {
+				this.Open (args.Link, loader);
+			}*/
+		}
+
+		List<ReferenceSegment> ReferencedSegments = new List<ReferenceSegment>();
+		List<UnderlineMarker> underlineMarkers = new List<UnderlineMarker> ();
+
+		public void ClearReferenceSegment ()
+		{
+			ReferencedSegments = null;
+			underlineMarkers.ForEach (m => inspectEditor.Document.RemoveMarker (m));
+			underlineMarkers.Clear ();
+		}
+
+		internal void SetReferencedSegments (List<ReferenceSegment> refs)
+		{
+			ReferencedSegments = refs;
+			if (ReferencedSegments == null)
+				return;
+			foreach (var seg in refs) {
+				DocumentLine line = inspectEditor.GetLineByOffset (seg.Offset);
+				if (line == null)
+					continue;
+				// FIXME: ILSpy sometimes gives reference segments for punctuation. See http://bugzilla.xamarin.com/show_bug.cgi?id=2918
+				string text = inspectEditor.GetTextAt (seg);
+				if (text != null && text.Length == 1 && !(char.IsLetter (text [0]) || text [0] == '…'))
+					continue;
+				var marker = new UnderlineMarker (new Cairo.Color (0, 0, 1.0), 1 + seg.Offset - line.Offset, 1 + seg.EndOffset - line.Offset);
+				marker.Wave = false;
+				underlineMarkers.Add (marker);
+				inspectEditor.Document.AddMarker (line, marker);
+			}
+		}
+
+		public void Show (ITreeNavigator nav)
+		{
+			if (nav == null)
+				return;
+			IAssemblyBrowserNodeBuilder builder = nav.TypeNodeBuilder as IAssemblyBrowserNodeBuilder;
+			if (builder == null) {
+				this.inspectEditor.Document.Text = "";
+				return;
+			}
+
+			ClearReferenceSegment ();
+			inspectEditor.Document.ClearFoldSegments ();
+			/*}			case 1:
+				inspectEditor.Options.ShowFoldMargin = true;
+				this.inspectEditor.Document.MimeType = "text/x-ilasm";
+				SetReferencedSegments (builder.Disassemble (inspectEditor.GetTextEditorData (), nav));
+				break;*/
+
+			inspectEditor.Options.ShowFoldMargin = true;
+			this.inspectEditor.Document.MimeType = "text/x-csharp";
+			SetReferencedSegments (builder.Decompile (inspectEditor.GetTextEditorData (), nav, PublicApiOnly));
+			this.inspectEditor.QueueDraw ();
+		}
+	}
+}
+

Modified: main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
===================================================================
@@ -56,9 +56,7 @@
 
 namespace MonoDevelop.AssemblyBrowser
 {
-	[System.ComponentModel.Category("MonoDevelop.AssemblyBrowser")]
-	[System.ComponentModel.ToolboxItem(true)]
-	partial class AssemblyBrowserWidget : Gtk.Bin
+	class AssemblyBrowserWidget : Gtk.VBox
 	{
 		Gtk.Button buttonBack;
 		Gtk.Button buttonForeward;
@@ -70,7 +68,7 @@ partial class AssemblyBrowserWidget : Gtk.Bin
 			get;
 			private set;
 		}
-		
+
 		public bool PublicApiOnly {
 			get {
 				return TreeView.PublicApiOnly;
@@ -81,9 +79,6 @@ partial class AssemblyBrowserWidget : Gtk.Bin
 		public Ambience Ambience {
 			get { return ambience; }
 		}
-		
-		DocumentationPanel documentationPanel = new DocumentationPanel ();
-		readonly TextEditor inspectEditor;
 
 		public class AssemblyBrowserTreeView : ExtensibleTreeView
 		{
@@ -110,13 +105,9 @@ public AssemblyBrowserTreeView (NodeBuilder[] builders, TreePadOption[] options)
 
 		public AssemblyBrowserWidget ()
 		{
-			this.Build ();
-
 			buttonBack = new Gtk.Button (new Gtk.Image (ImageService.GetPixbuf ("md-breadcrumb-prev")));
-			buttonBack.Clicked += OnNavigateBackwardActionActivated;
 
 			buttonForeward = new Gtk.Button (new Gtk.Image (ImageService.GetPixbuf ("md-breadcrumb-next")));
-			buttonForeward.Clicked += OnNavigateForwardActionActivated;
 
 			comboboxVisibilty = ComboBox.NewText ();
 			comboboxVisibilty.InsertText (0, GettextCatalog.GetString ("Only public members"));
@@ -124,7 +115,6 @@ public AssemblyBrowserWidget ()
 			comboboxVisibilty.Active = 0;
 			comboboxVisibilty.Changed += delegate {
 				TreeView.PublicApiOnly = comboboxVisibilty.Active == 0;
-				FillInspectLabel ();
 			};
 
 			searchentry1 = new MonoDevelop.Components.SearchEntry ();
@@ -187,64 +177,15 @@ public AssemblyBrowserWidget ()
 			TreeView.BorderWidth = 1;
 			TreeView.ShowBorderLine = false;
 			TreeView.Zoom = 1.0;
-			treeViewPlaceholder.Add (TreeView);
 
-//			this.descriptionLabel.ModifyFont (Pango.FontDescription.FromString ("Sans 9"));
-//			this.documentationLabel.ModifyFont (Pango.FontDescription.FromString ("Sans 12"));
-//			this.documentationLabel.ModifyBg (Gtk.StateType.Normal, new Gdk.Color (255, 255, 225));
-//			this.documentationLabel.Wrap = true;
-			
+			this.PackStart (TreeView, true, true, 0);
+
 			var options = new MonoDevelop.Ide.Gui.CommonTextEditorOptions () {
 				ShowFoldMargin = false,
 				ShowIconMargin = false,
 				ShowLineNumberMargin = false,
 				HighlightCaretLine = true,
 			};
-			inspectEditor = new TextEditor (new TextDocument (), options);
-			inspectEditor.ButtonPressEvent += HandleInspectEditorButtonPressEvent;
-			
-			this.inspectEditor.Document.ReadOnly = true;
-//			this.inspectEditor.Document.SyntaxMode = new Mono.TextEditor.Highlighting.MarkupSyntaxMode ();
-			this.inspectEditor.TextViewMargin.GetLink = delegate(Mono.TextEditor.MarginMouseEventArgs arg) {
-				var loc = inspectEditor.PointToLocation (arg.X, arg.Y);
-				int offset = inspectEditor.LocationToOffset (loc);
-				var referencedSegment = ReferencedSegments != null ? ReferencedSegments.FirstOrDefault (seg => seg.Segment.Contains (offset)) : null;
-				if (referencedSegment == null)
-					return null;
-				if (referencedSegment.Reference is TypeDefinition)
-					return new XmlDocIdGenerator ().GetXmlDocPath ((TypeDefinition)referencedSegment.Reference);
-				
-				if (referencedSegment.Reference is MethodDefinition)
-					return new XmlDocIdGenerator ().GetXmlDocPath ((MethodDefinition)referencedSegment.Reference);
-				
-				if (referencedSegment.Reference is PropertyDefinition)
-					return new XmlDocIdGenerator ().GetXmlDocPath ((PropertyDefinition)referencedSegment.Reference);
-				
-				if (referencedSegment.Reference is FieldDefinition)
-					return new XmlDocIdGenerator ().GetXmlDocPath ((FieldDefinition)referencedSegment.Reference);
-				
-				if (referencedSegment.Reference is EventDefinition)
-					return new XmlDocIdGenerator ().GetXmlDocPath ((EventDefinition)referencedSegment.Reference);
-				
-				if (referencedSegment.Reference is FieldDefinition)
-					return new XmlDocIdGenerator ().GetXmlDocPath ((FieldDefinition)referencedSegment.Reference);
-
-				if (referencedSegment.Reference is TypeReference) {
-					return new XmlDocIdGenerator ().GetXmlDocPath ((TypeReference)referencedSegment.Reference);
-				}
-				return referencedSegment.Reference.ToString ();
-			};
-			this.inspectEditor.LinkRequest += InspectEditorhandleLinkRequest;
-			documentationScrolledWindow.Add (inspectEditor);
-
-			this.hpaned1.ExposeEvent += HPaneExpose;
-			hpaned1 = hpaned1.ReplaceWithWidget (new HPanedThin (), true);
-			hpaned1.Position = 271;
-
-			this.notebook1.SetTabLabel (this.documentationScrolledWindow, new Label (GettextCatalog.GetString ("Documentation")));
-			this.notebook1.SetTabLabel (this.searchWidget, new Label (GettextCatalog.GetString ("Search")));
-			notebook1.Page = 0;
-			//this.searchWidget.Visible = false;
 				
 			typeListStore = new Gtk.ListStore (typeof(Gdk.Pixbuf), // type image
 			                                   typeof(string), // name
@@ -260,12 +201,33 @@ public AssemblyBrowserWidget ()
 				                               typeof(IMember)
 			                                  );
 			CreateColumns ();
-//			this.searchEntry.Changed += SearchEntryhandleChanged;
-			this.searchTreeview.RowActivated += SearchTreeviewhandleRowActivated;
-			this.notebook1.ShowTabs = false;
 			this.ShowAll ();
 		}
 
+		void HandleCursorChanged (object sender, EventArgs e)
+		{
+			var currentItem = TreeView.GetSelectedNode ();
+			if (currentItem == null)
+				return;
+
+			var doc = IdeApp.Workbench.ActiveDocument;
+			var cnt = doc != null ? doc.GetContent<AssemblyBrowserViewContent> () : null;
+			if (cnt == null) {
+				var firstDoc = IdeApp.Workbench.Documents.FirstOrDefault (d => d.GetContent<AssemblyBrowserViewContent> () != null);
+				if (firstDoc != null) {
+					cnt = firstDoc.GetContent<AssemblyBrowserViewContent> ();
+					firstDoc.Select ();
+				}
+			}
+			if (cnt == null) {
+				cnt = new AssemblyBrowserViewContent ();
+				IdeApp.Workbench.OpenDocument (cnt, true); 
+			}
+
+			if (cnt != null)
+				cnt.Widget.Show (currentItem);
+		}
+
 		internal void SetToolbar (DocumentToolbar toolbar)
 		{
 			toolbar.Add (buttonBack);
@@ -292,18 +254,6 @@ internal void SetToolbar (DocumentToolbar toolbar)
 			toolbar.ShowAll ();
 		}
 		
-		[CommandHandler (EditCommands.Copy)]
-		protected void OnCopyCommand ()
-		{
-			inspectEditor.RunAction (Mono.TextEditor.ClipboardActions.Copy);
-		}
-		
-		[CommandHandler (EditCommands.SelectAll)]
-		protected void OnSelectAllCommand ()
-		{
-			inspectEditor.RunAction (Mono.TextEditor.SelectionActions.SelectAll);
-		}
-		
 		void HandleInspectEditorButtonPressEvent (object o, ButtonPressEventArgs args)
 		{
 			if (args.Event.Button != 3)
@@ -314,19 +264,6 @@ void HandleInspectEditorButtonPressEvent (object o, ButtonPressEventArgs args)
 			IdeApp.CommandService.ShowContextMenu (menuSet, this);
 		}
 
-		void SearchTreeviewhandleRowActivated (object o, RowActivatedArgs args)
-		{
-			TreeIter selectedIter;
-			if (searchTreeview.Selection.GetSelected (out selectedIter)) {
-				var member = (IUnresolvedEntity)(searchMode != SearchMode.Type ? memberListStore.GetValue (selectedIter, 4) : typeListStore.GetValue (selectedIter, 4));
-				
-				var nav = SearchMember (member);
-				if (nav != null) {
-					notebook1.Page = 0;
-				}
-			}
-		}
-
 		void SearchEntryhandleChanged (object sender, EventArgs e)
 		{
 			StartSearch ();
@@ -334,9 +271,7 @@ void SearchEntryhandleChanged (object sender, EventArgs e)
 		
 		void LanguageComboboxhandleChanged (object sender, EventArgs e)
 		{
-			this.notebook1.Page = 0;
 			PropertyService.Set ("AssemblyBrowser.InspectLanguage", this.languageCombobox.Active);
-			FillInspectLabel ();
 		}
 
 		void InspectEditorhandleLinkRequest (object sender, Mono.TextEditor.LinkEventArgs args)
@@ -584,7 +519,6 @@ ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl)
 			bool searchType = helpUrl.StartsWith ("T:", StringComparison.Ordinal);
 			do {
 				if (IsMatch (nav, helpUrl, searchType)) {
-					inspectEditor.ClearSelection ();
 					nav.ExpandToNode ();
 					nav.Selected = nav.Expanded = true;
 					nav.ScrollToNode ();
@@ -628,49 +562,6 @@ enum SearchMode
 		
 		void CreateColumns ()
 		{
-			foreach (TreeViewColumn column in searchTreeview.Columns) {
-				searchTreeview.RemoveColumn (column);
-			}
-			TreeViewColumn col;
-			Gtk.CellRenderer crp, crt;
-			switch (searchMode) {
-			case SearchMode.Member:
-			case SearchMode.Disassembler:
-			case SearchMode.Decompiler:
-				col = new TreeViewColumn ();
-				col.Title = GettextCatalog.GetString ("Member");
-				crp = new Gtk.CellRendererPixbuf ();
-				crt = new Gtk.CellRendererText ();
-				col.PackStart (crp, false);
-				col.PackStart (crt, true);
-				col.AddAttribute (crp, "pixbuf", 0);
-				col.AddAttribute (crt, "text", 1);
-				searchTreeview.AppendColumn (col);
-				col.Resizable = true;
-				col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Declaring Type"), new Gtk.CellRendererText (), "text", 2);
-				col.Resizable = true;
-				col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Assembly"), new Gtk.CellRendererText (), "text", 3);
-				col.Resizable = true;
-				searchTreeview.Model = memberListStore;
-				break;
-			case SearchMode.Type:
-				col = new TreeViewColumn ();
-				col.Title = GettextCatalog.GetString ("Type");
-				crp = new Gtk.CellRendererPixbuf ();
-				crt = new Gtk.CellRendererText ();
-				col.PackStart (crp, false);
-				col.PackStart (crt, true);
-				col.AddAttribute (crp, "pixbuf", 0);
-				col.AddAttribute (crt, "text", 1);
-				searchTreeview.AppendColumn (col);
-				col.Resizable = true;
-				col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Namespace"), new Gtk.CellRendererText (), "text", 2);
-				col.Resizable = true;
-				col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Assembly"), new Gtk.CellRendererText (), "text", 3);
-				col.Resizable = true;
-				searchTreeview.Model = typeListStore;
-				break;
-			}
 		}
 		System.ComponentModel.BackgroundWorker searchBackgoundWorker = null;
 
@@ -681,12 +572,10 @@ public void StartSearch ()
 				searchBackgoundWorker.CancelAsync ();
 			
 			if (string.IsNullOrEmpty (query)) {
-				notebook1.Page = 0;
 				return;
 			}
 			
-			this.notebook1.Page = 1;
-			
+
 			switch (searchMode) {
 			case SearchMode.Member:
 				IdeApp.Workbench.StatusBar.BeginProgress (GettextCatalog.GetString ("Searching member..."));
@@ -1061,72 +950,6 @@ static string TransformDocumentation (XmlNode docNode)
 			return result.ToString ();
 		}
 		
-		List<ReferenceSegment> ReferencedSegments = new List<ReferenceSegment>();
-		List<UnderlineMarker> underlineMarkers = new List<UnderlineMarker> ();
-		
-		public void ClearReferenceSegment ()
-		{
-			ReferencedSegments = null;
-			underlineMarkers.ForEach (m => inspectEditor.Document.RemoveMarker (m));
-			underlineMarkers.Clear ();
-		}
-		
-		public void SetReferencedSegments (List<ReferenceSegment> refs)
-		{
-			ReferencedSegments = refs;
-			if (ReferencedSegments == null)
-				return;
-			foreach (var seg in refs) {
-				DocumentLine line = inspectEditor.GetLineByOffset (seg.Offset);
-				if (line == null)
-					continue;
-				// FIXME: ILSpy sometimes gives reference segments for punctuation. See http://bugzilla.xamarin.com/show_bug.cgi?id=2918
-				string text = inspectEditor.GetTextAt (seg);
-				if (text != null && text.Length == 1 && !(char.IsLetter (text [0]) || text [0] == '…'))
-					continue;
-				var marker = new UnderlineMarker (new Cairo.Color (0, 0, 1.0), 1 + seg.Offset - line.Offset, 1 + seg.EndOffset - line.Offset);
-				marker.Wave = false;
-				underlineMarkers.Add (marker);
-				inspectEditor.Document.AddMarker (line, marker);
-			}
-		}
-
-		void FillInspectLabel ()
-		{
-			ITreeNavigator nav = TreeView.GetSelectedNode ();
-			if (nav == null)
-				return;
-			IAssemblyBrowserNodeBuilder builder = nav.TypeNodeBuilder as IAssemblyBrowserNodeBuilder;
-			if (builder == null) {
-				this.inspectEditor.Document.Text = "";
-				return;
-			}
-			
-			ClearReferenceSegment ();
-			inspectEditor.Document.ClearFoldSegments ();
-			switch (this.languageCombobox.Active) {
-			case 0:
-				inspectEditor.Options.ShowFoldMargin = false;
-				this.inspectEditor.Document.MimeType = "text/x-csharp";
-				this.documentationPanel.Markup = builder.GetDocumentationMarkup (nav);
-				break;
-			case 1:
-				inspectEditor.Options.ShowFoldMargin = true;
-				this.inspectEditor.Document.MimeType = "text/x-ilasm";
-				SetReferencedSegments (builder.Disassemble (inspectEditor.GetTextEditorData (), nav));
-				break;
-			case 2:
-				inspectEditor.Options.ShowFoldMargin = true;
-				this.inspectEditor.Document.MimeType = "text/x-csharp";
-				SetReferencedSegments (builder.Decompile (inspectEditor.GetTextEditorData (), nav, PublicApiOnly));
-				break;
-			default:
-				inspectEditor.Options.ShowFoldMargin = false;
-				this.inspectEditor.Document.Text = "Invalid combobox value: " + this.languageCombobox.Active;
-				break;
-			}
-			this.inspectEditor.QueueDraw ();
-		}
 			
 		void CreateOutput ()
 		{
@@ -1160,7 +983,6 @@ void CreateOutput ()
 				}*/
 				
 			}
-			FillInspectLabel ();
 		}
 			
 		/*int oldSize = -1;
@@ -1171,16 +993,7 @@ void VPaneExpose (object sender, Gtk.ExposeEventArgs args)
 				return;
 			this.vpaned1.Position = oldSize = size;
 		}*/
-		int oldSize2 = -1;
-		void HPaneExpose (object sender, Gtk.ExposeEventArgs args)
-		{
-			int size = this.Allocation.Width;
-			if (size == oldSize2)
-				return;
-			oldSize2 = size;
-			this.hpaned1.Position = Math.Min (350, this.Allocation.Width * 2 / 3);
-		}
-		
+
 		public void Open (string url, AssemblyLoader currentAssembly = null)
 		{
 			ITreeNavigator nav = SearchMember (url);
@@ -1309,7 +1122,6 @@ void Dispose (ITreeNavigator nav)
 		
 		protected override void OnDestroyed ()
 		{
-			ClearReferenceSegment ();
 			if (searchBackgoundWorker != null && searchBackgoundWorker.IsBusy) {
 				searchBackgoundWorker.CancelAsync ();
 				searchBackgoundWorker.Dispose ();
@@ -1317,8 +1129,6 @@ protected override void OnDestroyed ()
 			}
 			
 			if (this.TreeView != null) {
-				//	Dispose (TreeView.GetRootNode ());
-				TreeView.Tree.CursorChanged -= HandleCursorChanged;
 				this.TreeView.Clear ();
 				this.TreeView = null;
 			}
@@ -1340,37 +1150,12 @@ protected override void OnDestroyed ()
 				typeListStore.Dispose ();
 				typeListStore = null;
 			}
-			
-			if (documentationPanel != null) {
-				documentationPanel.Destroy ();
-				documentationPanel = null;
-			}
-			if (inspectEditor != null) {
-				inspectEditor.TextViewMargin.GetLink = null;
-				inspectEditor.LinkRequest -= InspectEditorhandleLinkRequest;
-				inspectEditor.Destroy ();
-			}
-			
-			if (this.UIManager != null) {
-				this.UIManager.Dispose ();
-				this.UIManager = null;
-			}
+
 
 			this.loader = null;
 			this.languageCombobox.Changed -= LanguageComboboxhandleChanged;
 //			this.searchInCombobox.Changed -= SearchInComboboxhandleChanged;
 //			this.searchEntry.Changed -= SearchEntryhandleChanged;
-			this.searchTreeview.RowActivated -= SearchTreeviewhandleRowActivated;
-			hpaned1.ExposeEvent -= HPaneExpose;
-			if (NavigateBackwardAction != null) {
-				this.NavigateBackwardAction.Dispose ();
-				this.NavigateBackwardAction = null;
-			}
-
-			if (NavigateForwardAction != null) {
-				this.NavigateForwardAction.Dispose ();
-				this.NavigateForwardAction = null;
-			}
 			base.OnDestroyed ();
 		}
 		
@@ -1413,7 +1198,7 @@ public AssemblyLoader AddReferenceByAssemblyName (string assemblyFullName, bool
 			
 			return AddReferenceByFileName (assemblyFile, selectReference);
 		}
-		
+
 		public AssemblyLoader AddReferenceByFileName (string fileName, bool selectReference = false)
 		{
 			var result = definitions.FirstOrDefault (d => d.FileName == fileName);
@@ -1454,132 +1239,6 @@ public void AddProject (Project project, bool selectReference = false)
 			}
 			builder.Selected = builder.Expanded = selectReference;
 		}
-
-		[CommandHandler (SearchCommands.FindNext)]
-		public void FindNext ()
-		{
-			SearchAndReplaceWidget.FindNext (this.inspectEditor);
-		}
-
-		[CommandHandler (SearchCommands.FindPrevious)]
-		public void FindPrevious ()
-		{
-			SearchAndReplaceWidget.FindPrevious (this.inspectEditor);
-		}
-		
-		[CommandHandler (SearchCommands.Find)]
-		public void ShowSearchWidget ()
-		{
-			if (searchAndReplaceWidget == null) {
-				popupWidgetFrame = new MonoDevelop.Components.RoundedFrame ();
-				//searchAndReplaceWidgetFrame.SetFillColor (MonoDevelop.Components.CairoExtensions.GdkColorToCairoColor (widget.TextEditor.ColorStyle.Default.BackgroundColor));
-				popupWidgetFrame.SetFillColor (MonoDevelop.Components.CairoExtensions.GdkColorToCairoColor (Style.Background (StateType.Normal)));
-				popupWidgetFrame.Show ();
-				
-				popupWidgetFrame.Child = searchAndReplaceWidget = new SearchAndReplaceWidget (inspectEditor, popupWidgetFrame);
-				searchAndReplaceWidget.Destroyed += (sender, e) => {
-					DestroyFrames ();
-					if (inspectEditor.IsRealized)
-						inspectEditor.GrabFocus ();
-				};
-				searchAndReplaceWidget.UpdateSearchPattern ();
-				inspectEditor.AddAnimatedWidget (popupWidgetFrame, 300, Mono.TextEditor.Theatrics.Easing.ExponentialInOut, Blocking.Downstage, inspectEditor.Allocation.Width - 400, -searchAndReplaceWidget.Allocation.Height);
-				searchAndReplaceWidget.IsReplaceMode = false;
-			}
-			
-			searchAndReplaceWidget.Focus ();
-		}
-
-		MonoDevelop.Components.RoundedFrame popupWidgetFrame;
-
-		GotoLineNumberWidget gotoLineNumberWidget;
-		SearchAndReplaceWidget searchAndReplaceWidget;
-		void DestroyFrames ()
-		{
-			if (popupWidgetFrame != null) {
-				popupWidgetFrame.Destroy ();
-				popupWidgetFrame = null;
-				gotoLineNumberWidget = null;
-				searchAndReplaceWidget = null;
-			}
-		}
-
-		[CommandHandler (SearchCommands.GotoLineNumber)]
-		public void ShowGotoLineNumberWidget ()
-		{
-			if (gotoLineNumberWidget == null) {
-				DestroyFrames ();
-				popupWidgetFrame = new MonoDevelop.Components.RoundedFrame ();
-				//searchAndReplaceWidgetFrame.SetFillColor (MonoDevelop.Components.CairoExtensions.GdkColorToCairoColor (widget.TextEditor.ColorStyle.Default.BackgroundColor));
-				popupWidgetFrame.SetFillColor (MonoDevelop.Components.CairoExtensions.GdkColorToCairoColor (Style.Background (StateType.Normal)));
-				popupWidgetFrame.Show ();
-				
-				popupWidgetFrame.Child = gotoLineNumberWidget = new GotoLineNumberWidget (inspectEditor, popupWidgetFrame);
-				gotoLineNumberWidget.Destroyed += (sender, e) => {
-					DestroyFrames ();
-					if (inspectEditor.IsRealized)
-						inspectEditor.GrabFocus ();
-				};
-				inspectEditor.AddAnimatedWidget (popupWidgetFrame, 300, Mono.TextEditor.Theatrics.Easing.ExponentialInOut, Blocking.Downstage, inspectEditor.Allocation.Width - 400, -gotoLineNumberWidget.Allocation.Height);
-			}
-			
-			gotoLineNumberWidget.Focus ();
-		}
-
-	
-		#region NavigationHistory
-		Stack<ITreeNavigator> navigationBackwardHistory = new Stack<ITreeNavigator> ();
-		Stack<ITreeNavigator> navigationForwardHistory = new Stack<ITreeNavigator> ();
-		ITreeNavigator currentItem = null;
-		bool inNavigationOperation = false;
-		void HandleCursorChanged (object sender, EventArgs e)
-		{
-			if (!inNavigationOperation) {
-				if (currentItem != null)
-					navigationBackwardHistory.Push (currentItem);
-				currentItem = TreeView.GetSelectedNode ();
-				ActiveMember = currentItem.DataItem as IEntity;
-				navigationForwardHistory.Clear ();
-			}
-			notebook1.Page = 0;
-			UpdateNavigationActions ();
-			CreateOutput ();
-		}
-		
-		void UpdateNavigationActions ()
-		{
-			if (buttonBack != null) {
-				buttonBack.Sensitive = navigationBackwardHistory.Count != 0;
-				buttonForeward.Sensitive = navigationForwardHistory.Count != 0;
-			}
-		}
-		
-		protected virtual void OnNavigateBackwardActionActivated (object sender, System.EventArgs e)
-		{
-			if (navigationBackwardHistory.Count == 0)
-				return;
-			inNavigationOperation = true;
-			ITreeNavigator item = navigationBackwardHistory.Pop ();
-			item.Selected = true;
-			navigationForwardHistory.Push (currentItem);
-			currentItem = item;
-			inNavigationOperation = false;
-			UpdateNavigationActions ();
-		}
-	
-		protected virtual void OnNavigateForwardActionActivated (object sender, System.EventArgs e)
-		{
-			if (navigationForwardHistory.Count == 0)
-				return;
-			inNavigationOperation = true;
-			ITreeNavigator item = navigationForwardHistory.Pop ();
-			item.Selected = true;
-			navigationBackwardHistory.Push (currentItem);
-			currentItem = item;
-			inNavigationOperation = false;
-			UpdateNavigationActions ();
-		}
-		#endregion
 	}
 }
 

Modified: main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DisplayBinding.cs
===================================================================
@@ -32,6 +32,7 @@
 using MonoDevelop.Ide.Gui;
 using MonoDevelop.Core;
 using MonoDevelop.Projects;
+using MonoDevelop.Ide;
 
 namespace MonoDevelop.AssemblyBrowser
 {
@@ -73,7 +74,12 @@ public bool CanHandle (FilePath fileName, string mimeType, Project ownerProject)
 		
 		public IViewContent CreateContent (FilePath fileName, string mimeType, Project ownerProject)
 		{
-			return GetViewContent ();
+			var abp = IdeApp.Workbench.GetPad<AssemblyBrowserPad> ();
+			abp.BringToFront ();
+			var pad = abp.Content as AssemblyBrowserPad;
+			pad.AssemblyBrowserWidget.AddReferenceByAssemblyName (fileName); 
+			return null;
+			// return GetViewContent ();
 		}
 	}
 }
\ No newline at end of file

Removed: main/src/addins/MonoDevelop.AssemblyBrowser/gtk-gui/MonoDevelop.AssemblyBrowser.AssemblyBrowserWidget.cs
===================================================================
@@ -1,103 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace MonoDevelop.AssemblyBrowser
-{
-	internal partial class AssemblyBrowserWidget
-	{
-		private global::Gtk.UIManager UIManager;
-		private global::Gtk.Action NavigateBackwardAction;
-		private global::Gtk.Action NavigateForwardAction;
-		private global::Gtk.VBox vbox1;
-		private global::Gtk.HPaned hpaned1;
-		private global::Gtk.Alignment treeViewPlaceholder;
-		private global::Gtk.VBox vbox3;
-		private global::Gtk.Notebook notebook1;
-		private global::MonoDevelop.Components.CompactScrolledWindow documentationScrolledWindow;
-		private global::Gtk.VBox searchWidget;
-		private global::Gtk.ScrolledWindow scrolledwindow1;
-		private global::Gtk.TreeView searchTreeview;
-
-		protected virtual void Build ()
-		{
-			global::Stetic.Gui.Initialize (this);
-			// Widget MonoDevelop.AssemblyBrowser.AssemblyBrowserWidget
-			Stetic.BinContainer w1 = global::Stetic.BinContainer.Attach (this);
-			this.UIManager = new global::Gtk.UIManager ();
-			global::Gtk.ActionGroup w2 = new global::Gtk.ActionGroup ("Default");
-			this.NavigateBackwardAction = new global::Gtk.Action ("NavigateBackwardAction", global::Mono.Unix.Catalog.GetString ("Navigate backward"), null, "gtk-go-back");
-			this.NavigateBackwardAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Navigate backward");
-			w2.Add (this.NavigateBackwardAction, null);
-			this.NavigateForwardAction = new global::Gtk.Action ("NavigateForwardAction", global::Mono.Unix.Catalog.GetString ("Navigate forward"), null, "gtk-go-forward");
-			this.NavigateForwardAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Navigate forward");
-			w2.Add (this.NavigateForwardAction, null);
-			this.UIManager.InsertActionGroup (w2, 0);
-			this.Name = "MonoDevelop.AssemblyBrowser.AssemblyBrowserWidget";
-			// Container child MonoDevelop.AssemblyBrowser.AssemblyBrowserWidget.Gtk.Container+ContainerChild
-			this.vbox1 = new global::Gtk.VBox ();
-			this.vbox1.Name = "vbox1";
-			this.vbox1.Spacing = 2;
-			// Container child vbox1.Gtk.Box+BoxChild
-			this.hpaned1 = new global::Gtk.HPaned ();
-			this.hpaned1.CanFocus = true;
-			this.hpaned1.Name = "hpaned1";
-			this.hpaned1.Position = 271;
-			// Container child hpaned1.Gtk.Paned+PanedChild
-			this.treeViewPlaceholder = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
-			this.treeViewPlaceholder.Name = "treeViewPlaceholder";
-			this.hpaned1.Add (this.treeViewPlaceholder);
-			global::Gtk.Paned.PanedChild w3 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.treeViewPlaceholder]));
-			w3.Resize = false;
-			// Container child hpaned1.Gtk.Paned+PanedChild
-			this.vbox3 = new global::Gtk.VBox ();
-			this.vbox3.Name = "vbox3";
-			this.vbox3.Spacing = 6;
-			// Container child vbox3.Gtk.Box+BoxChild
-			this.notebook1 = new global::Gtk.Notebook ();
-			this.notebook1.CanFocus = true;
-			this.notebook1.Name = "notebook1";
-			this.notebook1.CurrentPage = 0;
-			this.notebook1.ShowBorder = false;
-			// Container child notebook1.Gtk.Notebook+NotebookChild
-			this.documentationScrolledWindow = new global::MonoDevelop.Components.CompactScrolledWindow ();
-			this.documentationScrolledWindow.CanFocus = true;
-			this.documentationScrolledWindow.Name = "documentationScrolledWindow";
-			this.documentationScrolledWindow.ShowBorderLine = false;
-			this.notebook1.Add (this.documentationScrolledWindow);
-			// Container child notebook1.Gtk.Notebook+NotebookChild
-			this.searchWidget = new global::Gtk.VBox ();
-			this.searchWidget.Name = "searchWidget";
-			this.searchWidget.Spacing = 6;
-			// Container child searchWidget.Gtk.Box+BoxChild
-			this.scrolledwindow1 = new global::Gtk.ScrolledWindow ();
-			this.scrolledwindow1.CanFocus = true;
-			this.scrolledwindow1.Name = "scrolledwindow1";
-			this.scrolledwindow1.ShadowType = ((global::Gtk.ShadowType)(1));
-			// Container child scrolledwindow1.Gtk.Container+ContainerChild
-			this.searchTreeview = new global::Gtk.TreeView ();
-			this.searchTreeview.CanFocus = true;
-			this.searchTreeview.Name = "searchTreeview";
-			this.scrolledwindow1.Add (this.searchTreeview);
-			this.searchWidget.Add (this.scrolledwindow1);
-			global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.searchWidget [this.scrolledwindow1]));
-			w6.Position = 0;
-			this.notebook1.Add (this.searchWidget);
-			global::Gtk.Notebook.NotebookChild w7 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.searchWidget]));
-			w7.Position = 1;
-			this.vbox3.Add (this.notebook1);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.notebook1]));
-			w8.Position = 0;
-			this.hpaned1.Add (this.vbox3);
-			this.vbox1.Add (this.hpaned1);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hpaned1]));
-			w10.Position = 0;
-			this.Add (this.vbox1);
-			if ((this.Child != null)) {
-				this.Child.ShowAll ();
-			}
-			w1.SetUiManager (UIManager);
-			this.Hide ();
-			this.NavigateBackwardAction.Activated += new global::System.EventHandler (this.OnNavigateBackwardActionActivated);
-			this.NavigateForwardAction.Activated += new global::System.EventHandler (this.OnNavigateForwardActionActivated);
-		}
-	}
-}

Modified: main/src/addins/MonoDevelop.AssemblyBrowser/gtk-gui/generated.cs
===================================================================
@@ -14,58 +14,6 @@ internal static void Initialize (Gtk.Widget iconRenderer)
 		}
 	}
 
-	internal class BinContainer
-	{
-		private Gtk.Widget child;
-		private Gtk.UIManager uimanager;
-
-		public static BinContainer Attach (Gtk.Bin bin)
-		{
-			BinContainer bc = new BinContainer ();
-			bin.SizeRequested += new Gtk.SizeRequestedHandler (bc.OnSizeRequested);
-			bin.SizeAllocated += new Gtk.SizeAllocatedHandler (bc.OnSizeAllocated);
-			bin.Added += new Gtk.AddedHandler (bc.OnAdded);
-			return bc;
-		}
-
-		private void OnSizeRequested (object sender, Gtk.SizeRequestedArgs args)
-		{
-			if ((this.child != null)) {
-				args.Requisition = this.child.SizeRequest ();
-			}
-		}
-
-		private void OnSizeAllocated (object sender, Gtk.SizeAllocatedArgs args)
-		{
-			if ((this.child != null)) {
-				this.child.Allocation = args.Allocation;
-			}
-		}
-
-		private void OnAdded (object sender, Gtk.AddedArgs args)
-		{
-			this.child = args.Widget;
-		}
-
-		public void SetUiManager (Gtk.UIManager uim)
-		{
-			this.uimanager = uim;
-			this.child.Realized += new System.EventHandler (this.OnRealized);
-		}
-
-		private void OnRealized (object sender, System.EventArgs args)
-		{
-			if ((this.uimanager != null)) {
-				Gtk.Widget w;
-				w = this.child.Toplevel;
-				if (((w != null) && typeof(Gtk.Window).IsInstanceOfType (w))) {
-					((Gtk.Window)(w)).AddAccelGroup (this.uimanager.AccelGroup);
-					this.uimanager = null;
-				}
-			}
-		}
-	}
-
 	internal class ActionGroups
 	{
 		public static Gtk.ActionGroup GetActionGroup (System.Type type)

Modified: main/src/addins/MonoDevelop.AssemblyBrowser/gtk-gui/gui.stetic
===================================================================
@@ -12,105 +12,4 @@
     <widget-library name="../../../../build/AddIns/DisplayBindings/SourceEditor/MonoDevelop.SourceEditor2.dll" />
     <widget-library name="../../../../build/AddIns/DisplayBindings/AssemblyBrowser/MonoDevelop.AssemblyBrowser.dll" internal="true" />
   </import>
-  <widget class="Gtk.Bin" id="MonoDevelop.AssemblyBrowser.AssemblyBrowserWidget" design-size="702 482">
-    <action-group name="Default">
-      <action id="NavigateBackwardAction">
-        <property name="Type">Action</property>
-        <property name="Label" translatable="yes">Navigate backward</property>
-        <property name="ShortLabel" translatable="yes">Navigate backward</property>
-        <property name="StockId">gtk-go-back</property>
-        <signal name="Activated" handler="OnNavigateBackwardActionActivated" />
-      </action>
-      <action id="NavigateForwardAction">
-        <property name="Type">Action</property>
-        <property name="Label" translatable="yes">Navigate forward</property>
-        <property name="ShortLabel" translatable="yes">Navigate forward</property>
-        <property name="StockId">gtk-go-forward</property>
-        <signal name="Activated" handler="OnNavigateForwardActionActivated" />
-      </action>
-    </action-group>
-    <property name="MemberName" />
-    <property name="Visible">False</property>
-    <property name="GeneratePublic">False</property>
-    <child>
-      <widget class="Gtk.VBox" id="vbox1">
-        <property name="MemberName" />
-        <property name="Spacing">2</property>
-        <child>
-          <widget class="Gtk.HPaned" id="hpaned1">
-            <property name="MemberName" />
-            <property name="CanFocus">True</property>
-            <property name="Position">271</property>
-            <child>
-              <widget class="Gtk.Alignment" id="treeViewPlaceholder">
-                <property name="MemberName" />
-                <child>
-                  <placeholder />
-                </child>
-              </widget>
-              <packing>
-                <property name="Resize">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="Gtk.VBox" id="vbox3">
-                <property name="MemberName" />
-                <property name="Spacing">6</property>
-                <child>
-                  <widget class="Gtk.Notebook" id="notebook1">
-                    <property name="MemberName" />
-                    <property name="CanFocus">True</property>
-                    <property name="CurrentPage">0</property>
-                    <property name="ShowBorder">False</property>
-                    <child>
-                      <widget class="MonoDevelop.Components.CompactScrolledWindow" id="documentationScrolledWindow">
-                        <property name="MemberName" />
-                        <property name="CanFocus">True</property>
-                        <property name="ShowBorderLine">False</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="Gtk.VBox" id="searchWidget">
-                        <property name="MemberName" />
-                        <property name="Spacing">6</property>
-                        <child>
-                          <widget class="Gtk.ScrolledWindow" id="scrolledwindow1">
-                            <property name="MemberName" />
-                            <property name="CanFocus">True</property>
-                            <property name="ShadowType">In</property>
-                            <child>
-                              <widget class="Gtk.TreeView" id="searchTreeview">
-                                <property name="MemberName" />
-                                <property name="CanFocus">True</property>
-                                <property name="ShowScrollbars">True</property>
-                              </widget>
-                            </child>
-                          </widget>
-                          <packing>
-                            <property name="Position">0</property>
-                            <property name="AutoSize">True</property>
-                          </packing>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="Position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="Position">0</property>
-                    <property name="AutoSize">True</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="Position">0</property>
-            <property name="AutoSize">True</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
 </stetic-interface>
\ No newline at end of file

Modified: main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs
===================================================================
@@ -1260,7 +1260,7 @@ public void Invoke (string fileName)
 					monitor.ReportError (GettextCatalog.GetString ("The file '{0}' could not be opened.", fileName), null);
 				}
 				if (newContent == null) {
-					monitor.ReportError (GettextCatalog.GetString ("The file '{0}' could not be opened.", fileName), null);
+					//	monitor.ReportError (GettextCatalog.GetString ("The file '{0}' could not be opened.", fileName), null);
 					return;
 				}
 				
_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.