public void Initialize()
        {
            LeftPane = (IPaneViewModel)Container.Resolve(GetStoredPaneType(_userSettings.LeftPaneType));
            var leftParam = _userSettings.LeftPaneFileListPaneSettings;

            LeftPane.LoadDataAsync(LoadCommand.Load, new LoadDataAsyncParameters(leftParam), PaneLoaded);
            LeftPane.SetActive();

            RightPane = (IPaneViewModel)Container.Resolve(GetStoredPaneType(_userSettings.RightPaneType));
            var rightParam = _userSettings.RightPaneFileListPaneSettings;

            RightPane.LoadDataAsync(LoadCommand.Load, new LoadDataAsyncParameters(rightParam), PaneLoaded);
        }
 private void OnCloseNestedPane(CloseNestedPaneEventArgs args)
 {
     if (LeftPane == args.Pane)
     {
         var settings = LeftPane.Settings;
         LeftPane.Dispose();
         LeftPane = _leftPaneStack.Pop();
         LeftPane.LoadDataAsync(LoadCommand.Restore, new LoadDataAsyncParameters(settings, args.Payload));
         LeftPane.SetActive();
     }
     else if (RightPane == args.Pane)
     {
         var settings = RightPane.Settings;
         RightPane.Dispose();
         RightPane = _rightPaneStack.Pop();
         RightPane.LoadDataAsync(LoadCommand.Restore, new LoadDataAsyncParameters(settings, args.Payload));
         RightPane.SetActive();
     }
 }
        public override void Dispose()
        {
            object data = null;
            FileListPaneSettings settings;
            IPaneViewModel       left;

            do
            {
                settings = LeftPane.Settings;
                data     = LeftPane.Close(data);
                left     = LeftPane;
                LeftPane = _leftPaneStack.Count > 0 ? _leftPaneStack.Pop() : null;
                if (LeftPane != null)
                {
                    LeftPane.LoadDataAsync(LoadCommand.Restore, new LoadDataAsyncParameters(settings));
                }
            }while (LeftPane != null);
            _userSettings.LeftPaneType = left.GetType().FullName;
            _userSettings.LeftPaneFileListPaneSettings = left.Settings;

            data = null;
            IPaneViewModel right;

            do
            {
                settings  = RightPane.Settings;
                data      = RightPane.Close(data);
                right     = RightPane;
                RightPane = _rightPaneStack.Count > 0 ? _rightPaneStack.Pop() : null;
                if (RightPane != null)
                {
                    RightPane.LoadDataAsync(LoadCommand.Restore, new LoadDataAsyncParameters(settings));
                }
            }while (RightPane != null);
            _userSettings.RightPaneType = right.GetType().FullName;
            _userSettings.RightPaneFileListPaneSettings = right.Settings;

            base.Dispose();
        }