Browse Source

Added Xml visualizer with highlighting using AvalonEdit, no indentation and folding yet.

Text visualizer uses AvalonEdit.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4841 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Martin Koníček 17 years ago
parent
commit
f5cb2b34ba
  1. 4
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj
  2. 4
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/ExpressionVisualizerCommand.cs
  3. 4
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/GridVisualizerCommand.cs
  4. 2
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/ObjectGraphVisualizerCommand.cs
  5. 3
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/TextVisualizerCommand.cs
  6. 5
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/VisualizerDescriptors.cs
  7. 62
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/XmlVisualizerCommand.cs
  8. 15
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/TextVisualizer/TextVisualizerMode.cs
  9. 15
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/TextVisualizer/TextVisualizerWindow.xaml
  10. 30
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/TextVisualizer/TextVisualizerWindow.xaml.cs

4
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj

@ -133,7 +133,7 @@ @@ -133,7 +133,7 @@
</Compile>
<Compile Include="Src\TreeModel\DebuggerResourceService.cs" />
<Compile Include="Src\TreeModel\IEnumerableNode.cs" />
<Compile Include="Src\Visualizers\Commands\ExpressionNodeVisualizerCommand.cs" />
<Compile Include="Src\Visualizers\Commands\ExpressionVisualizerCommand.cs" />
<Compile Include="Src\Visualizers\Commands\GridVisualizerCommand.cs" />
<Compile Include="Src\Visualizers\Commands\IVisualizerCommandDescriptor.cs" />
<Compile Include="Src\Visualizers\Commands\ObjectGraphVisualizerCommand.cs" />
@ -141,6 +141,7 @@ @@ -141,6 +141,7 @@
<Compile Include="Src\Visualizers\Commands\ObjectGraphVisualizerMenuCommand.cs" />
<Compile Include="Src\Visualizers\Commands\TextVisualizerCommand.cs" />
<Compile Include="Src\Visualizers\Commands\VisualizerDescriptors.cs" />
<Compile Include="Src\Visualizers\Commands\XmlVisualizerCommand.cs" />
<Compile Include="Src\Visualizers\Common\DebuggerVisualizerException.cs" />
<Compile Include="Src\Visualizers\Common\IEvaluate.cs" />
<Compile Include="Src\Visualizers\Common\IListValuesProvider.cs" />
@ -175,6 +176,7 @@ @@ -175,6 +176,7 @@
<Compile Include="Src\Visualizers\PresentationBindings\GridViewHideableColumn.cs" />
<Compile Include="Src\Visualizers\PresentationBindings\ScrollUtils.cs" />
<Compile Include="Src\Visualizers\PresentationBindings\TooltipVisibilityConverter.cs" />
<Compile Include="Src\Visualizers\TextVisualizer\TextVisualizerMode.cs" />
<Compile Include="Src\Visualizers\TextVisualizer\TextVisualizerWindow.xaml.cs">
<DependentUpon>TextVisualizerWindow.xaml</DependentUpon>
<SubType>Code</SubType>

4
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/ExpressionNodeVisualizerCommand.cs → src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/ExpressionVisualizerCommand.cs

@ -17,11 +17,11 @@ namespace Debugger.AddIn.Visualizers @@ -17,11 +17,11 @@ namespace Debugger.AddIn.Visualizers
/// Visualizer command for <see cref="ExpressionNode"/>
/// </summary>
// should we make visualizer command available for Expression, or any TreeNode?
public abstract class ExpressionNodeVisualizerCommand : IVisualizerCommand
public abstract class ExpressionVisualizerCommand : IVisualizerCommand
{
public Expression Expression { get; private set; }
public ExpressionNodeVisualizerCommand(Expression expression)
public ExpressionVisualizerCommand(Expression expression)
{
this.Expression = expression;
}

4
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/GridVisualizerCommand.cs

@ -21,7 +21,7 @@ namespace Debugger.AddIn.Visualizers @@ -21,7 +21,7 @@ namespace Debugger.AddIn.Visualizers
public bool IsVisualizerAvailable(DebugType type)
{
DebugType collectionType, itemType;
// Visualizer available for IEnumerable<T>
// Visualizer available for IEnumerable<T> (that means also IList<T>)
return type.ResolveIEnumerableImplementation(out collectionType, out itemType);
}
@ -34,7 +34,7 @@ namespace Debugger.AddIn.Visualizers @@ -34,7 +34,7 @@ namespace Debugger.AddIn.Visualizers
/// <summary>
/// Shows grid visualizer for a node.
/// </summary>
public class GridVisualizerCommand : ExpressionNodeVisualizerCommand
public class GridVisualizerCommand : ExpressionVisualizerCommand
{
public GridVisualizerCommand(Expression expression)
:base(expression)

2
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/ObjectGraphVisualizerCommand.cs

@ -33,7 +33,7 @@ namespace Debugger.AddIn.Visualizers @@ -33,7 +33,7 @@ namespace Debugger.AddIn.Visualizers
/// <summary>
/// Shows object graph visualizer for a node.
/// </summary>
public class ObjectGraphVisualizerCommand : ExpressionNodeVisualizerCommand
public class ObjectGraphVisualizerCommand : ExpressionVisualizerCommand
{
public ObjectGraphVisualizerCommand(Expression expression)
:base(expression)

3
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/TextVisualizerCommand.cs

@ -32,7 +32,7 @@ namespace Debugger.AddIn.Visualizers @@ -32,7 +32,7 @@ namespace Debugger.AddIn.Visualizers
/// <summary>
/// Description of TextVisualizerCommand.
/// </summary>
public class TextVisualizerCommand : ExpressionNodeVisualizerCommand
public class TextVisualizerCommand : ExpressionVisualizerCommand
{
public TextVisualizerCommand(Expression expression)
:base(expression)
@ -54,6 +54,7 @@ namespace Debugger.AddIn.Visualizers @@ -54,6 +54,7 @@ namespace Debugger.AddIn.Visualizers
{
var textVisualizerWindow = new TextVisualizerWindow(
this.Expression.PrettyPrint(), this.Expression.Evaluate(WindowsDebugger.CurrentProcess).InvokeToString());
textVisualizerWindow.Mode = TextVisualizerMode.PlainText;
textVisualizerWindow.ShowDialog();
}
}

5
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/VisualizerDescriptors.cs

@ -18,10 +18,11 @@ namespace Debugger.AddIn.Visualizers @@ -18,10 +18,11 @@ namespace Debugger.AddIn.Visualizers
{
static ReadOnlyCollection<IVisualizerDescriptor> allDescriptors;
static IEnumerable<IVisualizerDescriptor> createAllDescriptors()
static IEnumerable<IVisualizerDescriptor> CreateAllDescriptors()
{
// these should be obtained from AddIn tree so that it is possible to write add-in for Debugger.AddIn with new visualizers
yield return new TextVisualizerDescriptor();
yield return new XmlVisualizerDescriptor();
yield return new ObjectGraphVisualizerDescriptor();
yield return new GridVisualizerDescriptor();
}
@ -29,7 +30,7 @@ namespace Debugger.AddIn.Visualizers @@ -29,7 +30,7 @@ namespace Debugger.AddIn.Visualizers
public static ReadOnlyCollection<IVisualizerDescriptor> GetAllDescriptors()
{
if (allDescriptors == null) {
allDescriptors = new List<IVisualizerDescriptor>(createAllDescriptors()).AsReadOnly();
allDescriptors = new List<IVisualizerDescriptor>(CreateAllDescriptors()).AsReadOnly();
}
return allDescriptors;
}

62
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Commands/XmlVisualizerCommand.cs

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Martin Koníček" email="martin.konicek@gmail.com"/>
// <version>$Revision$</version>
// </file>
using Debugger.MetaData;
using System;
using System.Collections.Generic;
using System.Linq;
using Debugger.AddIn.TreeModel;
using Debugger.AddIn.Visualizers.TextVisualizer;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Services;
namespace Debugger.AddIn.Visualizers
{
public class XmlVisualizerDescriptor : IVisualizerDescriptor
{
public bool IsVisualizerAvailable(DebugType type)
{
return type.IsString;
}
public IVisualizerCommand CreateVisualizerCommand(Expression expression)
{
return new XmlVisualizerCommand(expression);
}
}
/// <summary>
/// Description of TextVisualizerCommand.
/// </summary>
public class XmlVisualizerCommand : ExpressionVisualizerCommand
{
public XmlVisualizerCommand(Expression expression)
:base(expression)
{
}
public override bool CanExecute {
get { return true; }
}
public override string ToString()
{
return "Xml visualizer";
}
public override void Execute()
{
if (this.Expression != null)
{
var textVisualizerWindow = new TextVisualizerWindow(
this.Expression.PrettyPrint(), this.Expression.Evaluate(WindowsDebugger.CurrentProcess).InvokeToString());
textVisualizerWindow.Mode = TextVisualizerMode.Xml;
textVisualizerWindow.ShowDialog();
}
}
}
}

15
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/TextVisualizer/TextVisualizerMode.cs

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Martin Koníček" email="martin.konicek@gmail.com"/>
// <version>$Revision$</version>
// </file>
using System.Collections.Generic;
using System.Linq;
using System;
public enum TextVisualizerMode
{
PlainText,
Xml
}

15
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/TextVisualizer/TextVisualizerWindow.xaml

@ -1,6 +1,9 @@ @@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Window
x:Class="Debugger.AddIn.Visualizers.TextVisualizer.TextVisualizerWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Debugger.AddIn.Visualizers.TextVisualizer.TextVisualizerWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:AvalonEdit="http://icsharpcode.net/sharpdevelop/avalonedit"
Title="Text visualizer"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterScreen"
@ -36,14 +39,12 @@ @@ -36,14 +39,12 @@
<Border
Margin="0"
Padding="2">
<TextBox
<AvalonEdit:TextEditor
x:Name="textEditor"
Background="White"
IsReadOnly="True"
Name="txtText"
Width="Auto"
Height="Auto"
IsReadOnly="true"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"></TextBox>
ScrollViewer.VerticalScrollBarVisibility="Auto"></AvalonEdit:TextEditor>
</Border>
</DockPanel>
</Window>

30
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/TextVisualizer/TextVisualizerWindow.xaml.cs

@ -4,9 +4,10 @@ @@ -4,9 +4,10 @@
// <owner name="Martin Koníček" email="martin.konicek@gmail.com"/>
// <version>$Revision$</version>
// </file>
using System.Linq;
using ICSharpCode.AvalonEdit.Highlighting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
@ -25,6 +26,8 @@ namespace Debugger.AddIn.Visualizers.TextVisualizer @@ -25,6 +26,8 @@ namespace Debugger.AddIn.Visualizers.TextVisualizer
public TextVisualizerWindow()
{
InitializeComponent();
Mode = TextVisualizerMode.PlainText;
textEditor.IsReadOnly = true;
}
public TextVisualizerWindow(string title, string text)
@ -37,18 +40,35 @@ namespace Debugger.AddIn.Visualizers.TextVisualizer @@ -37,18 +40,35 @@ namespace Debugger.AddIn.Visualizers.TextVisualizer
public string Text
{
get { return this.txtText.Text; }
set { this.txtText.Text = value; }
get { return this.textEditor.Text; }
set { this.textEditor.Text = value; }
}
private TextVisualizerMode mode;
public TextVisualizerMode Mode
{
get { return mode; }
set {
mode = value;
switch (mode) {
case TextVisualizerMode.PlainText:
textEditor.SyntaxHighlighting = null;
break;
case TextVisualizerMode.Xml:
textEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinitionByExtension(".xml");
break;
}
}
}
void CheckBox_CheckedChanged(object sender, RoutedEventArgs e)
{
txtText.TextWrapping = chbWrap.IsChecked.GetValueOrDefault(false) ? TextWrapping.Wrap : TextWrapping.NoWrap;
textEditor.WordWrap = chbWrap.IsChecked.GetValueOrDefault(false);
}
void BtnCopy_Click(object sender, RoutedEventArgs e)
{
Clipboard.SetText(txtText.Text);
Clipboard.SetText(textEditor.Text);
}
void BtnClose_Click(object sender, RoutedEventArgs e)

Loading…
Cancel
Save