|
using System;
using System.Collections.Generic;
using System.Linq;
using Windows.UI.Xaml;
namespace ClearStyle.Interactions
{
/// <summary>
/// Manages a collection of interactions, multicasting various functions to each interaction (such
/// as the need to attached to a new element), and also manages the enabled state of each interaction.
/// </summary>
public class InteractionManager
{
private List<IInteraction> _interactions = new List<IInteraction>();
public void AddInteraction(IInteraction interaction)
{
_interactions.Add(interaction);
interaction.Activated += Interaction_Activated;
interaction.DeActivated += Interaction_DeActivated;
}
/// <summary>
/// 'multicast' AddELement to all interactions
/// </summary>
public void AddElement(FrameworkElement element, FrameworkElement transformElement)
{
foreach (var interaction in _interactions)
{
interaction.AddElement(element, transformElement);
}
}
private void Interaction_DeActivated(object sender, EventArgs e)
{
// when an interactions is de-activated, re-enable all interactions
foreach(var interaction in _interactions)
{
interaction.IsEnabled = true;
}
}
private void Interaction_Activated(object sender, EventArgs e)
{
// when an interaction is activated, disable all others
foreach(var interaction in _interactions.Where(i => i != sender))
{
interaction.IsEnabled = false;
}
}
}
}
|
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.