コード例 #1
0
ファイル: Program.cs プロジェクト: todo-it/philadelphia
        public static void Run(IFormRenderer <HTMLElement> renderer)
        {
            var mainFrm    = new MainForm();
            var showInfo   = new InformationalMessageForm("Some important info", "Info form title");
            var altMainFrm = new AltMainForm();

            renderer.ReplaceMaster(mainFrm);

            mainFrm.Ended += (form, outcome) => {
                switch (outcome)
                {
                case MainForm.Outcome.EndRequested:
                    renderer.Remove(form);
                    break;

                case MainForm.Outcome.InfoRequested:
                    renderer.AddPopup(showInfo);
                    break;

                case MainForm.Outcome.ReplaceMaster:
                    renderer.ReplaceMaster(altMainFrm);
                    break;
                }
            };

            showInfo.Ended += (form, _) => renderer.Remove(form); //just dismiss this popup (no relevant outcome)
        }
コード例 #2
0
        public void ReplaceMaster(IBareForm <HTMLElement> newForm)
        {
            var maybeMaster = _adapted.Master;

            _adapted.ReplaceMaster(newForm);
            _callback(this, newForm, maybeMaster);
        }
コード例 #3
0
        public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
        {
            renderer.ReplaceMaster(_datagrid);
            renderer.AddPopup(_fetchData);

            _fetchData.Ended += (x, outcome) => {
                renderer.Remove(x);

                switch (outcome)
                {
                case RemoteActionsCallerForm.Outcome.Succeeded:
                    break;

                case RemoteActionsCallerForm.Outcome.Interrupted:
                case RemoteActionsCallerForm.Outcome.Canceled:
                    renderer.Remove(_datagrid);
                    break;

                default: throw new Exception("outcome not supported");
                }
            };

            _datagrid.Ended += async(x, outcome) => {
                switch (outcome)
                {
                case DataboundDatagridForm.Outcome.Canceled:
                    renderer.Remove(x);
                    atExit();
                    break;

                case DataboundDatagridForm.Outcome.ReloadData:
                    renderer.AddPopup(_fetchData);
                    break;

                case DataboundDatagridForm.Outcome.CreateItemDemanded:
                    renderer.AddPopup(_itemCreator);
                    break;

                case DataboundDatagridForm.Outcome.EditItemDemanded:
                    await _itemEditor.InitializeFrom(_datagrid.Items.Selected[0]);

                    renderer.AddPopup(_itemEditor);
                    break;

                default: throw new Exception("outcome not supported");
                }
            };

            _itemCreator.Ended += (x, outcome) => {
                renderer.Remove(x);

                switch (outcome)
                {
                case DataboundDatagridItemCreatorForm.Outcome.Canceled:
                    break;

                case DataboundDatagridItemCreatorForm.Outcome.Created:
                    _datagrid.Items.Items.InsertAt(0, _itemCreator.CreatedItem);
                    break;

                default: throw new Exception("outcome not supported");
                }
            };

            _itemEditor.Ended += (x, _) => {
                renderer.Remove(x);
            };
        }
コード例 #4
0
        public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
        {
            _baseRenderer = renderer;
            renderer.AddPopup(_fetchUser);

            _mainMenuForm.Ended += (x, _) => renderer.AddPopup(_logoutConfirm);

            _logoutConfirm.Ended += (x, outcome) => {
                switch (outcome)
                {
                case CompletedOrCanceled.Completed:
                    renderer.Remove(x);
                    renderer.AddPopup(_runLogout);
                    break;

                case CompletedOrCanceled.Canceled:
                    renderer.Remove(x);
                    break;

                default: throw new Exception("unsupported outcome");
                }
            };

            _fetchUser.Ended += (x, outcome) => {
                switch (outcome)
                {
                case RemoteActionsCallerForm.Outcome.Succeeded:
                    renderer.Remove(x);

                    if (_currentUserOrNull == null)
                    {
                        renderer.AddPopup(_loginForm);
                        break;
                    }

                    //user is logged in -> continue
                    PopulateMenuItems();
                    renderer.ReplaceMaster(_mainMenuForm);
                    atExit();
                    break;

                case RemoteActionsCallerForm.Outcome.Interrupted:
                case RemoteActionsCallerForm.Outcome.Canceled:
                    break;

                default: throw new Exception("unsupported outcome");
                }
            };

            _loginForm.Ended += async(x, outcome) => {
                switch (outcome)
                {
                case CompletedOrCanceled.Completed:
                    renderer.Remove(x);

                    //user is logged in -> continue
                    PopulateMenuItems();
                    renderer.ReplaceMaster(_mainMenuForm);
                    atExit();
                    break;

                case CompletedOrCanceled.Canceled:
                    await _authProblemMsg.Init(
                        _loginForm.ErrorMessageOrNull);

                    renderer.AddPopup(_authProblemMsg);
                    break;

                default: throw new Exception("unsupported outcome");
                }
            };
            _runLogout.Ended += (x, outcome) => {
                switch (outcome)
                {
                case RemoteActionsCallerForm.Outcome.Canceled:
                case RemoteActionsCallerForm.Outcome.Interrupted:
                    renderer.Remove(x);
                    break;

                case RemoteActionsCallerForm.Outcome.Succeeded:
                    renderer.Remove(x);
                    renderer.Remove(_mainMenuForm);
                    renderer.AddPopup(_loginForm);
                    break;

                default: throw new Exception("unsupported outcome");
                }
            };

            _authProblemMsg.Ended += (x, unit) => renderer.Remove(x);
        }
コード例 #5
0
ファイル: MainMenuFlow.cs プロジェクト: todo-it/philadelphia
 public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
 {
     renderer.ReplaceMaster(_mainMenuForm);
     _baseRenderer = renderer;
 }