public ArchitectureConsoleViewModel()
        {
            AddModuleCommand = new DelegateCommand(obj => { PrepareCommand(string.Format("AddModule {0}", "value?")); });
            RemoveModuleCommand = new DelegateCommand(obj => { PrepareCommand(string.Format("RemoveModule {0}", "value?")); });
            ViewModuleCommand = new DelegateCommand(obj => { PrepareCommand(string.Format("ViewModule {0}", "value?")); });

            ExecuteCommand = new DelegateCommand(obj =>
                {
                    ConsoleLine = ConsoleLines.Last();
                    ConsoleLine.Status = CommandStatus.None;

                    _subscription.SubscribeFirstPublication(Messages.COMMAND_PROCESSED, OnProcessed);

                    MessageBus.Instance.Publish(Messages.COMMAND_LINE_SUBMITTED, ConsoleLine.Content);
                });

            ModuleDefinitionCommand = new DelegateCommand(obj =>
                {
                    MessageBus.Instance.Publish(Global.Messages.REQUEST_MODULES_VIEW, SelectedLayer);
                });

            _subscription.SubscribeFirstPublication(Global.Messages.REQUEST_ARCHITECTURE_DEPENDENCIES_COMPLETED, obj =>
                {
                    var dependencies = obj as ArchitectureDependencies;
                    _services = dependencies.Services;
                });

            _subscription.Subscribe(Global.Messages.REQUEST_ARCHITECTURE_VIEWMODEL, obj => MessageBus.Instance.Publish(Global.Messages.REQUEST_ARCHITECTURE_VIEWMODEL_COMPLETED, this));

            ConsoleLine = new ConsoleLine();
            ConsoleLines.Add(ConsoleLine);
        }
        private void OnProcessed(object obj)
        {
            var commandContext = obj as CommandContext;

            if (commandContext.Status == CommandStatus.Succeeded)
            {
                var currentConsoleLine = ConsoleLine;
                currentConsoleLine.Status = commandContext.Status;

                ConsoleLine = new ConsoleLine();
                ConsoleLines.Add(ConsoleLine);
            }
            else
            {
                ConsoleLines.Last().Status = CommandStatus.Failed;
            }
        }
 public void PrepareCommand(string commandText)
 {
     var consoleLine = new ConsoleLine() { Content = commandText };
     ConsoleLines[ConsoleLines.Count - 1] = consoleLine;
 }