private void CloseTab(int index) { var tab = VisualizerHost.TabPages[index]; if (tab == VisualizerHost.SelectedTab) { //Select the next tab to the right, or the rightmost tab if (VisualizerHost.TabPages.Count > index + 1) { VisualizerHost.SelectedIndex = index + 1; } else if (VisualizerHost.TabPages.Count > 1) { VisualizerHost.SelectedIndex = VisualizerHost.TabPages.Count - 2; } } //close down the visualizer and its associated tab var vis = (IVisualizer)tab.Tag; vis.OnClose(); Visualizers.Remove(vis); VisualizerHost.TabPages.Remove(tab); Debug.Assert(Visualizers.Count == VisualizerHost.TabPages.Count); if (VisualizerHost.TabPages.Count == 0) { m_closeVisualizerButton.Enabled = false; } }
public void AddVisualizer(Type visType) { IVisualizer visualizer = (IVisualizer)Activator.CreateInstance(visType); Visualizers.Add(visualizer); TabPage page = new TabPage(visualizer.DisplayName); page.Tag = visualizer; var toolbar = new VisualizerToolbar(ActiveSnapshot, visualizer); toolbar.Dock = DockStyle.Top; page.Controls.Add(toolbar); visualizer.Control.Top = toolbar.Height; visualizer.Control.Left = 0; visualizer.Control.Size = new System.Drawing.Size(page.Width, page.Height - toolbar.Height); visualizer.Control.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; page.Controls.Add(visualizer.Control); VisualizerHost.TabPages.Add(page); //We have to initialize here to make sure everything is wired if the visualizer calls back in if (!visualizer.Initialize(this, Connection, ActiveSnapshot)) { VisualizerHost.TabPages.Remove(page); Visualizers.Remove(visualizer); return; } VisualizerHost.SelectedTab = page; m_closeVisualizerButton.Enabled = true; }
public bool TryRemoveWatchVisualizer(IVisualizer vis) { foreach (var vv in Visualizers) { if (vv.Item2 == vis) { vv.Item1.Dispose(vv.Item2); Visualizers.Remove(vv); return(true); } } return(false); }