Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Ungureanu <marius.ungureanu@xamarin.com>2015-11-23 16:45:18 +0300
committerMarius Ungureanu <marius.ungureanu@xamarin.com>2015-11-23 16:45:18 +0300
commita94ef4314d4bbbc96c0c80f15762335bf86df663 (patch)
treefcf7244620c9a1b9b735476ec2d9ae3f7d7f3407 /main/src/addins/MonoDevelop.AssemblyBrowser
parent26e5c5b5cf30799e0b263fd3a26de017a72b1f49 (diff)
parenta05bc0f6d0591f71c5e4e5786108118f51c68fe1 (diff)
Merge remote-tracking branch 'origin/roslyn' into roslyn-nogtkshell
Diffstat (limited to 'main/src/addins/MonoDevelop.AssemblyBrowser')
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs42
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NRefactoryStock.cs323
2 files changed, 153 insertions, 212 deletions
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
index e1bb1926fa..16a664662e 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
@@ -53,6 +53,7 @@ using System.Threading;
using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.Navigation;
using MonoDevelop.Ide.Gui.Content;
+using System.IO;
namespace MonoDevelop.AssemblyBrowser
{
@@ -392,8 +393,8 @@ namespace MonoDevelop.AssemblyBrowser
{
TreeIter selectedIter;
if (searchTreeview.Selection.GetSelected (out selectedIter)) {
- var member = (IUnresolvedEntity)(searchMode != SearchMode.Type ? memberListStore.GetValue (selectedIter, 4) : typeListStore.GetValue (selectedIter, 4));
-
+ var member = (IUnresolvedEntity)(searchMode == SearchMode.Member ? memberListStore.GetValue (selectedIter, 4) : typeListStore.GetValue (selectedIter, 4));
+
var nav = SearchMember (member);
if (nav != null) {
notebook1.Page = 0;
@@ -712,11 +713,14 @@ namespace MonoDevelop.AssemblyBrowser
col.PackStart (crt, true);
col.AddAttribute (crp, "image", 0);
col.AddAttribute (crt, "text", 1);
+ col.SortColumnId = 1;
searchTreeview.AppendColumn (col);
col.Resizable = true;
col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Declaring Type"), new Gtk.CellRendererText (), "text", 2);
+ col.SortColumnId = 2;
col.Resizable = true;
col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Assembly"), new Gtk.CellRendererText (), "text", 3);
+ col.SortColumnId = 3;
col.Resizable = true;
searchTreeview.Model = memberListStore;
break;
@@ -729,11 +733,17 @@ namespace MonoDevelop.AssemblyBrowser
col.PackStart (crt, true);
col.AddAttribute (crp, "image", 0);
col.AddAttribute (crt, "text", 1);
+ col.SortColumnId = 1;
+
searchTreeview.AppendColumn (col);
col.Resizable = true;
col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Parent"), new Gtk.CellRendererText (), "text", 2);
+ col.SortColumnId = 2;
+
col.Resizable = true;
col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Assembly"), new Gtk.CellRendererText (), "text", 3);
+ col.SortColumnId = 3;
+
col.Resizable = true;
searchTreeview.Model = typeListStore;
break;
@@ -746,11 +756,16 @@ namespace MonoDevelop.AssemblyBrowser
col.PackStart (crt, true);
col.AddAttribute (crp, "image", 0);
col.AddAttribute (crt, "text", 1);
+ col.SortColumnId = 1;
searchTreeview.AppendColumn (col);
col.Resizable = true;
+
col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Namespace"), new Gtk.CellRendererText (), "text", 2);
+ col.SortColumnId = 2;
col.Resizable = true;
+
col = searchTreeview.AppendColumn (GettextCatalog.GetString ("Assembly"), new Gtk.CellRendererText (), "text", 3);
+ col.SortColumnId = 3;
col.Resizable = true;
searchTreeview.Model = typeListStore;
break;
@@ -925,7 +940,7 @@ namespace MonoDevelop.AssemblyBrowser
return;
if (!type.IsPublic && publicOnly)
continue;
- if (type.FullName.ToUpper ().IndexOf (pattern) >= 0)
+ if (type.FullName.ToUpper ().IndexOf (pattern, StringComparison.Ordinal) >= 0)
typeList.Add (type);
}
typeDict [unit] = typeList;
@@ -946,23 +961,25 @@ namespace MonoDevelop.AssemblyBrowser
break;
case SearchMode.TypeAndMembers:
- var typeDict2 = new Dictionary<AssemblyLoader, List<IUnresolvedEntity>> ();
+ var typeDict2 = new Dictionary<AssemblyLoader, List<Tuple<IUnresolvedEntity, string>>> ();
foreach (var unit in this.definitions) {
- var typeList = new List<IUnresolvedEntity> ();
+ var typeList = new List<Tuple<IUnresolvedEntity, string>> ();
foreach (var type in unit.UnresolvedAssembly.TopLevelTypeDefinitions) {
if (worker.CancellationPending)
return;
if (!type.IsPublic && publicOnly)
continue;
- if (type.FullName.ToUpper ().IndexOf (pattern) >= 0)
- typeList.Add (type);
+ var parent = type.FullName;
+ if (parent.ToUpper ().IndexOf (pattern, StringComparison.Ordinal) >= 0)
+ typeList.Add (Tuple.Create ((IUnresolvedEntity)type, type.Namespace));
+
foreach (var member in type.Members) {
if (worker.CancellationPending)
return;
if (!member.IsPublic && publicOnly)
continue;
if (member.Name.ToUpper ().Contains (pattern)) {
- typeList.Add (member);
+ typeList.Add (Tuple.Create ((IUnresolvedEntity)member, parent));
}
}
@@ -972,13 +989,14 @@ namespace MonoDevelop.AssemblyBrowser
Gtk.Application.Invoke (delegate {
foreach (var kv in typeDict2) {
- foreach (var type in kv.Value) {
+ foreach (var tuple in kv.Value) {
if (worker.CancellationPending)
return;
+ var type = tuple.Item1;
typeListStore.AppendValues (ImageService.GetIcon (type.GetStockIcon (), Gtk.IconSize.Menu),
type.Name,
- type.Namespace,
- kv.Key.Assembly.FullName,
+ tuple.Item2,
+ kv.Key.Assembly.FullName,
type);
}
}
@@ -1603,6 +1621,8 @@ namespace MonoDevelop.AssemblyBrowser
return result;
}
+ if (!File.Exists (fileName))
+ return null;
result = new AssemblyLoader (this, fileName);
definitions.Add (result);
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NRefactoryStock.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NRefactoryStock.cs
index 9d4624c339..f06aab28df 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NRefactoryStock.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/NRefactoryStock.cs
@@ -31,96 +31,9 @@ namespace MonoDevelop.AssemblyBrowser
{
static class NRefactoryStock
{
- static readonly IconId Class = "md-class";
- static readonly IconId Enum = "md-enum";
- static readonly IconId Event = "md-event";
static readonly IconId Field = "md-field";
- static readonly IconId Interface = "md-interface";
- static readonly IconId Method = "md-method";
- static readonly IconId ExtensionMethod = "md-extensionmethod";
- static readonly IconId Property = "md-property";
- static readonly IconId Struct = "md-struct";
- static readonly IconId Delegate = "md-delegate";
public static readonly IconId Namespace = "md-name-space";
- static readonly IconId InternalClass = "md-internal-class";
- static readonly IconId InternalDelegate = "md-internal-delegate";
- static readonly IconId InternalEnum = "md-internal-enum";
- static readonly IconId InternalEvent = "md-internal-event";
- static readonly IconId InternalField = "md-internal-field";
- static readonly IconId InternalInterface = "md-internal-interface";
- static readonly IconId InternalMethod = "md-internal-method";
- static readonly IconId InternalExtensionMethod = "md-internal-extensionmethod";
- static readonly IconId InternalProperty = "md-internal-property";
- static readonly IconId InternalStruct = "md-internal-struct";
-
- static readonly IconId InternalAndProtectedClass = "md-InternalAndProtected-class";
- static readonly IconId InternalAndProtectedDelegate = "md-InternalAndProtected-delegate";
- static readonly IconId InternalAndProtectedEnum = "md-InternalAndProtected-enum";
- static readonly IconId InternalAndProtectedEvent = "md-InternalAndProtected-event";
- static readonly IconId InternalAndProtectedField = "md-InternalAndProtected-field";
- static readonly IconId InternalAndProtectedInterface = "md-InternalAndProtected-interface";
- static readonly IconId InternalAndProtectedMethod = "md-InternalAndProtected-method";
- static readonly IconId InternalAndProtectedExtensionMethod = "md-InternalAndProtected-extensionmethod";
- static readonly IconId InternalAndProtectedProperty = "md-InternalAndProtected-property";
- static readonly IconId InternalAndProtectedStruct = "md-InternalAndProtected-struct";
-
- static readonly IconId PrivateClass = "md-private-class";
- static readonly IconId PrivateDelegate = "md-private-delegate";
- static readonly IconId PrivateEnum = "md-private-enum";
- static readonly IconId PrivateEvent = "md-private-event";
- static readonly IconId PrivateField = "md-private-field";
- static readonly IconId PrivateInterface = "md-private-interface";
- static readonly IconId PrivateMethod = "md-private-method";
- static readonly IconId PrivateExtensionMethod = "md-private-extensionmethod";
- static readonly IconId PrivateProperty = "md-private-property";
- static readonly IconId PrivateStruct = "md-private-struct";
-
- static readonly IconId ProtectedClass = "md-protected-class";
- static readonly IconId ProtectedDelegate = "md-protected-delegate";
- static readonly IconId ProtectedEnum = "md-protected-enum";
- static readonly IconId ProtectedEvent = "md-protected-event";
- static readonly IconId ProtectedField = "md-protected-field";
- static readonly IconId ProtectedInterface = "md-protected-interface";
- static readonly IconId ProtectedMethod = "md-protected-method";
- static readonly IconId ProtectedExtensionMethod = "md-protected-extensionmethod";
- static readonly IconId ProtectedProperty = "md-protected-property";
- static readonly IconId ProtectedStruct = "md-protected-struct";
-
- static readonly IconId ProtectedOrInternalClass = "md-ProtectedOrInternal-class";
- static readonly IconId ProtectedOrInternalDelegate = "md-ProtectedOrInternal-delegate";
- static readonly IconId ProtectedOrInternalEnum = "md-ProtectedOrInternal-enum";
- static readonly IconId ProtectedOrInternalEvent = "md-ProtectedOrInternal-event";
- static readonly IconId ProtectedOrInternalField = "md-ProtectedOrInternal-field";
- static readonly IconId ProtectedOrInternalInterface = "md-ProtectedOrInternal-interface";
- static readonly IconId ProtectedOrInternalMethod = "md-ProtectedOrInternal-method";
- static readonly IconId ProtectedOrInternalExtensionMethod = "md-ProtectedOrInternal-extensionmethod";
- static readonly IconId ProtectedOrInternalProperty = "md-ProtectedOrInternal-property";
- static readonly IconId ProtectedOrInternalStruct = "md-ProtectedOrInternal-struct";
-
- static IconId[,] typeIconTable = new IconId[,] {
- {Class, PrivateClass, Class, ProtectedClass, InternalClass, ProtectedOrInternalClass, InternalAndProtectedClass}, // class
- {Enum, PrivateEnum, Enum, ProtectedEnum, InternalEnum, ProtectedOrInternalEnum, InternalAndProtectedEnum}, // enum
- {Interface, PrivateInterface, Interface, ProtectedInterface, InternalInterface, ProtectedOrInternalInterface, InternalAndProtectedInterface}, // interface
- {Struct, PrivateStruct, Struct, ProtectedStruct, InternalStruct, ProtectedOrInternalStruct, InternalAndProtectedStruct}, // struct
- {Delegate, PrivateDelegate, Delegate, ProtectedDelegate, InternalDelegate, ProtectedOrInternalDelegate, InternalAndProtectedDelegate} // delegate
- };
- static readonly IconId[] fieldIconTable = {
- NRefactoryStock.Field, NRefactoryStock.PrivateField, NRefactoryStock.Field, NRefactoryStock.ProtectedField, NRefactoryStock.InternalField, NRefactoryStock.ProtectedOrInternalField, NRefactoryStock.InternalAndProtectedField
- };
- static readonly IconId[] methodIconTable = {
- NRefactoryStock.Method, NRefactoryStock.PrivateMethod, NRefactoryStock.Method, NRefactoryStock.ProtectedMethod, NRefactoryStock.InternalMethod, NRefactoryStock.ProtectedOrInternalMethod, NRefactoryStock.InternalAndProtectedMethod
- };
- static readonly IconId[] extensionMethodIconTable = {
- NRefactoryStock.ExtensionMethod, NRefactoryStock.PrivateExtensionMethod, NRefactoryStock.ExtensionMethod, NRefactoryStock.ProtectedExtensionMethod, NRefactoryStock.InternalExtensionMethod, NRefactoryStock.ProtectedOrInternalExtensionMethod, NRefactoryStock.InternalAndProtectedExtensionMethod
- };
- static readonly IconId[] propertyIconTable = {
- NRefactoryStock.Property, NRefactoryStock.PrivateProperty, NRefactoryStock.Property, NRefactoryStock.ProtectedProperty, NRefactoryStock.InternalProperty, NRefactoryStock.ProtectedOrInternalProperty, NRefactoryStock.InternalAndProtectedProperty
- };
- static readonly IconId[] eventIconTable = {
- NRefactoryStock.Event, NRefactoryStock.PrivateEvent, NRefactoryStock.Event, NRefactoryStock.ProtectedEvent, NRefactoryStock.InternalEvent, NRefactoryStock.ProtectedOrInternalEvent, NRefactoryStock.InternalAndProtectedEvent
- };
-
public static IconId GetStockIcon (this INamedElement element)
{
if (element is IType)
@@ -137,77 +50,6 @@ namespace MonoDevelop.AssemblyBrowser
return GetStockIcon ((IType)entity);
}
- public static IconId GetStockIcon (this IType entity)
- {
- var def = entity.GetDefinition ();
- if (def == null)
- return Class;
- switch (def.Kind) {
- case TypeKind.Class:
- return typeIconTable [0, (int)def.Accessibility];
- case TypeKind.Enum:
- return typeIconTable [1, (int)def.Accessibility];
- case TypeKind.Interface:
- return typeIconTable [2, (int)def.Accessibility];
- case TypeKind.Struct:
- return typeIconTable [3, (int)def.Accessibility];
- case TypeKind.Delegate:
- return typeIconTable [4, (int)def.Accessibility];
- default:
- return typeIconTable [0, (int)def.Accessibility];
- }
- }
- public static IconId GetStockIcon (this IUnresolvedTypeDefinition def)
- {
- switch (def.Kind) {
- case TypeKind.Class:
- return typeIconTable [0, (int)def.Accessibility];
- case TypeKind.Enum:
- return typeIconTable [1, (int)def.Accessibility];
- case TypeKind.Interface:
- return typeIconTable [2, (int)def.Accessibility];
- case TypeKind.Struct:
- return typeIconTable [3, (int)def.Accessibility];
- case TypeKind.Delegate:
- return typeIconTable [4, (int)def.Accessibility];
- default:
- return typeIconTable [0, (int)def.Accessibility];
- }
- }
-
- static int GetTypeIndex (Microsoft.CodeAnalysis.TypeKind typeKind)
- {
- switch (typeKind) {
- case Microsoft.CodeAnalysis.TypeKind.Unknown:
- case Microsoft.CodeAnalysis.TypeKind.Array:
- return 0;
- case Microsoft.CodeAnalysis.TypeKind.Class:
- return 0;
- case Microsoft.CodeAnalysis.TypeKind.Delegate:
- return 4;
- case Microsoft.CodeAnalysis.TypeKind.Dynamic:
- return 0;
- case Microsoft.CodeAnalysis.TypeKind.Enum:
- return 1;
- case Microsoft.CodeAnalysis.TypeKind.Error:
- return 0;
- case Microsoft.CodeAnalysis.TypeKind.Interface:
- return 2;
- case Microsoft.CodeAnalysis.TypeKind.Module:
- return 0;
- case Microsoft.CodeAnalysis.TypeKind.Pointer:
- return 0;
- case Microsoft.CodeAnalysis.TypeKind.Struct:
- return 3;
- case Microsoft.CodeAnalysis.TypeKind.TypeParameter:
- return 0;
- case Microsoft.CodeAnalysis.TypeKind.Submission:
- return 0;
- default:
- throw new ArgumentOutOfRangeException ();
- }
- }
-
public static IconId GetStockIcon (this IField field)
{
return GetStockIcon ((IEntity)field);
@@ -230,73 +72,152 @@ namespace MonoDevelop.AssemblyBrowser
public static IconId GetStockIcon (this IEntity entity, bool showAccessibility = true)
{
+ return "md-" + GetAccess (entity) + GetGlobal (entity) + GetSource (entity);
+ }
+
+ static string GetAccess (IEntity entity)
+ {
+ switch (entity.Accessibility) {
+ case Accessibility.None:
+ return "";
+ case Accessibility.Private:
+ return "private-";
+ case Accessibility.Public:
+ return "";
+ case Accessibility.Protected:
+ return "protected-";
+ case Accessibility.Internal:
+ return "internal-";
+ case Accessibility.ProtectedOrInternal:
+ case Accessibility.ProtectedAndInternal:
+ return "ProtectedOrInternal-";
+ default:
+ throw new ArgumentOutOfRangeException ();
+ }
+ }
+
+ static string GetGlobal (IEntity entity)
+ {
+ switch (entity.SymbolKind) {
+ case SymbolKind.Field:
+ case SymbolKind.Method:
+ case SymbolKind.Constructor:
+ case SymbolKind.Destructor:
+ case SymbolKind.Operator:
+ case SymbolKind.Property:
+ case SymbolKind.Indexer:
+ return entity.IsStatic ? "static-" : "";
+ }
+ return "";
+
+ }
+
+ static string GetSource (IEntity entity)
+ {
switch (entity.SymbolKind) {
case SymbolKind.TypeDefinition:
- return GetStockIcon ((IType)entity);
+ var type = (IType)entity;
+ switch (type.Kind) {
+ case TypeKind.Class:
+ return "class";
+ case TypeKind.Interface:
+ return "interface";
+ case TypeKind.Struct:
+ return "struct";
+ case TypeKind.Delegate:
+ return "delegate";
+ case TypeKind.Enum:
+ return "enum";
+ }
+ return "class";
case SymbolKind.Field:
- if (showAccessibility)
- return fieldIconTable [(int)entity.Accessibility];
- else
- return fieldIconTable [0];
+ case SymbolKind.Event:
+ return "field";
case SymbolKind.Method:
case SymbolKind.Constructor:
case SymbolKind.Destructor:
case SymbolKind.Operator:
- if (showAccessibility) {
- if (((IMethod)entity).IsExtensionMethod)
- return extensionMethodIconTable [(int)entity.Accessibility];
- return methodIconTable [(int)entity.Accessibility];
- } else {
- if (((IMethod)entity).IsExtensionMethod)
- return extensionMethodIconTable [0];
- return methodIconTable [0];
- }
+ return "method";
case SymbolKind.Property:
case SymbolKind.Indexer:
- if (showAccessibility)
- return propertyIconTable [(int)entity.Accessibility];
- else
- return propertyIconTable [0];
- case SymbolKind.Event:
- if (showAccessibility)
- return eventIconTable [(int)entity.Accessibility];
- else
- return eventIconTable [0];
+ return "property";
}
return "";
}
+
public static IconId GetStockIcon (this IUnresolvedEntity entity, bool showAccessibility = true)
{
+ return "md-" + GetAccess (entity) + GetGlobal (entity) + GetSource (entity);
+ }
+
+ static string GetAccess (IUnresolvedEntity entity)
+ {
+ switch (entity.Accessibility) {
+ case Accessibility.None:
+ return "";
+ case Accessibility.Private:
+ return "private-";
+ case Accessibility.Public:
+ return "";
+ case Accessibility.Protected:
+ return "protected-";
+ case Accessibility.Internal:
+ return "internal-";
+ case Accessibility.ProtectedOrInternal:
+ case Accessibility.ProtectedAndInternal:
+ return "ProtectedOrInternal-";
+ default:
+ throw new ArgumentOutOfRangeException ();
+ }
+ }
+
+ static string GetGlobal (IUnresolvedEntity entity)
+ {
+ switch (entity.SymbolKind) {
+ case SymbolKind.Field:
+ case SymbolKind.Method:
+ case SymbolKind.Constructor:
+ case SymbolKind.Destructor:
+ case SymbolKind.Operator:
+ case SymbolKind.Property:
+ case SymbolKind.Indexer:
+ return entity.IsStatic ? "static-" : "";
+ }
+ return "";
+ }
+
+ static string GetSource (IUnresolvedEntity entity)
+ {
switch (entity.SymbolKind) {
case SymbolKind.TypeDefinition:
- return GetStockIcon ((IUnresolvedTypeDefinition)entity);
+ var type = (IUnresolvedTypeDefinition)entity;
+ switch (type.Kind) {
+ case TypeKind.Class:
+ return "class";
+ case TypeKind.Interface:
+ return "interface";
+ case TypeKind.Struct:
+ return "struct";
+ case TypeKind.Delegate:
+ return "delegate";
+ case TypeKind.Enum:
+ return "enum";
+ }
+ return "class";
case SymbolKind.Field:
- if (showAccessibility)
- return fieldIconTable [(int)entity.Accessibility];
- else
- return fieldIconTable [0];
+ return "field";
+ case SymbolKind.Event:
+ return "event";
case SymbolKind.Method:
case SymbolKind.Constructor:
case SymbolKind.Destructor:
case SymbolKind.Operator:
- if (showAccessibility)
- return methodIconTable [(int)entity.Accessibility];
- else
- return methodIconTable [0];
+ return "method";
case SymbolKind.Property:
case SymbolKind.Indexer:
- if (showAccessibility)
- return propertyIconTable [(int)entity.Accessibility];
- else
- return propertyIconTable [0];
- case SymbolKind.Event:
- if (showAccessibility)
- return eventIconTable [(int)entity.Accessibility];
- else
- return eventIconTable [0];
+ return "property";
}
return "";
}
}
-}
-
+} \ No newline at end of file