/// <summary> /// Must be called on the event thread. /// </summary> private void PopulateVMs() { Program.AssertOnEventThread(); try { dataGridViewVms.SuspendLayout(); dataGridViewVms.Rows.Clear(); var newRows = new List <DataGridViewRow>(); var vms = connection.Cache.VMs.Where(v => v.HaCanProtect(Properties.Settings.Default.ShowHiddenVMs)); // see if HA is being activated for the first time. bool firstTime = IsHaActivatedFirstTime(vms); foreach (VM vm in connection.Cache.VMs) { if (!vm.HaCanProtect(Properties.Settings.Default.ShowHiddenVMs)) { continue; } // Create a new row for this VM. // The priority for this row is either initially null (which means 'fill in the restart priority with // Protected/Restart if possible when we've determined if the VM is agile'), or its current restart priority. // The first case is for the HA wizard when priorities are being configured for the first time, // the second is for the edit dialog, when HA is already enabled. VM.HA_Restart_Priority?priority = firstTime ? (VM.HA_Restart_Priority?)null : vm.HARestartPriority; var row = new VmWithSettingsRow(vm, priority); newRows.Add(row); } dataGridViewVms.Rows.AddRange(newRows.ToArray()); var addedVms = from row in dataGridViewVms.Rows.Cast <VmWithSettingsRow>() select row.Vm; UpdateVMsAgility(addedVms); } finally { dataGridViewVms.ResumeLayout(); } updateButtons(); }
private void AddVmRow(VM vm) { Program.AssertOnEventThread(); if (!vm.HaCanProtect(Properties.Settings.Default.ShowHiddenVMs)) { return; } // see if HA is being activated for the first time var vms = connection.Cache.VMs.Where(v => v.HaCanProtect(Properties.Settings.Default.ShowHiddenVMs)); bool firstTime = IsHaActivatedFirstTime(vms); VM.HA_Restart_Priority?priority = firstTime ? (VM.HA_Restart_Priority?)null : vm.HARestartPriority(); var row = new VmWithSettingsRow(vm, priority); dataGridViewVms.Rows.Add(row); UpdateVMsAgility(new List <VM> { vm }); }
private void updateButtons() { Program.AssertOnEventThread(); var selectedRows = dataGridViewVms.SelectedRows.Cast <VmWithSettingsRow>().ToList(); if (dataGridViewVms.SelectedRows.Count == 0) { m_dropDownButtonRestartPriority.Enabled = false; m_dropDownButtonRestartPriority.Text = ""; nudOrder.Enabled = nudStartDelay.Enabled = false; nudOrder.Text = nudStartDelay.Text = ""; return; } // if there is a VM with null priority in the selection disable all buttons. We are waiting on the background thread // to see if the VM is agile before giving it a starting value if (selectedRows.Any(r => r.RestartPriority == null)) { m_dropDownButtonRestartPriority.Enabled = true; m_dropDownButtonRestartPriority.Text = ""; nudOrder.Enabled = nudStartDelay.Enabled = true; nudOrder.Text = nudStartDelay.Text = ""; return; } m_dropDownButtonRestartPriority.Enabled = true; //now set the drop down button text bool allSamePriority = false; foreach (ToolStripMenuItem item in contextMenuStrip.Items) { VM.HA_Restart_Priority itemRestartPriority = (VM.HA_Restart_Priority)item.Tag; if (selectedRows.All(r => r.RestartPriority == itemRestartPriority)) { allSamePriority = true; m_dropDownButtonRestartPriority.Text = Helpers.RestartPriorityI18n(itemRestartPriority); break; } } if (!allSamePriority && dataGridViewVms.SelectedRows.Count > 1) { m_dropDownButtonRestartPriority.Text = Messages.HA_ASSIGN_PRIORITIES_MIXED_PROTECTION_LEVELS; } // set the order and delay NUDs nudOrder.Enabled = nudStartDelay.Enabled = true; var orderDistList = (from row in selectedRows select row.StartOrder).Distinct().ToList(); nudOrder.Text = orderDistList.Count == 1 ? orderDistList.ElementAt(0).ToString() : ""; var delayDistList = (from row in selectedRows select row.StartDelay).Distinct().ToList(); nudStartDelay.Text = delayDistList.Count == 1 ? delayDistList.ElementAt(0).ToString() : ""; // check that all the VMs selected in the list are agile and make sure the protect button is disabled with the relevant reason VmWithSettingsRow nonAgileRow = selectedRows.FirstOrDefault(r => !r.IsAgile); // Now set the buttons and tooltips) foreach (ToolStripMenuItem menuItem in contextMenuStrip.Items) { var priority = (VM.HA_Restart_Priority)menuItem.Tag; if (VM.HaPriorityIsRestart(connection, priority)) { menuItem.Enabled = (nonAgileRow == null); menuItem.ToolTipText = (nonAgileRow == null) ? "" : nonAgileRow.FriendlyNonAgileReason; } else { menuItem.Enabled = true; } } }
/// <summary> /// Must be called on the event thread. /// </summary> private void PopulateVMs() { Program.AssertOnEventThread(); try { dataGridViewVms.SuspendLayout(); dataGridViewVms.Rows.Clear(); var newRows = new List<DataGridViewRow>(); var vms = connection.Cache.VMs.Where(v => v.HaCanProtect(Properties.Settings.Default.ShowHiddenVMs)); // see if HA is being activated for the first time. bool firstTime = IsHaActivatedFirstTime(vms); foreach (VM vm in connection.Cache.VMs) { if (!vm.HaCanProtect(Properties.Settings.Default.ShowHiddenVMs)) continue; // Create a new row for this VM. // The priority for this row is either initially null (which means 'fill in the restart priority with // Protected/Restart if possible when we've determined if the VM is agile'), or its current restart priority. // The first case is for the HA wizard when priorities are being configured for the first time, // the second is for the edit dialog, when HA is already enabled. VM.HA_Restart_Priority? priority = firstTime ? (VM.HA_Restart_Priority?)null : vm.HARestartPriority; var row = new VmWithSettingsRow(vm, priority); newRows.Add(row); } dataGridViewVms.Rows.AddRange(newRows.ToArray()); var addedVms = from row in dataGridViewVms.Rows.Cast<VmWithSettingsRow>() select row.Vm; UpdateVMsAgility(addedVms); } finally { dataGridViewVms.ResumeLayout(); } }
private void AddVmRow(VM vm) { Program.AssertOnEventThread(); if (!vm.HaCanProtect(Properties.Settings.Default.ShowHiddenVMs)) return; // see if HA is being activated for the first time var vms = connection.Cache.VMs.Where(v => v.HaCanProtect(Properties.Settings.Default.ShowHiddenVMs)); bool firstTime = IsHaActivatedFirstTime(vms); VM.HA_Restart_Priority? priority = firstTime ? (VM.HA_Restart_Priority?)null : vm.HARestartPriority; var row = new VmWithSettingsRow(vm, priority); dataGridViewVms.Rows.Add(row); }