예제 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GraphViewModel"/> class.
        /// </summary>
        /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="GraphViewModelService"/> to use for this view model.</param>
        /// <param name="type"></param>
        /// <param name="rootPresenters">The root <see cref="INodePresenter"/> instances.</param>
        private GraphViewModel([NotNull] IViewModelServiceProvider serviceProvider, [NotNull] Type type, [NotNull] IEnumerable <INodePresenter> rootPresenters)
            : base(serviceProvider)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (rootPresenters == null)
            {
                throw new ArgumentNullException(nameof(rootPresenters));
            }
            GraphViewModelService = serviceProvider.TryGet <GraphViewModelService>();
            if (GraphViewModelService == null)
            {
                throw new InvalidOperationException($"{nameof(GraphViewModel)} requires a {nameof(GraphViewModelService)} in the service provider.");
            }
            Logger = GlobalLogger.GetLogger(DefaultLoggerName);
            if (rootPresenters == null)
            {
                throw new ArgumentNullException(nameof(rootNode));
            }
            var viewModelFactory = serviceProvider.Get <GraphViewModelService>().NodeViewModelFactory;

            viewModelFactory.CreateGraph(this, type, rootPresenters);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ObservableViewModel"/> class.
 /// </summary>
 /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="ObservableViewModelService"/> to use for this view model.</param>
 private ObservableViewModel(IViewModelServiceProvider serviceProvider)
     : base(serviceProvider)
 {
     ObservableViewModelService = serviceProvider.TryGet<ObservableViewModelService>();
     if (ObservableViewModelService == null) throw new InvalidOperationException($"{nameof(ObservableViewModel)} requires a {nameof(ObservableViewModelService)} in the service provider.");
     Logger = GlobalLogger.GetLogger(DefaultLoggerName);
 }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EditableViewModel"/> class.
 /// </summary>
 /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="IUndoRedoService"/> to use for this view model.</param>
 protected EditableViewModel([NotNull] IViewModelServiceProvider serviceProvider)
     : base(serviceProvider)
 {
     if (serviceProvider.TryGet <IUndoRedoService>() == null)
     {
         throw new ArgumentException("The given IViewModelServiceProvider instance does not contain an service implementing IUndoRedoService.");
     }
 }
예제 #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EditableViewModel"/> class.
 /// </summary>
 /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="ITransactionalActionStack"/> to use for this view model.</param>
 protected EditableViewModel(IViewModelServiceProvider serviceProvider)
     : base(serviceProvider)
 {
     if (serviceProvider.TryGet <ITransactionalActionStack>() == null)
     {
         throw new ArgumentException("The given IViewModelServiceProvider instance does not contain an ITransactionalActionStack service.");
     }
 }
예제 #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DispatcherViewModel"/> class.
 /// </summary>
 /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> to use for this view model.</param>
 protected DispatcherViewModel(IViewModelServiceProvider serviceProvider)
     : base(serviceProvider)
 {
     Dispatcher = serviceProvider.TryGet <IDispatcherService>();
     if (Dispatcher == null)
     {
         throw new InvalidOperationException($"{nameof(DispatcherViewModel)} requires a {nameof(IDispatcherService)} in the service provider.");
     }
 }
예제 #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GraphViewModel"/> class.
 /// </summary>
 /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="GraphViewModelService"/> to use for this view model.</param>
 private GraphViewModel(IViewModelServiceProvider serviceProvider)
     : base(serviceProvider)
 {
     GraphViewModelService = serviceProvider.TryGet <GraphViewModelService>();
     if (GraphViewModelService == null)
     {
         throw new InvalidOperationException($"{nameof(GraphViewModel)} requires a {nameof(GraphViewModelService)} in the service provider.");
     }
     Logger = GlobalLogger.GetLogger(DefaultLoggerName);
 }
예제 #7
0
        /// <inheritdoc/>
        public object TryGet(Type serviceType)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }
            object serviceFound = null;

            foreach (var service in services.Where(serviceType.IsInstanceOfType))
            {
                if (serviceFound != null)
                {
                    throw new InvalidOperationException("Multiple services match the given type.");
                }

                serviceFound = service;
            }

            return(parentProvider != null && serviceFound == null?parentProvider.TryGet(serviceType) : serviceFound);
        }
예제 #8
0
 private static IEnumerable <Type> FindScriptType([NotNull] IViewModelServiceProvider serviceProvider, [NotNull] AssetItem scriptAsset)
 {
     return(serviceProvider.TryGet <IScriptSourceCodeResolver>()?.GetTypesFromSourceFile(scriptAsset.FullPath));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DispatcherViewModel"/> class.
 /// </summary>
 /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> to use for this view model.</param>
 protected DispatcherViewModel(IViewModelServiceProvider serviceProvider)
     : base(serviceProvider)
 {
     Dispatcher = serviceProvider.TryGet<IDispatcherService>();
     if (Dispatcher == null) throw new InvalidOperationException($"{nameof(DispatcherViewModel)} requires a {nameof(IDispatcherService)} in the service provider.");
 }