void LoadData() { AdornerLayer layer = AdornerLayer.GetAdornerLayer(this); OverlayAdorner ad = new OverlayAdorner(this); WaitBar bar = new WaitBar(Translation.WaitBarText); ad.Child = bar; layer.Add(ad); int rangeStart = RangeStart; int rangeEnd = RangeEnd; string query = this.CurrentQuery; ProfilingDataProvider provider = Provider; QueryCompiler compiler = new QueryCompiler(Reporter, query); ringDiagram.SelectedRoot = null; task.Execute(() => LoadWorker(provider, compiler, rangeStart, rangeEnd), list => LoadCompleted(list, layer, ad), delegate { layer.Remove(ad); }); }
void txtSearchKeyDown(object sender, KeyEventArgs e) { if (!string.IsNullOrEmpty(txtSearch.Text) && list.Count > 0) { searchTask.Cancel(); string text = txtSearch.Text; int start = this.RangeStart; int end = this.RangeEnd; var provider = this.Provider; AdornerLayer layer = AdornerLayer.GetAdornerLayer(this); OverlayAdorner ad = new OverlayAdorner(this); WaitBar bar = new WaitBar(Translation.WaitBarText); ad.Child = bar; layer.Add(ad); searchTask.Execute( () => DoSearchInBackground(list.Roots.Select(i => i.Node).ToList(), start, end, text, true), result => SearchCompleted(result, layer, ad), delegate { layer.Remove(ad); }); } }
void Update(CallTreeNodeViewModel item) { Debug.WriteLine("RingDiagram.Update: new root = " + item); task.Cancel(); Debug.WriteLine("hierarchyStack count: " + hierarchyStack.Count); while (hierarchyStack.Count > 0 && !hierarchyStack.Peek().IsAncestorOf(item)) { hierarchyStack.Pop(); } Debug.Assert(hierarchyStack.Count == 0 || hierarchyStack.Peek().IsAncestorOf(item)); Children.Clear(); if (item == null) { return; } List <Shape> newItems = new List <Shape>(); Ellipse ell = new Ellipse(); ell.Width = 40; ell.Height = 40; ell.VerticalAlignment = VerticalAlignment.Center; ell.HorizontalAlignment = HorizontalAlignment.Center; ell.Fill = Brushes.Gray; ell.Stroke = Brushes.Black; ell.ToolTip = item.CreateToolTip(Translation); ell.Tag = item; ell.MouseLeftButtonDown += (sender, e) => { if (hierarchyStack.Count > 1 && hierarchyStack.Peek().Level > 1) { var oldItem = hierarchyStack.Pop(); SelectedRoot = hierarchyStack.Peek(); SelectedRoot.IsSelected = true; SelectedRoot.IsExpanded = true; oldItem.IsSelected = false; } }; if (hierarchyStack.Count == 0 || hierarchyStack.Peek() != item) { hierarchyStack.Push(item); } List <PiePieceDescriptor> pieces = new List <PiePieceDescriptor>(); task.Execute( () => { if (item.CpuCyclesSpent > 0) { CreateTree(pieces, item, 0, item.CpuCyclesSpent, 0); } }, () => { Children.Add(ell); Children.AddRange(pieces.Select(p => CreatePiePiece(p.Radius, p.WedgeAngle, p.RotationAngle, p.Level, p.Node))); item.BringIntoView(); }, delegate { } ); }