private void NewRuleCommandHandler()
        {
            XElement   element    = null;
            SignalRule signalRule = null;

            element    = XElementExtensions.NewSignalRule();
            signalRule = element.ToTypeSignalRule();

            if (element != null && signalRule != null)
            {
                NewRuleViewModel newRuleViewModel = new NewRuleViewModel {
                    SignalRule = signalRule
                };

                // here we have to open a new rule dialog.
                _dialogContainerService.ShowDialog(newRuleViewModel);

                if (newRuleViewModel.Result == DialogResult.Success)
                {
                    if (this.SignalRules != null && _document != null)
                    {
                        _document.Root.Add(element, Environment.NewLine);
                        this.SignalRules.Add(signalRule);
                        this.IsDirty = true;
                        this.PrimaryCommand.RaiseCanExecuteChanged();
                    }
                }
            }
        }
        private async void ValidateCommandHandler()
        {
            if (this.FailedSignals == null)
            {
                this.FailedSignals = new ObservableCollection <JsonSignal>();
            }

            this.FailedSignals.Clear();

            JsonSignal[] jsonSignals = _jsonSerializer.Deserialize(this.DataStream);

            if (jsonSignals == null)
            {
                _messageDialog.Caption = "Invalid Json Data";
                _messageDialog.Message = "Error while parsing input string. Couldn't parse the string.";
                _dialogContainerService.ShowDialog(_messageDialog);
                return;
            }

            // refresh the rules
            await _ruleManagement.Prepare();

            foreach (JsonSignal jsonSignal in this.RunRules(jsonSignals))
            {
                this.FailedSignals.Add(jsonSignal);
            }
        }