public static Tvision2Setup AddTvControls(this Tvision2Setup setup, Action <ISkinManagerBuilder> skinOptions = null)
        {
            var tree = new ControlsTree();

            setup.Builder.ConfigureServices(sc =>
            {
                sc.AddSingleton <ControlsTree>(tree);
                sc.AddSingleton <IControlsTree>(tree);
                sc.AddSingleton <ISkinManager>(new SkinManager());
            });

            setup.AddHook <ChangeFocusEventHook>();

            setup.Options.AfterCreateInvoke((engine, sp) =>
            {
                var skinManager  = sp.GetRequiredService <ISkinManager>() as SkinManager;
                var colorManager = sp.GetRequiredService <IColorManager>();
                if (skinOptions != null)
                {
                    FillSkinManager(skinOptions, skinManager, colorManager);
                }
                else
                {
                    FillDefaultSkinManager(skinManager, colorManager);
                }


                var ctree = sp.GetRequiredService <IControlsTree>() as ControlsTree;
                tree.AttachTo(engine.UI);
            });

            return(setup);
        }
        public static Tvision2Setup AddTvDialogs(this Tvision2Setup setup)
        {
            setup.Builder.ConfigureServices(sc =>
            {
                sc.AddSingleton <IDialogManager, DialogManager>();
            });

            setup.AddHook <DialogEscapeKeyHook>();

            return(setup);
        }
        public static Tvision2Setup UseViewportManager(this Tvision2Setup setup)
        {
            setup.AddHook <WindowResizedHook>();

            setup.Builder.ConfigureServices(sc =>
            {
                sc.AddTransient <IViewportFactory, ViewportFactory>();
                sc.AddTransient <IDynamicViewportFactory, DynamicViewportFactory>();
                sc.AddSingleton <IViewportManager, ViewportManager>();
            });


            setup.Options.AfterCreateInvoke((engine, sp) =>
            {
                var viewportManager = sp.GetRequiredService <IViewportManager>() as ViewportManager;
                viewportManager.AttachTo(engine.UI as ComponentTree);
            });
            return(setup);
        }