//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------- namespace System.Activities.Presentation.Internal.PropertyEditing.State { using System; using System.Diagnostics; // <summary> // Aggregate of IStateContainer objects // </summary> internal class AggregateStateContainer : IStateContainer { private IStateContainer[] _containers; public AggregateStateContainer(params IStateContainer[] containers) { _containers = containers; } public object RetrieveState() { object[] states = null; if (_containers != null) { states = new object[_containers.Length]; for (int i = 0; i < _containers.Length; i++) { states[i] = _containers[i] == null ? null : _containers[i].RetrieveState(); } } return states; } public void RestoreState(object state) { if (_containers != null) { object[] states = state as object[]; if (states == null || states.Length != _containers.Length) { Debug.Fail("Invalid state to restore: " + (state == null ? "null" : state.ToString())); return; } for (int i = 0; i < _containers.Length; i++) { if (_containers[i] != null) { _containers[i].RestoreState(states[i]); } } } } } } |