public async void Handle(SelectedMessageChanged @event)
        {
            if (_loadingConversation)
            {
                return;
            }

            _loadingConversation = true;
            _originalSelectionId = string.Empty;
            _nodeMap.Clear();

            SelectedMessage = null;
            Diagram         = new MessageFlowDiagram();

            var storedMessage = @event.Message;

            if (storedMessage == null)
            {
                _loadingConversation = false;
                return;
            }

            var conversationId = storedMessage.ConversationId;

            if (conversationId == null)
            {
                _loadingConversation = false;
                return;
            }

            try
            {
                var relatedMessagesTask = await _serviceControl.GetConversationById(conversationId);

                var nodes = relatedMessagesTask.ConvertAll(CreateMessageNode);

                CreateConversationNodes(storedMessage.Id, nodes);
                LinkConversationNodes(nodes);
                UpdateLayout();
            }
            finally
            {
                _loadingConversation = false;
            }
        }
        public MessageFlowViewModel(
            IServiceControl serviceControl,
            IEventAggregator eventAggregator,
            IContentDecoder <IList <HeaderInfo> > decoder,
            IHeaderInfoSerializer headerInfoSerializer,
            IClipboard clipboard,
            IStatusBarManager statusBar)
        {
            _serviceControl       = serviceControl;
            _eventAggregator      = eventAggregator;
            _decoder              = decoder;
            _headerInfoSerializer = headerInfoSerializer;
            _clipboard            = clipboard;
            _statusBar            = statusBar;

            Diagram  = new MessageFlowDiagram();
            _nodeMap = new ConcurrentDictionary <string, MessageNode>();
        }
        public MessageFlowViewModel(
            IServiceControl serviceControl,
            IEventAggregator eventAggregator,
            IClipboard clipboard,
            IWindowManagerEx windowManager,
            IScreenFactory screenFactory,
            ISearchBarViewModel searchBar,
            IMessageListViewModel messageList,
            ISettingsProvider settingsProvider,
            IEndpointExplorerViewModel endpointExplorer)
        {
            _serviceControl   = serviceControl;
            _eventAggregator  = eventAggregator;
            _clipboard        = clipboard;
            _windowManager    = windowManager;
            _screenFactory    = screenFactory;
            _searchBar        = searchBar;
            _settingsProvider = settingsProvider;
            _messageList      = messageList;
            _endpointExplorer = endpointExplorer;

            Diagram  = new MessageFlowDiagram();
            _nodeMap = new ConcurrentDictionary <string, MessageNode>();
        }
 public void Handle(SelectedMessageChanged message)
 {
     SelectedMessage = null;
     _nodeMap.Clear();
     Diagram = new MessageFlowDiagram();
 }