예제 #1
0
        /// <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;
 }
예제 #3
0
        /// <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("Закрываемая вкладка не найдена");
        }
예제 #4
0
 /// <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));
 }
예제 #5
0
        /// <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);
        }