Browse Source

Improvements and bug fixes in Profiler.AddIn GUI

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3917 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Siegfried Pammer 16 years ago
parent
commit
9d8455bb06
  1. 22
      src/AddIns/Misc/Profiler/Frontend/Controls/CallTreeNodeViewModel.cs
  2. 6
      src/AddIns/Misc/Profiler/Frontend/Controls/PercentBar.cs
  3. 4
      src/AddIns/Misc/Profiler/Frontend/Controls/QueryView.xaml
  4. 10
      src/AddIns/Misc/Profiler/Frontend/Controls/QueryView.xaml.cs
  5. 15
      src/AddIns/Misc/Profiler/Frontend/Controls/RingDiagramControl.cs

22
src/AddIns/Misc/Profiler/Frontend/Controls/CallTreeNodeViewModel.cs

@ -43,6 +43,14 @@ namespace ICSharpCode.Profiler.Controls @@ -43,6 +43,14 @@ namespace ICSharpCode.Profiler.Controls
public CallTreeNode Node { get { return node; } }
public event EventHandler<NodeEventArgs<CallTreeNodeViewModel>> VisibleChildExpandedChanged;
public event EventHandler<NodeEventArgs<CallTreeNodeViewModel>> RequestBringIntoView;
protected virtual void OnRequestBringIntoView(NodeEventArgs<CallTreeNodeViewModel> e)
{
if (RequestBringIntoView != null) {
RequestBringIntoView(this, e);
}
}
protected virtual void OnVisibleChildExpandedChanged(NodeEventArgs<CallTreeNodeViewModel> e)
{
@ -51,6 +59,20 @@ namespace ICSharpCode.Profiler.Controls @@ -51,6 +59,20 @@ namespace ICSharpCode.Profiler.Controls
}
}
public void BringIntoView()
{
BringIntoView(this);
}
void BringIntoView(CallTreeNodeViewModel item)
{
if (this.parent != null) {
parent.BringIntoView(item);
return;
}
OnRequestBringIntoView(new NodeEventArgs<CallTreeNodeViewModel>(item));
}
public int Level
{
get { return level; }

6
src/AddIns/Misc/Profiler/Frontend/Controls/PercentBar.cs

@ -21,8 +21,10 @@ namespace ICSharpCode.Profiler.Controls @@ -21,8 +21,10 @@ namespace ICSharpCode.Profiler.Controls
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
drawingContext.DrawRectangle(new LinearGradientBrush(Colors.Red, Colors.Orange, 0), new Pen(Brushes.Black, 1), new Rect(new Point(0, 2), new Size(this.RenderSize.Width * this.Value, this.RenderSize.Height - 4)));
if (this.RenderSize.Height > 0 && this.RenderSize.Width > 0) {
drawingContext.DrawRectangle(new LinearGradientBrush(Colors.Red, Colors.Orange, 0), new Pen(Brushes.Black, 1), new Rect(new Point(0, 2), new Size(this.RenderSize.Width * this.Value, this.RenderSize.Height - 4)));
}
}
public static readonly DependencyProperty ValueProperty =

4
src/AddIns/Misc/Profiler/Frontend/Controls/QueryView.xaml

@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75*" />
<ColumnDefinition Width="75*" MinWidth="260" />
<ColumnDefinition Width="25*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
@ -71,7 +71,7 @@ @@ -71,7 +71,7 @@
<local:TreeListView x:Name="treeView" Grid.Row="2" SelectionMode="Extended">
<ListView.View>
<local:CustomGridView>
<GridViewColumn Header="Name" Width="210" x:Name="nameColumn">
<GridViewColumn Header="Name" Width="240" x:Name="nameColumn">
<GridViewColumn.CellTemplate>
<DataTemplate>
<local:CustomGridViewScrollableCell CurrentScrollPosition="{Binding ElementName=treeView, Path=View.CurrentScrollPosition}">

10
src/AddIns/Misc/Profiler/Frontend/Controls/QueryView.xaml.cs

@ -91,7 +91,7 @@ namespace ICSharpCode.Profiler.Controls @@ -91,7 +91,7 @@ namespace ICSharpCode.Profiler.Controls
this.DataContext = this;
this.task = new SingleTask(this.Dispatcher);
this.treeView.SizeChanged += delegate(object sender, SizeChangedEventArgs e) {
if (e.PreviousSize.Width > 0 && e.NewSize.Width > 0) {
if (e.NewSize.Width > 0 && e.PreviousSize.Width > 0 && (nameColumn.Width + (e.NewSize.Width - e.PreviousSize.Width)) > 0) {
nameColumn.Width += (e.NewSize.Width - e.PreviousSize.Width);
}
};
@ -173,8 +173,14 @@ namespace ICSharpCode.Profiler.Controls @@ -173,8 +173,14 @@ namespace ICSharpCode.Profiler.Controls
{
layer.Remove(ad);
treeView.ItemsSource = this.list = list;
if (list != null && list.Count > 0)
if (list != null && list.Count > 0) {
ringDiagram.SelectedRoot = this.list[0];
foreach (var item in list) {
var currentItem = item;
currentItem.RequestBringIntoView += (sender, e) => this.treeView.ScrollIntoView(e.Node);
}
}
}
public string CurrentQuery {

15
src/AddIns/Misc/Profiler/Frontend/Controls/RingDiagramControl.cs

@ -51,8 +51,11 @@ namespace ICSharpCode.Profiler.Controls @@ -51,8 +51,11 @@ namespace ICSharpCode.Profiler.Controls
this.task.Cancel();
while (this.hierarchyStack.Count > 0 && !hierarchyStack.Peek().IsAncestorOf(item))
Debug.WriteLine("hierarchyStack count: " + this.hierarchyStack.Count);
while (this.hierarchyStack.Count > 0 && !hierarchyStack.Peek().IsAncestorOf(item)) {
this.hierarchyStack.Pop();
}
Debug.Assert(hierarchyStack.Count == 0 || hierarchyStack.Peek().IsAncestorOf(item));
@ -75,8 +78,11 @@ namespace ICSharpCode.Profiler.Controls @@ -75,8 +78,11 @@ namespace ICSharpCode.Profiler.Controls
ell.MouseLeftButtonDown += (sender, e) =>
{
if (this.hierarchyStack.Count > 1 && this.hierarchyStack.Peek().Level > 1) {
this.hierarchyStack.Pop();
var oldItem = this.hierarchyStack.Pop();
this.SelectedRoot = this.hierarchyStack.Peek();
this.SelectedRoot.IsSelected = true;
this.SelectedRoot.IsExpanded = true;
oldItem.IsSelected = false;
}
};
@ -93,6 +99,7 @@ namespace ICSharpCode.Profiler.Controls @@ -93,6 +99,7 @@ namespace ICSharpCode.Profiler.Controls
() => {
this.Children.Add(ell);
this.Children.AddRange(pieces.Select(p => CreatePiePiece(p.Radius, p.WedgeAngle, p.RotationAngle, p.Level, p.Node)));
item.BringIntoView();
},
delegate { }
);
@ -149,10 +156,12 @@ namespace ICSharpCode.Profiler.Controls @@ -149,10 +156,12 @@ namespace ICSharpCode.Profiler.Controls
p.Tag = node;
p.MouseLeftButtonDown += new MouseButtonEventHandler(
delegate(object sender, MouseButtonEventArgs e) {
delegate(object sender, MouseButtonEventArgs e) {
node.IsExpanded = true;
node.IsSelected = true; // expand the path to the node so that the treeview can select it
var oldNode = this.SelectedRoot;
this.SelectedRoot = node;
oldNode.IsSelected = false;
}
);

Loading…
Cancel
Save