Merge pull request #1154 from kc284/master

Some corrections on VMStorage page and disk move/migrate/detach
This commit is contained in:
Mihaela Stoica 2016-09-22 15:21:48 +01:00 committed by GitHub
commit c6eab65fdf
10 changed files with 911 additions and 695 deletions

View File

@ -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>();

View File

@ -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()

View File

@ -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;
}
}

View File

@ -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

View File

@ -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()

View File

@ -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 &amp;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 &amp;Detach.
/// </summary>
@ -10735,15 +10744,6 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to &amp;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 {

View File

@ -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>すべて接続解除(&amp;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">

View File

@ -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>&amp;Detach all</value>
</data>
<data name="DETACH_SR" xml:space="preserve">
<value>&amp;Detach</value>
</data>
<data name="DETAILS" xml:space="preserve">
<value>Details</value>
</data>
<data name="DETATCH_ALL_BUTTON_LABEL" xml:space="preserve">
<value>&amp;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>

View File

@ -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>全部分离(&amp;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">