/* Copyright (c) Citrix Systems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, * with or without modification, are permitted provided * that the following conditions are met: * * * Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ using System; using XenAdmin.Controls; using XenCenterLib; namespace XenAdmin.Wizards.ImportWizard { internal partial class ImageVMConfigPage : XenTabPage { private const ulong KB = 1024; private const ulong MB = (KB * 1024); private const ulong GB = (MB * 1024); private bool m_buttonNextEnabled; public ImageVMConfigPage() { InitializeComponent(); m_ctrlError.HideError(); } #region Base class (XenTabPage) overrides /// /// Gets the page's title (headline) /// public override string PageTitle { get { return Messages.IMAGE_DEFINITION_PAGE_TITLE; } } /// /// Gets the page's label in the (left hand side) wizard progress panel /// public override string Text { get { return Messages.IMAGE_DEFINITION_PAGE_TEXT; } } /// /// Gets the value by which the help files section for this page is identified /// public override string HelpID { get { return "VMConfig"; } } protected override bool ImplementsIsDirty() { return true; } public override void PopulatePage() { //CA-61385: remove wim support for Boston m_groupBoxAddSpace.Visible = false; m_groupBoxAddSpace.Enabled = IsWim; m_textBoxVMName.Text = string.Empty; m_upDownMemory.Value = m_upDownMemory.Minimum; m_upDownCpuCount.Value = m_upDownCpuCount.Minimum; m_upDownAddSpace.Value = m_upDownAddSpace.Minimum; bootModesControl1.CheckBIOSBootMode(); } public override void SelectDefaultControl() { m_textBoxVMName.Select(); } public override bool EnableNext() { return m_buttonNextEnabled; } #endregion #region Accessors public bool IsWim { private get; set; } public string VmName { get { return m_textBoxVMName.Text; } } public ulong CpuCount { get { return (ulong)m_upDownCpuCount.Value; } } public ulong Memory { get { return (ulong)m_upDownMemory.Value; } } public ulong AdditionalSpace { get { return m_groupBoxAddSpace.Enabled ? (ulong)m_upDownAddSpace.Value * GB : 0; } } public Actions.VMActions.BootMode SelectedBootMode { get { return bootModesControl1.SelectedOption; } } #endregion #region Private Methods private bool CheckVmNameValid(string name, out string error) { error = string.Empty; if (String.IsNullOrEmpty(name)) return false; if (!PathValidator.IsFileNameValid(name)) { error = Messages.IMPORT_SELECT_APPLIANCE_PAGE_ERROR_INVALID_PATH; return false; } return true; } #endregion #region Control event handlers private void m_textBoxVMName_TextChanged(object sender, EventArgs e) { m_buttonNextEnabled = m_ctrlError.PerformCheck((out string error) => CheckVmNameValid(m_textBoxVMName.Text, out error)); OnPageUpdated(); IsDirty = true; } private void m_upDownMemory_ValueChanged(object sender, EventArgs e) { IsDirty = true; } private void m_upDownCpuCount_ValueChanged(object sender, EventArgs e) { IsDirty = true; } private void m_upDownAddSpace_ValueChanged(object sender, EventArgs e) { IsDirty = true; } #endregion } }