protected override void OnInitialize(AsyncStatus status)
 {
     ExTraceGlobals.ProgramFlowTracer.TraceFunction <ExchangeFormView>(0L, "-->ExchangeFormView.OnInitialize: {0}", this);
     try
     {
         SynchronizationContext.SetSynchronizationContext(new SynchronizeInvokeSynchronizationContext(base.SnapIn));
         this.uiService        = new ViewUIService(this);
         this.selectionService = new Selection();
         this.services         = new ServiceContainer();
         this.settingsProvider = new ExchangeSettingsProvider();
         this.settingsProvider.Initialize(null, null);
         this.progressProvider = new ScopeNodeProgressProvider(base.ScopeNode);
         this.services.AddService(typeof(SynchronizationContext), SynchronizationContext.Current);
         this.services.AddService(typeof(IUIService), this.uiService);
         this.services.AddService(typeof(ISelectionService), this.selectionService);
         this.services.AddService(typeof(ISettingsProviderService), this.settingsProvider);
         this.services.AddService(typeof(IProgressProvider), this.progressProvider);
         this.services.AddService(typeof(INodeSelectionService), this);
         this.services.AddService(typeof(ISharedViewDataService), this);
         this.components = new ServicedContainer(this.services);
         this.components.Add(base.Control, base.Control.Name);
         IResultPaneControl resultPaneControl = base.Control as IResultPaneControl;
         ExchangeScopeNode  exchangeScopeNode = base.ScopeNode as ExchangeScopeNode;
         IExchangeSnapIn    exchangeSnapIn    = base.SnapIn as IExchangeSnapIn;
         if (resultPaneControl != null && exchangeSnapIn != null)
         {
             resultPaneControl.SharedSettings = exchangeSnapIn.Settings;
         }
         if (exchangeScopeNode != null)
         {
             exchangeScopeNode.Refreshing += this.exchangeScopeNode_Refreshing;
             status.EnableManualCompletion();
             exchangeScopeNode.InitializeView(base.Control, new StatusProgress(status, base.ScopeNode.SnapIn));
         }
         base.Control.Dock = DockStyle.Fill;
         bool showGroupsAsRegions = base.Control is WorkCenter;
         this.selectionCommandsAdapter  = new CommandsActionsAdapter(this.services, base.SelectionData.ActionsPaneItems, this.ResultPane.SelectionCommands, showGroupsAsRegions, exchangeSnapIn, this);
         this.resultPaneCommandsAdapter = new CommandsActionsAdapter(this.services, base.ActionsPaneItems, this.ResultPane.ResultPaneCommands, false, exchangeSnapIn, null);
         this.viewModeCommandsAdapter   = new CommandsActionsAdapter(this.services, base.ModeActionsPaneItems, this.ResultPane.ViewModeCommands, false, exchangeSnapIn, null);
         base.ActionsPaneItems.Add(new ActionSeparator());
         this.exportListCommandsAdapter          = new CommandsActionsAdapter(this.services, base.ActionsPaneItems, this.ResultPane.ExportListCommands, false, exchangeSnapIn, null, true);
         this.selectionService.SelectionChanged += this.selectionService_SelectionChanged;
         this.ResultPane.IsModifiedChanged      += this.ResultPane_IsModifiedChanged;
         this.ResultPane_IsModifiedChanged(this.ResultPane, EventArgs.Empty);
         this.ResultPane.HelpRequested += this.ResultPane_HelpRequested;
         base.OnInitialize(status);
     }
     catch (Exception ex)
     {
         if (ExceptionHelper.IsUICriticalException(ex))
         {
             throw;
         }
         base.Control.Enabled = false;
         this.uiService.ShowError(ex);
     }
     ExTraceGlobals.ProgramFlowTracer.TraceFunction <ExchangeFormView>(0L, "<--ExchangeFormView.OnInitialize: {0}", this);
 }
 protected override void OnShutdown(SyncStatus status)
 {
     ExTraceGlobals.ProgramFlowTracer.TraceFunction <ExchangeFormView>(0L, "-->ExchangeFormView.OnShutdown: {0}", this);
     try
     {
         if (base.Control != null)
         {
             ExchangeScopeNode exchangeScopeNode = base.ScopeNode as ExchangeScopeNode;
             if (exchangeScopeNode != null)
             {
                 exchangeScopeNode.Refreshing -= this.exchangeScopeNode_Refreshing;
             }
             this.ResultPane.HelpRequested          -= this.ResultPane_HelpRequested;
             this.ResultPane.IsModifiedChanged      -= this.ResultPane_IsModifiedChanged;
             this.selectionService.SelectionChanged -= this.selectionService_SelectionChanged;
             if (this.exportListCommandsAdapter != null)
             {
                 this.exportListCommandsAdapter.Dispose();
             }
             this.exportListCommandsAdapter = null;
             if (this.viewModeCommandsAdapter != null)
             {
                 this.viewModeCommandsAdapter.Dispose();
             }
             this.viewModeCommandsAdapter = null;
             if (this.resultPaneCommandsAdapter != null)
             {
                 this.resultPaneCommandsAdapter.Dispose();
             }
             this.resultPaneCommandsAdapter = null;
             if (this.selectionCommandsAdapter != null)
             {
                 this.selectionCommandsAdapter.Dispose();
             }
             this.selectionCommandsAdapter = null;
             if (this.components != null)
             {
                 this.components.Dispose();
             }
             this.components       = null;
             this.uiService        = null;
             this.selectionService = null;
             if (this.services != null)
             {
                 this.services.Dispose();
             }
             this.services         = null;
             this.settingsProvider = null;
             this.progressProvider = null;
         }
         base.OnShutdown(status);
     }
     catch (Exception ex)
     {
         if (ExceptionHelper.IsUICriticalException(ex))
         {
             throw;
         }
         this.uiService.ShowError(ex);
     }
     ExTraceGlobals.ProgramFlowTracer.TraceFunction <ExchangeFormView>(0L, "<--ExchangeFormView.OnShutdown: {0}", this);
 }