Login.cs

00001 using System;
00002 using System.Collections.Generic;
00003 using System.ComponentModel;
00004 using System.Data;
00005 using System.Drawing;
00006 using System.Text;
00007 using System.Windows.Forms;
00008 using Shared;
00009 using System.Threading;
00010 
00011 namespace Client
00012 {
00016     public partial class Login : Form
00017     {
00019         private IAccessHandler accessHandler;
00021         private LocalSettings localSettings;
00023         private RMIClient client;
00024 
00028         public Login()
00029         {
00030             this.localSettings = new LocalSettings();
00031             InitializeComponent();
00032 
00033             this.FormBorderStyle = FormBorderStyle.FixedDialog;
00034 
00035             txtUsername.Text = localSettings.Username;
00036             txtPassword.Text = localSettings.Password;
00037             chkRemember.Checked = localSettings.Username != null && localSettings.Username.Length > 0;
00038 
00039             if (txtUsername.Text.Length > 0)
00040             {
00041                 chkRemember.Visible = false;
00042                 cmdForgetMe.Visible = true;
00043             }
00044 
00045             pleaseWait.Dock = DockStyle.Fill;
00046         }
00047 
00053         private void btnLogin_Click(object sender, EventArgs e)
00054         {
00055             string user = txtUsername.Text;
00056             string pass = txtPassword.Text;
00057 
00058             ShowWaitScreen(true);
00059 
00060             if (user.Trim().Length < 1)
00061             {
00062                 MessageBox.Show("Username is required!", "Try again!", MessageBoxButtons.OK, MessageBoxIcon.Error);
00063                 ShowWaitScreen(false);
00064                 return;
00065             }
00066             if (pass.Trim().Length < 1)
00067             {
00068                 MessageBox.Show("Password is required!", "Try again!", MessageBoxButtons.OK, MessageBoxIcon.Error);
00069                 ShowWaitScreen(false);
00070                 return;
00071             }
00072 
00073             Thread thread = new Thread(new ThreadStart(delegate() {
00074 
00075                 // Create a new connection to the RMI server
00076                 if (!Connect())
00077                 {
00078                     this.Invoke(new MethodInvoker(delegate() {
00079                         ShowWaitScreen(false);
00080                     }));
00081                     return;
00082                 }
00083 
00084                 Messages lm = accessHandler.Login(user, Utils.HashedValue(pass));
00085                 if (lm != Messages.OK)
00086                 {
00087                     MessageBox.Show("Login Failed!", "Try again!", MessageBoxButtons.OK, MessageBoxIcon.Error);
00088                     this.Invoke(new MethodInvoker(delegate() {
00089                         txtPassword.Text = "";
00090                         txtPassword.Focus();
00091                         ShowWaitScreen(false);
00092                     }));
00093                     return;
00094                 }
00095 
00096                 if (chkRemember.Checked)
00097                 {
00098                     this.Invoke(new MethodInvoker(
00099                     delegate()
00100                     {
00101                         localSettings.Username = txtUsername.Text;
00102                         localSettings.Password = txtPassword.Text;
00103                     }));
00104                 }
00105 
00106                 this.Invoke(new MethodInvoker(delegate()
00107                 {
00108 
00109                     MainWindow mw = new MainWindow(new ReconnectHandler(client, accessHandler));
00110                     this.Hide();
00111                     mw.FormClosed += delegate(object s, FormClosedEventArgs ea) { this.Show(); accessHandler = null; client.Stop(); };
00112                     mw.ShowDialog();
00113 
00114                     ShowWaitScreen(false);
00115                 
00116                 }));
00117             }));
00118             thread.Start();
00119         }
00120         
00126         private void btnQuit_Click(object sender, EventArgs e)
00127         {
00128             Close();
00129         }
00130 
00136         private void Login_Shown(object sender, EventArgs e)
00137         {
00138             txtUsername.Focus();
00139         }
00140 
00145         public void ShowWaitScreen(bool toggle)
00146         {
00147             if (toggle)
00148             {
00149                 pleaseWait.Begin();
00150                 this.Refresh();
00151             }
00152             else
00153             {
00154                 pleaseWait.End();
00155             }
00156         }
00157 
00162         public bool Connect()
00163         {
00164             if (accessHandler != null)
00165                 return true;
00166 
00167             // Create a new connection to the RMI server 
00168             client = new RMIClient();
00169             accessHandler = client.Connect();
00170 
00171             if (accessHandler == null)
00172             {
00173                 MessageBox.Show("SKRAMMEL could not create a connection to the server: "+client.ErrorMessage+"\nPlease check your settings and try again!", "Login Failed!", MessageBoxButtons.OK, MessageBoxIcon.Error);
00174                 // Stop the connection...
00175                 client.Stop();
00176                 return false;
00177             }
00178             return true;
00179 
00180         }
00181 
00187         private void cmdCreateUser_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
00188         {
00189             if (!Connect())
00190                 return;
00191             Messages lm = Messages.Fail;
00192             DialogResult result = DialogResult.No;
00193             PersonInfo newUser = new PersonInfo();
00194             while (lm != Messages.OK && result != DialogResult.OK)
00195             {
00196                 UserForm CreateNewUserForm = new UserForm();
00197                 DialogResult dr = CreateNewUserForm.ShowDialog();
00198                 newUser = CreateNewUserForm.PersonInfo;
00199 
00200                 if (dr == DialogResult.Cancel)
00201                     return;
00202 
00203                 lm = accessHandler.Register(newUser.username, Utils.HashedValue(newUser.password), newUser.name, newUser.department, newUser.email);
00204                 if (lm != Messages.OK)
00205                 {
00206                     MessageBox.Show("Username already Exists!", "Try again!", MessageBoxButtons.OK, MessageBoxIcon.Error);
00207                 } else 
00208                     MessageBox.Show("User was created!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
00209 
00210                 txtPassword.Text = newUser.password;
00211                 txtUsername.Text = newUser.username;
00212             }
00213         }
00214 
00220         private void cmdWhatis_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
00221         {
00222             About about = new About();
00223             about.ShowDialog();
00224         }
00225 
00231         private void cmdForgetMe_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
00232         {
00233             localSettings.Username = "";
00234             localSettings.Password = "";
00235             txtUsername.Text = "";
00236             txtPassword.Text = "";
00237             cmdForgetMe.Visible = false;
00238             chkRemember.Visible = true;
00239             txtUsername.Focus();
00240         }
00241 
00247         private void btnConfigure_Click(object sender, EventArgs e)
00248         {
00249             LoginConfig lc = new LoginConfig(localSettings);
00250             lc.ShowDialog();
00251         }
00252 
00258         private void txtPassword_Enter(object sender, EventArgs e)
00259         {
00260             txtPassword.SelectAll();
00261         }
00262 
00268         private void txtUsername_Enter(object sender, EventArgs e)
00269         {
00270             txtUsername.SelectAll();
00271         }
00272     }
00273 }

Generated on Thu Dec 21 06:21:55 2006 for SCRAML by  doxygen 1.5.1-p1