예제 #1
0
        public IObservable <LoadData> SetupUI(UIControllerFlow controllerFlow, [AllowNull] IConnection connection)
        {
            StopUI();

            var factory = TryGetService(typeof(IExportFactoryProvider)) as IExportFactoryProvider;

            currentUIFlow = factory.UIControllerFactory.CreateExport();
            var disposable = currentUIFlow;
            var ui         = currentUIFlow.Value;
            var creation   = ui.SelectFlow(controllerFlow);

            windowController = new UI.WindowController(creation);
            windowController.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
            windowController.Closed += StopUIFlowWhenWindowIsClosedByUser;
            creation.Subscribe(c => {}, () =>
            {
                windowController.Closed -= StopUIFlowWhenWindowIsClosedByUser;
                windowController.Close();
                if (currentUIFlow != disposable)
                {
                    StopUI(disposable);
                }
                else
                {
                    StopUI();
                }
            });
            ui.Start(connection);
            return(creation);
        }
예제 #2
0
        public void RunInDialog(IUIController controller)
        {
            var listener = controller.TransitionSignal;

            windowController = new UI.WindowController(listener);
            windowController.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
            EventHandler stopUIAction = (s, e) =>
            {
                StopUI(controller);
            };

            windowController.Closed += stopUIAction;
            listener.Subscribe(_ => { }, () =>
            {
                windowController.Closed -= stopUIAction;
                windowController.Close();
                StopUI(controller);
            });

            controller.Start();
            windowController.ShowModal();
            windowController = null;
        }
예제 #3
0
        public IObservable <LoadData> SetupUI(UIControllerFlow controllerFlow, [AllowNull] IConnection connection)
        {
            if (!Initialized)
            {
                log.Error("ExportProvider is not initialized, cannot setup UI.");
                return(Observable.Empty <LoadData>());
            }

            StopUI();

            var factory = GetService <IExportFactoryProvider>();

            currentUIFlow = factory.UIControllerFactory.CreateExport();
            var disposable = currentUIFlow;
            var ui         = currentUIFlow.Value;
            var creation   = ui.SelectFlow(controllerFlow);

            windowController = new UI.WindowController(creation);
            windowController.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
            windowController.Closed += StopUIFlowWhenWindowIsClosedByUser;
            creation.Subscribe(c => {}, () =>
            {
                windowController.Closed -= StopUIFlowWhenWindowIsClosedByUser;
                windowController.Close();
                if (currentUIFlow != disposable)
                {
                    StopUI(disposable);
                }
                else
                {
                    StopUI();
                }
            });
            ui.Start(connection);
            return(creation);
        }