예제 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MainViewModel"/> class.
        /// </summary>
        /// <param name="serviceLocator">
        /// A <see cref="IServiceLocator"/> instance.
        /// </param>
        /// <param name="mapper">
        /// A <see cref="ICommandTreeItemViewMapper"/> mapper.
        /// </param>
        /// <param name="taskRepository">
        /// A <see cref="ITaskRepository"/> repository.
        /// </param>
        public MainViewModel(
            IServiceLocator serviceLocator,
            ICommandTreeItemViewMapper mapper,
            ITaskRepository taskRepository)
        {
            this.TaskContainer = new TaskContainerViewModel(serviceLocator, mapper, taskRepository);
            this.Logger        = serviceLocator.Resolve <ILogger>();
            this.ClearCommand  = new DelegateCommand(() =>
            {
                this.Logger.Clear();
                this._filteredLogMessages.Clear();
            });
            this.SelectedLogLevel = this.LogLevels.First();
            this.Logger.LogMessages.CollectionChanged += (s, e) =>
            {
                if (this.SelectedLogLevel == "All")
                {
                    return;     // If ALL items then no need to maintain our filtered messages.
                }

                if (e.NewItems == null)
                {
                    this._filteredLogMessages.Clear();
                }
                else
                {
                    e.NewItems.OfType <LogMessage>()
                    .Where(l => l.Level.ToString() == this._selectedLogLevel)
                    .ToList()
                    .ForEach(l => this._filteredLogMessages.Add(l));
                }
            };

            this.Registrations = serviceLocator.GetRegisteredTypes().OrderBy(t => t.InterfaceType.FullName);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TaskContainerViewModel"/> class.
 /// </summary>
 /// <param name="serviceLocator">
 /// A <see cref="IServiceLocator"/> instance used for resolving dependencies.
 /// </param>
 /// <param name="mapper">
 /// A <see cref="ICommandTreeItemViewMapper"/> mapper for mapping commands to views.
 /// </param>
 /// <param name="taskRepository">
 /// A <see cref="ITaskRepository"/> repository.
 /// </param>
 public TaskContainerViewModel(
     IServiceLocator serviceLocator,
     ICommandTreeItemViewMapper mapper,
     ITaskRepository taskRepository)
 {
     this.Tasks = new SafeObservableCollection <TaskViewModel>();
     var task = this.LoadTasks(serviceLocator, mapper, taskRepository);
 }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TaskGroupViewModel"/> class.
 /// </summary>
 /// <param name="mapper">
 /// A <see cref="ICommandTreeItemViewMapper"/> mapper.
 /// </param>
 /// <param name="name">
 /// Group name.
 /// </param>
 /// <param name="tag">
 /// A unique value for the view model.
 /// </param>
 /// <param name="tasks">
 /// A list of tasks.
 /// </param>
 public TaskGroupViewModel(
     ICommandTreeItemViewMapper mapper,
     string name,
     string tag,
     IEnumerable <TaskInfo> tasks)
     : base(null, name, tag)
 {
     this.Mapper = mapper;
     this.Tasks  = tasks;
     this.Name   = name;
 }
 /// <summary>
 /// Load tasks.
 /// </summary>
 /// <param name="serviceLocator">
 /// A <see cref="IServiceLocator"/> instance used for resolving dependencies.
 /// </param>
 /// <param name="mapper">
 /// A <see cref="ICommandTreeItemViewMapper"/> mapper for mapping commands to views.
 /// </param>
 /// <param name="taskRepository">
 /// A <see cref="ITaskRepository"/> repository.
 /// </param>
 /// <returns>
 /// A <see cref="System.Threading.Tasks.Task"/> instance.
 /// </returns>
 private async Task LoadTasks(
     IServiceLocator serviceLocator,
     ICommandTreeItemViewMapper mapper,
     ITaskRepository taskRepository)
 {
     foreach (var task in await taskRepository.GetTasksAsync(serviceLocator, serviceLocator.Resolve <ILogger>()))
     {
         if (task.Type == TaskType.TaskGroup && task.Tasks.Any())
         {
             this.Tasks.Add(new TaskGroupViewModel(mapper, task.Name, task.Tag, task.Tasks));
             mapper.Add(task.Tag, task.View);
         }
     }
 }
예제 #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MainWindow"/> class.
        /// </summary>
        /// <param name="mapper">
        /// A <see cref="ICommandTreeItemViewMapper"/> mapper.
        /// </param>
        public MainWindow(ICommandTreeItemViewMapper mapper)
        {
            this.InitializeComponent();
            this.TaskNavigationViewer.TaskSelectionChangedEvent += (s, e) =>
            {
                var taskViewModel = e.SelectedItem as TaskViewModel;
                if (taskViewModel == null)
                {
                    return;
                }

                var ctrl = mapper.GetControl(taskViewModel.Tag);
                if (ctrl != null)
                {
                    ctrl.DataContext = taskViewModel.DataContext;
                    this.DetailViewContainer.ShowView(ctrl);
                }
            };
        }