/* 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 System.Windows.Forms; namespace XenAdmin.Dialogs { public partial class AdPasswordPrompt : XenDialogBase { private string helpName; public string Domain { get { return textBoxDomain.Text; } } public string Username { get { return textBoxUsername.Text.Trim(); } } public string Password { get { return textBoxPassword.Text; } } /// /// /// /// If true, we're joining a domain; if the domain is unknown (currentDomainName null or empty) /// prompt for domain, username and password; if it's known, only for username and password. /// If false, we're removing the machine from the domain; prompt for credentials to disable the account on /// the AD server, giving options 'Disable', 'Ignore' and 'Cancel'. /// The current domain name to populate the dialog with. Maybe null or empty if /// joining an unknown domain. Should not be null or empty when leaving a domain. public AdPasswordPrompt(bool join, string currentDomainName) { InitializeComponent(); if (join) { bool promptForDomain = string.IsNullOrEmpty(currentDomainName); labelBlurb.Text = promptForDomain ? Messages.AD_JOIN_DOMAIN_BLURB_SHORT : string.Format(Messages.JOINING_AD, currentDomainName); label1.Visible = promptForDomain; textBoxDomain.Visible = promptForDomain; SkipButton.Visible = false; helpName = Name + "Enable"; } else { System.Diagnostics.Debug.Assert(!string.IsNullOrEmpty(currentDomainName)); Text = Messages.AD_DISABLING; labelBlurb.Text = Messages.LEAVING_AD; textBoxDomain.Text = currentDomainName; textBoxDomain.Enabled = false; labelAdditionalInfo.Visible = true; labelAdditionalInfo.Text = Messages.AD_LEAVING_ADDITIONAL_BLURB; buttonOk.Text = Messages.DISABLE; helpName = Name + "Disable"; } } private void buttonOk_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.OK; Close(); } private void buttonCancel_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; Close(); } private void textBoxDomain_TextChanged(object sender, EventArgs e) { EnableOkButton(); } private void textBoxUsername_TextChanged(object sender, EventArgs e) { EnableOkButton(); } private void textBoxPassword_TextChanged(object sender, EventArgs e) { EnableOkButton(); } private void SkipButton_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Ignore; Close(); } private void EnableOkButton() { buttonOk.Enabled = textBoxDomain.Visible ? textBoxDomain.Text.Trim().Length > 0 && textBoxUsername.Text.Trim().Length > 0 && textBoxPassword.Text.Trim().Length > 0 : textBoxUsername.Text.Trim().Length > 0; } public void ClearPassword() { textBoxPassword.Text = ""; } internal override string HelpName { get { return helpName; } } } }