Browse Source

Fixed SD2-440: Icon for local variables and parameters

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@525 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
820f9a21b7
  1. 3
      data/resources/image/BitmapResources/BitmapResources.res
  2. BIN
      data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Local.png
  3. BIN
      data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Parameter.png
  4. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
  5. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs
  6. 29
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs
  7. 4
      src/Main/Base/Project/Src/Dom/IDecoration.cs
  8. 6
      src/Main/Base/Project/Src/Dom/IField.cs
  9. 6
      src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs
  10. 34
      src/Main/Base/Project/Src/Dom/Implementations/DefaultField.cs
  11. 26
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  12. 7
      src/Main/Base/Project/Src/Dom/ResolveResult.cs
  13. 28
      src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
  14. BIN
      src/Main/StartUp/Project/Resources/BitmapResources.resources

3
data/resources/image/BitmapResources/BitmapResources.res

@ -258,6 +258,9 @@ Icons.16x16.Indexer = ClassBrowserIcons\Icons.16x1 @@ -258,6 +258,9 @@ Icons.16x16.Indexer = ClassBrowserIcons\Icons.16x1
Icons.16x16.Field = ClassBrowserIcons\Icons.16x16.Field.png
Icons.16x16.Event = ClassBrowserIcons\Icons.16x16.Event.png
Icons.16x16.Local = ClassBrowserIcons\Icons.16x16.Local.png
Icons.16x16.Parameter = ClassBrowserIcons\Icons.16x16.Parameter.png
Icons.16x16.PrivateClass = ClassBrowserIcons\Icons.16x16.PrivateClass.png
Icons.16x16.PrivateStruct = ClassBrowserIcons\Icons.16x16.PrivateStruct.png
Icons.16x16.PrivateEnum = ClassBrowserIcons\Icons.16x16.PrivateEnum.png

BIN
data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Local.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

BIN
data/resources/image/BitmapResources/ClassBrowserIcons/Icons.16x16.Parameter.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs

@ -250,7 +250,7 @@ namespace ICSharpCode.Core @@ -250,7 +250,7 @@ namespace ICSharpCode.Core
}
if (ShowModifiers) {
if (field.IsStatic && field.IsLiteral) {
if (field.IsConst) {
builder.Append("const ");
} else if (field.IsStatic) {
builder.Append("static ");

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs

@ -273,7 +273,7 @@ namespace VBNetBinding @@ -273,7 +273,7 @@ namespace VBNetBinding
}
if (ShowModifiers) {
if (field.IsStatic && field.IsLiteral) {
if (field.IsConst) {
builder.Append("Const ");
} else if (field.IsStatic) {
builder.Append("Shared ");

29
src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs

@ -16,8 +16,9 @@ namespace ICSharpCode.NRefactory.Parser @@ -16,8 +16,9 @@ namespace ICSharpCode.NRefactory.Parser
public class LocalLookupVariable
{
TypeReference typeRef;
Point startPos;
Point endPos;
Point startPos;
Point endPos;
bool isConst;
public TypeReference TypeRef {
get {
@ -35,11 +36,18 @@ namespace ICSharpCode.NRefactory.Parser @@ -35,11 +36,18 @@ namespace ICSharpCode.NRefactory.Parser
}
}
public LocalLookupVariable(TypeReference typeRef, Point startPos, Point endPos)
public bool IsConst {
get {
return isConst;
}
}
public LocalLookupVariable(TypeReference typeRef, Point startPos, Point endPos, bool isConst)
{
this.typeRef = typeRef;
this.startPos = startPos;
this.endPos = endPos;
this.isConst = isConst;
}
}
@ -58,7 +66,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -58,7 +66,7 @@ namespace ICSharpCode.NRefactory.Parser
variables = new Dictionary<string, List<LocalLookupVariable>>(nameComparer);
}
public void AddVariable(TypeReference typeRef, string name, Point startPos, Point endPos)
public void AddVariable(TypeReference typeRef, string name, Point startPos, Point endPos, bool isConst)
{
if (name == null || name.Length == 0) {
return;
@ -69,7 +77,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -69,7 +77,7 @@ namespace ICSharpCode.NRefactory.Parser
} else {
list = (List<LocalLookupVariable>)variables[name];
}
list.Add(new LocalLookupVariable(typeRef, startPos, endPos));
list.Add(new LocalLookupVariable(typeRef, startPos, endPos, isConst));
}
// todo: move this method to a better place.
@ -105,7 +113,8 @@ namespace ICSharpCode.NRefactory.Parser @@ -105,7 +113,8 @@ namespace ICSharpCode.NRefactory.Parser
AddVariable(localVariableDeclaration.GetTypeForVariable(i),
varDecl.Name,
localVariableDeclaration.StartLocation,
CurrentBlock == null ? new Point(-1, -1) : CurrentBlock.EndLocation);
CurrentBlock == null ? new Point(-1, -1) : CurrentBlock.EndLocation,
(localVariableDeclaration.Modifier & Modifier.Const) == Modifier.Const);
}
return data;
}
@ -113,7 +122,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -113,7 +122,7 @@ namespace ICSharpCode.NRefactory.Parser
public override object Visit(AnonymousMethodExpression anonymousMethodExpression, object data)
{
foreach (ParameterDeclarationExpression p in anonymousMethodExpression.Parameters) {
AddVariable(p.TypeReference, p.ParameterName, anonymousMethodExpression.StartLocation, anonymousMethodExpression.EndLocation);
AddVariable(p.TypeReference, p.ParameterName, anonymousMethodExpression.StartLocation, anonymousMethodExpression.EndLocation, false);
}
return base.Visit(anonymousMethodExpression, data);
}
@ -126,7 +135,8 @@ namespace ICSharpCode.NRefactory.Parser @@ -126,7 +135,8 @@ namespace ICSharpCode.NRefactory.Parser
AddVariable(foreachStatement.TypeReference,
foreachStatement.VariableName,
foreachStatement.StartLocation,
foreachStatement.EndLocation);
foreachStatement.EndLocation,
false);
if (foreachStatement.Expression != null) {
foreachStatement.Expression.AcceptVisitor(this, data);
@ -154,7 +164,8 @@ namespace ICSharpCode.NRefactory.Parser @@ -154,7 +164,8 @@ namespace ICSharpCode.NRefactory.Parser
AddVariable(catchClause.TypeReference,
catchClause.VariableName,
catchClause.StatementBlock.StartLocation,
catchClause.StatementBlock.EndLocation);
catchClause.StatementBlock.EndLocation,
false);
}
catchClause.StatementBlock.AcceptVisitor(this, data);
}

4
src/Main/Base/Project/Src/Dom/IDecoration.cs

@ -83,10 +83,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -83,10 +83,6 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
bool IsLiteral {
get;
}
bool IsOverride {
get;
}

6
src/Main/Base/Project/Src/Dom/IField.cs

@ -12,6 +12,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -12,6 +12,10 @@ namespace ICSharpCode.SharpDevelop.Dom
{
public interface IField : IMember
{
/// <summary>Gets if this field is a local variable that has been converted into a field.</summary>
bool IsLocalVariable { get; }
/// <summary>Gets if this field is a parameter that has been converted into a field.</summary>
bool IsParameter { get; }
}
}

6
src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs

@ -150,12 +150,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -150,12 +150,6 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public bool IsLiteral {
get {
return (modifiers & ModifierEnum.Const) == ModifierEnum.Const;
}
}
public bool IsReadonly {
get {
return (modifiers & ModifierEnum.Readonly) == ModifierEnum.Readonly;

34
src/Main/Base/Project/Src/Dom/Implementations/DefaultField.cs

@ -54,5 +54,39 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -54,5 +54,39 @@ namespace ICSharpCode.SharpDevelop.Dom
{
return CompareTo((IField)value);
}
/// <summary>Gets if this field is a local variable that has been converted into a field.</summary>
public virtual bool IsLocalVariable {
get { return false; }
}
/// <summary>Gets if this field is a parameter that has been converted into a field.</summary>
public virtual bool IsParameter {
get { return false; }
}
public class LocalVariableField : DefaultField
{
public override bool IsLocalVariable {
get { return true; }
}
public LocalVariableField(IReturnType type, string name, DomRegion region, IClass callingClass)
: base(type, name, ModifierEnum.None, region, callingClass)
{
}
}
public class ParameterField : DefaultField
{
public override bool IsParameter {
get { return true; }
}
public ParameterField(IReturnType type, string name, DomRegion region, IClass callingClass)
: base(type, name, ModifierEnum.None, region, callingClass)
{
}
}
}
}

26
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -476,25 +476,33 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -476,25 +476,33 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return new MixedResolveResult(result, result2);
}
IField CreateLocalVariableField(LocalLookupVariable var, string identifier)
{
IReturnType type = GetVariableType(var);
IField f = new DefaultField.LocalVariableField(type, identifier, new DomRegion(var.StartPos, var.EndPos), callingClass);
if (var.IsConst) {
f.Modifiers |= ModifierEnum.Const;
}
return f;
}
ResolveResult ResolveIdentifierInternal(string identifier)
{
if (callingMember != null) { // LocalResolveResult requires callingMember to be set
LocalLookupVariable var = SearchVariable(identifier);
if (var != null) {
IReturnType type = GetVariableType(var);
IField field = new DefaultField(type, identifier, ModifierEnum.None, new DomRegion(var.StartPos, var.EndPos), callingClass);
return new LocalResolveResult(callingMember, field, false);
return new LocalResolveResult(callingMember, CreateLocalVariableField(var, identifier));
}
IParameter para = SearchMethodParameter(identifier);
if (para != null) {
IField field = new DefaultField(para.ReturnType, para.Name, ModifierEnum.None, para.Region, callingClass);
return new LocalResolveResult(callingMember, field, true);
IField field = new DefaultField.ParameterField(para.ReturnType, para.Name, para.Region, callingClass);
return new LocalResolveResult(callingMember, field);
}
if (IsSameName(identifier, "value")) {
IProperty property = callingMember as IProperty;
if (property != null && property.SetterRegion.IsInside(caretLine, caretColumn)) {
IField field = new DefaultField(property.ReturnType, "value", ModifierEnum.None, property.Region, callingClass);
return new LocalResolveResult(callingMember, field, true);
IField field = new DefaultField.ParameterField(property.ReturnType, "value", property.Region, callingClass);
return new LocalResolveResult(callingMember, field);
}
}
}
@ -899,7 +907,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -899,7 +907,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
IMethod method = callingMember as IMethod;
if (method != null) {
foreach (IParameter p in method.Parameters) {
result.Add(new DefaultField(p.ReturnType, p.Name, ModifierEnum.None, method.Region, callingClass));
result.Add(new DefaultField.ParameterField(p.ReturnType, p.Name, method.Region, callingClass));
}
}
@ -939,7 +947,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -939,7 +947,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
foreach (LocalLookupVariable v in pair.Value) {
if (IsInside(new Point(caretColumn, caretLine), v.StartPos, v.EndPos)) {
// convert to a field for display
result.Add(new DefaultField(TypeVisitor.CreateReturnType(v.TypeRef, this), pair.Key, ModifierEnum.None, new DomRegion(v.StartPos, v.EndPos), callingClass));
result.Add(CreateLocalVariableField(v, pair.Key));
break;
}
}

7
src/Main/Base/Project/Src/Dom/ResolveResult.cs

@ -169,7 +169,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -169,7 +169,7 @@ namespace ICSharpCode.SharpDevelop.Dom
IField field;
bool isParameter;
public LocalResolveResult(IMember callingMember, IField field, bool isParameter)
public LocalResolveResult(IMember callingMember, IField field)
: base(callingMember.DeclaringType, callingMember, field.ReturnType)
{
if (callingMember == null)
@ -177,7 +177,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -177,7 +177,10 @@ namespace ICSharpCode.SharpDevelop.Dom
if (field == null)
throw new ArgumentNullException("field");
this.field = field;
this.isParameter = isParameter;
this.isParameter = field.IsParameter;
if (!isParameter && !field.IsLocalVariable) {
throw new ArgumentException("the field must either be a local variable-field or a parameter-field");
}
}
/// <summary>

28
src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs

@ -23,13 +23,13 @@ namespace ICSharpCode.Core @@ -23,13 +23,13 @@ namespace ICSharpCode.Core
{
public const int NamespaceIndex = 3;
public const int CombineIndex = 14;
public const int LiteralIndex = 15;
public const int ConstIndex = 15;
public const int GotoArrowIndex = 13;
public const int LocalVariableIndex = FieldIndex + privateModifierOffset;
public const int ParameterIndex = FieldIndex + privateModifierOffset;
public const int LocalVariableIndex = 16;
public const int ParameterIndex = 17;
public const int ClassIndex = 16;
public const int ClassIndex = 18;
public const int StructIndex = ClassIndex + 1 * 4;
public const int InterfaceIndex = ClassIndex + 2 * 4;
public const int EnumIndex = ClassIndex + 3 * 4;
@ -95,10 +95,15 @@ namespace ICSharpCode.Core @@ -95,10 +95,15 @@ namespace ICSharpCode.Core
public static int GetIcon(IField field)
{
if (field.IsLiteral) {
return LiteralIndex;
if (field.IsConst) {
return ConstIndex;
} else if (field.IsParameter) {
return ParameterIndex;
} else if (field.IsLocalVariable) {
return LocalVariableIndex;
} else {
return FieldIndex + GetModifierOffset(field.Modifiers);
}
return FieldIndex + GetModifierOffset(field.Modifiers);
}
public static int GetIcon(IEvent evt)
@ -155,7 +160,7 @@ namespace ICSharpCode.Core @@ -155,7 +160,7 @@ namespace ICSharpCode.Core
public static int GetIcon(FieldInfo fieldinfo)
{
if (fieldinfo.IsLiteral) {
return LiteralIndex;
return ConstIndex;
}
if (fieldinfo.IsAssembly) {
@ -236,9 +241,12 @@ namespace ICSharpCode.Core @@ -236,9 +241,12 @@ namespace ICSharpCode.Core
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.SelectionArrow"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.CombineIcon"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Literal"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Literal")); // const
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Class")); //16
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Local"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Parameter"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Class")); //18
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.InternalClass"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.ProtectedClass"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.PrivateClass"));

BIN
src/Main/StartUp/Project/Resources/BitmapResources.resources

Binary file not shown.
Loading…
Cancel
Save