From 89487fcf604c7d3642aa0779a49feb71c41796c9 Mon Sep 17 00:00:00 2001 From: Konstantina Chremmou Date: Tue, 2 Jun 2020 04:49:10 +0100 Subject: [PATCH] CA-337270: Perform authentication on a background thread. - Added controls to display the error in case authentication fails. - Use the same control(LinkLabel) to show the rubric either when new authentication is needed or an existing one can be used. - Moved privacy policy statement next to the checkbox because it looked crammed. Signed-off-by: Konstantina Chremmou --- .../HealthCheckSettingsDialog.Designer.cs | 91 +-- .../HealthCheck/HealthCheckSettingsDialog.cs | 128 ++-- .../HealthCheckSettingsDialog.resx | 550 +++++++++--------- 3 files changed, 409 insertions(+), 360 deletions(-) diff --git a/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.Designer.cs b/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.Designer.cs index dda45f6ac..9cdfb720b 100644 --- a/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.Designer.cs +++ b/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.Designer.cs @@ -50,10 +50,10 @@ namespace XenAdmin.Dialogs.HealthCheck this.existingAuthenticationRadioButton = new System.Windows.Forms.RadioButton(); this.newAuthenticationRadioButton = new System.Windows.Forms.RadioButton(); this.authRubricLinkLabel = new System.Windows.Forms.LinkLabel(); - this.authRubricTextLabel = new System.Windows.Forms.Label(); + this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel(); + this.pictureBoxStatus = new System.Windows.Forms.PictureBox(); + this.labelStatus = new System.Windows.Forms.Label(); this.rubricLabel = new System.Windows.Forms.Label(); - this.PolicyStatementLinkLabel = new System.Windows.Forms.LinkLabel(); - this.m_ctrlError = new XenAdmin.Controls.Common.PasswordFailure(); this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); this.enrollmentCheckBox = new System.Windows.Forms.CheckBox(); this.decentGroupBoxXSCredentials = new XenAdmin.Controls.DecentGroupBox(); @@ -68,12 +68,15 @@ namespace XenAdmin.Dialogs.HealthCheck this.currentXsCredentialsRadioButton = new System.Windows.Forms.RadioButton(); this.newXsCredentialsRadioButton = new System.Windows.Forms.RadioButton(); this.testCredentialsButton = new System.Windows.Forms.Button(); + this.PolicyStatementLinkLabel = new System.Windows.Forms.LinkLabel(); this.tableLayoutPanel1.SuspendLayout(); this.decentGroupBox2.SuspendLayout(); this.tableLayoutPanel4.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.frequencyNumericBox)).BeginInit(); this.decentGroupBox1.SuspendLayout(); this.tableLayoutPanel2.SuspendLayout(); + this.tableLayoutPanel5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxStatus)).BeginInit(); this.flowLayoutPanel1.SuspendLayout(); this.decentGroupBoxXSCredentials.SuspendLayout(); this.tableLayoutPanel3.SuspendLayout(); @@ -98,14 +101,13 @@ namespace XenAdmin.Dialogs.HealthCheck // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); - this.tableLayoutPanel1.Controls.Add(this.decentGroupBox2, 0, 3); - this.tableLayoutPanel1.Controls.Add(this.decentGroupBox1, 0, 8); + this.tableLayoutPanel1.Controls.Add(this.decentGroupBox2, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.decentGroupBox1, 0, 4); this.tableLayoutPanel1.Controls.Add(this.rubricLabel, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.PolicyStatementLinkLabel, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.m_ctrlError, 0, 10); - this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 1, 10); - this.tableLayoutPanel1.Controls.Add(this.enrollmentCheckBox, 0, 2); - this.tableLayoutPanel1.Controls.Add(this.decentGroupBoxXSCredentials, 0, 7); + this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 5); + this.tableLayoutPanel1.Controls.Add(this.enrollmentCheckBox, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.decentGroupBoxXSCredentials, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.PolicyStatementLinkLabel, 1, 1); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; // // decentGroupBox2 @@ -195,14 +197,14 @@ namespace XenAdmin.Dialogs.HealthCheck // tableLayoutPanel2 // resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2"); - this.tableLayoutPanel2.Controls.Add(this.label1, 0, 4); - this.tableLayoutPanel2.Controls.Add(this.label2, 0, 5); - this.tableLayoutPanel2.Controls.Add(this.textBoxMyCitrixPassword, 1, 5); - this.tableLayoutPanel2.Controls.Add(this.textBoxMyCitrixUsername, 1, 4); - this.tableLayoutPanel2.Controls.Add(this.existingAuthenticationRadioButton, 0, 2); - this.tableLayoutPanel2.Controls.Add(this.newAuthenticationRadioButton, 0, 3); + this.tableLayoutPanel2.Controls.Add(this.label1, 0, 3); + this.tableLayoutPanel2.Controls.Add(this.label2, 0, 4); + this.tableLayoutPanel2.Controls.Add(this.textBoxMyCitrixPassword, 1, 4); + this.tableLayoutPanel2.Controls.Add(this.textBoxMyCitrixUsername, 1, 3); + this.tableLayoutPanel2.Controls.Add(this.existingAuthenticationRadioButton, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.newAuthenticationRadioButton, 0, 2); this.tableLayoutPanel2.Controls.Add(this.authRubricLinkLabel, 0, 0); - this.tableLayoutPanel2.Controls.Add(this.authRubricTextLabel, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel5, 1, 5); this.tableLayoutPanel2.Name = "tableLayoutPanel2"; // // label1 @@ -254,11 +256,24 @@ namespace XenAdmin.Dialogs.HealthCheck this.authRubricLinkLabel.TabStop = true; this.authRubricLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.authRubricLinkLabel_LinkClicked); // - // authRubricTextLabel + // tableLayoutPanel5 // - resources.ApplyResources(this.authRubricTextLabel, "authRubricTextLabel"); - this.tableLayoutPanel2.SetColumnSpan(this.authRubricTextLabel, 2); - this.authRubricTextLabel.Name = "authRubricTextLabel"; + resources.ApplyResources(this.tableLayoutPanel5, "tableLayoutPanel5"); + this.tableLayoutPanel5.Controls.Add(this.pictureBoxStatus, 0, 0); + this.tableLayoutPanel5.Controls.Add(this.labelStatus, 1, 0); + this.tableLayoutPanel5.Name = "tableLayoutPanel5"; + // + // pictureBoxStatus + // + resources.ApplyResources(this.pictureBoxStatus, "pictureBoxStatus"); + this.pictureBoxStatus.Name = "pictureBoxStatus"; + this.pictureBoxStatus.TabStop = false; + // + // labelStatus + // + resources.ApplyResources(this.labelStatus, "labelStatus"); + this.labelStatus.ForeColor = System.Drawing.SystemColors.ControlText; + this.labelStatus.Name = "labelStatus"; // // rubricLabel // @@ -266,22 +281,10 @@ namespace XenAdmin.Dialogs.HealthCheck this.tableLayoutPanel1.SetColumnSpan(this.rubricLabel, 2); this.rubricLabel.Name = "rubricLabel"; // - // PolicyStatementLinkLabel - // - resources.ApplyResources(this.PolicyStatementLinkLabel, "PolicyStatementLinkLabel"); - this.tableLayoutPanel1.SetColumnSpan(this.PolicyStatementLinkLabel, 2); - this.PolicyStatementLinkLabel.Name = "PolicyStatementLinkLabel"; - this.PolicyStatementLinkLabel.TabStop = true; - this.PolicyStatementLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.PolicyStatementLinkLabel_LinkClicked); - // - // m_ctrlError - // - resources.ApplyResources(this.m_ctrlError, "m_ctrlError"); - this.m_ctrlError.Name = "m_ctrlError"; - // // flowLayoutPanel1 // resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1"); + this.tableLayoutPanel1.SetColumnSpan(this.flowLayoutPanel1, 2); this.flowLayoutPanel1.Controls.Add(this.cancelButton); this.flowLayoutPanel1.Controls.Add(this.okButton); this.flowLayoutPanel1.Name = "flowLayoutPanel1"; @@ -289,7 +292,6 @@ namespace XenAdmin.Dialogs.HealthCheck // enrollmentCheckBox // resources.ApplyResources(this.enrollmentCheckBox, "enrollmentCheckBox"); - this.tableLayoutPanel1.SetColumnSpan(this.enrollmentCheckBox, 2); this.enrollmentCheckBox.Name = "enrollmentCheckBox"; this.enrollmentCheckBox.UseVisualStyleBackColor = true; this.enrollmentCheckBox.CheckedChanged += new System.EventHandler(this.enrollmentCheckBox_CheckedChanged); @@ -319,8 +321,8 @@ namespace XenAdmin.Dialogs.HealthCheck // // errorLabel // - this.errorLabel.AutoEllipsis = true; resources.ApplyResources(this.errorLabel, "errorLabel"); + this.errorLabel.AutoEllipsis = true; this.errorLabel.ForeColor = System.Drawing.Color.Red; this.errorLabel.Name = "errorLabel"; // @@ -377,7 +379,7 @@ namespace XenAdmin.Dialogs.HealthCheck this.newXsCredentialsRadioButton.Name = "newXsCredentialsRadioButton"; this.newXsCredentialsRadioButton.TabStop = true; this.newXsCredentialsRadioButton.UseVisualStyleBackColor = true; - this.newXsCredentialsRadioButton.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged); + this.newXsCredentialsRadioButton.CheckedChanged += new System.EventHandler(this.newXsCredentialsRadioButton_CheckedChanged); // // testCredentialsButton // @@ -386,6 +388,13 @@ namespace XenAdmin.Dialogs.HealthCheck this.testCredentialsButton.UseVisualStyleBackColor = true; this.testCredentialsButton.Click += new System.EventHandler(this.testCredentialsButton_Click); // + // PolicyStatementLinkLabel + // + resources.ApplyResources(this.PolicyStatementLinkLabel, "PolicyStatementLinkLabel"); + this.PolicyStatementLinkLabel.Name = "PolicyStatementLinkLabel"; + this.PolicyStatementLinkLabel.TabStop = true; + this.PolicyStatementLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.PolicyStatementLinkLabel_LinkClicked); + // // HealthCheckSettingsDialog // this.AcceptButton = this.okButton; @@ -405,6 +414,9 @@ namespace XenAdmin.Dialogs.HealthCheck this.decentGroupBox1.PerformLayout(); this.tableLayoutPanel2.ResumeLayout(false); this.tableLayoutPanel2.PerformLayout(); + this.tableLayoutPanel5.ResumeLayout(false); + this.tableLayoutPanel5.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxStatus)).EndInit(); this.flowLayoutPanel1.ResumeLayout(false); this.flowLayoutPanel1.PerformLayout(); this.decentGroupBoxXSCredentials.ResumeLayout(false); @@ -450,13 +462,14 @@ namespace XenAdmin.Dialogs.HealthCheck protected System.Windows.Forms.TextBox textboxXSUserName; private System.Windows.Forms.RadioButton currentXsCredentialsRadioButton; private System.Windows.Forms.RadioButton newXsCredentialsRadioButton; - private Controls.Common.PasswordFailure m_ctrlError; private System.Windows.Forms.Button testCredentialsButton; private System.Windows.Forms.PictureBox testCredentialsStatusImage; private System.Windows.Forms.Label errorLabel; protected System.Windows.Forms.Label label2; protected System.Windows.Forms.TextBox textBoxMyCitrixPassword; private System.Windows.Forms.LinkLabel authRubricLinkLabel; - private System.Windows.Forms.Label authRubricTextLabel; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5; + private System.Windows.Forms.PictureBox pictureBoxStatus; + private System.Windows.Forms.Label labelStatus; } } diff --git a/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.cs b/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.cs index 1bea3c3b2..b307d2a89 100644 --- a/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.cs +++ b/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.cs @@ -36,7 +36,6 @@ using System.Windows.Forms; using XenAdmin.Actions; using XenAdmin.Core; using XenAdmin.Model; -using XenAdmin.Properties; using XenAPI; @@ -55,7 +54,7 @@ namespace XenAdmin.Dialogs.HealthCheck private string xsUserName; private string xsPassword; - internal override string HelpName { get { return "HealthCheckSettingsDialog"; } } + internal override string HelpName => "HealthCheckSettingsDialog"; public HealthCheckSettingsDialog(Pool pool, bool enrollNow) :base(pool.Connection) @@ -113,21 +112,21 @@ namespace XenAdmin.Dialogs.HealthCheck private void InitializeControls() { Text = String.Format(Messages.HEALTHCHECK_ENROLLMENT_TITLE, pool.Name()); - - string noAuthTokenMessage = string.Format(Messages.HEALTHCHECK_AUTHENTICATION_RUBRIC_NO_TOKEN, Messages.MY_CITRIX_CREDENTIALS_URL); - string existingAuthTokenMessage = Messages.HEALTHCHECK_AUTHENTICATION_RUBRIC_EXISTING_TOKEN; - string authenticationRubricLabelText = authenticationRequired ? noAuthTokenMessage : existingAuthTokenMessage; + tableLayoutPanel5.Visible = false; - if (authenticationRubricLabelText == noAuthTokenMessage) + if (authenticationRequired) { - authRubricTextLabel.Visible = false; + string noAuthTokenMessage = string.Format(Messages.HEALTHCHECK_AUTHENTICATION_RUBRIC_NO_TOKEN, + Messages.MY_CITRIX_CREDENTIALS_URL); + authRubricLinkLabel.Text = noAuthTokenMessage; - authRubricLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(authenticationRubricLabelText.IndexOf(Messages.MY_CITRIX_CREDENTIALS_URL), Messages.MY_CITRIX_CREDENTIALS_URL.Length); + authRubricLinkLabel.LinkArea = new LinkArea(noAuthTokenMessage.IndexOf(Messages.MY_CITRIX_CREDENTIALS_URL), + Messages.MY_CITRIX_CREDENTIALS_URL.Length); } else { - authRubricLinkLabel.Visible = false; - authRubricTextLabel.Text = existingAuthTokenMessage; + authRubricLinkLabel.Text = Messages.HEALTHCHECK_AUTHENTICATION_RUBRIC_EXISTING_TOKEN; + authRubricLinkLabel.LinkArea = new LinkArea(0, 0); } enrollmentCheckBox.Checked = healthCheckSettings.Status != HealthCheckStatus.Disabled; @@ -168,19 +167,19 @@ namespace XenAdmin.Dialogs.HealthCheck private void UpdateButtons() { - okButton.Enabled = m_ctrlError.PerformCheck(CheckCredentialsEntered) && !errorLabel.Visible; + okButton.Enabled = CheckCredentialsEntered() && !errorLabel.Visible; } private void okButton_Click(object sender, EventArgs e) { - okButton.Enabled = false; - if (enrollmentCheckBox.Checked && newAuthenticationRadioButton.Checked - && !m_ctrlError.PerformCheck(CheckUploadAuthentication)) - { - okButton.Enabled = true; - return; - } + if (enrollmentCheckBox.Checked && newAuthenticationRadioButton.Checked) + CheckUploadAuthentication(); + else + SaveAndClose(); + } + private void SaveAndClose() + { if (ChangesMade()) { var newHealthCheckSettings = new HealthCheckSettings(pool.health_check_config); @@ -194,7 +193,7 @@ namespace XenAdmin.Dialogs.HealthCheck new SaveHealthCheckSettingsAction(pool, newHealthCheckSettings, authenticationToken, diagnosticToken, textboxXSUserName.Text.Trim(), textboxXSPassword.Text, false).RunAsync(); new TransferHealthCheckSettingsAction(pool, newHealthCheckSettings, textboxXSUserName.Text.Trim(), textboxXSPassword.Text, true).RunAsync(); } - okButton.Enabled = true; + DialogResult = DialogResult.OK; Close(); } @@ -212,12 +211,7 @@ namespace XenAdmin.Dialogs.HealthCheck UpdateButtons(); } - private void newAuthenticationRadioButton_CheckedChanged(object sender, EventArgs e) - { - SetMyCitrixCredentials(existingAuthenticationRadioButton.Checked); - } - - private void radioButton2_CheckedChanged(object sender, EventArgs e) + private void newXsCredentialsRadioButton_CheckedChanged(object sender, EventArgs e) { SetXSCredentials(currentXsCredentialsRadioButton.Checked); testCredentialsButton.Enabled = newXsCredentialsRadioButton.Checked && @@ -277,43 +271,55 @@ namespace XenAdmin.Dialogs.HealthCheck return true; } - private bool CheckCredentialsEntered(out string error) + private void CheckUploadAuthentication() { - error = string.Empty; - return CheckCredentialsEntered(); - } - - private bool CheckUploadAuthentication(out string error) - { - error = string.Empty; - - if (!CheckCredentialsEntered()) - return false; - var action = new HealthCheckAuthenticationAction(textBoxMyCitrixUsername.Text.Trim(), textBoxMyCitrixPassword.Text.Trim(), Registry.HealthCheckIdentityTokenDomainName, Registry.HealthCheckUploadGrantTokenDomainName, Registry.HealthCheckUploadTokenDomainName, - Registry.HealthCheckDiagnosticDomainName, Registry.HealthCheckProductKey, 0, false); + Registry.HealthCheckDiagnosticDomainName, Registry.HealthCheckProductKey, 0, true); + action.Completed += action_Completed; - try - { - action.RunExternal(null); - } - catch - { - error = action.Exception != null ? action.Exception.Message : Messages.ERROR_UNKNOWN; - authenticationToken = null; - authenticated = false; - return authenticated; - } + okButton.Enabled = false; + pictureBoxStatus.Image = Images.StaticImages.ajax_loader; + labelStatus.Text = action.Description; + labelStatus.ForeColor = SystemColors.ControlText; + tableLayoutPanel5.Visible = true; + action.RunAsync(); + } - authenticationToken = action.UploadToken; // curent upload token - diagnosticToken = action.DiagnosticToken; // curent diagnostic token - authenticated = !String.IsNullOrEmpty(authenticationToken) && !String.IsNullOrEmpty(diagnosticToken); - return authenticated; + private void action_Completed(ActionBase a) + { + Program.Invoke(this, () => + { + if (!a.Succeeded || !(a is HealthCheckAuthenticationAction action)) + { + authenticationToken = null; + authenticated = false; + } + else + { + authenticationToken = action.UploadToken; // current upload token + diagnosticToken = action.DiagnosticToken; // current diagnostic token + authenticated = !string.IsNullOrEmpty(authenticationToken) && !string.IsNullOrEmpty(diagnosticToken); + } + + if (!authenticated) + { + pictureBoxStatus.Image = Images.StaticImages._000_error_h32bit_16; + labelStatus.Text = a.Exception != null ? a.Exception.Message : Messages.ERROR_UNKNOWN; + labelStatus.ForeColor = Color.Red; + okButton.Enabled = true; + return; + } + + tableLayoutPanel5.Visible = false; + okButton.Enabled = true; + SaveAndClose(); + }); } private void credentials_TextChanged(object sender, EventArgs e) { + tableLayoutPanel5.Visible = false; UpdateButtons(); } @@ -379,20 +385,20 @@ namespace XenAdmin.Dialogs.HealthCheck { if (passedRbacChecks) { - ShowTestCredentialsStatus(Resources._000_Tick_h32bit_16, null); + ShowTestCredentialsStatus(Images.StaticImages._000_Tick_h32bit_16, null); okButton.Enabled = true; } else { okButton.Enabled = false; - ShowTestCredentialsStatus(Resources._000_error_h32bit_16, action.Exception != null ? action.Exception.Message : Messages.HEALTH_CHECK_USER_NOT_AUTHORIZED); + ShowTestCredentialsStatus(Images.StaticImages._000_error_h32bit_16, action.Exception != null ? action.Exception.Message : Messages.HEALTH_CHECK_USER_NOT_AUTHORIZED); } textboxXSUserName.Enabled = textboxXSPassword.Enabled = testCredentialsButton.Enabled = newXsCredentialsRadioButton.Checked; }); }; log.Debug("Testing logging in with the new credentials"); - ShowTestCredentialsStatus(Resources.ajax_loader, null); + ShowTestCredentialsStatus(Images.StaticImages.ajax_loader, null); textboxXSUserName.Enabled = textboxXSPassword.Enabled = testCredentialsButton.Enabled = false; action.RunAsync(); } @@ -426,8 +432,15 @@ namespace XenAdmin.Dialogs.HealthCheck return false; } + private void newAuthenticationRadioButton_CheckedChanged(object sender, EventArgs e) + { + tableLayoutPanel5.Visible = false; + SetMyCitrixCredentials(existingAuthenticationRadioButton.Checked); + } + private void existingAuthenticationRadioButton_CheckedChanged(object sender, EventArgs e) { + tableLayoutPanel5.Visible = false; UpdateButtons(); } @@ -435,6 +448,5 @@ namespace XenAdmin.Dialogs.HealthCheck { Program.OpenURL(Messages.MY_CITRIX_CREDENTIALS_URL); } - } } diff --git a/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.resx b/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.resx index 027ba04b4..087f5c15b 100644 --- a/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.resx +++ b/XenAdmin/Dialogs/HealthCheck/HealthCheckSettingsDialog.resx @@ -133,7 +133,7 @@ NoControl - 31, 3 + 440, 3 75, 25 @@ -166,7 +166,7 @@ NoControl - 112, 3 + 521, 3 75, 25 @@ -192,6 +192,9 @@ True + + GrowAndShrink + 2 @@ -201,6 +204,9 @@ True + + GrowAndShrink + True @@ -210,12 +216,12 @@ 3 + + Left + True - - Fill - Segoe UI, 9pt @@ -223,13 +229,10 @@ NoControl - 0, 3 - - - 0, 0, 0, 0 + 3, 7 - 94, 29 + 65, 15 0 @@ -237,9 +240,6 @@ &Frequency: - - MiddleLeft - frequencyLabel @@ -256,13 +256,13 @@ Segoe UI, 9pt - 97, 6 + 103, 3 54, 23 - 0 + 1 frequencyNumericBox @@ -276,12 +276,12 @@ 1 + + Left + True - - Fill - Segoe UI, 9pt @@ -289,23 +289,17 @@ NoControl - 154, 3 - - - 0, 0, 0, 0 + 163, 7 - 437, 29 + 39, 15 - 18 + 2 weeks - - MiddleLeft - weeksLabel @@ -318,12 +312,12 @@ 2 + + Left + True - - Fill - Segoe UI, 9pt @@ -331,23 +325,17 @@ NoControl - 0, 61 - - - 0, 0, 0, 0 + 3, 65 - 94, 29 + 94, 15 - 2 + 5 &Day of the week: - - MiddleLeft - dayOfweekLabel @@ -360,12 +348,12 @@ 3 + + Left + True - - Fill - Segoe UI, 9pt @@ -373,23 +361,17 @@ NoControl - 0, 32 - - - 0, 0, 0, 0 + 3, 36 - 94, 29 + 92, 15 - 1 + 3 &Time of the day: - - MiddleLeft - timeOfDayLabel @@ -409,13 +391,13 @@ 15 - 97, 35 + 103, 32 121, 23 - 1 + 4 timeOfDayComboBox @@ -433,13 +415,13 @@ Segoe UI, 9pt - 97, 64 + 103, 61 121, 23 - 2 + 6 dayOfWeekComboBox @@ -462,17 +444,14 @@ 3, 19 - - 0, 3, 0, 3 - 3 - 591, 93 + 587, 87 - 15 + 0 tableLayoutPanel4 @@ -493,10 +472,16 @@ Segoe UI, 9pt, style=Bold - 11, 92 + 3, 77 + + + 3, 10, 3, 3 + + + 3, 3, 3, 6 - 597, 115 + 593, 112 3 @@ -519,8 +504,8 @@ Top, Left, Right - - GrowAndShrink + + True True @@ -531,12 +516,12 @@ 2 + + Left + True - - Fill - Segoe UI, 9pt @@ -544,13 +529,13 @@ NoControl - 20, 86 + 20, 78 20, 0, 3, 0 - 63, 29 + 63, 15 4 @@ -558,9 +543,6 @@ U&sername: - - MiddleLeft - label1 @@ -573,12 +555,12 @@ 0 + + Left + True - - Fill - Segoe UI, 9pt @@ -586,13 +568,13 @@ NoControl - 20, 115 + 20, 107 20, 0, 3, 0 - 63, 29 + 60, 15 6 @@ -600,9 +582,6 @@ Pass&word: - - MiddleLeft - label2 @@ -619,7 +598,7 @@ Segoe UI, 9pt - 89, 118 + 89, 103 300, 23 @@ -643,7 +622,7 @@ Segoe UI, 9pt - 89, 89 + 89, 74 300, 23 @@ -673,10 +652,10 @@ NoControl - 3, 39 + 3, 24 - 167, 19 + 168, 19 2 @@ -706,10 +685,10 @@ NoControl - 3, 64 + 3, 49 - 232, 19 + 233, 19 3 @@ -732,18 +711,30 @@ True + + Fill + Segoe UI, 9pt - 3, 6 + 3, 0 + + + 3, 0, 3, 6 + + + 585, 9999 - 0, 15 + 581, 15 0 + + link label + authRubricLinkLabel @@ -756,33 +747,105 @@ 6 - + True - + + GrowAndShrink + + + 2 + + Segoe UI, 9pt - - 3, 21 + + 3, 3 - - 0, 15 + + 16, 16 - - 1 + + 0 - - authRubricTextLabel + + pictureBoxStatus - + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel5 + + + 0 + + + Left, Right + + + True + + + Segoe UI, 9pt + + + 25, 4 + + + 467, 15 + + + 0 + + + error + + + labelStatus + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + tableLayoutPanel5 + + + 1 + + + Fill + + + Segoe UI, 9pt + + + 89, 132 + + + 1 + + + 495, 24 + + + 8 + + + tableLayoutPanel5 + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + tableLayoutPanel2 - + 7 + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxStatus" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="labelStatus" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0" /></TableLayoutSettings> + Top @@ -792,17 +855,14 @@ 3, 19 - - 0, 6, 0, 10 - 6 - 591, 154 + 587, 159 - 14 + 0 tableLayoutPanel2 @@ -817,16 +877,22 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxMyCitrixPassword" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxMyCitrixUsername" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="existingAuthenticationRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="newAuthenticationRadioButton" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="authRubricLinkLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="authRubricTextLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label1" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label2" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBoxMyCitrixPassword" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxMyCitrixUsername" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="existingAuthenticationRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="newAuthenticationRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="authRubricLinkLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel5" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,30,Absolute,20" /></TableLayoutSettings> Segoe UI, 9pt, style=Bold - 11, 402 + 3, 390 + + + 3, 5, 3, 3 + + + 3, 3, 3, 6 - 597, 218 + 593, 184 5 @@ -859,13 +925,16 @@ NoControl - 8, 8 + 3, 0 - 0, 0, 0, 3 + 3, 0, 3, 10 + + + 585, 9999 - 603, 30 + 585, 30 0 @@ -885,90 +954,15 @@ 2 - + True - - Segoe UI, 9pt - - - NoControl - - - 8, 41 - - - 0, 0, 3, 0 - - - 101, 15 - - - 1 - - - Privacy statement - - - PolicyStatementLinkLabel - - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tableLayoutPanel1 - - - 3 - - - Top, Left, Right - - - True - - - GrowAndShrink - - - - - - Segoe UI, 9pt - - - 11, 623 - - - 3, 0, 3, 0 - - - 407, 22 - - - 27 - - - False - - - m_ctrlError - - - XenAdmin.Controls.Common.PasswordFailure, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - tableLayoutPanel1 - - - 4 - - - Bottom, Left, Right - GrowAndShrink + + Fill + RightToLeft @@ -976,16 +970,16 @@ Segoe UI, 9pt - 421, 627 + 0, 577 0, 0, 0, 0 - 190, 36 + 599, 31 - 0 + 7 flowLayoutPanel1 @@ -997,7 +991,7 @@ tableLayoutPanel1 - 5 + 3 True @@ -1009,16 +1003,16 @@ NoControl - 11, 59 + 3, 43 - 0, 4, 0, 4 + 3, 2, 10, 0 - 139, 27 + 152, 21 - 2 + 1 &Enable Health Check @@ -1033,7 +1027,7 @@ tableLayoutPanel1 - 6 + 4 Top, Left, Right @@ -1053,12 +1047,12 @@ 4 + + Left, Right + True - - Fill - Segoe UI, 9pt @@ -1066,13 +1060,10 @@ NoControl - 213, 138 - - - 0, 5, 0, 0 + 227, 137 - 378, 20 + 357, 15 8 @@ -1102,10 +1093,7 @@ NoControl - 194, 138 - - - 3, 5, 3, 3 + 205, 136 16, 16 @@ -1141,13 +1129,16 @@ NoControl - 0, 6 + 3, 0 - 0, 0, 0, 4 + 3, 0, 3, 6 + + + 585, 9999 - 591, 15 + 581, 15 0 @@ -1170,12 +1161,12 @@ 2 + + Left + True - - Fill - Segoe UI, 9pt @@ -1183,13 +1174,13 @@ NoControl - 20, 75 + 20, 78 20, 0, 3, 0 - 63, 29 + 63, 15 3 @@ -1197,9 +1188,6 @@ &Username: - - MiddleLeft - label4 @@ -1212,12 +1200,12 @@ 3 + + Left + True - - Fill - Segoe UI, 9pt @@ -1225,13 +1213,13 @@ NoControl - 20, 104 + 20, 107 20, 0, 3, 0 - 63, 29 + 60, 15 5 @@ -1239,9 +1227,6 @@ &Password: - - MiddleLeft - label5 @@ -1258,7 +1243,7 @@ Segoe UI, 9pt - 89, 107 + 89, 103 300, 23 @@ -1282,7 +1267,7 @@ Segoe UI, 9pt - 89, 78 + 89, 74 300, 23 @@ -1315,7 +1300,7 @@ NoControl - 3, 28 + 3, 24 231, 19 @@ -1348,7 +1333,7 @@ NoControl - 3, 53 + 3, 49 152, 19 @@ -1371,9 +1356,6 @@ 8 - - True - Segoe UI, 9pt @@ -1381,13 +1363,10 @@ NoControl - 89, 133 - - - 3, 0, 3, 0 + 89, 132 - 99, 25 + 110, 25 7 @@ -1416,17 +1395,14 @@ 3, 19 - - 0, 6, 0, 3 - 6 - 591, 161 + 587, 160 - 15 + 0 tableLayoutPanel3 @@ -1441,16 +1417,22 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="errorLabel" Row="5" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="testCredentialsStatusImage" Row="5" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="label3" Row="0" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="label4" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label5" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textboxXSPassword" Row="4" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="textboxXSUserName" Row="3" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="currentXsCredentialsRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="newXsCredentialsRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="testCredentialsButton" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,100,AutoSize,50,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,25" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="errorLabel" Row="5" RowSpan="1" Column="3" ColumnSpan="1" /><Control Name="testCredentialsStatusImage" Row="5" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="label3" Row="0" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="label4" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="label5" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textboxXSPassword" Row="4" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="textboxXSUserName" Row="3" RowSpan="1" Column="1" ColumnSpan="3" /><Control Name="currentXsCredentialsRadioButton" Row="1" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="newXsCredentialsRadioButton" Row="2" RowSpan="1" Column="0" ColumnSpan="4" /><Control Name="testCredentialsButton" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> Segoe UI, 9pt, style=Bold - 11, 213 + 3, 197 + + + 3, 5, 3, 3 + + + 3, 3, 3, 6 - 597, 183 + 593, 185 4 @@ -1468,28 +1450,61 @@ tableLayoutPanel1 - 7 + 5 + + + Left + + + True + + + Segoe UI, 9pt + + + NoControl + + + 161, 46 + + + 101, 15 + + + 2 + + + Privacy statement + + + PolicyStatementLinkLabel + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tableLayoutPanel1 + + + 6 - Fill + Top Segoe UI, 9pt - 0, 0 - - - 8, 8, 8, 8 + 10, 10 - 11 + 6 - 619, 671 + 599, 608 - 9 + 0 tableLayoutPanel1 @@ -1504,7 +1519,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="decentGroupBox2" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="decentGroupBox1" Row="8" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="rubricLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="PolicyStatementLinkLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="m_ctrlError" Row="10" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel1" Row="10" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="enrollmentCheckBox" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="decentGroupBoxXSCredentials" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="Percent,100,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="decentGroupBox2" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="decentGroupBox1" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="rubricLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="flowLayoutPanel1" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="enrollmentCheckBox" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="decentGroupBoxXSCredentials" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="PolicyStatementLinkLabel" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings> True @@ -1512,14 +1527,23 @@ 96, 96 + + True + + + GrowAndShrink + - 619, 671 + 619, 641 Segoe UI, 9pt - 520, 490 + 635, 600 + + + 10, 10, 10, 10 Health Check Enrollment