protected override void ExecuteCore(SelectedItemCollection selection) { // remove single VM from group if (selection.Count == 1) { XenRef <VM> vmRefInGroup = VMGroup <T> .GroupToVMs(_group).FirstOrDefault(vmRef => vmRef.opaque_ref == selection[0].XenObject.opaque_ref); if (vmRefInGroup != null) { var vmRefs = new List <XenRef <VM> > { vmRefInGroup }; VMGroup <T> .RemoveVMsFromGroupAction(_group, vmRefs).RunAsync(); return; } } if (!ChangesOK(selection.AsXenObjects <VM>(), _group, _group.Name)) { return; } var selectedRefVMs = selection.AsXenObjects().ConvertAll <XenRef <VM> >(converterVMRefs); selectedRefVMs.AddRange(VMGroup <T> .GroupToVMs(_group)); VMGroup <T> .AssignVMsToGroupAction(_group, selectedRefVMs).RunAsync(); }
private void RefreshTab(T group) { ColumnQuiesceSupported.Visible = VMGroup <T> .isQuescingSupported; _group = group; if (Pool != null) { dataGridView1.Rows.Clear(); foreach (var vm in Pool.Connection.Cache.VMs) { int index = 0; if (vm.is_a_real_vm() && vm.Show(Properties.Settings.Default.ShowHiddenVMs)) { bool selected = group != null && VMGroup <T> .GroupToVMs(group).Contains(new XenRef <VM>(vm.opaque_ref)); index = dataGridView1.Rows.Add(new VMDataGridViewRow(selected, vm)); if (SelectedVMs.Contains(vm)) { dataGridView1.Rows[index].Cells[0].Value = true; } else if (selected && !SelectedVMs.Contains(vm)) { SelectedVMs.Add(vm); } } } dataGridView1.Sort(ColumnCheckBox, ListSortDirection.Ascending); dataGridView1.AutoResizeColumns(); } UpdateCounterLabelAndButtons(); }