public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { renderer.AddPopup(_input); _input.Ended += async(x, outcome) => { renderer.Remove(x); switch (outcome) { case IntroduceItemForm.Outcome.Saved: await _msg.Init($@" SomeNumber: {x.CreatedItem.SomeNumber} SomeText: {x.CreatedItem.SomeText} SomeBool: {x.CreatedItem.SomeBool} SomeTrait: enum={x.CreatedItem.SomeTrait.ToString()} int={x.CreatedItem.SomeTrait}", "This would be saved..."); renderer.AddPopup(_msg); break; case IntroduceItemForm.Outcome.Canceled: break; default: throw new Exception("unsupported outcome"); } }; _msg.Ended += (x, _) => { renderer.Remove(x); atExit(); }; }
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 Run(IFormRenderer <HTMLElement> renderer, Action atExit) { var input = new AllFieldsFilledDataEntryForm(); var tryAgain = new ConfirmMessageForm( "Try again?", "Input done", TextType.TreatAsText, ConfirmLabels.YesNo); input.Ended.Add(x => { renderer.Remove(input); renderer.AddPopup(tryAgain); }); tryAgain.Ended += (x, outcome) => { switch (outcome) { case CompletedOrCanceled.Completed: renderer.Remove(x); renderer.AddPopup(input); break; case CompletedOrCanceled.Canceled: renderer.Remove(x); atExit(); break; default: throw new Exception("unsupported outcome"); } }; renderer.AddPopup(input); }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { renderer.AddPopup(_choose); _choose.Ended += async(x, outcome) => { switch (outcome) { case CompletedOrCanceled.Canceled: renderer.Remove(x); atExit(); break; case CompletedOrCanceled.Completed: renderer.Remove(x); if (_choose.ChosenValue == SupportedLang.EN) { await InitWelcomeDialog(); renderer.AddPopup(_welcomeDialog); //go directly to dialog } else { renderer.AddPopup(_downloadTranslation); } break; default: throw new Exception("unsupported outcome"); } }; _downloadTranslation.Ended += async(x, outcome) => { switch (outcome) { case RemoteActionsCallerForm.Outcome.Canceled: case RemoteActionsCallerForm.Outcome.Interrupted: renderer.Remove(x); break; case RemoteActionsCallerForm.Outcome.Succeeded: renderer.Remove(x); await InitWelcomeDialog(); renderer.AddPopup(_welcomeDialog); break; default: throw new Exception("unsupported outcome"); } }; _welcomeDialog.Ended += (x, unit) => renderer.Remove(x); }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { _askForName.Ended += async(x, outcome) => { renderer.Remove(x); switch (outcome) { case CompletedOrCanceled.Completed: renderer.AddPopup(_getAnswer); break; case CompletedOrCanceled.Canceled: await _sayHello.Init("You didn't provide name thus server won't be called"); renderer.AddPopup(_sayHello); break; } }; _getAnswer.Ended += async(x, outcome) => { switch (outcome) { case RemoteActionsCallerForm.Outcome.Succeeded: break; //message is already prepared case RemoteActionsCallerForm.Outcome.Canceled: await _sayHello.Init("Looks like request was canceled"); break; case RemoteActionsCallerForm.Outcome.Interrupted: await _sayHello.Init("Looks like request failed"); break; } renderer.Remove(x); renderer.AddPopup(_sayHello); }; _sayHello.Ended += (x, unit) => { renderer.Remove(x); renderer.AddPopup(_askForName); }; renderer.AddPopup(_askForName); }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { renderer.AddPopup(_simplest); _simplest.Ended += (x, _) => { renderer.Remove(x); atExit(); }; }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { renderer.AddPopup(_fetchFiles); _fetchFiles.Ended += (x, outcome) => { switch (outcome) { case RemoteActionsCallerForm.Outcome.Succeeded: renderer.Remove(x); renderer.AddPopup(_params); break; case RemoteActionsCallerForm.Outcome.Canceled: case RemoteActionsCallerForm.Outcome.Interrupted: renderer.Remove(x); atExit(); break; default: throw new Exception("unsupported outcome"); } }; _params.Ended += async(x, outcome) => { switch (outcome) { case CompletedOrCanceled.Canceled: renderer.Remove(x); atExit(); break; case CompletedOrCanceled.Completed: await _demo.InitFiles(_files); renderer.Remove(x); renderer.AddPopup(_demo); break; default: throw new Exception("unsupported outcome"); } }; _demo.Ended += (x, _) => { renderer.Remove(x); atExit(); }; }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { renderer.AddPopup(_msg); _msg.Ended += (x, unit) => { renderer.Remove(x); atExit(); }; }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { renderer.AddPopup(_dataEntry); _dataEntry.Ended += async(x, outcome) => { Logger.Debug(GetType(), "_dataEntry ended with outcome {0}", outcome); renderer.Remove(x); switch (outcome) { case SomeChoicesForm.Outcome.Canceled: await _msg.Init("You've canceled form"); break; case SomeChoicesForm.Outcome.FirstChoice: await _msg.Init("You've picked first choice"); break; case SomeChoicesForm.Outcome.SecondChoice: await _msg.Init("You've picked second choice"); break; default: throw new Exception("unsupported outcome"); } renderer.AddPopup(_msg); }; _msg.Ended += (x, unit) => { Logger.Debug(GetType(), "_msg ended with outcome {0}", unit); renderer.Remove(x); atExit(); }; }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { if (_skipWelcome) { atExit(); return; } renderer.AddPopup(_introduction); //what to do when _introduction form wants to quit? _introduction.Ended += (x, unit) => { renderer.Remove(x); //user wanted to quit so we allow it atExit(); //as this is exit step from this simplistic IFlow }; }
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 MainMenuFlow(ISomeService someService, ITranslationsService translationsService, IHttpRequester httpRequester) { IFormRenderer <HTMLElement> CreateRenderer() => _baseRenderer.CreateRendererWithBase( new ElementWrapperFormCanvas( Toolkit.BaseFormCanvasTitleStrategy, _mainMenuFormView.BodyPanel.Widget, Toolkit.DefaultExitButtonBuilder, Toolkit.DefaultLayoutMode)); _aboutMsg = new InformationalMessageForm( new InformationalMessageFormView(TextType.TreatAsHtml), "<b>Philadelphia Toolkit Demo</b><br>by TODO IT spółka z o.o.", "About program"); _aboutMsg.Ended += (x, _) => _lastRenderer.Remove(x); _licensesInfoMsg = new InformationalMessageForm( new InformationalMessageFormView(TextType.TreatAsHtml), OpenSourceLicensesText.OpenSourceLicensesHtml, I18n.Translate("Used open source licensed programs and libraries")); _licensesInfoMsg.Ended += (x, _) => _lastRenderer.Remove(x); var menuItems = new List <MenuItemUserModel> { CreateSubTree("Features", CreateLocalLeaf( "Server-sent events", () => new SseDemoFlow(someService).Run(CreateRenderer())), CreateLocalLeaf( "Forms navigation", () => new NavigationProgram().Run(CreateRenderer())), CreateLocalLeaf( "Internationalization", () => new InternationalizationFlow(translationsService).Run(CreateRenderer()))), CreateSubTree("Data validation", CreateLocalLeaf( "Simplest", () => new ValidationProgram().Run(CreateRenderer())), CreateLocalLeaf( "Tabbed view indicator", () => new TabbedViewValidationFlow().Run(CreateRenderer())), CreateLocalLeaf( "File uploads", () => new UploaderDemoFlow(someService, httpRequester).Run(CreateRenderer()))), CreateSubTree("Widgets", CreateLocalLeaf( "Databound datagrid", () => new DataboundDatagridProgram(someService).Run(CreateRenderer())), CreateLocalLeaf( "Datetime pickers", () => new DateTimeDemoProgram().Run(CreateRenderer())), CreateLocalLeaf( "Dropdowns", () => new DropdownsProgram().Run(CreateRenderer())), CreateLocalLeaf( "Master details", () => new MasterDetailsProgram(someService).Run(CreateRenderer())), CreateLocalLeaf( "Flexible layout", () => new FlexibleLayoutFlow().Run(CreateRenderer()))), CreateSubTree("Help", CreateLocalLeaf( "About program", () => { _lastRenderer = CreateRenderer(); _lastRenderer.AddPopup(_aboutMsg); }), CreateLocalLeaf( "Open source licenses", () => { _lastRenderer = CreateRenderer(); _lastRenderer.AddPopup(_licensesInfoMsg); }) ) }; //TODO dropdown with not-legal-anymore/scratched value //TODO add I18n demo _mainMenuFormView = new HorizontalLinksMenuFormView(); _mainMenuForm = new MenuForm(_mainMenuFormView, menuItems); }
public void Remove(IBareForm <HTMLElement> frm) { _adapted.Remove(frm); _callback(this, null, frm); }
public void Run(IFormRenderer <HTMLElement> renderer, Action atExit) { renderer.AddPopup(_layoutChoice); _layoutChoice.Ended += (x, outcome) => { renderer.Remove(x); switch (outcome) { case CompletedOrCanceled.Canceled: atExit(); break; case CompletedOrCanceled.Completed: switch (x.ChosenValue) { case LayoutChoice.Horizontal: { var panel = TwoPanelsWithResizerBuilder.BuildHorizontal( Hideability.None, false, renderer, SpacingPolicy.FirstWins); panel.First.ReplaceMaster(_headers); panel.Second.ReplaceMaster(_details); renderer.ReplaceMasterWithAdapter(panel.Panel); break; } case LayoutChoice.Vertical: { var panel = TwoPanelsWithResizerBuilder.BuildVertical( Hideability.None, false, renderer, SpacingPolicy.Proportional); panel.First.ReplaceMaster(_headers); panel.Second.ReplaceMaster(_details); renderer.ReplaceMasterWithAdapter(panel.Panel); break; } } renderer.AddPopup(_fetchData); break; default: throw new Exception("unsupported EnumChoiceFormOutcome"); } }; _fetchData.Ended += (x, outcome) => { switch (outcome) { case RemoteActionsCallerForm.Outcome.Succeeded: renderer.Remove(x); break; case RemoteActionsCallerForm.Outcome.Canceled: case RemoteActionsCallerForm.Outcome.Interrupted: renderer.Remove(x); renderer.ClearMaster(); break; default: throw new Exception("unsupported outcome"); } }; _headers.Ended += (_, outcome) => { switch (outcome) { case HeadersForm.Outcome.ChoosenHeader: var headerId = _headers.ChoosenHeader.Id; _details.Details.Items.Replace(_detailItems.Where(x => headerId == x.ParentId)); break; case HeadersForm.Outcome.Canceled: renderer.ClearMaster(); break; default: throw new Exception("unsupported outcome"); } }; }