protected override bool Confirm()
        {
            if (Program.RunInAutomatedTestMode)
            {
                return(true);
            }

            MultipleWarningDialog warningDialog = new MultipleWarningDialog(
                Messages.MESSAGEBOX_DETACH_VD_TITLE_MUTLIPLE,
                Messages.MULTI_VDI_DETACH_WARNING,
                Messages.DETACH_ALL_BUTTON_LABEL);

            SelectedItemCollection selectedItems = GetSelection();
            List <VDI>             sysDisks      = new List <VDI>();
            List <VDI>             regularDisks  = new List <VDI>();

            foreach (VDI vdi in selectedItems.AsXenObjects <VDI>())
            {
                if (vdi.type == vdi_type.system)
                {
                    sysDisks.Add(vdi);
                }
                else
                {
                    regularDisks.Add(vdi);
                }
            }
            // Use the regular confirm dialog if we only have one warning type
            if (sysDisks.Count == 0 || regularDisks.Count == 0)
            {
                return(base.Confirm());
            }

            warningDialog.AddWarningMessage(
                Messages.MESSAGEBOX_DETACH_SYSTEMVD_TITLE,
                Messages.MESSAGEBOX_DETACH_SYSTEMVD,
                sysDisks.ConvertAll <IXenObject>(delegate(VDI v) { return((IXenObject)v); }));

            warningDialog.AddWarningMessage(
                Messages.MESSAGEBOX_DETACH_VD_TITLE,
                Messages.MESSAGEBOX_DETACH_VD,
                regularDisks.ConvertAll <IXenObject>(delegate(VDI v) { return((IXenObject)v); }));

            return(warningDialog.ShowDialog(MainWindowCommandInterface.Form) == System.Windows.Forms.DialogResult.Yes);
        }
        protected override bool Confirm()
        {
            if (Program.RunInAutomatedTestMode)
            {
                return(true);
            }

            if (NeedMultipleWarnings)
            {
                MultipleWarningDialog warningDialog = new MultipleWarningDialog(
                    Messages.MESSAGEBOX_DELETE_VD_TITLE_MUTLIPLE,
                    Messages.MULTI_VDI_DELETE_WARNING,
                    Messages.DELETE_ALL_BUTTON_LABEL);

                SelectedItemCollection selectedItems = GetSelection();
                List <VDI>             snapshots     = new List <VDI>();
                List <VDI>             isos          = new List <VDI>();
                List <VDI>             systemVDisks  = new List <VDI>();
                List <VDI>             virtualDisks  = new List <VDI>();
                foreach (VDI vdi in selectedItems.AsXenObjects <VDI>())
                {
                    var typ = vdi.VDIType();
                    switch (typ)
                    {
                    case VDI.FriendlyType.SNAPSHOT:
                        snapshots.Add(vdi);
                        break;

                    case VDI.FriendlyType.ISO:
                        isos.Add(vdi);
                        break;

                    case VDI.FriendlyType.SYSTEM_DISK:
                        systemVDisks.Add(vdi);
                        break;

                    case VDI.FriendlyType.VIRTUAL_DISK:
                        virtualDisks.Add(vdi);
                        break;

                    case VDI.FriendlyType.NONE:
                        break;
                    }
                }
                if (snapshots.Count == 1)
                {
                    warningDialog.AddWarningMessage(
                        Messages.MESSAGEBOX_DELETE_SNAPSHOT_TITLE,
                        Messages.WARNING_DELETE_SNAPSHOT,
                        snapshots.ConvertAll <IXenObject>(delegate(VDI v){ return((IXenObject)v); }));
                }
                else if (snapshots.Count > 1)
                {
                    warningDialog.AddWarningMessage(
                        Messages.MESSAGEBOX_DELETE_SNAPSHOTS_TITLE_MULTIPLE,
                        Messages.WARNING_DELETE_SNAPSHOT_MULTIPLE,
                        snapshots.ConvertAll <IXenObject>(delegate(VDI v){ return((IXenObject)v); }));
                }

                if (isos.Count == 1)
                {
                    warningDialog.AddWarningMessage(
                        Messages.MESSAGEBOX_DELETE_ISO_TITLE,
                        Messages.WARNING_DELETE_ISO,
                        isos.ConvertAll <IXenObject>(delegate(VDI v) { return((IXenObject)v); }));
                }
                else if (isos.Count > 1)
                {
                    warningDialog.AddWarningMessage(
                        Messages.MESSAGEBOX_DELETE_ISO_TITLE_MULTIPLE,
                        Messages.WARNING_DELETE_ISO_MULTIPLE,
                        isos.ConvertAll <IXenObject>(delegate(VDI v) { return((IXenObject)v); }));
                }

                if (systemVDisks.Count == 1)
                {
                    warningDialog.AddWarningMessage(
                        Messages.MESSAGEBOX_DELETE_SYS_DISK_TITLE,
                        Messages.WARNING_DELETE_SYS_DISK,
                        systemVDisks.ConvertAll <IXenObject>(delegate(VDI v) { return((IXenObject)v); }));
                }
                else if (systemVDisks.Count > 1)
                {
                    warningDialog.AddWarningMessage(
                        Messages.MESSAGEBOX_DELETE_SYS_DISK_TITLE_MULTIPLE,
                        Messages.WARNING_DELETE_SYS_DISK_MULTIPLE,
                        systemVDisks.ConvertAll <IXenObject>(delegate(VDI v) { return((IXenObject)v); }));
                }

                if (virtualDisks.Count == 1)
                {
                    warningDialog.AddWarningMessage(
                        Messages.MESSAGEBOX_DELETE_VD_TITLE,
                        Messages.WARNING_DELETE_VD,
                        virtualDisks.ConvertAll <IXenObject>(delegate(VDI v) { return((IXenObject)v); }));
                }
                else if (virtualDisks.Count > 1)
                {
                    warningDialog.AddWarningMessage(
                        Messages.MESSAGEBOX_DELETE_VD_TITLE_MUTLIPLE,
                        Messages.WARNING_DELETE_VD_MULTIPLE,
                        virtualDisks.ConvertAll <IXenObject>(delegate(VDI v) { return((IXenObject)v); }));
                }
                return(warningDialog.ShowDialog(Parent) == DialogResult.Yes);
            }
            else
            {
                return(base.Confirm());
            }
        }