diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/StockIcons.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/StockIcons.cs | 288 |
1 files changed, 157 insertions, 131 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/StockIcons.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/StockIcons.cs index bd7eea162b..d52111e65f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/StockIcons.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/StockIcons.cs @@ -25,8 +25,8 @@ // THE SOFTWARE. using System; using MonoDevelop.Core; -using ICSharpCode.NRefactory.TypeSystem; using Mono.Cecil; +using ICSharpCode.NRefactory6.CSharp; namespace MonoDevelop.Ide.TypeSystem { @@ -122,149 +122,175 @@ namespace MonoDevelop.Ide.TypeSystem Stock.Event, Stock.PrivateEvent, Stock.Event, Stock.ProtectedEvent, Stock.InternalEvent, Stock.ProtectedOrInternalEvent, Stock.InternalAndProtectedEvent }; - public static string GetStockIcon (this INamedElement element) - { - if (element is IType) - return ((IType)element).GetStockIcon (); - if (element is ITypeParameter) - return ((ITypeParameter)element).GetStockIcon (); - if (element is IUnresolvedEntity) - return ((IUnresolvedEntity)element).GetStockIcon (); - return ((IEntity)element).GetStockIcon (); - } - - public static string GetStockIcon (this ITypeDefinition entity) - { - return GetStockIcon ((IType)entity); - } - - public static string GetStockIcon (this IType entity) +// public static IconId GetStockIcon (this INamedElement element) +// { +// if (element is IType) +// return ((IType)element).GetStockIcon (); +// if (element is ITypeParameter) +// return ((ITypeParameter)element).GetStockIcon (); +// if (element is IUnresolvedEntity) +// return ((IUnresolvedEntity)element).GetStockIcon (); +// return ((IEntity)element).GetStockIcon (); +// } +// +// public static IconId GetStockIcon (this ITypeDefinition entity) +// { +// 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]; +// } +// } + + static int GetIndex (Microsoft.CodeAnalysis.Accessibility accessibility) { - 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]; + switch (accessibility) { + case Microsoft.CodeAnalysis.Accessibility.NotApplicable: + return 0; + case Microsoft.CodeAnalysis.Accessibility.Private: + return 1; + case Microsoft.CodeAnalysis.Accessibility.ProtectedAndInternal: + return 5; + case Microsoft.CodeAnalysis.Accessibility.Protected: + return 3; + case Microsoft.CodeAnalysis.Accessibility.Internal: + return 4; + case Microsoft.CodeAnalysis.Accessibility.ProtectedOrInternal: + return 5; + case Microsoft.CodeAnalysis.Accessibility.Public: + return 2; default: - return typeIconTable [0, (int)def.Accessibility]; + throw new ArgumentOutOfRangeException (); } } - - public static string GetStockIcon (this IUnresolvedTypeDefinition def) + + public static IconId GetStockIcon (this Microsoft.CodeAnalysis.ISymbol symbol) { - 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]; + switch (symbol.Kind) { + case Microsoft.CodeAnalysis.SymbolKind.Alias: + case Microsoft.CodeAnalysis.SymbolKind.ArrayType: + case Microsoft.CodeAnalysis.SymbolKind.Assembly: + case Microsoft.CodeAnalysis.SymbolKind.DynamicType: + case Microsoft.CodeAnalysis.SymbolKind.ErrorType: + case Microsoft.CodeAnalysis.SymbolKind.Label: + case Microsoft.CodeAnalysis.SymbolKind.Local: + case Microsoft.CodeAnalysis.SymbolKind.NetModule: + case Microsoft.CodeAnalysis.SymbolKind.PointerType: + return Field; + case Microsoft.CodeAnalysis.SymbolKind.NamedType: + var namedTypeSymbol = (Microsoft.CodeAnalysis.INamedTypeSymbol)symbol; + return typeIconTable [GetTypeIndex(namedTypeSymbol.TypeKind ), GetIndex (namedTypeSymbol.DeclaredAccessibility)]; + case Microsoft.CodeAnalysis.SymbolKind.Event: + var evtSymbol = (Microsoft.CodeAnalysis.IEventSymbol)symbol; + return eventIconTable [GetIndex (evtSymbol.DeclaredAccessibility)]; + case Microsoft.CodeAnalysis.SymbolKind.Field: + var fieldSymbol = (Microsoft.CodeAnalysis.IFieldSymbol)symbol; + return fieldIconTable [GetIndex (fieldSymbol.DeclaredAccessibility)]; + case Microsoft.CodeAnalysis.SymbolKind.Method: + var methodSymbol = (Microsoft.CodeAnalysis.IMethodSymbol)symbol; + return methodIconTable [GetIndex (methodSymbol.DeclaredAccessibility)]; + case Microsoft.CodeAnalysis.SymbolKind.Namespace: + return Namespace; + case Microsoft.CodeAnalysis.SymbolKind.Parameter: + return Field; + case Microsoft.CodeAnalysis.SymbolKind.Property: + var propertySymbol = (Microsoft.CodeAnalysis.IPropertySymbol)symbol; + return propertyIconTable [GetIndex (propertySymbol.DeclaredAccessibility)]; + case Microsoft.CodeAnalysis.SymbolKind.RangeVariable: + return Field; + case Microsoft.CodeAnalysis.SymbolKind.TypeParameter: + return Stock.typeIconTable [0, 0]; + case Microsoft.CodeAnalysis.SymbolKind.Preprocessing: + return Field; default: - return typeIconTable [0, (int)def.Accessibility]; + throw new ArgumentOutOfRangeException (); } } - - public static string GetStockIcon (this IField field) - { - return GetStockIcon ((IEntity)field); - } - - public static string GetStockIcon (this IVariable variable) - { - return Field; - } - - public static string GetStockIcon (this IParameter parameter) - { - return Field; - } - - public static string GetStockIcon (this IUnresolvedTypeParameter parameter) - { - return Field; - } - - public static string GetStockIcon (this IEntity entity, bool showAccessibility = true) + + static int GetTypeIndex (Microsoft.CodeAnalysis.TypeKind typeKind) { - switch (entity.SymbolKind) { - case SymbolKind.TypeDefinition: - return GetStockIcon ((IType)entity); - case SymbolKind.Field: - if (showAccessibility) - return fieldIconTable [(int)entity.Accessibility]; - else - return fieldIconTable [0]; - 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]; - } - 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]; + 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 (); } - return ""; } - public static string GetStockIcon (this IUnresolvedEntity entity, bool showAccessibility = true) + + internal static IconId GetStockIconForSymbolInfo (this DeclaredSymbolInfo symbol) { - switch (entity.SymbolKind) { - case SymbolKind.TypeDefinition: - return GetStockIcon ((IUnresolvedTypeDefinition)entity); - case SymbolKind.Field: - if (showAccessibility) - return fieldIconTable [(int)entity.Accessibility]; - else - return fieldIconTable [0]; - case SymbolKind.Method: - case SymbolKind.Constructor: - case SymbolKind.Destructor: - case SymbolKind.Operator: - if (showAccessibility) - return methodIconTable [(int)entity.Accessibility]; - else - return methodIconTable [0]; - 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]; + switch (symbol.Kind) { + case DeclaredSymbolInfoKind.Class: + return Stock.Class; + case DeclaredSymbolInfoKind.Constant: + return Stock.Field; + case DeclaredSymbolInfoKind.Constructor: + return Stock.Method; + case DeclaredSymbolInfoKind.Delegate: + return Stock.Delegate; + case DeclaredSymbolInfoKind.Enum: + return Stock.Enum; + case DeclaredSymbolInfoKind.EnumMember: + return Stock.Field; + case DeclaredSymbolInfoKind.Event: + return Stock.Event; + case DeclaredSymbolInfoKind.Field: + return Stock.Field; + case DeclaredSymbolInfoKind.Indexer: + return Stock.Method; + case DeclaredSymbolInfoKind.Interface: + return Stock.Interface; + case DeclaredSymbolInfoKind.Method: + return Stock.Method; + case DeclaredSymbolInfoKind.Module: + return Stock.Method; + case DeclaredSymbolInfoKind.Property: + return Stock.Property; + case DeclaredSymbolInfoKind.Struct: + return Stock.Struct; + default: + throw new ArgumentOutOfRangeException (); } - return ""; } } } |