Пример #1
0
        public void Refresh()
        {
            // clear ListView
            listView.ItemsSource = null;
            ScrollViewer listViewScroller = listView.GetScrollViewer();

            if (listViewScroller != null)
            {
                listViewScroller.ScrollToVerticalOffset(0);
            }
            Value shownValue = null;

            ICSharpCode.NRefactory.Ast.Expression shownExpr = null;
            try     {
                shownExpr  = debuggerService.GetExpression(txtExpression.Text);
                shownValue = shownExpr.Evaluate(debuggerService.DebuggedProcess);
            } catch (GetValueException) {
                // display ex.Message
            }
            if (shownValue != null && !shownValue.IsNull)
            {
                GridValuesProvider gridValuesProvider;
                // Value is IList
                DebugType iListType, listItemType;
                if (shownValue.Type.ResolveIListImplementation(out iListType, out listItemType))
                {
                    gridValuesProvider = CreateListValuesProvider(shownExpr, iListType, listItemType);
                }
                else
                {
                    // Value is IEnumerable
                    DebugType iEnumerableType, itemType;
                    if (shownValue.Type.ResolveIEnumerableImplementation(out iEnumerableType, out itemType))
                    {
                        // original

                        /*var lazyListViewWrapper = new LazyItemsControl<ObjectValue>(this.listView, initialIEnumerableItemsCount);
                         * var enumerableValuesProvider = new EnumerableValuesProvider(val.ExpressionTree, iEnumerableType, itemType);
                         * lazyListViewWrapper.ItemsSource = new VirtualizingIEnumerable<ObjectValue>(enumerableValuesProvider.ItemsSource);
                         * gridValuesProvider = enumerableValuesProvider;*/
                        DebugType debugListType;
                        var       debugListExpression = DebuggerHelpers.CreateDebugListExpression(shownExpr, itemType, out debugListType);
                        gridValuesProvider = CreateListValuesProvider(debugListExpression, debugListType, itemType);
                    }
                    else
                    {
                        // Value cannot be displayed in GridVisualizer
                        return;
                    }
                }

                IList <MemberInfo> itemTypeMembers = gridValuesProvider.GetItemTypeMembers();
                InitializeColumns((GridView)this.listView.View, itemTypeMembers);
                this.columnHider       = new GridViewColumnHider((GridView)this.listView.View);
                cmbColumns.ItemsSource = this.columnHider.HideableColumns;
            }
        }
        public void Refresh()
        {
            try {
                // clear ListView
                listView.ItemsSource = null;
                ScrollViewer listViewScroller = listView.GetScrollViewer();
                if (listViewScroller != null)
                {
                    listViewScroller.ScrollToVerticalOffset(0);
                }
                Value shownValue = null;
                ICSharpCode.NRefactory.Ast.Expression shownExpr = null;
                try     {
                    shownExpr  = debuggerService.GetExpression(txtExpression.Text);
                    shownValue = shownExpr.Evaluate(debuggerService.DebuggedProcess);
                } catch (GetValueException e) {
                    MessageService.ShowMessage(e.Message);
                }
                if (shownValue != null && !shownValue.IsNull)
                {
                    GridValuesProvider gridValuesProvider;
                    // Value is IList
                    DebugType iListType, listItemType;
                    if (shownValue.Type.ResolveIListImplementation(out iListType, out listItemType))
                    {
                        gridValuesProvider = CreateListValuesProvider(shownExpr.CastToIList(), listItemType);
                    }
                    else
                    {
                        // Value is IEnumerable
                        DebugType iEnumerableType, itemType;
                        if (shownValue.Type.ResolveIEnumerableImplementation(out iEnumerableType, out itemType))
                        {
                            DebugType debugListType;
                            var       debugListExpression = DebuggerHelpers.CreateDebugListExpression(shownExpr, itemType, out debugListType);
                            gridValuesProvider = CreateListValuesProvider(debugListExpression, itemType);
                        }
                        else
                        {
                            // Not IList or IEnumerable<T> - can't be displayed in GridVisualizer
                            return;
                        }
                    }

                    IList <MemberInfo> itemTypeMembers = gridValuesProvider.GetItemTypeMembers();
                    InitializeColumns((GridView)this.listView.View, itemTypeMembers);
                    this.columnHider       = new GridViewColumnHider((GridView)this.listView.View);
                    cmbColumns.ItemsSource = this.columnHider.HideableColumns;
                }
            } catch (GetValueException e) {
                MessageService.ShowMessage(e.Message);
            } catch (DebuggerVisualizerException e) {
                MessageService.ShowMessage(e.Message);
            }
        }
		public void Refresh()
		{
			// clear ListView
			listView.ItemsSource = null;
			ScrollViewer listViewScroller = listView.GetScrollViewer();
			if (listViewScroller != null) {
				listViewScroller.ScrollToVerticalOffset(0);
			}
			Value shownValue = null;
			ICSharpCode.NRefactory.Ast.Expression shownExpr = null;
			try	{
				shownExpr = debuggerService.GetExpression(txtExpression.Text);
				shownValue = shownExpr.Evaluate(debuggerService.DebuggedProcess);
			} catch(GetValueException) {
				// display ex.Message
			}
			if (shownValue != null && !shownValue.IsNull) {
				GridValuesProvider gridValuesProvider;
				// Value is IList
				DebugType iListType, listItemType;
				if (shownValue.Type.ResolveIListImplementation(out iListType, out listItemType)) {
					gridValuesProvider = CreateListValuesProvider(shownExpr, iListType, listItemType);
				} else	{
					// Value is IEnumerable
					DebugType iEnumerableType, itemType;
					if (shownValue.Type.ResolveIEnumerableImplementation(out iEnumerableType, out itemType)) {
						// original
						/*var lazyListViewWrapper = new LazyItemsControl<ObjectValue>(this.listView, initialIEnumerableItemsCount);
						var enumerableValuesProvider = new EnumerableValuesProvider(val.ExpressionTree, iEnumerableType, itemType);
						lazyListViewWrapper.ItemsSource = new VirtualizingIEnumerable<ObjectValue>(enumerableValuesProvider.ItemsSource);
						gridValuesProvider = enumerableValuesProvider;*/
						DebugType debugListType;
						var debugListExpression = DebuggerHelpers.CreateDebugListExpression(shownExpr, itemType, out debugListType);
						gridValuesProvider = CreateListValuesProvider(debugListExpression, debugListType, itemType);
					} else	{
						// Value cannot be displayed in GridVisualizer
						return;
					}
				}
				
				IList<MemberInfo> itemTypeMembers = gridValuesProvider.GetItemTypeMembers();
				InitializeColumns((GridView)this.listView.View, itemTypeMembers);
				this.columnHider = new GridViewColumnHider((GridView)this.listView.View);
				cmbColumns.ItemsSource = this.columnHider.HideableColumns;
			}
		}
		public void Refresh()
		{
			try	{
				// clear ListView
				listView.ItemsSource = null;
				
				Value shownValue = getValue();
				
				ParameterizedType iListType, iEnumerableType;
				IType itemType;
				// Value is IList
				if (shownValue.Type.ResolveIListImplementation(out iListType, out itemType)) {
					// Ok
				} else {
					// Value is IEnumerable
					if (shownValue.Type.ResolveIEnumerableImplementation(out iEnumerableType, out itemType)) {
						shownValue = DebuggerHelpers.CreateListFromIEnumerable(shownValue);
						shownValue.Type.ResolveIListImplementation(out iListType, out itemType);
						//var ilistDef = iEnumerableType.Compilation.FindType(typeof(List<>)).GetDefinition();
			            //var ilistType = new ParameterizedType(ilistDef, ienumerableType.TypeArguments);
					} else	{
						// Not IList or IEnumerable<T> - can't be displayed in GridVisualizer
						return;
					}
				}
				shownValue = shownValue.GetPermanentReference(WindowsDebugger.EvalThread);
				
				var members = itemType.GetFieldsAndNonIndexedProperties().Where(m => m.IsPublic && !m.IsStatic).ToList();
				IProperty indexerProperty = iListType.GetProperties(p => p.Name == "Item").Single();
				int rowCount = (int)shownValue.GetPropertyValue(WindowsDebugger.EvalThread, iListType.GetProperties(p => p.Name == "Count").Single()).PrimitiveValue;
				int columnCount = members.Count + 1;
				
				var rowCollection = new VirtualizingCollection<VirtualizingCollection<string>>(
					rowCount,
					(rowIndex) => new VirtualizingCollection<string>(
						columnCount,
						(columnIndex) => {
							if (columnIndex == columnCount - 1) {
								return "[" + rowIndex + "]";
							}
							try {
								var rowValue = shownValue.GetPropertyValue(WindowsDebugger.EvalThread, indexerProperty, Eval.CreateValue(WindowsDebugger.EvalThread, rowIndex));
								return rowValue.GetMemberValue(WindowsDebugger.EvalThread, members[columnIndex]).InvokeToString(WindowsDebugger.EvalThread);
							} catch (GetValueException e) {
								return "Exception: " + e.Message;
							}
						}
					)
				);
				this.listView.ItemsSource = rowCollection;
				
				InitializeColumns((GridView)this.listView.View, members);
				
				GridViewColumnHider columnHider = new GridViewColumnHider((GridView)this.listView.View);
				cmbColumns.ItemsSource = columnHider.HideableColumns;
				
			} catch(GetValueException e) {
				MessageService.ShowMessage(e.Message);
			}
		}
Пример #5
0
        public void Refresh()
        {
            try     {
                // clear ListView
                listView.ItemsSource = null;

                Value shownValue = getValue();

                ParameterizedType iListType, iEnumerableType;
                IType             itemType;
                // Value is IList
                if (shownValue.Type.ResolveIListImplementation(out iListType, out itemType))
                {
                    // Ok
                }
                else
                {
                    // Value is IEnumerable
                    if (shownValue.Type.ResolveIEnumerableImplementation(out iEnumerableType, out itemType))
                    {
                        shownValue = DebuggerHelpers.CreateListFromIEnumerable(shownValue);
                        shownValue.Type.ResolveIListImplementation(out iListType, out itemType);
                        //var ilistDef = iEnumerableType.Compilation.FindType(typeof(List<>)).GetDefinition();
                        //var ilistType = new ParameterizedType(ilistDef, ienumerableType.TypeArguments);
                    }
                    else
                    {
                        // Not IList or IEnumerable<T> - can't be displayed in GridVisualizer
                        return;
                    }
                }
                shownValue = shownValue.GetPermanentReference(WindowsDebugger.EvalThread);

                var       members         = itemType.GetFieldsAndNonIndexedProperties().Where(m => m.IsPublic && !m.IsStatic).ToList();
                IProperty indexerProperty = iListType.GetProperties(p => p.Name == "Item").Single();
                int       rowCount        = (int)shownValue.GetPropertyValue(WindowsDebugger.EvalThread, iListType.GetProperties(p => p.Name == "Count").Single()).PrimitiveValue;
                int       columnCount     = members.Count + 1;

                var rowCollection = new VirtualizingCollection <VirtualizingCollection <string> >(
                    rowCount,
                    (rowIndex) => new VirtualizingCollection <string>(
                        columnCount,
                        (columnIndex) => {
                    if (columnIndex == columnCount - 1)
                    {
                        return("[" + rowIndex + "]");
                    }
                    try {
                        var rowValue = shownValue.GetPropertyValue(WindowsDebugger.EvalThread, indexerProperty, Eval.CreateValue(WindowsDebugger.EvalThread, rowIndex));
                        return(rowValue.GetMemberValue(WindowsDebugger.EvalThread, members[columnIndex]).InvokeToString(WindowsDebugger.EvalThread));
                    } catch (GetValueException e) {
                        return("Exception: " + e.Message);
                    }
                }
                        )
                    );
                this.listView.ItemsSource = rowCollection;

                InitializeColumns((GridView)this.listView.View, members);

                GridViewColumnHider columnHider = new GridViewColumnHider((GridView)this.listView.View);
                cmbColumns.ItemsSource = columnHider.HideableColumns;
            } catch (GetValueException e) {
                MessageService.ShowMessage(e.Message);
            }
        }
		public void Refresh()
		{
			try {
				// clear ListView
				listView.ItemsSource = null;
				ScrollViewer listViewScroller = listView.GetScrollViewer();
				if (listViewScroller != null) {
					listViewScroller.ScrollToVerticalOffset(0);
				}
				Value shownValue = null;
				ICSharpCode.NRefactory.Ast.Expression shownExpr = null;
				try	{
					shownExpr = debuggerService.GetExpression(txtExpression.Text);
					shownValue = shownExpr.Evaluate(debuggerService.DebuggedProcess);
				} catch(GetValueException e) {
					MessageService.ShowMessage(e.Message);
				}
				if (shownValue != null && !shownValue.IsNull) {
					GridValuesProvider gridValuesProvider;
					// Value is IList
					DebugType iListType, listItemType;
					if (shownValue.Type.ResolveIListImplementation(out iListType, out listItemType)) {
						gridValuesProvider = CreateListValuesProvider(shownExpr.CastToIList(), listItemType);
					} else	{
						// Value is IEnumerable
						DebugType iEnumerableType, itemType;
						if (shownValue.Type.ResolveIEnumerableImplementation(out iEnumerableType, out itemType)) {
							DebugType debugListType;
							var debugListExpression = DebuggerHelpers.CreateDebugListExpression(shownExpr, itemType, out debugListType);
							gridValuesProvider = CreateListValuesProvider(debugListExpression, itemType);
						} else	{
							// Not IList or IEnumerable<T> - can't be displayed in GridVisualizer
							return;
						}
					}
					
					IList<MemberInfo> itemTypeMembers = gridValuesProvider.GetItemTypeMembers();
					InitializeColumns((GridView)this.listView.View, itemTypeMembers);
					this.columnHider = new GridViewColumnHider((GridView)this.listView.View);
					cmbColumns.ItemsSource = this.columnHider.HideableColumns;
				}
			} catch (GetValueException e) {
				MessageService.ShowMessage(e.Message);
			} catch (DebuggerVisualizerException e) {
				MessageService.ShowMessage(e.Message);
			}
		}