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) }
public void ReplaceMaster(IBareForm <HTMLElement> newForm) { var maybeMaster = _adapted.Master; _adapted.ReplaceMaster(newForm); _callback(this, newForm, maybeMaster); }
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); }; }
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); }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { renderer.ReplaceMaster(_mainMenuForm); _baseRenderer = renderer; }