/// <summary> /// Добавляет новый визуализатор в список визуализаторов компонента. /// </summary> /// <param name="visualizer">Пользовательский элемент управления-визуализатор.</param> public void AddVisualizer(IMachineVisualizer visualizer) { if (visualizer == null) throw new ArgumentNullException("Добавляемый визуализатор не может быть неопределенным"); if (!(visualizer is UserControl)) throw new ArgumentException("Добавляемый визуализатор должен являться пользовательским элементом управления Windows Forms"); _machines.Add(visualizer); AddTab(visualizer); }
/// <summary> /// Инициализирует экземпляр аргументов события указанными параметрами. /// </summary> /// <param name="previous">Предыдущий оторажаемый визуализатор.</param> public CurrentVisualizerChangeEventArgs(IMachineVisualizer previous) { _previous = previous; }
/// <summary> /// Удаляет визуализатор из списка вкладок. /// </summary> /// <param name="visualizer">Удаляемый визуализатор.</param> public void CloseVisualizer(IMachineVisualizer visualizer) { int n = tabControl.TabPages.Count; for(int i = 0; i < n; i++) { if(tabControl.TabPages[i].Tag == visualizer) { tabControl.TabPages.RemoveAt(i); _machines.Remove(visualizer); SetCurrentVisualizer(tabControl.SelectedTab != null ? tabControl.SelectedTab.Tag as IMachineVisualizer : null); return; } } throw new Exception("Закрываемая вкладка не найдена"); }
/// <summary> /// Устанавливает текущий оторажаемый визуализатор. /// </summary> /// <param name="current">Устанавливаемый визуализатор.</param> private void SetCurrentVisualizer(IMachineVisualizer current) { if(_current != null) { _current.DataChanged -= _current_DataChanged; _current.DataSaved -= _current_DataSaved; } IMachineVisualizer old = _current; _current = current; if(_current != null) { _current.DataChanged += _current_DataChanged; _current.DataSaved += _current_DataSaved; } if (CurrentVisualChanged != null) CurrentVisualChanged(this, new CurrentVisualizerChangeEventArgs(old)); }
/// <summary> /// Добавляет визуализатор в список вкладок. /// </summary> /// <param name="visualizer">Добавляемый визуализатор.</param> private void AddTab(IMachineVisualizer visualizer) { UserControl ctrl = visualizer as UserControl; ctrl.Dock = DockStyle.Fill; TabPage page = new TabPage(); page.Text = string.Format("{0} - {1}", visualizer.CurrentProject.Name, GetMachineShortName(visualizer.CurrentProject.Machine)); page.Controls.Add(ctrl); page.Tag = visualizer; tabControl.TabPages.Add(page); tabControl.SelectedTab = page; SetCurrentVisualizer(tabControl.SelectedTab != null ? tabControl.SelectedTab.Tag as IMachineVisualizer : null); }