Ejemplo n.º 1
0
        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();
            };
        }
Ejemplo n.º 2
0
        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)
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
 {
     renderer.AddPopup(_simplest);
     _simplest.Ended += (x, _) => {
         renderer.Remove(x);
         atExit();
     };
 }
Ejemplo n.º 7
0
        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();
            };
        }
Ejemplo n.º 8
0
        public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
        {
            renderer.AddPopup(_msg);

            _msg.Ended += (x, unit) => {
                renderer.Remove(x);
                atExit();
            };
        }
Ejemplo n.º 9
0
        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();
            };
        }
Ejemplo n.º 10
0
        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
            };
        }
Ejemplo n.º 11
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);
            };
        }
        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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
 public void Remove(IBareForm <HTMLElement> frm)
 {
     _adapted.Remove(frm);
     _callback(this, null, frm);
 }
Ejemplo n.º 15
0
        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");
                }
            };
        }