Browse Source

Using DragScroll viewer

pull/15/head
Eusebiu Marcu 15 years ago
parent
commit
124cd8e359
  1. 10
      src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/DrawSurface.xaml
  2. 49
      src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/DrawSurface.xaml.cs
  3. 4
      src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs
  4. 3
      src/AddIns/Debugger/Debugger.AddIn/Visualizers/Controls/DragScrollViewer.cs

10
src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/DrawSurface.xaml

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<UserControl <UserControl
x:Class="Debugger.AddIn.Pads.ParallelPad.DrawSurface" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Debugger.AddIn.Pads.ParallelPad" x:Class="Debugger.AddIn.Pads.ParallelPad.DrawSurface" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Debugger.AddIn.Pads.ParallelPad"
xmlns:visControls="clr-namespace:Debugger.AddIn.Visualizers.Controls"
Background="White"> Background="White">
<UserControl.Resources> <UserControl.Resources>
<LinearGradientBrush <LinearGradientBrush
@ -123,10 +124,9 @@
Click="Reset_Click" Click="Reset_Click"
Template="{StaticResource ButtonTemplate}" /> Template="{StaticResource ButtonTemplate}" />
</Canvas> </Canvas>
<ScrollViewer
x:Name="drawingSurface" <visControls:DragScrollViewer
HorizontalScrollBarVisibility="Auto" x:Name="drawingSurface"
VerticalScrollBarVisibility="Auto"
Grid.Column="1"> Grid.Column="1">
<Grid <Grid
x:Name="ContentControl" x:Name="ContentControl"
@ -142,6 +142,6 @@
OverlapRemovalConstraint="Automatic" OverlapRemovalConstraint="Automatic"
OverlapRemovalAlgorithmType="FSA" /> OverlapRemovalAlgorithmType="FSA" />
</Grid> </Grid>
</ScrollViewer> </visControls:DragScrollViewer>
</Grid> </Grid>
</UserControl> </UserControl>

49
src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/DrawSurface.xaml.cs

@ -14,7 +14,6 @@ namespace Debugger.AddIn.Pads.ParallelPad
{ {
public partial class DrawSurface : UserControl public partial class DrawSurface : UserControl
{ {
private Point dragStartedPoint;
private ScaleTransform zoom = new ScaleTransform(); private ScaleTransform zoom = new ScaleTransform();
public DrawSurface() public DrawSurface()
@ -22,9 +21,6 @@ namespace Debugger.AddIn.Pads.ParallelPad
InitializeComponent(); InitializeComponent();
ContentControl.LayoutTransform = zoom; ContentControl.LayoutTransform = zoom;
this.PreviewMouseLeftButtonDown += DrawSurface_PreviewMouseLeftButtonDown;
this.PreviewMouseLeftButtonUp += DrawSurface_MouseLeftButtonUp;
} }
public void SetGraph(ParallelStacksGraph graph) public void SetGraph(ParallelStacksGraph graph)
@ -46,51 +42,6 @@ namespace Debugger.AddIn.Pads.ParallelPad
ZoomControl.Visibility = Visibility.Hidden; ZoomControl.Visibility = Visibility.Hidden;
} }
} }
#region Pan
void DrawSurface_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.OriginalSource is TextBlock || e.OriginalSource is Shape || e.OriginalSource is ScrollChrome)
return;
dragStartedPoint = e.GetPosition(drawingSurface);
drawingSurface.CaptureMouse();
this.PreviewMouseMove += DrawSurface_PreviewMouseMove;
e.Handled = true;
}
void DrawSurface_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
drawingSurface.ReleaseMouseCapture();
if (e.OriginalSource is Shape || e.OriginalSource is TextBlock)
return;
this.PreviewMouseMove -= DrawSurface_PreviewMouseMove;
Cursor = Cursors.Arrow;
}
void DrawSurface_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (e.OriginalSource is TextBlock || e.OriginalSource is Shape || e.OriginalSource is ScrollChrome)
return;
if (!drawingSurface.IsMouseCaptured) return;
if (e.LeftButton == MouseButtonState.Pressed)
{
Cursor = Cursors.SizeAll;
var point = e.GetPosition(drawingSurface);
Vector v = point - dragStartedPoint;
ContentControl.Margin = new Thickness(
ContentControl.Margin.Left + v.X / 80,
ContentControl.Margin.Top + v.Y / 80, 0, 0);
e.Handled = true;
}
}
#endregion
#region Zoom #region Zoom

4
src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs

@ -75,7 +75,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
currentThreadStacks.Clear(); currentThreadStacks.Clear();
using(new PrintTimes("Parallel stack - create stacks refresh")) { using(new PrintTimes("Create stacks")) {
try { try {
// create all simple ThreadStacks // create all simple ThreadStacks
foreach (Thread thread in debuggedProcess.Threads) { foreach (Thread thread in debuggedProcess.Threads) {
@ -94,7 +94,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
} }
} }
} }
using(new PrintTimes("Parallel stack - run algorithm")) { using(new PrintTimes("Run algorithm")) {
if (isMethodView) if (isMethodView)
{ {
// build method view for threads // build method view for threads

3
src/AddIns/Debugger/Debugger.AddIn/Visualizers/Controls/DragScrollViewer.cs

@ -19,6 +19,9 @@ namespace Debugger.AddIn.Visualizers.Controls
public DragScrollViewer() : base() public DragScrollViewer() : base()
{ {
this.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
this.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
this.PreviewMouseDown += new System.Windows.Input.MouseButtonEventHandler(DragScrollViewer_PreviewMouseDown); this.PreviewMouseDown += new System.Windows.Input.MouseButtonEventHandler(DragScrollViewer_PreviewMouseDown);
this.PreviewMouseMove += new System.Windows.Input.MouseEventHandler(DragScrollViewer_PreviewMouseMove); this.PreviewMouseMove += new System.Windows.Input.MouseEventHandler(DragScrollViewer_PreviewMouseMove);
this.PreviewMouseUp += new System.Windows.Input.MouseButtonEventHandler(DragScrollViewer_PreviewMouseUp); this.PreviewMouseUp += new System.Windows.Input.MouseButtonEventHandler(DragScrollViewer_PreviewMouseUp);

Loading…
Cancel
Save