/*********************************************************************** * File: usernameDialog.cs * Author: Juan Carlos Luciani (jluciani@novell.com) * * Namespace: Novell.Security.ClientPasswordManager * * Classes implemented: UsernameDialog. * * Copyright (C) 2004 Novell, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ***********************************************************************/ using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Text.RegularExpressions; namespace Novell.Security.ClientPasswordManager { /// /// Provides a dialog for the acquisition of user names. /// sealed public class usernameDialog : System.Windows.Forms.Form { private System.Windows.Forms.TextBox usernameField; private System.Windows.Forms.Button okBtn; private System.Windows.Forms.Button cancelBtn; private System.Windows.Forms.Label label1; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; /// /// Constructor. /// /// Title to use with dialog. public usernameDialog(string title) { // Required for Windows Form Designer support InitializeComponent(); // Update the form title Text = title; } /// /// Clean up any resources being used. /// protected override void Dispose(bool disposing) { if (disposing) { if (components != null) { components.Dispose(); } } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.usernameField = new System.Windows.Forms.TextBox(); this.okBtn = new System.Windows.Forms.Button(); this.cancelBtn = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); this.SuspendLayout(); // // usernameField // this.usernameField.AcceptsReturn = true; this.usernameField.Location = new System.Drawing.Point(96, 24); this.usernameField.MaxLength = 64; this.usernameField.Name = "usernameField"; this.usernameField.Size = new System.Drawing.Size(224, 20); this.usernameField.TabIndex = 5; this.usernameField.Text = ""; // // okBtn // this.okBtn.FlatStyle = System.Windows.Forms.FlatStyle.System; this.okBtn.Location = new System.Drawing.Point(152, 64); this.okBtn.Name = "okBtn"; this.okBtn.TabIndex = 7; this.okBtn.Text = "Ok"; this.okBtn.Click += new System.EventHandler(this.okBtn_Click); // // cancelBtn // this.cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelBtn.FlatStyle = System.Windows.Forms.FlatStyle.System; this.cancelBtn.Location = new System.Drawing.Point(240, 64); this.cancelBtn.Name = "cancelBtn"; this.cancelBtn.TabIndex = 8; this.cancelBtn.Text = "Cancel"; // // label1 // this.label1.Location = new System.Drawing.Point(8, 24); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(72, 16); this.label1.TabIndex = 9; this.label1.Text = "User name:"; // // usernameDialog // this.AcceptButton = this.okBtn; this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.CancelButton = this.cancelBtn; this.ClientSize = new System.Drawing.Size(338, 96); this.Controls.Add(this.label1); this.Controls.Add(this.cancelBtn); this.Controls.Add(this.okBtn); this.Controls.Add(this.usernameField); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "usernameDialog"; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Load += new System.EventHandler(this.usernameDialog_Load); this.Activated += new System.EventHandler(this.usernameDialog_Activated); this.ResumeLayout(false); } #endregion /// /// Handler for form activation event. /// private void usernameDialog_Activated(object sender, System.EventArgs e) { usernameField.Focus(); } /// /// Handler for Ok button click event. /// private void okBtn_Click(object sender, System.EventArgs e) { // Dispose of the dialog and set DialogResult to OK DialogResult = DialogResult.OK; Close(); } private void usernameDialog_Load(object sender, System.EventArgs e) { } /// /// Returns the username entered by the user. /// public System.String userName { get {return usernameField.Text;}} } /// /// Class wrapper around the usernameDialog class. This wrapper is utilized /// to hide the use of Gtk# from its users. /// public class UsernameDialog { #region Class Members and Defines // The following strings need to be localized private static string m_titleStartText = "Login to "; private static string m_titleRealmText = ", Realm: "; private static string m_inputRequiredLabelText = "User name required"; // Title that will be used with the dialog private string m_dialogTitle; // Input gathered from the user private string m_userName; #endregion /// /// Constructor. /// /// Name of service on whose behalf we are acquiring user name. public UsernameDialog(string svcName) { // Setup the title that will be used with the dialog m_dialogTitle = m_titleStartText + svcName; } /// /// Constructor. /// /// Name of service on whose behalf we are acquiring user name. /// Name of realm to which the service belongs, can be empty string or null. public UsernameDialog(string svcName, string realm) { // Setup the appropriate title that will be used with the dialog if (realm != null && realm.Length != 0) { m_dialogTitle = m_titleStartText + svcName + m_titleRealmText + realm; } else { m_dialogTitle = m_titleStartText + svcName; } } /// /// Shows the dialog and gathers the user input. /// /// Window owner. /// True if the user input was gathered, else false. public bool Invoke(System.Object o) { bool retVal; while (true) { // Instantiate and show usernameDialog usernameDialog dialog = new usernameDialog(m_dialogTitle); if (dialog.ShowDialog((IWin32Window) o) == DialogResult.OK) { // Save the user name entered m_userName = dialog.userName; // Verify that the user entered the desired information if (m_userName.Length != 0) { // The user name was entered, indicate success and // get ready to exit. retVal = true; // Dispose of the dialog and exit the loop dialog.Dispose(); break; } else { // Inform the user that it must enter a name MessageBox.Show((IWin32Window) o, m_inputRequiredLabelText, "", MessageBoxButtons.OK, MessageBoxIcon.Error); // Dispose of the dialog and continue to prompt the user dialog.Dispose(); continue; } } else { // The user either hit the cancel button or closed // the window. retVal = false; // Dispose of the dialog and exit the loop dialog.Dispose(); break; } } return retVal; } /// /// Gets the name entered by the user. /// public System.String userName { get {return m_userName;}} } }