public MessageFlowViewModel(
            IServiceControl serviceControl,
            IEventAggregator eventAggregator,
            IWindowManagerEx windowManager,
            IContainer container,
            Func <ExceptionDetailViewModel> exceptionDetail,
            ISettingsProvider settingsProvider,
            MessageSelectionContext selectionContext,
            IWorkNotifier workNotifier)
        {
            this.workNotifier     = workNotifier;
            this.serviceControl   = serviceControl;
            this.eventAggregator  = eventAggregator;
            this.windowManager    = windowManager;
            this.settingsProvider = settingsProvider;
            selection             = selectionContext;
            this.exceptionDetail  = exceptionDetail;

            CopyConversationIDCommand = container.Resolve <CopyConversationIDCommand>();
            CopyMessageURICommand     = container.Resolve <CopyMessageURICommand>();
            RetryMessageCommand       = container.Resolve <RetryMessageCommand>();
            SearchByMessageIDCommand  = container.Resolve <SearchByMessageIDCommand>();

            Diagram = new FlowDiagramModel();
            nodeMap = new ConcurrentDictionary <string, MessageNode>();
        }
        void ClearState()
        {
            nodeMap.Clear();

            loadedConversationId = null;
            SelectedMessage      = null;
            Diagram = new FlowDiagramModel();
        }