/// <inheritdoc /> public ICardChannelLayer RequestLayer(ICardChannelLayer layer, SearchMode mode) { if (layers.Count == 0) { throw new Exception("CardChannelStack.requestLayer(): no layers defined in the stack"); } switch (mode) { case SearchMode.Bottom: return(layers[layers.Count - 1]); case SearchMode.Next: return(layers.Following(l => l.LayerId == layer.LayerId)); case SearchMode.Previous: return(layers.Preceding(l => l.LayerId == layer.LayerId)); case SearchMode.Top: return(layers[0]); default: throw new NotSupportedException(String.Format("CardChannelStack.RequestLayer(): Seek mode '{0}' unknown", mode)); } }
/// <inheritdoc /> public void AddLayer(ICardChannelLayer layer) { layers.Add(layer); layer.SetStack(this); }
/// <inheritdoc /> public void ReleaseLayer(ICardChannelLayer layer) { layers.Remove(layer); }
/// <summary> /// Encapsulates an <see cref="ICardChannelLayer"/> and adds <see cref="ICardChannelLayerObservable"/> behaviour. /// </summary> /// <param name="layer">Card channel layer to encapsulate.</param> /// <returns></returns> public static ICardChannelLayerObservable ToObservableLayer(this ICardChannelLayer layer) { var layerObservable = layer as ICardChannelLayerObservable; return(layerObservable ?? new CardChannelLayerObservable(layer)); }
/// <inheritdoc /> public ICardChannelLayer RequestLayer(ICardChannelLayer layer, SearchMode mode) { var stack = (ICardChannelStack)channel; return(stack.RequestLayer(layer, mode)); }
/// <inheritdoc /> public void ReleaseLayer(ICardChannelLayer layer) { var stack = (ICardChannelStack)channel; stack.ReleaseLayer(layer); }
/// <inheritdoc /> public void AddLayer(ICardChannelLayer layer) { var stack = (ICardChannelStack)channel; stack.AddLayer(layer); }
/// <summary> /// Initializes a new instance. /// </summary> /// <param name="channelLayer">Instance to wrap.</param> public CardChannelLayerObservable(ICardChannelLayer channelLayer) : base(channelLayer) { }