mirror of
https://github.com/xcp-ng/xenadmin.git
synced 2025-01-20 07:19:18 +01:00
Merge pull request #1154 from kc284/master
Some corrections on VMStorage page and disk move/migrate/detach
This commit is contained in:
commit
c6eab65fdf
@ -169,8 +169,8 @@ namespace XenAdmin.Commands
|
||||
if (actionsToComplete.Count == 1)
|
||||
actionsToComplete[0].RunAsync();
|
||||
else
|
||||
RunMultipleActions(actionsToComplete, Messages.ACTION_DETATCHING_MULTIPLE_VDIS_TITLE,
|
||||
Messages.ACTION_DETATCHING_MULTIPLE_VDIS_STATUS, Messages.COMPLETED, true);
|
||||
RunMultipleActions(actionsToComplete, Messages.ACTION_DETACHING_MULTIPLE_VDIS_TITLE,
|
||||
Messages.ACTION_DETACHING_MULTIPLE_VDIS_STATUS, Messages.COMPLETED, true);
|
||||
}
|
||||
|
||||
private List<AsyncAction> getDetachVDIAction(VDI vdi)
|
||||
@ -194,9 +194,9 @@ namespace XenAdmin.Commands
|
||||
return true;
|
||||
|
||||
MultipleWarningDialog warningDialog = new MultipleWarningDialog(
|
||||
Messages.MESSAGEBOX_DETATCH_VD_TITLE_MUTLIPLE,
|
||||
Messages.MULTI_VDI_DETATCH_WARNING,
|
||||
Messages.DETATCH_ALL_BUTTON_LABEL);
|
||||
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>();
|
||||
|
@ -67,16 +67,17 @@ namespace XenAdmin.Dialogs
|
||||
|
||||
private void CreateAndRunParallelActions()
|
||||
{
|
||||
BatchingMigrateVirtualDiskManager manager =
|
||||
new BatchingMigrateVirtualDiskManager(connection);
|
||||
var manager = new BatchingMigrateVirtualDiskManager(connection);
|
||||
|
||||
if (VdisToMigrate().Count > 0 )
|
||||
manager.BatchAs(BatchingMigrateVirtualDiskManager.Batching.VdiMigrate,
|
||||
VdisToMigrate(), SelectedSR).RunAsync();
|
||||
var vdisToMigrate = VdisToMigrate();
|
||||
if (vdisToMigrate.Count > 0)
|
||||
manager.BatchAs(BatchingMigrateVirtualDiskManager.Batching.VdiMigrate,
|
||||
vdisToMigrate, SelectedSR).RunAsync();
|
||||
|
||||
if (VdisToMove().Count > 0)
|
||||
manager.BatchAs(BatchingMigrateVirtualDiskManager.Batching.VdiMove,
|
||||
VdisToMove(), SelectedSR).RunAsync();
|
||||
var vdisToMove = VdisToMove();
|
||||
if (vdisToMove.Count > 0)
|
||||
manager.BatchAs(BatchingMigrateVirtualDiskManager.Batching.VdiMove,
|
||||
vdisToMove, SelectedSR).RunAsync();
|
||||
}
|
||||
|
||||
private List<VDI> VdisToMove()
|
||||
|
355
XenAdmin/TabPages/VMStoragePage.Designer.cs
generated
355
XenAdmin/TabPages/VMStoragePage.Designer.cs
generated
@ -31,15 +31,31 @@ namespace XenAdmin.TabPages
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VMStoragePage));
|
||||
this.AddButton = new System.Windows.Forms.Button();
|
||||
this.EditButton = new System.Windows.Forms.Button();
|
||||
this.AttachButton = new System.Windows.Forms.Button();
|
||||
this.RightButtonSeparator = new System.Windows.Forms.Panel();
|
||||
this.LeftButtonSeparator = new System.Windows.Forms.Panel();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.dataGridViewStorage = new System.Windows.Forms.DataGridView();
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.DeactivateButtonContainer = new XenAdmin.Controls.ToolTipContainer();
|
||||
this.DeactivateButton = new System.Windows.Forms.Button();
|
||||
this.MoveButtonContainer = new XenAdmin.Controls.ToolTipContainer();
|
||||
this.MoveButton = new System.Windows.Forms.Button();
|
||||
this.DeleteButtonContainer = new XenAdmin.Controls.ToolTipContainer();
|
||||
this.DeleteButton = new System.Windows.Forms.Button();
|
||||
this.DetachButtonContainer = new XenAdmin.Controls.ToolTipContainer();
|
||||
this.DetachButton = new System.Windows.Forms.Button();
|
||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.toolStripMenuItemAdd = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItemAttach = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItemDeactivate = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItemMove = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItemDelete = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItemDetach = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripMenuItemProperties = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.dataGridViewStorage = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx();
|
||||
this.ColumnDevicePosition = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnDesc = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
@ -50,16 +66,9 @@ namespace XenAdmin.TabPages
|
||||
this.ColumnPriority = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnActive = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnDevicePath = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.DeactivateButtonContainer = new XenAdmin.Controls.ToolTipContainer();
|
||||
this.DeactivateButton = new System.Windows.Forms.Button();
|
||||
this.MoveButtonContainer = new XenAdmin.Controls.ToolTipContainer();
|
||||
this.MoveButton = new System.Windows.Forms.Button();
|
||||
this.DeleteButtonContainer = new XenAdmin.Controls.ToolTipContainer();
|
||||
this.DeleteDriveButton = new System.Windows.Forms.Button();
|
||||
this.DetachButtonContainer = new XenAdmin.Controls.ToolTipContainer();
|
||||
this.DetachDriveButton = new System.Windows.Forms.Button();
|
||||
this.multipleDvdIsoList1 = new XenAdmin.Controls.MultipleDvdIsoList();
|
||||
this.gradientPanel1 = new XenAdmin.Controls.GradientPanel.GradientPanel();
|
||||
this.TitleLabel = new System.Windows.Forms.Label();
|
||||
this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
@ -70,16 +79,14 @@ namespace XenAdmin.TabPages
|
||||
this.dataGridViewTextBoxColumn8 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.dataGridViewTextBoxColumn9 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.dataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.gradientPanel1 = new XenAdmin.Controls.GradientPanel.GradientPanel();
|
||||
this.TitleLabel = new System.Windows.Forms.Label();
|
||||
this.panel1.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridViewStorage)).BeginInit();
|
||||
this.flowLayoutPanel1.SuspendLayout();
|
||||
this.DeactivateButtonContainer.SuspendLayout();
|
||||
this.MoveButtonContainer.SuspendLayout();
|
||||
this.DeleteButtonContainer.SuspendLayout();
|
||||
this.DetachButtonContainer.SuspendLayout();
|
||||
this.contextMenuStrip1.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridViewStorage)).BeginInit();
|
||||
this.gradientPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@ -104,38 +111,144 @@ namespace XenAdmin.TabPages
|
||||
this.AttachButton.UseVisualStyleBackColor = true;
|
||||
this.AttachButton.Click += new System.EventHandler(this.AttachButton_Click);
|
||||
//
|
||||
// RightButtonSeparator
|
||||
// flowLayoutPanel1
|
||||
//
|
||||
this.RightButtonSeparator.BackColor = System.Drawing.SystemColors.ControlDarkDark;
|
||||
resources.ApplyResources(this.RightButtonSeparator, "RightButtonSeparator");
|
||||
this.RightButtonSeparator.Name = "RightButtonSeparator";
|
||||
this.flowLayoutPanel1.Controls.Add(this.AddButton);
|
||||
this.flowLayoutPanel1.Controls.Add(this.AttachButton);
|
||||
this.flowLayoutPanel1.Controls.Add(this.DeactivateButtonContainer);
|
||||
this.flowLayoutPanel1.Controls.Add(this.MoveButtonContainer);
|
||||
this.flowLayoutPanel1.Controls.Add(this.EditButton);
|
||||
this.flowLayoutPanel1.Controls.Add(this.DeleteButtonContainer);
|
||||
this.flowLayoutPanel1.Controls.Add(this.DetachButtonContainer);
|
||||
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
|
||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
//
|
||||
// LeftButtonSeparator
|
||||
// DeactivateButtonContainer
|
||||
//
|
||||
this.LeftButtonSeparator.BackColor = System.Drawing.SystemColors.ControlDarkDark;
|
||||
resources.ApplyResources(this.LeftButtonSeparator, "LeftButtonSeparator");
|
||||
this.LeftButtonSeparator.Name = "LeftButtonSeparator";
|
||||
this.DeactivateButtonContainer.Controls.Add(this.DeactivateButton);
|
||||
resources.ApplyResources(this.DeactivateButtonContainer, "DeactivateButtonContainer");
|
||||
this.DeactivateButtonContainer.Name = "DeactivateButtonContainer";
|
||||
//
|
||||
// panel1
|
||||
// DeactivateButton
|
||||
//
|
||||
this.panel1.Controls.Add(this.panel2);
|
||||
this.panel1.Controls.Add(this.multipleDvdIsoList1);
|
||||
resources.ApplyResources(this.panel1, "panel1");
|
||||
this.panel1.Name = "panel1";
|
||||
resources.ApplyResources(this.DeactivateButton, "DeactivateButton");
|
||||
this.DeactivateButton.Name = "DeactivateButton";
|
||||
this.DeactivateButton.UseVisualStyleBackColor = true;
|
||||
this.DeactivateButton.Click += new System.EventHandler(this.DeactivateButton_Click);
|
||||
//
|
||||
// panel2
|
||||
// MoveButtonContainer
|
||||
//
|
||||
resources.ApplyResources(this.panel2, "panel2");
|
||||
this.panel2.Controls.Add(this.dataGridViewStorage);
|
||||
this.panel2.Controls.Add(this.flowLayoutPanel1);
|
||||
this.panel2.MaximumSize = new System.Drawing.Size(900, 400);
|
||||
this.panel2.Name = "panel2";
|
||||
this.MoveButtonContainer.Controls.Add(this.MoveButton);
|
||||
resources.ApplyResources(this.MoveButtonContainer, "MoveButtonContainer");
|
||||
this.MoveButtonContainer.Name = "MoveButtonContainer";
|
||||
//
|
||||
// MoveButton
|
||||
//
|
||||
resources.ApplyResources(this.MoveButton, "MoveButton");
|
||||
this.MoveButton.Name = "MoveButton";
|
||||
this.MoveButton.UseVisualStyleBackColor = true;
|
||||
this.MoveButton.Click += new System.EventHandler(this.MoveButton_Click);
|
||||
//
|
||||
// DeleteButtonContainer
|
||||
//
|
||||
this.DeleteButtonContainer.Controls.Add(this.DeleteButton);
|
||||
resources.ApplyResources(this.DeleteButtonContainer, "DeleteButtonContainer");
|
||||
this.DeleteButtonContainer.Name = "DeleteButtonContainer";
|
||||
//
|
||||
// DeleteButton
|
||||
//
|
||||
resources.ApplyResources(this.DeleteButton, "DeleteButton");
|
||||
this.DeleteButton.Name = "DeleteButton";
|
||||
this.DeleteButton.UseVisualStyleBackColor = true;
|
||||
this.DeleteButton.Click += new System.EventHandler(this.DeleteDriveButton_Click);
|
||||
//
|
||||
// DetachButtonContainer
|
||||
//
|
||||
this.DetachButtonContainer.Controls.Add(this.DetachButton);
|
||||
resources.ApplyResources(this.DetachButtonContainer, "DetachButtonContainer");
|
||||
this.DetachButtonContainer.Name = "DetachButtonContainer";
|
||||
//
|
||||
// DetachButton
|
||||
//
|
||||
resources.ApplyResources(this.DetachButton, "DetachButton");
|
||||
this.DetachButton.Name = "DetachButton";
|
||||
this.DetachButton.UseVisualStyleBackColor = true;
|
||||
this.DetachButton.Click += new System.EventHandler(this.DetachButton_Click);
|
||||
//
|
||||
// contextMenuStrip1
|
||||
//
|
||||
this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripMenuItemAdd,
|
||||
this.toolStripMenuItemAttach,
|
||||
this.toolStripMenuItemDeactivate,
|
||||
this.toolStripMenuItemMove,
|
||||
this.toolStripMenuItemDelete,
|
||||
this.toolStripMenuItemDetach,
|
||||
this.toolStripSeparator1,
|
||||
this.toolStripMenuItemProperties});
|
||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||
resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1");
|
||||
this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
|
||||
//
|
||||
// toolStripMenuItemAdd
|
||||
//
|
||||
this.toolStripMenuItemAdd.Name = "toolStripMenuItemAdd";
|
||||
resources.ApplyResources(this.toolStripMenuItemAdd, "toolStripMenuItemAdd");
|
||||
this.toolStripMenuItemAdd.Click += new System.EventHandler(this.toolStripMenuItemAdd_Click);
|
||||
//
|
||||
// toolStripMenuItemAttach
|
||||
//
|
||||
this.toolStripMenuItemAttach.Name = "toolStripMenuItemAttach";
|
||||
resources.ApplyResources(this.toolStripMenuItemAttach, "toolStripMenuItemAttach");
|
||||
this.toolStripMenuItemAttach.Click += new System.EventHandler(this.toolStripMenuItemAttach_Click);
|
||||
//
|
||||
// toolStripMenuItemDeactivate
|
||||
//
|
||||
this.toolStripMenuItemDeactivate.Name = "toolStripMenuItemDeactivate";
|
||||
resources.ApplyResources(this.toolStripMenuItemDeactivate, "toolStripMenuItemDeactivate");
|
||||
this.toolStripMenuItemDeactivate.Click += new System.EventHandler(this.toolStripMenuItemDeactivate_Click);
|
||||
//
|
||||
// toolStripMenuItemMove
|
||||
//
|
||||
this.toolStripMenuItemMove.Name = "toolStripMenuItemMove";
|
||||
resources.ApplyResources(this.toolStripMenuItemMove, "toolStripMenuItemMove");
|
||||
this.toolStripMenuItemMove.Click += new System.EventHandler(this.toolStripMenuItemMove_Click);
|
||||
//
|
||||
// toolStripMenuItemDelete
|
||||
//
|
||||
this.toolStripMenuItemDelete.Name = "toolStripMenuItemDelete";
|
||||
resources.ApplyResources(this.toolStripMenuItemDelete, "toolStripMenuItemDelete");
|
||||
this.toolStripMenuItemDelete.Click += new System.EventHandler(this.toolStripMenuItemDelete_Click);
|
||||
//
|
||||
// toolStripMenuItemDetach
|
||||
//
|
||||
this.toolStripMenuItemDetach.Name = "toolStripMenuItemDetach";
|
||||
resources.ApplyResources(this.toolStripMenuItemDetach, "toolStripMenuItemDetach");
|
||||
this.toolStripMenuItemDetach.Click += new System.EventHandler(this.toolStripMenuItemDetach_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
||||
//
|
||||
// toolStripMenuItemProperties
|
||||
//
|
||||
this.toolStripMenuItemProperties.Image = global::XenAdmin.Properties.Resources.edit_16;
|
||||
resources.ApplyResources(this.toolStripMenuItemProperties, "toolStripMenuItemProperties");
|
||||
this.toolStripMenuItemProperties.Name = "toolStripMenuItemProperties";
|
||||
this.toolStripMenuItemProperties.Click += new System.EventHandler(this.toolStripMenuItemProperties_Click);
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
|
||||
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.dataGridViewStorage, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.multipleDvdIsoList1, 0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
//
|
||||
// dataGridViewStorage
|
||||
//
|
||||
this.dataGridViewStorage.AllowUserToAddRows = false;
|
||||
this.dataGridViewStorage.AllowUserToDeleteRows = false;
|
||||
this.dataGridViewStorage.AllowUserToResizeRows = false;
|
||||
this.dataGridViewStorage.BackgroundColor = System.Drawing.SystemColors.Window;
|
||||
this.dataGridViewStorage.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
|
||||
this.dataGridViewStorage.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
|
||||
@ -151,13 +264,14 @@ namespace XenAdmin.TabPages
|
||||
this.ColumnActive,
|
||||
this.ColumnDevicePath});
|
||||
resources.ApplyResources(this.dataGridViewStorage, "dataGridViewStorage");
|
||||
this.dataGridViewStorage.MultiSelect = true;
|
||||
this.dataGridViewStorage.Name = "dataGridViewStorage";
|
||||
this.dataGridViewStorage.ReadOnly = true;
|
||||
this.dataGridViewStorage.RowHeadersVisible = false;
|
||||
this.dataGridViewStorage.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.dataGridViewStorage.MouseUp += new System.Windows.Forms.MouseEventHandler(this.TheHeaderListBox_DataGridView_MouseUp);
|
||||
this.dataGridViewStorage.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.TheHeaderListBox_CellMouseDoubleClick);
|
||||
this.dataGridViewStorage.SelectionChanged += new System.EventHandler(this.TheHeaderListBox_SelectedIndexChanged);
|
||||
this.dataGridViewStorage.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridViewStorage_CellMouseDoubleClick);
|
||||
this.dataGridViewStorage.SelectionChanged += new System.EventHandler(this.dataGridViewStorage_SelectedIndexChanged);
|
||||
this.dataGridViewStorage.SortCompare += new System.Windows.Forms.DataGridViewSortCompareEventHandler(this.dataGridViewStorage_SortCompare);
|
||||
this.dataGridViewStorage.KeyUp += new System.Windows.Forms.KeyEventHandler(this.dataGridViewStorage_KeyUp);
|
||||
this.dataGridViewStorage.MouseUp += new System.Windows.Forms.MouseEventHandler(this.dataGridViewStorage_MouseUp);
|
||||
//
|
||||
// ColumnDevicePosition
|
||||
//
|
||||
@ -229,80 +343,29 @@ namespace XenAdmin.TabPages
|
||||
this.ColumnDevicePath.Name = "ColumnDevicePath";
|
||||
this.ColumnDevicePath.ReadOnly = true;
|
||||
//
|
||||
// flowLayoutPanel1
|
||||
//
|
||||
this.flowLayoutPanel1.Controls.Add(this.AddButton);
|
||||
this.flowLayoutPanel1.Controls.Add(this.AttachButton);
|
||||
this.flowLayoutPanel1.Controls.Add(this.RightButtonSeparator);
|
||||
this.flowLayoutPanel1.Controls.Add(this.DeactivateButtonContainer);
|
||||
this.flowLayoutPanel1.Controls.Add(this.MoveButtonContainer);
|
||||
this.flowLayoutPanel1.Controls.Add(this.EditButton);
|
||||
this.flowLayoutPanel1.Controls.Add(this.LeftButtonSeparator);
|
||||
this.flowLayoutPanel1.Controls.Add(this.DeleteButtonContainer);
|
||||
this.flowLayoutPanel1.Controls.Add(this.DetachButtonContainer);
|
||||
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
|
||||
this.flowLayoutPanel1.MaximumSize = new System.Drawing.Size(900, 35);
|
||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
//
|
||||
// DeactivateButtonContainer
|
||||
//
|
||||
this.DeactivateButtonContainer.Controls.Add(this.DeactivateButton);
|
||||
resources.ApplyResources(this.DeactivateButtonContainer, "DeactivateButtonContainer");
|
||||
this.DeactivateButtonContainer.Name = "DeactivateButtonContainer";
|
||||
//
|
||||
// DeactivateButton
|
||||
//
|
||||
resources.ApplyResources(this.DeactivateButton, "DeactivateButton");
|
||||
this.DeactivateButton.Name = "DeactivateButton";
|
||||
this.DeactivateButton.UseVisualStyleBackColor = true;
|
||||
this.DeactivateButton.Click += new System.EventHandler(this.DeactivateButton_Click);
|
||||
//
|
||||
// MoveButtonContainer
|
||||
//
|
||||
this.MoveButtonContainer.Controls.Add(this.MoveButton);
|
||||
resources.ApplyResources(this.MoveButtonContainer, "MoveButtonContainer");
|
||||
this.MoveButtonContainer.Name = "MoveButtonContainer";
|
||||
//
|
||||
// MoveButton
|
||||
//
|
||||
resources.ApplyResources(this.MoveButton, "MoveButton");
|
||||
this.MoveButton.Name = "MoveButton";
|
||||
this.MoveButton.UseVisualStyleBackColor = true;
|
||||
this.MoveButton.Click += new System.EventHandler(this.MoveButton_Click);
|
||||
//
|
||||
// DeleteButtonContainer
|
||||
//
|
||||
this.DeleteButtonContainer.Controls.Add(this.DeleteDriveButton);
|
||||
resources.ApplyResources(this.DeleteButtonContainer, "DeleteButtonContainer");
|
||||
this.DeleteButtonContainer.Name = "DeleteButtonContainer";
|
||||
//
|
||||
// DeleteDriveButton
|
||||
//
|
||||
resources.ApplyResources(this.DeleteDriveButton, "DeleteDriveButton");
|
||||
this.DeleteDriveButton.Name = "DeleteDriveButton";
|
||||
this.DeleteDriveButton.UseVisualStyleBackColor = true;
|
||||
this.DeleteDriveButton.Click += new System.EventHandler(this.DeleteDriveButton_Click);
|
||||
//
|
||||
// DetachButtonContainer
|
||||
//
|
||||
this.DetachButtonContainer.Controls.Add(this.DetachDriveButton);
|
||||
resources.ApplyResources(this.DetachButtonContainer, "DetachButtonContainer");
|
||||
this.DetachButtonContainer.Name = "DetachButtonContainer";
|
||||
//
|
||||
// DetachDriveButton
|
||||
//
|
||||
resources.ApplyResources(this.DetachDriveButton, "DetachDriveButton");
|
||||
this.DetachDriveButton.Name = "DetachDriveButton";
|
||||
this.DetachDriveButton.UseVisualStyleBackColor = true;
|
||||
this.DetachDriveButton.Click += new System.EventHandler(this.DetachButton_Click);
|
||||
//
|
||||
// multipleDvdIsoList1
|
||||
//
|
||||
resources.ApplyResources(this.multipleDvdIsoList1, "multipleDvdIsoList1");
|
||||
this.multipleDvdIsoList1.MaximumSize = new System.Drawing.Size(900, 36);
|
||||
this.multipleDvdIsoList1.LabelNewCdForeColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.multipleDvdIsoList1.LabelSingleDvdForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.multipleDvdIsoList1.LinkLabelLinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
|
||||
this.multipleDvdIsoList1.Name = "multipleDvdIsoList1";
|
||||
this.multipleDvdIsoList1.VM = null;
|
||||
//
|
||||
// gradientPanel1
|
||||
//
|
||||
this.gradientPanel1.Controls.Add(this.TitleLabel);
|
||||
resources.ApplyResources(this.gradientPanel1, "gradientPanel1");
|
||||
this.gradientPanel1.Name = "gradientPanel1";
|
||||
this.gradientPanel1.Scheme = XenAdmin.Controls.GradientPanel.GradientPanel.Schemes.Tab;
|
||||
//
|
||||
// TitleLabel
|
||||
//
|
||||
resources.ApplyResources(this.TitleLabel, "TitleLabel");
|
||||
this.TitleLabel.AutoEllipsis = true;
|
||||
this.TitleLabel.ForeColor = System.Drawing.Color.White;
|
||||
this.TitleLabel.Name = "TitleLabel";
|
||||
//
|
||||
// dataGridViewTextBoxColumn1
|
||||
//
|
||||
this.dataGridViewTextBoxColumn1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
@ -373,37 +436,23 @@ namespace XenAdmin.TabPages
|
||||
this.dataGridViewTextBoxColumn10.Name = "dataGridViewTextBoxColumn10";
|
||||
this.dataGridViewTextBoxColumn10.ReadOnly = true;
|
||||
//
|
||||
// gradientPanel1
|
||||
//
|
||||
this.gradientPanel1.Controls.Add(this.TitleLabel);
|
||||
resources.ApplyResources(this.gradientPanel1, "gradientPanel1");
|
||||
this.gradientPanel1.Name = "gradientPanel1";
|
||||
this.gradientPanel1.Scheme = XenAdmin.Controls.GradientPanel.GradientPanel.Schemes.Tab;
|
||||
//
|
||||
// TitleLabel
|
||||
//
|
||||
resources.ApplyResources(this.TitleLabel, "TitleLabel");
|
||||
this.TitleLabel.AutoEllipsis = true;
|
||||
this.TitleLabel.ForeColor = System.Drawing.Color.White;
|
||||
this.TitleLabel.Name = "TitleLabel";
|
||||
//
|
||||
// VMStoragePage
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.BackColor = System.Drawing.Color.Transparent;
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Controls.Add(this.gradientPanel1);
|
||||
this.DoubleBuffered = true;
|
||||
this.Name = "VMStoragePage";
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridViewStorage)).EndInit();
|
||||
this.flowLayoutPanel1.ResumeLayout(false);
|
||||
this.DeactivateButtonContainer.ResumeLayout(false);
|
||||
this.MoveButtonContainer.ResumeLayout(false);
|
||||
this.DeleteButtonContainer.ResumeLayout(false);
|
||||
this.DetachButtonContainer.ResumeLayout(false);
|
||||
this.contextMenuStrip1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridViewStorage)).EndInit();
|
||||
this.gradientPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
@ -414,21 +463,17 @@ namespace XenAdmin.TabPages
|
||||
public System.Windows.Forms.Button AttachButton;
|
||||
public System.Windows.Forms.Button AddButton;
|
||||
private System.Windows.Forms.Button EditButton;
|
||||
public System.Windows.Forms.Button DetachDriveButton;
|
||||
public System.Windows.Forms.Button DeleteDriveButton;
|
||||
public System.Windows.Forms.Button DetachButton;
|
||||
public System.Windows.Forms.Button DeleteButton;
|
||||
private System.Windows.Forms.Label TitleLabel;
|
||||
private XenAdmin.Controls.ToolTipContainer DetachButtonContainer;
|
||||
private XenAdmin.Controls.ToolTipContainer DeleteButtonContainer;
|
||||
private System.Windows.Forms.Panel RightButtonSeparator;
|
||||
private System.Windows.Forms.Panel LeftButtonSeparator;
|
||||
private XenAdmin.Controls.ToolTipContainer DeactivateButtonContainer;
|
||||
private XenAdmin.Controls.GradientPanel.GradientPanel gradientPanel1;
|
||||
public System.Windows.Forms.Button DeactivateButton;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
private XenAdmin.Controls.MultipleDvdIsoList multipleDvdIsoList1;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.DataGridView dataGridViewStorage;
|
||||
private XenAdmin.Controls.DataGridViewEx.DataGridViewEx dataGridViewStorage;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
|
||||
@ -438,18 +483,28 @@ namespace XenAdmin.TabPages
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn7;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn8;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDevicePosition;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDesc;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSR;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSRVolume;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSize;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnReadOnly;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnPriority;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnActive;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDevicePath;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDevicePosition;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDesc;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSR;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSRVolume;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnSize;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnReadOnly;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnPriority;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnActive;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDevicePath;
|
||||
private XenAdmin.Controls.ToolTipContainer MoveButtonContainer;
|
||||
private System.Windows.Forms.Button MoveButton;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemAdd;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemAttach;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemDeactivate;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemMove;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemProperties;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemDelete;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemDetach;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
}
|
||||
}
|
||||
|
@ -52,7 +52,6 @@ namespace XenAdmin.TabPages
|
||||
{
|
||||
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
private readonly ContextMenu _TheContextMenu = new ContextMenu();
|
||||
private readonly DataGridViewColumn storageLinkColumn;
|
||||
|
||||
private VM vm;
|
||||
@ -60,31 +59,13 @@ namespace XenAdmin.TabPages
|
||||
public VMStoragePage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_TheContextMenu.MenuItems.Add(AddButton.Text, AddButton_Click);
|
||||
|
||||
storageLinkColumn = ColumnSRVolume;
|
||||
|
||||
TitleLabel.ForeColor = Program.HeaderGradientForeColor;
|
||||
TitleLabel.Font = Program.HeaderGradientFont;
|
||||
dataGridViewStorage.SortCompare += new DataGridViewSortCompareEventHandler(dataGridViewStorage_SortCompare);
|
||||
dataGridViewStorage.Sort(ColumnDevicePosition, ListSortDirection.Ascending);
|
||||
}
|
||||
|
||||
void dataGridViewStorage_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
|
||||
{
|
||||
if (e.Column == ColumnDevicePosition)
|
||||
{
|
||||
e.SortResult = StringUtility.NaturalCompare(e.CellValue1.ToString(), e.CellValue2.ToString());
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
e.Handled = false;
|
||||
}
|
||||
}
|
||||
|
||||
public VM VM
|
||||
{
|
||||
set
|
||||
@ -127,17 +108,19 @@ namespace XenAdmin.TabPages
|
||||
}
|
||||
}
|
||||
|
||||
private void vdi_PropertyChanged(object sender1, PropertyChangedEventArgs e)
|
||||
private void vdi_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
// Nothing changing on any of the vdi's will require a rebuild of the list...
|
||||
|
||||
if (e.PropertyName == "allowed_operations")
|
||||
UpdateButtons();
|
||||
else
|
||||
UpdateData();
|
||||
Program.Invoke(this, () =>
|
||||
{
|
||||
if (e.PropertyName == "allowed_operations")
|
||||
UpdateButtons();
|
||||
else
|
||||
UpdateData();
|
||||
});
|
||||
}
|
||||
|
||||
private void vbd_PropertyChanged(object sender1, PropertyChangedEventArgs e)
|
||||
private void vbd_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
// Only rebuild list if VDIs changed - otherwise just refresh
|
||||
|
||||
@ -186,7 +169,7 @@ namespace XenAdmin.TabPages
|
||||
}
|
||||
}
|
||||
|
||||
private void vm_PropertyChanged(object sender1, PropertyChangedEventArgs e)
|
||||
private void vm_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.PropertyName == "VBDs")
|
||||
BuildList();
|
||||
@ -287,11 +270,6 @@ namespace XenAdmin.TabPages
|
||||
}
|
||||
}
|
||||
|
||||
private void TheHeaderListBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
UpdateButtons();
|
||||
}
|
||||
|
||||
private void UpdateButtons()
|
||||
{
|
||||
AttachVirtualDiskCommand attachCmd = new AttachVirtualDiskCommand(Program.MainWindow, vm);
|
||||
@ -303,8 +281,8 @@ namespace XenAdmin.TabPages
|
||||
if (dataGridViewStorage.Rows.Count == 0 || vbdRows == null || vm == null)
|
||||
{
|
||||
DeactivateButton.Enabled = false;
|
||||
DetachDriveButton.Enabled = false;
|
||||
DeleteDriveButton.Enabled = false;
|
||||
DetachButton.Enabled = false;
|
||||
DeleteButton.Enabled = false;
|
||||
EditButton.Enabled = false;
|
||||
MoveButton.Enabled = false;
|
||||
return;
|
||||
@ -326,12 +304,12 @@ namespace XenAdmin.TabPages
|
||||
if (deleteCmd.CanExecute())
|
||||
{
|
||||
DeleteButtonContainer.RemoveAll();
|
||||
DeleteDriveButton.Enabled = true;
|
||||
DeleteButton.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
DeleteButtonContainer.SetToolTip(deleteCmd.ToolTipText);
|
||||
DeleteDriveButton.Enabled = false;
|
||||
DeleteButton.Enabled = false;
|
||||
}
|
||||
|
||||
Command activationCmd = null;
|
||||
@ -340,14 +318,14 @@ namespace XenAdmin.TabPages
|
||||
if (vbdCol.AsXenObjects<VBD>().Find(delegate(VBD vbd) { return !vbd.currently_attached; }) == null)
|
||||
{
|
||||
// no VBDs are attached so we are deactivating
|
||||
DeactivateButton.Text = Messages.DEACTIVATE;
|
||||
toolStripMenuItemDeactivate.Text = DeactivateButton.Text = Messages.DEACTIVATE;
|
||||
activationCmd = new DeactivateVBDCommand(Program.MainWindow, selectedVBDs);
|
||||
}
|
||||
else
|
||||
{
|
||||
// this is the default cause in the mixed attached/detatched scenario. We try to activate all the selection
|
||||
// this is the default cause in the mixed attached/detached scenario. We try to activate all the selection
|
||||
// The command error reports afterwards about the ones which are already attached
|
||||
DeactivateButton.Text = Messages.ACTIVATE;
|
||||
toolStripMenuItemDeactivate.Text = DeactivateButton.Text = Messages.ACTIVATE;
|
||||
activationCmd = new ActivateVBDCommand(Program.MainWindow, selectedVBDs);
|
||||
}
|
||||
|
||||
@ -366,12 +344,12 @@ namespace XenAdmin.TabPages
|
||||
if (detachCmd.CanExecute())
|
||||
{
|
||||
DetachButtonContainer.RemoveAll();
|
||||
DetachDriveButton.Enabled = true;
|
||||
DetachButton.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
DetachButtonContainer.SetToolTip(detachCmd.ToolTipText);
|
||||
DetachDriveButton.Enabled = false;
|
||||
DetachButton.Enabled = false;
|
||||
}
|
||||
|
||||
// Move button
|
||||
@ -398,7 +376,10 @@ namespace XenAdmin.TabPages
|
||||
return new MigrateVirtualDiskCommand(Program.MainWindow, selection);
|
||||
}
|
||||
|
||||
private void AddButton_Click(object sender, EventArgs e)
|
||||
|
||||
#region Actions on VDIs
|
||||
|
||||
private void AddVdi()
|
||||
{
|
||||
var cmd = new AddVirtualDiskCommand(Program.MainWindow, vm);
|
||||
if (cmd.CanExecute())
|
||||
@ -408,7 +389,7 @@ namespace XenAdmin.TabPages
|
||||
UpdateButtons();
|
||||
}
|
||||
|
||||
private void AttachButton_Click(object sender, EventArgs e)
|
||||
private void AttachVdi()
|
||||
{
|
||||
AttachVirtualDiskCommand cmd = new AttachVirtualDiskCommand(Program.MainWindow, vm);
|
||||
if (cmd.CanExecute())
|
||||
@ -417,7 +398,7 @@ namespace XenAdmin.TabPages
|
||||
UpdateButtons();
|
||||
}
|
||||
|
||||
private void MoveButton_Click(object sender, EventArgs e)
|
||||
private void MoveVdi()
|
||||
{
|
||||
List<VBDRow> rows = SelectedVBDRows;
|
||||
if (rows == null)
|
||||
@ -431,10 +412,7 @@ namespace XenAdmin.TabPages
|
||||
cmd.Execute();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// User has clicked the detach button. Unplug the VBD, then destroy it.
|
||||
/// </summary>
|
||||
private void DetachButton_Click(object sender, EventArgs e)
|
||||
private void DetachVdi()
|
||||
{
|
||||
List<VBDRow> rows = SelectedVBDRows;
|
||||
if (rows == null)
|
||||
@ -448,7 +426,7 @@ namespace XenAdmin.TabPages
|
||||
cmd.Execute();
|
||||
}
|
||||
|
||||
private void DeleteDriveButton_Click(object sender, EventArgs e)
|
||||
private void DeleteVdi()
|
||||
{
|
||||
List<VBDRow> rows = SelectedVBDRows;
|
||||
if (rows == null)
|
||||
@ -465,7 +443,7 @@ namespace XenAdmin.TabPages
|
||||
cmd.Execute();
|
||||
}
|
||||
|
||||
private void EditButton_Click(object sender, EventArgs e)
|
||||
private void EditVdi()
|
||||
{
|
||||
if (vm == null)
|
||||
return;
|
||||
@ -478,84 +456,209 @@ namespace XenAdmin.TabPages
|
||||
new PropertiesDialog(rows[0].VDI).ShowDialog(this);
|
||||
}
|
||||
|
||||
private void TheHeaderListBox_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
|
||||
{
|
||||
if (e.RowIndex >= 0 && EditButton.Enabled == true)
|
||||
{
|
||||
// If double-click was on data row (not including header), launch the storage edit box
|
||||
EditButton_Click(null, null);
|
||||
}
|
||||
}
|
||||
|
||||
private void TheHeaderListBox_DataGridView_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
// Load context menus on right mouse click
|
||||
DataGridView.HitTestInfo hitTestInfo;
|
||||
if (e.Button == MouseButtons.Right)
|
||||
{
|
||||
hitTestInfo = dataGridViewStorage.HitTest(e.X, e.Y);
|
||||
if (hitTestInfo.Type == DataGridViewHitTestType.Cell)
|
||||
{
|
||||
if (dataGridViewStorage.Rows.Count >= 0)
|
||||
{
|
||||
if (!dataGridViewStorage.Rows[hitTestInfo.RowIndex].Selected)
|
||||
{
|
||||
// Select the row that the user right clicked on (similiar to outlook) if it's not already in the selection
|
||||
// (avoids clearing a multiselect if you right click inside it)
|
||||
// Check if the CurrentCell is the cell the user right clicked on (but the row is not Selected) [CA-64954]
|
||||
// This happens when the grid is initially shown: the current cell is the first cell in the first column, but the row is not selected
|
||||
if (dataGridViewStorage.CurrentCell == dataGridViewStorage[hitTestInfo.ColumnIndex, hitTestInfo.RowIndex])
|
||||
dataGridViewStorage.Rows[hitTestInfo.RowIndex].Selected = true;
|
||||
else
|
||||
dataGridViewStorage.CurrentCell = dataGridViewStorage[hitTestInfo.ColumnIndex, hitTestInfo.RowIndex];
|
||||
}
|
||||
// Update the menus as they are contextual
|
||||
PopulateContextMenu();
|
||||
// Show the menus. We will always have at least one (Add).
|
||||
_TheContextMenu.Show(dataGridViewStorage, new Point(e.X, e.Y));
|
||||
}
|
||||
}
|
||||
}
|
||||
} // TheHeaderListBox_DataGridView_MouseUp
|
||||
|
||||
private void PopulateContextMenu()
|
||||
{
|
||||
_TheContextMenu.MenuItems.Clear();
|
||||
if (AddButton.Visible && AddButton.Enabled)
|
||||
_TheContextMenu.MenuItems.Add(AddButton.Text, AddButton_Click);
|
||||
if (AttachButton.Visible && AttachButton.Enabled)
|
||||
_TheContextMenu.MenuItems.Add(AttachButton.Text, AttachButton_Click);
|
||||
if (DeactivateButton.Enabled)
|
||||
_TheContextMenu.MenuItems.Add(DeactivateButton.Text, DeactivateButton_Click);
|
||||
if (MoveButton.Enabled)
|
||||
_TheContextMenu.MenuItems.Add(MoveButton.Text, MoveButton_Click);
|
||||
if (DeleteDriveButton.Visible && DeleteDriveButton.Enabled)
|
||||
_TheContextMenu.MenuItems.Add(DeleteDriveButton.Text, DeleteDriveButton_Click);
|
||||
if (DetachDriveButton.Visible && DetachDriveButton.Enabled)
|
||||
_TheContextMenu.MenuItems.Add(DetachDriveButton.Text, DetachButton_Click);
|
||||
if (EditButton.Visible && EditButton.Enabled)
|
||||
_TheContextMenu.MenuItems.Add(EditButton.Text, EditButton_Click);
|
||||
}
|
||||
|
||||
private void DeactivateButton_Click(object sender, EventArgs e)
|
||||
private void ActivateDeactivateVdi()
|
||||
{
|
||||
List<VBDRow> rows = SelectedVBDRows;
|
||||
if (rows == null)
|
||||
return;
|
||||
List<SelectedItem> l = new List<SelectedItem>();
|
||||
foreach (VBDRow r in rows)
|
||||
l.Add(new SelectedItem(r.VBD));
|
||||
|
||||
SelectedItemCollection col = new SelectedItemCollection(l);
|
||||
var selection = from VBDRow r in rows select new SelectedItem(r.VBD);
|
||||
SelectedItemCollection col = new SelectedItemCollection(selection);
|
||||
|
||||
Command cmd = null;
|
||||
if (col.AsXenObjects<VBD>().Find(vbd => !vbd.currently_attached) == null)
|
||||
cmd = new DeactivateVBDCommand(Program.MainWindow, l);
|
||||
cmd = new DeactivateVBDCommand(Program.MainWindow, col);
|
||||
else
|
||||
cmd = new ActivateVBDCommand(Program.MainWindow, l);
|
||||
cmd = new ActivateVBDCommand(Program.MainWindow, col);
|
||||
|
||||
if (cmd.CanExecute())
|
||||
cmd.Execute();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Datagridview event handlers
|
||||
|
||||
private void dataGridViewStorage_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
|
||||
{
|
||||
if (e.Column == ColumnDevicePosition)
|
||||
{
|
||||
e.SortResult = StringUtility.NaturalCompare(e.CellValue1.ToString(), e.CellValue2.ToString());
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
e.Handled = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGridViewStorage_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
UpdateButtons();
|
||||
}
|
||||
|
||||
private void dataGridViewStorage_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
|
||||
{
|
||||
if (e.RowIndex >= 0 && EditButton.Enabled)
|
||||
{
|
||||
// If double-click was on data row (not including header), launch the storage edit box
|
||||
EditVdi();
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGridViewStorage_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
DataGridView.HitTestInfo hitTestInfo = dataGridViewStorage.HitTest(e.X, e.Y);
|
||||
|
||||
if (hitTestInfo.Type == DataGridViewHitTestType.None)
|
||||
{
|
||||
dataGridViewStorage.ClearSelection();
|
||||
}
|
||||
else if (hitTestInfo.Type == DataGridViewHitTestType.Cell && e.Button == MouseButtons.Right
|
||||
&& 0 <= hitTestInfo.RowIndex && hitTestInfo.RowIndex < dataGridViewStorage.Rows.Count
|
||||
&& !dataGridViewStorage.Rows[hitTestInfo.RowIndex].Selected)
|
||||
{
|
||||
// Select the row that the user right clicked on (similiar to outlook) if it's not already in the selection
|
||||
// (avoids clearing a multiselect if you right click inside it)
|
||||
// Check if the CurrentCell is the cell the user right clicked on (but the row is not Selected) [CA-64954]
|
||||
// This happens when the grid is initially shown: the current cell is the first cell in the first column, but the row is not selected
|
||||
|
||||
if (dataGridViewStorage.CurrentCell == dataGridViewStorage[hitTestInfo.ColumnIndex, hitTestInfo.RowIndex])
|
||||
dataGridViewStorage.Rows[hitTestInfo.RowIndex].Selected = true;
|
||||
else
|
||||
dataGridViewStorage.CurrentCell = dataGridViewStorage[hitTestInfo.ColumnIndex, hitTestInfo.RowIndex];
|
||||
}
|
||||
|
||||
if ((hitTestInfo.Type == DataGridViewHitTestType.None || hitTestInfo.Type == DataGridViewHitTestType.Cell)
|
||||
&& e.Button == MouseButtons.Right)
|
||||
{
|
||||
contextMenuStrip1.Show(dataGridViewStorage, new Point(e.X, e.Y));
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGridViewStorage_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode != Keys.Apps)
|
||||
return;
|
||||
|
||||
if (dataGridViewStorage.SelectedRows.Count == 0)
|
||||
{
|
||||
// 3 is the defaul control margin
|
||||
contextMenuStrip1.Show(dataGridViewStorage, 3, dataGridViewStorage.ColumnHeadersHeight + 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
DataGridViewRow row = dataGridViewStorage.SelectedRows[0];
|
||||
contextMenuStrip1.Show(dataGridViewStorage, 3, row.Height * (row.Index + 2));
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Button and Toolstrip event handlers
|
||||
|
||||
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
|
||||
{
|
||||
bool add = AddButton.Visible && AddButton.Enabled;
|
||||
bool attach = AttachButton.Visible && AttachButton.Enabled;
|
||||
bool deactivate = DeactivateButton.Enabled;
|
||||
bool move = MoveButton.Enabled;
|
||||
bool delete = DeleteButton.Visible && DeleteButton.Enabled;
|
||||
bool detach = DetachButton.Visible && DetachButton.Enabled;
|
||||
bool edit = EditButton.Visible && EditButton.Enabled;
|
||||
|
||||
if (!(add || attach || deactivate || move || delete || detach || edit))
|
||||
{
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
|
||||
toolStripMenuItemAdd.Visible = add;
|
||||
toolStripMenuItemAttach.Visible = attach;
|
||||
toolStripMenuItemDeactivate.Visible = deactivate;
|
||||
toolStripMenuItemMove.Visible = move;
|
||||
toolStripMenuItemDelete.Visible = delete;
|
||||
toolStripMenuItemDetach.Visible = detach;
|
||||
toolStripMenuItemProperties.Visible = edit;
|
||||
toolStripSeparator1.Visible = (add || attach || deactivate || move || delete || detach) && edit;
|
||||
}
|
||||
|
||||
|
||||
private void toolStripMenuItemAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddVdi();
|
||||
}
|
||||
|
||||
private void toolStripMenuItemAttach_Click(object sender, EventArgs e)
|
||||
{
|
||||
AttachVdi();
|
||||
}
|
||||
|
||||
private void toolStripMenuItemDeactivate_Click(object sender, EventArgs e)
|
||||
{
|
||||
ActivateDeactivateVdi();
|
||||
}
|
||||
|
||||
private void toolStripMenuItemMove_Click(object sender, EventArgs e)
|
||||
{
|
||||
MoveVdi();
|
||||
}
|
||||
|
||||
private void toolStripMenuItemDelete_Click(object sender, EventArgs e)
|
||||
{
|
||||
DeleteVdi();
|
||||
}
|
||||
|
||||
private void toolStripMenuItemDetach_Click(object sender, EventArgs e)
|
||||
{
|
||||
DetachVdi();
|
||||
}
|
||||
|
||||
private void toolStripMenuItemProperties_Click(object sender, EventArgs e)
|
||||
{
|
||||
EditVdi();
|
||||
}
|
||||
|
||||
|
||||
private void AddButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddVdi();
|
||||
}
|
||||
|
||||
private void AttachButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
AttachVdi();
|
||||
}
|
||||
|
||||
private void DeactivateButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
ActivateDeactivateVdi();
|
||||
}
|
||||
|
||||
private void MoveButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
MoveVdi();
|
||||
}
|
||||
|
||||
private void DeleteDriveButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DeleteVdi();
|
||||
}
|
||||
|
||||
private void DetachButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DetachVdi();
|
||||
}
|
||||
|
||||
private void EditButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
EditVdi();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class VBDRow : DataGridViewRow
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -74,7 +74,7 @@ namespace XenAdmin.Actions
|
||||
|
||||
protected override void Run()
|
||||
{
|
||||
log.DebugFormat("Detatching VDI '{0}'", Helpers.GetName(vdi));
|
||||
log.DebugFormat("Detaching VDI '{0}'", Helpers.GetName(vdi));
|
||||
Description = Messages.ACTION_DISK_DETACHING;
|
||||
try
|
||||
{
|
||||
@ -96,7 +96,7 @@ namespace XenAdmin.Actions
|
||||
PollToCompletion(51, 100);
|
||||
}
|
||||
Description = Messages.ACTION_DISK_DETACHED;
|
||||
log.DebugFormat("Detatched VDI '{0}'", Helpers.GetName(vdi));
|
||||
log.DebugFormat("Detached VDI '{0}'", Helpers.GetName(vdi));
|
||||
}
|
||||
|
||||
protected override void Clean()
|
||||
|
54
XenModel/Messages.Designer.cs
generated
54
XenModel/Messages.Designer.cs
generated
@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.34209
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@ -484,20 +484,20 @@ namespace XenAdmin {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Detatching storage items....
|
||||
/// Looks up a localized string similar to Detaching storage items....
|
||||
/// </summary>
|
||||
public static string ACTION_DETATCHING_MULTIPLE_VDIS_STATUS {
|
||||
public static string ACTION_DETACHING_MULTIPLE_VDIS_STATUS {
|
||||
get {
|
||||
return ResourceManager.GetString("ACTION_DETATCHING_MULTIPLE_VDIS_STATUS", resourceCulture);
|
||||
return ResourceManager.GetString("ACTION_DETACHING_MULTIPLE_VDIS_STATUS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Detaching Multiple Storage Items.
|
||||
/// </summary>
|
||||
public static string ACTION_DETATCHING_MULTIPLE_VDIS_TITLE {
|
||||
public static string ACTION_DETACHING_MULTIPLE_VDIS_TITLE {
|
||||
get {
|
||||
return ResourceManager.GetString("ACTION_DETATCHING_MULTIPLE_VDIS_TITLE", resourceCulture);
|
||||
return ResourceManager.GetString("ACTION_DETACHING_MULTIPLE_VDIS_TITLE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6451,7 +6451,7 @@ namespace XenAdmin {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You must detatch this virtual disk before it can be moved..
|
||||
/// Looks up a localized string similar to You must detach this virtual disk before it can be moved..
|
||||
/// </summary>
|
||||
public static string CANNOT_MOVE_VDI_WITH_VBDS {
|
||||
get {
|
||||
@ -10690,6 +10690,15 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to &Detach all.
|
||||
/// </summary>
|
||||
public static string DETACH_ALL_BUTTON_LABEL {
|
||||
get {
|
||||
return ResourceManager.GetString("DETACH_ALL_BUTTON_LABEL", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to &Detach.
|
||||
/// </summary>
|
||||
@ -10735,15 +10744,6 @@ namespace XenAdmin {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to &Detatch all.
|
||||
/// </summary>
|
||||
public static string DETATCH_ALL_BUTTON_LABEL {
|
||||
get {
|
||||
return ResourceManager.GetString("DETATCH_ALL_BUTTON_LABEL", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Device.
|
||||
/// </summary>
|
||||
@ -13359,20 +13359,20 @@ namespace XenAdmin {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The following virtual disks could not be detatched:.
|
||||
/// Looks up a localized string similar to The following virtual disks could not be detached:.
|
||||
/// </summary>
|
||||
public static string ERROR_DETATCHING_VDIS_MESSAGE {
|
||||
public static string ERROR_DETACHING_VDIS_MESSAGE {
|
||||
get {
|
||||
return ResourceManager.GetString("ERROR_DETATCHING_VDIS_MESSAGE", resourceCulture);
|
||||
return ResourceManager.GetString("ERROR_DETACHING_VDIS_MESSAGE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Error Detatching Virtual Disks.
|
||||
/// Looks up a localized string similar to Error Detaching Virtual Disks.
|
||||
/// </summary>
|
||||
public static string ERROR_DETATCHING_VDIS_TITLE {
|
||||
public static string ERROR_DETACHING_VDIS_TITLE {
|
||||
get {
|
||||
return ResourceManager.GetString("ERROR_DETATCHING_VDIS_TITLE", resourceCulture);
|
||||
return ResourceManager.GetString("ERROR_DETACHING_VDIS_TITLE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@ -21431,9 +21431,9 @@ namespace XenAdmin {
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Detach Multiple Virtual Disks.
|
||||
/// </summary>
|
||||
public static string MESSAGEBOX_DETATCH_VD_TITLE_MUTLIPLE {
|
||||
public static string MESSAGEBOX_DETACH_VD_TITLE_MUTLIPLE {
|
||||
get {
|
||||
return ResourceManager.GetString("MESSAGEBOX_DETATCH_VD_TITLE_MUTLIPLE", resourceCulture);
|
||||
return ResourceManager.GetString("MESSAGEBOX_DETACH_VD_TITLE_MUTLIPLE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@ -22006,9 +22006,9 @@ namespace XenAdmin {
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You are about to detach multiple virtual disks, are you sure you wish to proceed?.
|
||||
/// </summary>
|
||||
public static string MULTI_VDI_DETATCH_WARNING {
|
||||
public static string MULTI_VDI_DETACH_WARNING {
|
||||
get {
|
||||
return ResourceManager.GetString("MULTI_VDI_DETATCH_WARNING", resourceCulture);
|
||||
return ResourceManager.GetString("MULTI_VDI_DETACH_WARNING", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
@ -30578,7 +30578,7 @@ namespace XenAdmin {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to VMs with no home server cannot be on local storage.
|
||||
/// Looks up a localized string similar to VMs without a home server cannot have disks on local storage.
|
||||
/// </summary>
|
||||
public static string SR_IS_LOCAL {
|
||||
get {
|
||||
|
@ -258,10 +258,10 @@
|
||||
<data name="ACTION_DESTROY_BOND_TITLE" xml:space="preserve">
|
||||
<value>{0} の破棄</value>
|
||||
</data>
|
||||
<data name="ACTION_DETATCHING_MULTIPLE_VDIS_STATUS" xml:space="preserve">
|
||||
<data name="ACTION_DETACHING_MULTIPLE_VDIS_STATUS" xml:space="preserve">
|
||||
<value>ストレージの接続を解除しています...</value>
|
||||
</data>
|
||||
<data name="ACTION_DETATCHING_MULTIPLE_VDIS_TITLE" xml:space="preserve">
|
||||
<data name="ACTION_DETACHING_MULTIPLE_VDIS_TITLE" xml:space="preserve">
|
||||
<value>複数ストレージの接続解除</value>
|
||||
</data>
|
||||
<data name="ACTION_DISABLE_LIVE_PATCHING" xml:space="preserve">
|
||||
@ -3842,7 +3842,7 @@ VM 移行処理のパフォーマンスや信頼性を向上させるため、
|
||||
<data name="DETAILS" xml:space="preserve">
|
||||
<value>詳細</value>
|
||||
</data>
|
||||
<data name="DETATCH_ALL_BUTTON_LABEL" xml:space="preserve">
|
||||
<data name="DETACH_ALL_BUTTON_LABEL" xml:space="preserve">
|
||||
<value>すべて接続解除(&D)</value>
|
||||
</data>
|
||||
<data name="DEVICE_NAME" xml:space="preserve">
|
||||
@ -4722,10 +4722,10 @@ CD をイジェクトしてから再試行してください。</value>
|
||||
<data name="ERROR_DESTROYING_STORAGE_ITEMS_TITLE" xml:space="preserve">
|
||||
<value>ストレージの破棄エラー</value>
|
||||
</data>
|
||||
<data name="ERROR_DETATCHING_VDIS_MESSAGE" xml:space="preserve">
|
||||
<data name="ERROR_DETACHING_VDIS_MESSAGE" xml:space="preserve">
|
||||
<value>以下の仮想ディスクを接続解除できません。</value>
|
||||
</data>
|
||||
<data name="ERROR_DETATCHING_VDIS_TITLE" xml:space="preserve">
|
||||
<data name="ERROR_DETACHING_VDIS_TITLE" xml:space="preserve">
|
||||
<value>仮想ディスクの接続解除エラー</value>
|
||||
</data>
|
||||
<data name="ERROR_DIALOG_ADD_TO_POOL_TEXT" xml:space="preserve">
|
||||
@ -7466,7 +7466,7 @@ SCSI ID: {2}
|
||||
<data name="MESSAGEBOX_DETACH_VD_TITLE" xml:space="preserve">
|
||||
<value>仮想ディスクの接続解除</value>
|
||||
</data>
|
||||
<data name="MESSAGEBOX_DETATCH_VD_TITLE_MUTLIPLE" xml:space="preserve">
|
||||
<data name="MESSAGEBOX_DETACH_VD_TITLE_MUTLIPLE" xml:space="preserve">
|
||||
<value>複数仮想ディスクの接続解除</value>
|
||||
</data>
|
||||
<data name="MESSAGEBOX_ERRORTEXT" xml:space="preserve">
|
||||
@ -7693,7 +7693,7 @@ SCSI ID: {2}
|
||||
<data name="MULTI_VDI_DELETE_WARNING" xml:space="preserve">
|
||||
<value>複数の仮想ディスクが削除されます。続行しますか?</value>
|
||||
</data>
|
||||
<data name="MULTI_VDI_DETATCH_WARNING" xml:space="preserve">
|
||||
<data name="MULTI_VDI_DETACH_WARNING" xml:space="preserve">
|
||||
<value>複数の仮想ディスクが接続解除されます。続行しますか?</value>
|
||||
</data>
|
||||
<data name="MUST_SELECT_NETWORK" xml:space="preserve">
|
||||
|
@ -258,10 +258,10 @@
|
||||
<data name="ACTION_DESTROY_BOND_TITLE" xml:space="preserve">
|
||||
<value>Destroying {0}</value>
|
||||
</data>
|
||||
<data name="ACTION_DETATCHING_MULTIPLE_VDIS_STATUS" xml:space="preserve">
|
||||
<value>Detatching storage items...</value>
|
||||
<data name="ACTION_DETACHING_MULTIPLE_VDIS_STATUS" xml:space="preserve">
|
||||
<value>Detaching storage items...</value>
|
||||
</data>
|
||||
<data name="ACTION_DETATCHING_MULTIPLE_VDIS_TITLE" xml:space="preserve">
|
||||
<data name="ACTION_DETACHING_MULTIPLE_VDIS_TITLE" xml:space="preserve">
|
||||
<value>Detaching Multiple Storage Items</value>
|
||||
</data>
|
||||
<data name="ACTION_DISABLE_LIVE_PATCHING" xml:space="preserve">
|
||||
@ -2350,7 +2350,7 @@ Deleting this bond will disrupt traffic through the secondary interface on the b
|
||||
<value>Snapshot disks cannot be moved</value>
|
||||
</data>
|
||||
<data name="CANNOT_MOVE_VDI_WITH_VBDS" xml:space="preserve">
|
||||
<value>You must detatch this virtual disk before it can be moved.</value>
|
||||
<value>You must detach this virtual disk before it can be moved.</value>
|
||||
</data>
|
||||
<data name="CANNOT_PARSE_NODE_PARAM" xml:space="preserve">
|
||||
<value>Cannot parse required parameter '{1}' on XML node '{0}'</value>
|
||||
@ -3834,15 +3834,15 @@ This will also delete its subfolders.</value>
|
||||
<data name="DETACHED_ISCI_DETECTED" xml:space="preserve">
|
||||
<value>[XenCenter] has detected that an SR already exists on this LUN. This SR is not currently in use by '{0}', would you like to attach it?</value>
|
||||
</data>
|
||||
<data name="DETACH_ALL_BUTTON_LABEL" xml:space="preserve">
|
||||
<value>&Detach all</value>
|
||||
</data>
|
||||
<data name="DETACH_SR" xml:space="preserve">
|
||||
<value>&Detach</value>
|
||||
</data>
|
||||
<data name="DETAILS" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="DETATCH_ALL_BUTTON_LABEL" xml:space="preserve">
|
||||
<value>&Detatch all</value>
|
||||
</data>
|
||||
<data name="DEVICE_NAME" xml:space="preserve">
|
||||
<value>Device</value>
|
||||
</data>
|
||||
@ -4720,11 +4720,11 @@ Would you like to eject these ISOs before continuing?</value>
|
||||
<data name="ERROR_DESTROYING_STORAGE_ITEMS_TITLE" xml:space="preserve">
|
||||
<value>Error Destroying Storage Items</value>
|
||||
</data>
|
||||
<data name="ERROR_DETATCHING_VDIS_MESSAGE" xml:space="preserve">
|
||||
<value>The following virtual disks could not be detatched:</value>
|
||||
<data name="ERROR_DETACHING_VDIS_MESSAGE" xml:space="preserve">
|
||||
<value>The following virtual disks could not be detached:</value>
|
||||
</data>
|
||||
<data name="ERROR_DETATCHING_VDIS_TITLE" xml:space="preserve">
|
||||
<value>Error Detatching Virtual Disks</value>
|
||||
<data name="ERROR_DETACHING_VDIS_TITLE" xml:space="preserve">
|
||||
<value>Error Detaching Virtual Disks</value>
|
||||
</data>
|
||||
<data name="ERROR_DIALOG_ADD_TO_POOL_TEXT" xml:space="preserve">
|
||||
<value>The following servers could not be added to the pool '{0}':</value>
|
||||
@ -7464,7 +7464,7 @@ Are you sure you want to detach this storage repository?</value>
|
||||
<data name="MESSAGEBOX_DETACH_VD_TITLE" xml:space="preserve">
|
||||
<value>Detach virtual disk</value>
|
||||
</data>
|
||||
<data name="MESSAGEBOX_DETATCH_VD_TITLE_MUTLIPLE" xml:space="preserve">
|
||||
<data name="MESSAGEBOX_DETACH_VD_TITLE_MUTLIPLE" xml:space="preserve">
|
||||
<value>Detach Multiple Virtual Disks</value>
|
||||
</data>
|
||||
<data name="MESSAGEBOX_ERRORTEXT" xml:space="preserve">
|
||||
@ -7691,7 +7691,7 @@ To learn more about the [XenServer] Live VDI Migration feature or to start a [Xe
|
||||
<data name="MULTI_VDI_DELETE_WARNING" xml:space="preserve">
|
||||
<value>You are about to delete multiple virtual disks. Are you sure you wish to proceed?</value>
|
||||
</data>
|
||||
<data name="MULTI_VDI_DETATCH_WARNING" xml:space="preserve">
|
||||
<data name="MULTI_VDI_DETACH_WARNING" xml:space="preserve">
|
||||
<value>You are about to detach multiple virtual disks, are you sure you wish to proceed?</value>
|
||||
</data>
|
||||
<data name="MUST_SELECT_NETWORK" xml:space="preserve">
|
||||
@ -10668,7 +10668,7 @@ Incremental allocation: {1}</value>
|
||||
<value>This storage repository is broken</value>
|
||||
</data>
|
||||
<data name="SR_IS_LOCAL" xml:space="preserve">
|
||||
<value>VMs with no home server cannot be on local storage</value>
|
||||
<value>VMs without a home server cannot have disks on local storage</value>
|
||||
</data>
|
||||
<data name="SR_PICKER_DISK_TOO_BIG" xml:space="preserve">
|
||||
<value>Disk size ({0}) exceeds SR size ({1})</value>
|
||||
|
@ -258,10 +258,10 @@
|
||||
<data name="ACTION_DESTROY_BOND_TITLE" xml:space="preserve">
|
||||
<value>正在销毁 {0}</value>
|
||||
</data>
|
||||
<data name="ACTION_DETATCHING_MULTIPLE_VDIS_STATUS" xml:space="preserve">
|
||||
<data name="ACTION_DETACHING_MULTIPLE_VDIS_STATUS" xml:space="preserve">
|
||||
<value>正在分离存储项...</value>
|
||||
</data>
|
||||
<data name="ACTION_DETATCHING_MULTIPLE_VDIS_TITLE" xml:space="preserve">
|
||||
<data name="ACTION_DETACHING_MULTIPLE_VDIS_TITLE" xml:space="preserve">
|
||||
<value>正在分离多个存储项</value>
|
||||
</data>
|
||||
<data name="ACTION_DISABLE_LIVE_PATCHING" xml:space="preserve">
|
||||
@ -3836,7 +3836,7 @@
|
||||
<data name="DETAILS" xml:space="preserve">
|
||||
<value>详细信息</value>
|
||||
</data>
|
||||
<data name="DETATCH_ALL_BUTTON_LABEL" xml:space="preserve">
|
||||
<data name="DETACH_ALL_BUTTON_LABEL" xml:space="preserve">
|
||||
<value>全部分离(&D)</value>
|
||||
</data>
|
||||
<data name="DEVICE_NAME" xml:space="preserve">
|
||||
@ -4716,10 +4716,10 @@
|
||||
<data name="ERROR_DESTROYING_STORAGE_ITEMS_TITLE" xml:space="preserve">
|
||||
<value>销毁存储项时出错</value>
|
||||
</data>
|
||||
<data name="ERROR_DETATCHING_VDIS_MESSAGE" xml:space="preserve">
|
||||
<data name="ERROR_DETACHING_VDIS_MESSAGE" xml:space="preserve">
|
||||
<value>无法分离以下虚拟磁盘:</value>
|
||||
</data>
|
||||
<data name="ERROR_DETATCHING_VDIS_TITLE" xml:space="preserve">
|
||||
<data name="ERROR_DETACHING_VDIS_TITLE" xml:space="preserve">
|
||||
<value>分离虚拟磁盘时出错</value>
|
||||
</data>
|
||||
<data name="ERROR_DIALOG_ADD_TO_POOL_TEXT" xml:space="preserve">
|
||||
@ -7460,7 +7460,7 @@ SCSI ID: {2}
|
||||
<data name="MESSAGEBOX_DETACH_VD_TITLE" xml:space="preserve">
|
||||
<value>分离虚拟磁盘</value>
|
||||
</data>
|
||||
<data name="MESSAGEBOX_DETATCH_VD_TITLE_MUTLIPLE" xml:space="preserve">
|
||||
<data name="MESSAGEBOX_DETACH_VD_TITLE_MUTLIPLE" xml:space="preserve">
|
||||
<value>分离多个虚拟磁盘</value>
|
||||
</data>
|
||||
<data name="MESSAGEBOX_ERRORTEXT" xml:space="preserve">
|
||||
@ -7687,7 +7687,7 @@ SCSI ID: {2}
|
||||
<data name="MULTI_VDI_DELETE_WARNING" xml:space="preserve">
|
||||
<value>您将删除多个虚拟磁盘。是否确实要继续?</value>
|
||||
</data>
|
||||
<data name="MULTI_VDI_DETATCH_WARNING" xml:space="preserve">
|
||||
<data name="MULTI_VDI_DETACH_WARNING" xml:space="preserve">
|
||||
<value>您将分离多个虚拟磁盘,是否确实要继续?</value>
|
||||
</data>
|
||||
<data name="MUST_SELECT_NETWORK" xml:space="preserve">
|
||||
|
Loading…
Reference in New Issue
Block a user