Browse Source

Better comments.

pull/15/head
mkonicek 15 years ago
parent
commit
a0f2391f24
  1. 10
      src/AddIns/Debugger/Debugger.AddIn/TreeModel/ChildNodesOfObject.cs
  2. 15
      src/AddIns/Debugger/Debugger.AddIn/Visualizers/GridVisualizer/GridVisualizerWindow.xaml.cs
  3. 11
      src/AddIns/Debugger/Debugger.AddIn/Visualizers/GridVisualizer/ObjectValue.cs

10
src/AddIns/Debugger/Debugger.AddIn/TreeModel/ChildNodesOfObject.cs

@ -98,7 +98,9 @@ namespace Debugger.AddIn.TreeModel
public static IEnumerable<TreeNode> LazyGetItemsOfIList(Expression targetObject) public static IEnumerable<TreeNode> LazyGetItemsOfIList(Expression targetObject)
{ {
// This is needed for expanding IEnumerable<T> // Add a cast, so that we are sure the expression has an indexer.
// (The expression can be e.g. of type 'object' but its value is a List.
// Without the cast, evaluating "expr[i]" would fail, because object does not have an indexer).
targetObject = new CastExpression( targetObject = new CastExpression(
new TypeReference(typeof(IList).FullName), new TypeReference(typeof(IList).FullName),
targetObject, targetObject,
@ -120,9 +122,9 @@ namespace Debugger.AddIn.TreeModel
for(int i = 0; i < count; i++) { for(int i = 0; i < count; i++) {
string imageName; string imageName;
var image = ExpressionNode.GetImageForArrayIndexer(out imageName); var image = ExpressionNode.GetImageForArrayIndexer(out imageName);
var expression = new ExpressionNode(image, "[" + i + "]", targetObject.AppendIndexer(i)); var itemNode = new ExpressionNode(image, "[" + i + "]", targetObject.AppendIndexer(i));
expression.ImageName = imageName; itemNode.ImageName = imageName;
yield return expression; yield return itemNode;
} }
} }
} }

15
src/AddIns/Debugger/Debugger.AddIn/Visualizers/GridVisualizer/GridVisualizerWindow.xaml.cs

@ -105,6 +105,7 @@ namespace Debugger.AddIn.Visualizers.GridVisualizer
public void Refresh() public void Refresh()
{ {
try {
// clear ListView // clear ListView
listView.ItemsSource = null; listView.ItemsSource = null;
ScrollViewer listViewScroller = listView.GetScrollViewer(); ScrollViewer listViewScroller = listView.GetScrollViewer();
@ -124,7 +125,7 @@ namespace Debugger.AddIn.Visualizers.GridVisualizer
// Value is IList // Value is IList
DebugType iListType, listItemType; DebugType iListType, listItemType;
if (shownValue.Type.ResolveIListImplementation(out iListType, out listItemType)) { if (shownValue.Type.ResolveIListImplementation(out iListType, out listItemType)) {
gridValuesProvider = CreateListValuesProvider(shownExpr, iListType, listItemType); gridValuesProvider = CreateListValuesProvider(shownValue, iListType, listItemType);
} else { } else {
// Value is IEnumerable // Value is IEnumerable
DebugType iEnumerableType, itemType; DebugType iEnumerableType, itemType;
@ -136,7 +137,8 @@ namespace Debugger.AddIn.Visualizers.GridVisualizer
gridValuesProvider = enumerableValuesProvider;*/ gridValuesProvider = enumerableValuesProvider;*/
DebugType debugListType; DebugType debugListType;
var debugListExpression = DebuggerHelpers.CreateDebugListExpression(shownExpr, itemType, out debugListType); var debugListExpression = DebuggerHelpers.CreateDebugListExpression(shownExpr, itemType, out debugListType);
gridValuesProvider = CreateListValuesProvider(debugListExpression, debugListType, itemType); var debugList = debugListExpression.Evaluate(WindowsDebugger.CurrentProcess);
gridValuesProvider = CreateListValuesProvider(debugList, debugListType, itemType);
} else { } else {
// Value cannot be displayed in GridVisualizer // Value cannot be displayed in GridVisualizer
return; return;
@ -148,11 +150,16 @@ namespace Debugger.AddIn.Visualizers.GridVisualizer
this.columnHider = new GridViewColumnHider((GridView)this.listView.View); this.columnHider = new GridViewColumnHider((GridView)this.listView.View);
cmbColumns.ItemsSource = this.columnHider.HideableColumns; cmbColumns.ItemsSource = this.columnHider.HideableColumns;
} }
} catch (GetValueException ex) {
// TODO display ex msg
} catch (DebuggerVisualizerException ex) {
// TODO display ex msg
}
} }
ListValuesProvider CreateListValuesProvider(ICSharpCode.NRefactory.Ast.Expression targetObject, DebugType iListType, DebugType listItemType) ListValuesProvider CreateListValuesProvider(Value targetValue, DebugType iListType, DebugType listItemType)
{ {
var listValuesProvider = new ListValuesProvider(targetObject, iListType, listItemType); var listValuesProvider = new ListValuesProvider(targetValue, listItemType);
var virtCollection = new VirtualizingCollection<ObjectValue>(listValuesProvider); var virtCollection = new VirtualizingCollection<ObjectValue>(listValuesProvider);
this.listView.ItemsSource = virtCollection; this.listView.ItemsSource = virtCollection;
return listValuesProvider; return listValuesProvider;

11
src/AddIns/Debugger/Debugger.AddIn/Visualizers/GridVisualizer/ObjectValue.cs

@ -16,14 +16,10 @@ namespace Debugger.AddIn.Visualizers.GridVisualizer
/// </summary> /// </summary>
public class ObjectValue public class ObjectValue
{ {
private int index;
/// <summary> Index of this item in the collection. </summary> /// <summary> Index of this item in the collection. </summary>
public int Index { public int Index { get; private set; }
get { return index; }
}
// PermanentReference to one row. Even if we used expressions, they are cached using PermanentReferences, so // PermanentReference for one row.
// one PermanentReference for a row would be created anyway
public Value PermanentReference { get; private set; } public Value PermanentReference { get; private set; }
private Dictionary<string, ObjectProperty> properties = new Dictionary<string, ObjectProperty>(); private Dictionary<string, ObjectProperty> properties = new Dictionary<string, ObjectProperty>();
@ -33,7 +29,7 @@ namespace Debugger.AddIn.Visualizers.GridVisualizer
internal ObjectValue(int index, Dictionary<string, MemberInfo> memberFromNameMap) internal ObjectValue(int index, Dictionary<string, MemberInfo> memberFromNameMap)
{ {
this.index = index; this.Index = index;
this.memberForNameMap = memberFromNameMap; this.memberForNameMap = memberFromNameMap;
} }
@ -60,7 +56,6 @@ namespace Debugger.AddIn.Visualizers.GridVisualizer
} }
return property; return property;
} }
//set { properties[key] = value; }
} }
public static ObjectValue Create(Debugger.Value value, int index, Dictionary<string, MemberInfo> memberFromName) public static ObjectValue Create(Debugger.Value value, int index, Dictionary<string, MemberInfo> memberFromName)

Loading…
Cancel
Save