/// <summary> /// Tries to get a service from an <see cref="IPerspexDependencyResolver"/>, throwing an /// exception if not found. /// </summary> /// <typeparam name="T">The service type.</typeparam> /// <param name="resolver">The resolver.</param> /// <returns>The service.</returns> private static T TryGetService <T>(IPerspexDependencyResolver resolver) where T : class { var result = resolver.GetService <T>(); System.Diagnostics.Debug.WriteLineIf( result == null, $"Could not create {typeof(T).Name} : maybe Application.RegisterServices() wasn't called?"); return(result); }
/// <summary> /// Initializes a new instance of the <see cref="TopLevel"/> class. /// </summary> /// <param name="impl">The platform-specific window implementation.</param> /// <param name="dependencyResolver"> /// The dependency resolver to use. If null the default dependency resolver will be used. /// </param> public TopLevel(ITopLevelImpl impl, IPerspexDependencyResolver dependencyResolver) { if (impl == null) { throw new InvalidOperationException( "Could not create window implementation: maybe no windowing subsystem was initialized?"); } PlatformImpl = impl; dependencyResolver = dependencyResolver ?? PerspexLocator.Current; var renderInterface = TryGetService <IPlatformRenderInterface>(dependencyResolver); var styler = TryGetService <IStyler>(dependencyResolver); _accessKeyHandler = TryGetService <IAccessKeyHandler>(dependencyResolver); _inputManager = TryGetService <IInputManager>(dependencyResolver); _keyboardNavigationHandler = TryGetService <IKeyboardNavigationHandler>(dependencyResolver); LayoutManager = TryGetService <ILayoutManager>(dependencyResolver); _renderQueueManager = TryGetService <IRenderQueueManager>(dependencyResolver); (TryGetService <ITopLevelRenderer>(dependencyResolver) ?? new DefaultTopLevelRenderer()).Attach(this); PlatformImpl.SetInputRoot(this); PlatformImpl.Activated = HandleActivated; PlatformImpl.Deactivated = HandleDeactivated; PlatformImpl.Closed = HandleClosed; PlatformImpl.Input = HandleInput; PlatformImpl.Resized = HandleResized; Size clientSize = ClientSize = PlatformImpl.ClientSize; if (LayoutManager != null) { LayoutManager.Root = this; LayoutManager.LayoutNeeded.Subscribe(_ => HandleLayoutNeeded()); LayoutManager.LayoutCompleted.Subscribe(_ => HandleLayoutCompleted()); } if (_keyboardNavigationHandler != null) { _keyboardNavigationHandler.SetOwner(this); } if (_accessKeyHandler != null) { _accessKeyHandler.SetOwner(this); } styler?.ApplyStyles(this); GetObservable(ClientSizeProperty).Skip(1).Subscribe(x => PlatformImpl.ClientSize = x); GetObservable(PointerOverElementProperty) .Select( x => (x as InputElement)?.GetObservable(CursorProperty) ?? Observable.Empty <Cursor>()) .Switch().Subscribe(cursor => PlatformImpl.SetCursor(cursor?.PlatformCursor)); }
/// <summary> /// Tries to get a service from an <see cref="IPerspexDependencyResolver"/>, throwing an /// exception if not found. /// </summary> /// <typeparam name="T">The service type.</typeparam> /// <param name="resolver">The resolver.</param> /// <returns>The service.</returns> private T TryGetService <T>(IPerspexDependencyResolver resolver) where T : class { var result = resolver.GetService <T>(); if (result == null) { Logger.Warning( LogArea.Control, this, "Could not create {Service} : maybe Application.RegisterServices() wasn't called?", typeof(T)); } return(result); }
/// <summary> /// Initializes a new instance of the <see cref="PopupRoot"/> class. /// </summary> /// <param name="dependencyResolver"> /// The dependency resolver to use. If null the default dependency resolver will be used. /// </param> public PopupRoot(IPerspexDependencyResolver dependencyResolver) : base(PerspexLocator.Current.GetService <IPopupImpl>(), dependencyResolver) { GetObservable(ParentProperty).Subscribe(x => InheritanceParent = (PerspexObject)x); }
public ResolverDisposable(IPerspexDependencyResolver resolver, PerspexLocator mutable) { _resolver = resolver; _mutable = mutable; }
public PerspexLocator(IPerspexDependencyResolver parentScope) { _parentScope = parentScope; }
public static T GetService <T>(this IPerspexDependencyResolver resolver) { return((T)resolver.GetService(typeof(T))); }
/// <summary> /// Initializes a new instance of the <see cref="PopupRoot"/> class. /// </summary> /// <param name="dependencyResolver"> /// The dependency resolver to use. If null the default dependency resolver will be used. /// </param> public PopupRoot(IPerspexDependencyResolver dependencyResolver) : base(PlatformManager.CreatePopup(), dependencyResolver) { GetObservable(ParentProperty).Subscribe(x => InheritanceParent = (PerspexObject)x); }
/// <summary> /// Initializes a new instance of the <see cref="PopupRoot"/> class. /// </summary> /// <param name="dependencyResolver"> /// The dependency resolver to use. If null the default dependency resolver will be used. /// </param> public PopupRoot(IPerspexDependencyResolver dependencyResolver) : base(PerspexLocator.Current.GetService<IPopupImpl>(), dependencyResolver) { GetObservable(ParentProperty).Subscribe(x => InheritanceParent = (PerspexObject)x); }
/// <summary> /// Initializes a new instance of the <see cref="PopupRoot"/> class. /// </summary> /// <param name="dependencyResolver"> /// The dependency resolver to use. If null the default dependency resolver will be used. /// </param> public PopupRoot(IPerspexDependencyResolver dependencyResolver) : base(PlatformManager.CreatePopup(), dependencyResolver) { }