void AddressSpaceControl_SelectionChanged(object sender, SelectionChangedEventArgs e) { InfoForm.Update(e.SelectedBlock.Allocation); }
void SelectTask(CancellationToken ct) { while (true) { RecalculateSelectedBlock.WaitOne(); if (ct.IsCancellationRequested) { return; } lock (RebuildDataLock) { // TODO: This shouldn't even need history Snapshot snapshot = SnapshotOverride ?? History.Snapshot; if (snapshot != null) { Renderer.SelectedBlock = snapshot.Find(Renderer.GetLocalMouseLocation()); if (Renderer.SelectedBlock != null && !Renderer.SelectedBlock.IsValid) { Renderer.SelectedBlock = null; } if (Renderer.SelectedBlock != null) { SelectionChangedEventArgs e = new SelectionChangedEventArgs(); e.SelectedBlock = Renderer.SelectedBlock; this.Invoke((MethodInvoker)(() => SelectionChanged(this, e))); } } } } }
void AddressSpace_SelectionChanged(object sender, SelectionChangedEventArgs e) { AdvanceButton.Text = "Nice work! Click Here."; AdvanceButton.Enabled = true; AddressSpace.SelectionChanged -= AddressSpace_SelectionChanged; }
public void SelectAt(Allocation targetAllocation) { if (targetAllocation == null) { return; } Snapshot snapshot = SnapshotOverride ?? History.Snapshot; MemoryBlock block = snapshot.Find(targetAllocation.Address); if (block != null) { Renderer.SelectedBlock = block; SelectionChangedEventArgs e = new SelectionChangedEventArgs(); e.SelectedBlock = Renderer.SelectedBlock; this.Invoke((MethodInvoker)(() => SelectionChanged(this, e))); } else { // TODO: What should be done here? Scroll the timeline to a point where it exists? } // TODO: Automatically bring the new selection into view }