Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
LoggerResultViewModel.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using System;
4 using System.Collections.Generic;
5 
6 using SiliconStudio.Core.Diagnostics;
7 using SiliconStudio.Presentation.Collections;
8 using SiliconStudio.Presentation.Services;
9 
10 namespace SiliconStudio.Presentation.ViewModel
11 {
12  /// <summary>
13  /// A view model based on the <see cref="LoggerViewModel"/> that monitors <see cref="LoggerResult"/> objects. The main difference with the base <see cref="LoggerViewModel"/>
14  /// is that all mesages already contained <see cref="LoggerResult"/> are added to the <see cref="LoggerViewModel.Messages"/> collection in the constructor.
15  /// </summary>
17  {
18  /// <summary>
19  /// Initializes a new instance of the <see cref="LoggerResultViewModel"/> class.
20  /// </summary>
21  /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> to use for this view model.</param>
23  : base(serviceProvider)
24  {
25  }
26 
27  /// <summary>
28  /// Initializes a new instance of the <see cref="LoggerResultViewModel"/> class with a single <see cref="LoggerResult"/>.
29  /// </summary>
30  /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> to use for this view model.</param>
31  /// <param name="loggerResult">The <see cref="LoggerResult"/> to monitor.</param>
32  public LoggerResultViewModel(IViewModelServiceProvider serviceProvider, LoggerResult loggerResult)
33  : base(serviceProvider, loggerResult)
34  {
35  var messages = (ObservableList<ILogMessage>)Messages;
36  messages.AddRange(loggerResult.Messages);
37  }
38 
39  /// <summary>
40  /// Initializes a new instance of the <see cref="LoggerResultViewModel"/> class multiple instances of <see cref="LoggerResult"/>.
41  /// </summary>
42  /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> to use for this view model.</param>
43  /// <param name="loggerResults"></param>
45  : base(serviceProvider, loggerResults)
46  {
47  var messages = (ObservableList<ILogMessage>)Messages;
48  foreach (var logger in Loggers)
49  {
50  var loggerResult = (LoggerResult)logger.Key;
51  logger.Value.AddRange(loggerResult.Messages);
52  messages.AddRange(loggerResult.Messages);
53  }
54  }
55 
56  /// <inheritdoc/>
57  public override void AddLogger(Logger logger)
58  {
59  if (!(logger is LoggerResult)) throw new ArgumentException("logger");
60  base.AddLogger(logger);
61  var messages = (ObservableList<ILogMessage>)Messages;
62  Loggers[logger].AddRange(((LoggerResult)logger).Messages);
63  messages.AddRange(((LoggerResult)logger).Messages);
64  }
65  }
66 }
LoggerResultViewModel(IViewModelServiceProvider serviceProvider, LoggerResult loggerResult)
Initializes a new instance of the LoggerResultViewModel class with a single LoggerResult.
SiliconStudio.Core.Diagnostics.LoggerResult LoggerResult
A logger that stores messages locally useful for internal log scenarios.
Definition: LoggerResult.cs:14
override void AddLogger(Logger logger)
Adds a Logger to monitor. The Logger to monitor.
Base implementation for ILogger.
Definition: Logger.cs:10
A view model that monitors messages from one or several loggers and update an observable collection o...
A view model based on the LoggerViewModel that monitors LoggerResult objects. The main difference wit...
LoggerResultViewModel(IViewModelServiceProvider serviceProvider, IEnumerable< LoggerResult > loggerResults)
Initializes a new instance of the LoggerResultViewModel class multiple instances of LoggerResult...
LoggerResultViewModel(IViewModelServiceProvider serviceProvider)
Initializes a new instance of the LoggerResultViewModel class.