|
namespace SilverlightSmoothSlider.LoginUI
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ServiceModel.DomainServices.Client;
using System.ServiceModel.DomainServices.Client.ApplicationServices;
using System.Windows;
using System.Windows.Controls;
/// <summary>
/// <see cref="ChildWindow"/> class that controls the registration process.
/// </summary>
public partial class LoginRegistrationWindow : ChildWindow
{
private IList<OperationBase> possiblyPendingOperations = new List<OperationBase>();
/// <summary>
/// Creates a new <see cref="LoginRegistrationWindow"/> instance.
/// </summary>
public LoginRegistrationWindow()
{
InitializeComponent();
this.registrationForm.SetParentWindow(this);
this.loginForm.SetParentWindow(this);
this.LayoutUpdated += this.GoToInitialState;
this.LayoutUpdated += this.UpdateTitle;
}
/// <summary>
/// Initializes the <see cref="VisualStateManager"/> for this component by putting it into the "AtLogin" state.
/// </summary>
private void GoToInitialState(object sender, EventArgs eventArgs)
{
this.LayoutUpdated -= this.GoToInitialState;
VisualStateManager.GoToState(this, "AtLogin", true);
}
/// <summary>
/// Ensures the visual state and focus are correct when the window is opened.
/// </summary>
protected override void OnOpened()
{
base.OnOpened();
this.NavigateToLogin();
}
/// <summary>
/// Updates the window title according to which panel (registration / login) is currently being displayed.
/// </summary>
private void UpdateTitle(object sender, EventArgs eventArgs)
{
this.Title = (this.registrationForm.Visibility == Visibility.Visible) ?
ApplicationStrings.RegistrationWindowTitle :
ApplicationStrings.LoginWindowTitle;
}
/// <summary>
/// Notifies the <see cref="LoginRegistrationWindow"/> window that it can only close if <paramref name="operation"/> is finished or can be cancelled.
/// </summary>
/// <param name="operation">The pending operation to monitor</param>
public void AddPendingOperation(OperationBase operation)
{
this.possiblyPendingOperations.Add(operation);
}
/// <summary>
/// Causes the <see cref="VisualStateManager"/> to change to the "AtLogin" state.
/// </summary>
public virtual void NavigateToLogin()
{
VisualStateManager.GoToState(this, "AtLogin", true);
this.loginForm.SetInitialFocus();
}
/// <summary>
/// Causes the <see cref="VisualStateManager"/> to change to the "AtRegistration" state.
/// </summary>
public virtual void NavigateToRegistration()
{
VisualStateManager.GoToState(this, "AtRegistration", true);
this.registrationForm.SetInitialFocus();
}
/// <summary>
/// Prevents the window from closing while there are operations in progress
/// </summary>
private void LoginWindow_Closing(object sender, CancelEventArgs eventArgs)
{
foreach (OperationBase operation in this.possiblyPendingOperations)
{
if (!operation.IsComplete)
{
if (operation.CanCancel)
{
operation.Cancel();
}
else
{
eventArgs.Cancel = true;
}
}
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.