/// <summary> /// Выкладка комплекта. /// </summary> /// <param name="btn"></param> /// <param name="customerComboBox">Список папок комплектов заказчиков.</param> /// <param name="form"></param> public PackageDeploy(RadioButton btn, ComboBox customerComboBox, DeployPackageDestinationForm form) : base(btn, new Control[] { customerComboBox }, form) { if (btn == null) { throw new ArgumentNullException(nameof(btn)); } this.CustomerComboBox = customerComboBox ?? throw new ArgumentNullException(nameof(customerComboBox)); }
/// <summary> /// Вид деплоя. /// </summary> /// <param name="switcher">Переключатель.</param> /// <param name="childControls">Дочерние элементы.</param> /// <param name="form">Родительская форма.</param> public DeployType(RadioButton switcher, Control[] childControls, DeployPackageDestinationForm form) { this.Switcher = switcher ?? throw new ArgumentNullException(nameof(switcher)); this.ChildControls = childControls ?? throw new ArgumentNullException(nameof(childControls)); this.Form = form ?? throw new ArgumentNullException(nameof(form)); this.Switcher.CheckedChanged += (s, e) => { this.IsActive = this.Switcher.Checked; }; }
/// <summary> /// Срабатывает при выполнении команды. /// </summary> protected override void OnExecute() { DeployPackageDestinationForm form = new DeployPackageDestinationForm(this); form.Show(new Owner(this.DTE.MainWindow.HWnd)); form.FormClosed += (s, e) => { form.Dispose(); }; }
/// <summary> /// Выкладывание комплекта в папку. /// </summary> /// <param name="switcher"></param> /// <param name="folderPath">Контрол с указанием пути к папке.</param> /// <param name="btnBrowse">Кнопка для выбора папки.</param> /// <param name="deployPackageDestinationForm"></param> public FolderDeploy(RadioButton switcher, TextBox folderPath, Button btnBrowse, DeployPackageDestinationForm deployPackageDestinationForm) : base(switcher, new Control[] { folderPath, btnBrowse }, deployPackageDestinationForm) { this.FolderPath = folderPath ?? throw new ArgumentNullException(nameof(folderPath)); this.BtnBrowse = btnBrowse ?? throw new ArgumentNullException(nameof(btnBrowse)); }
/// <summary> /// Выкладывание в тестирование. /// </summary> /// <param name="switcher"></param> /// <param name="testComboBox">Выбор папки с папками тестирования.</param> /// <param name="deployPackageDestinationForm"></param> public TestDeploy(RadioButton switcher, ComboBox testComboBox, ComboBox testFoldersBox, DeployPackageDestinationForm deployPackageDestinationForm) : base(switcher, new Control[] { testComboBox, testFoldersBox }, deployPackageDestinationForm) { this.TestComboBox = testComboBox ?? throw new ArgumentNullException(nameof(testComboBox)); TestFoldersBox = testFoldersBox ?? throw new ArgumentNullException(nameof(testFoldersBox)); // Определяем поведение при выборе папки тестирования this.TestComboBox.SelectedIndexChanged += (s, e) => { OptionItem item = this.TestComboBox.SelectedItem as OptionItem; int year = DateTime.Now.Year; this.TestFoldersBox.Items.Clear(); this.TestFoldersBox.Items.AddRange( // Берём подпапки выбранной папки тестирования Directory.EnumerateDirectories(item.DirectoryPath, $"{year}*", SearchOption.TopDirectoryOnly) // Получаем информацию по папкам .Select(path => new DirectoryInfo(path)) // На всякий случай отсеиваем несуществующие .Where(dir => dir.Exists) // Сортируем по названию .OrderByDescending(dir => dir.Name) // Берём первые 10 .Take(10) // Формируем варианты выбора для списка .Select(x => new OptionItem(x)).ToArray() ); this.TestFoldersBox.Text = this.FolderTemplateName; }; }