You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.0 KiB
94 lines
2.0 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) |
|
|
|
using System; |
|
using System.ComponentModel; |
|
using System.Linq; |
|
|
|
using ICSharpCode.NRefactory.TypeSystem; |
|
using ICSharpCode.SharpDevelop; |
|
|
|
namespace CSharpBinding.Refactoring |
|
{ |
|
public class FieldWrapper : INotifyPropertyChanged |
|
{ |
|
/// <summary> |
|
/// Underlying member. Always IField or IProperty. |
|
/// </summary> |
|
readonly IField field; |
|
private string text; |
|
|
|
public IField Field { |
|
get { return field; } |
|
} |
|
|
|
public FieldWrapper(IField member) |
|
{ |
|
if (member == null) |
|
throw new ArgumentNullException("member"); |
|
|
|
this.field = member; |
|
addSetter = true; |
|
|
|
IAmbience ambience = AmbienceService.GetCurrentAmbience(); |
|
ambience.ConversionFlags |= |
|
ConversionFlags.ShowReturnType |
|
| ConversionFlags.ShowModifiers |
|
| ConversionFlags.ShowAccessibility; |
|
this.text = ambience.ConvertEntity(member); |
|
} |
|
|
|
public string MemberName { |
|
get { return field.Name; } |
|
} |
|
|
|
string propertyName; |
|
public string PropertyName { |
|
get { |
|
if (propertyName == null) |
|
propertyName = ToPropertyName(this.MemberName); |
|
return propertyName; |
|
} |
|
} |
|
|
|
public IType Type { |
|
get { return field.ReturnType; } |
|
} |
|
|
|
public int Index { get; set; } |
|
|
|
public string Text { |
|
get { return text; } |
|
} |
|
|
|
bool addSetter; |
|
public bool AddSetter { |
|
get { return addSetter; } |
|
set { |
|
addSetter = value; |
|
} |
|
} |
|
|
|
public bool IsSetable { |
|
get { |
|
return !field.IsReadOnly && !field.IsConst; |
|
} |
|
} |
|
|
|
static string ToPropertyName(string memberName) |
|
{ |
|
if (string.IsNullOrEmpty(memberName)) |
|
return memberName; |
|
return char.ToUpper(memberName[0]) + memberName.Substring(1); |
|
} |
|
|
|
public event PropertyChangedEventHandler PropertyChanged; |
|
|
|
protected virtual void OnPropertyChanged(string property) |
|
{ |
|
if (PropertyChanged != null) { |
|
PropertyChanged(this, new PropertyChangedEventArgs(property)); |
|
} |
|
} |
|
} |
|
}
|
|
|