Пример #1
0
        private static void OnFormRendererEvent(
            IFormRenderer <HTMLElement> sender, ToolbarSettings toolbarSettings)
        {
            var maybeTopMostPopup = sender.TopMostPopup;

            Logger.Debug(typeof(FormRendererExtensions), "OnFormRendererEvent master={0} popup={1}", sender.Master, maybeTopMostPopup);

            if (maybeTopMostPopup is IAugmentsToolbar)
            {
                ((IAugmentsToolbar)sender.TopMostPopup).OnAugmentToolbar(toolbarSettings);
            }
            else if (sender.Master is IAugmentsToolbar)
            {
                ((IAugmentsToolbar)sender.Master).OnAugmentToolbar(toolbarSettings);
            }

            //TODO optimization opportunity: store "former settings" and compare it against new ones to execute necessary calls only
            IawAppApi.SetToolbarColors(toolbarSettings.AppBarBackgroundColor, toolbarSettings.AppBarForegroundColor);
            IawAppApi.SetToolbarSearchState(toolbarSettings.SearchCallback);
            IawAppApi.SetToolbarItems(activated => {
                Logger.Debug(typeof(FormRendererExtensions), "OnMenuItemActivated raw menuItem {0}", activated);
                var maybeMenuItem = toolbarSettings.MenuItems.FirstOrDefault(x => x.Item1.webMenuItemId == activated.webMenuItemId);
                Logger.Debug(typeof(FormRendererExtensions), "OnMenuItemActivated found?={0}", maybeMenuItem != null);
                maybeMenuItem?.Item2();
            },
                                      toolbarSettings.MenuItems.Select(x => x.Item1));
            IawAppApi.SetToolbarBackButtonState(toolbarSettings.BackActionVisible);
        }
Пример #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)
        }
Пример #3
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();
            };
        }
Пример #4
0
 public static BuiltPanels <T> BuiltHideable(T panel,
                                             IFormRenderer <HTMLElement> first, IFormRenderer <HTMLElement> second,
                                             ElementWrapperFormCanvas firstCanvas, ElementWrapperFormCanvas secondCanvas,
                                             Action hideAction, Action showAction)
 {
     return(new BuiltPanels <T>(panel, first, second, firstCanvas, secondCanvas, hideAction, showAction));
 }
Пример #5
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);
        }
Пример #6
0
        public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
        {
            var panel = TwoPanelsWithResizerBuilder.BuildHorizontal(
                Hideability.First, true, renderer, SpacingPolicy.FirstWins);

            _onExit = () => {
                renderer.ClearMaster();
                atExit();
            };

            panel.FirstCanvas.LayoutMode = LayoutModeType.TitleExtra_Actions_Body;
            panel.First.ReplaceMaster(_menu);
            panel.SecondCanvas.LayoutMode = LayoutModeType.ExtraTitle_Body_Actions;
            panel.Second.ReplaceMaster(_content);
            renderer.ReplaceMasterWithAdapter(panel.Panel);

            _content.Ended += (x, outcome) => {
                switch (outcome)
                {
                case FlexibleLayoutContentForm.Outcome.LeftPanelLayoutChanged:
                    panel.FirstCanvas.LayoutMode = x.CurrentLayoutMode;
                    break;

                default: throw new Exception("unsupported outcome");
                }
            };
        }
Пример #7
0
 public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
 {
     renderer.AddPopup(_simplest);
     _simplest.Ended += (x, _) => {
         renderer.Remove(x);
         atExit();
     };
 }
Пример #8
0
        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(_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);
        }
Пример #10
0
        private static BuiltPanels <T> BuildNonhideable <T>(T panels, IFormRenderer <HTMLElement> renderer)
            where T : TwoPanelsWithResizer
        {
            var leftCanvas = new ElementWrapperFormCanvas(
                Toolkit.BaseFormCanvasTitleStrategy, panels.FirstPanel, Toolkit.DefaultExitButtonBuilder, Toolkit.DefaultLayoutMode);
            var leftRenderer = renderer.CreateRendererWithBase(leftCanvas);

            var rightCanvas = new ElementWrapperFormCanvas(
                Toolkit.BaseFormCanvasTitleStrategy, panels.SecondPanel, Toolkit.DefaultExitButtonBuilder, Toolkit.DefaultLayoutMode);
            var rightRenderer = renderer.CreateRendererWithBase(rightCanvas);

            return(BuiltPanels <T> .BuiltNonHideable(panels, leftRenderer, rightRenderer, leftCanvas, rightCanvas));
        }
Пример #11
0
        private BuiltPanels(T panel,
                            IFormRenderer <HTMLElement> first, IFormRenderer <HTMLElement> second,
                            ElementWrapperFormCanvas firstCanvas, ElementWrapperFormCanvas secondCanvas,
                            Action hideAction, Action showAction)
        {
            Panel        = panel;
            First        = first;
            Second       = second;
            FirstCanvas  = firstCanvas;
            SecondCanvas = secondCanvas;

            HideAction = hideAction;
            ShowAction = showAction;
        }
Пример #12
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
            };
        }
Пример #13
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);
        }
Пример #14
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();
            };
        }
Пример #15
0
        public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
        {
            var panels = TwoPanelsWithResizerBuilder.BuildHorizontal(
                Hideability.None, false, renderer, Tuple.Create((int?)522, (int?)null));

            panels.First.ReplaceMaster(_sender);
            panels.FirstCanvas.LayoutMode = LayoutModeType.TitleExtra_Actions_Body;

            panels.Second.ReplaceMaster(_listener);
            panels.SecondCanvas.LayoutMode = LayoutModeType.TitleExtra_Actions_Body;

            renderer.ReplaceMasterWithAdapter(panels.Panel);

            _sender.Ended += (x, outcome) => {
                renderer.ClearMaster();
                atExit();
            };
        }
Пример #16
0
        private static BuiltPanels <T> Builder <T>(
            T prototype, Hideability hideable, bool showable,
            IFormRenderer <HTMLElement> renderer) where T : TwoPanelsWithResizer
        {
            switch (hideable)
            {
            case Hideability.None:
                return(BuildNonhideable(prototype, renderer));

            case Hideability.First:
            case Hideability.Second:
                return(BuildHideable(
                           prototype,
                           hideable == Hideability.First,
                           showable,
                           renderer));

            default: throw new Exception("unsupported Hideability");
            }
        }
Пример #17
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();
            };
        }
Пример #18
0
 public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
 {
     //here would be inter-form navigational logic...
 }
Пример #19
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);
        }
Пример #21
0
        /// <param name="whichOne">true = first, false=second</param>
        private static BuiltPanels <T> BuildHideable <T>(
            T panels, bool whichOne, bool showable, IFormRenderer <HTMLElement> renderer)
            where T : TwoPanelsWithResizer
        {
            var fstIsHideable = whichOne;
            var toBeHidden    = fstIsHideable ? panels.FirstPanel : panels.SecondPanel;

            var hideAct = new HTMLDivElement {
                TextContent = FontAwesomeSolid.IconTimes
            }
            .With(x => x.AddClasses(
                      Magics.CssClassHideAction, Magics.CssClassEnabled, IconFontType.FontAwesomeSolid.ToCssClassName()));
            var showAct = showable ? new HTMLDivElement {
                TextContent = FontAwesomeSolid.IconBars
            }
            .With(x => x.AddClasses(
                      Magics.CssClassShowAction, IconFontType.FontAwesomeSolid.ToCssClassName())) : null;

            panels.FirstPanel.AddClasses(Magics.CssClassPositionRelative);
            var leftCanvas = new ElementWrapperFormCanvas(
                Toolkit.BaseFormCanvasTitleStrategy,
                panels.FirstPanel,
                Toolkit.DefaultExitButtonBuilder,
                Toolkit.DefaultLayoutMode,
                fstIsHideable ? hideAct : showAct);

            var leftRenderer = renderer.CreateRendererWithBase(leftCanvas);

            panels.SecondPanel.AddClasses(Magics.CssClassPositionRelative);
            var rightCanvas = new ElementWrapperFormCanvas(
                Toolkit.BaseFormCanvasTitleStrategy,
                panels.SecondPanel,
                Toolkit.DefaultExitButtonBuilder,
                Toolkit.DefaultLayoutMode,
                fstIsHideable ? showAct : hideAct);

            var rightRenderer = renderer.CreateRendererWithBase(rightCanvas);

            var lastSize = new MutableHolder <Tuple <double, double> >();
            var shown    = new MutableHolder <bool>(true);

            void HideAction()
            {
                if (!shown.Value)
                {
                    Logger.Debug(typeof(TwoPanelsWithResizerBuilder), "already hidden");
                    return;
                }

                hideAct.RemoveClasses(Magics.CssClassEnabled);
                if (showable)
                {
                    showAct.AddClasses(Magics.CssClassEnabled);
                }

                lastSize.Value = panels.Sizes;
                toBeHidden.AddClasses(Magics.CssClassNotRendered);
                panels.Splitter.AddClasses(Magics.CssClassNotRendered);
                shown.Value = false;
                panels.ForceSizeCalculation(VisibilityAction.Hiding);
            }

            void ShowAction()
            {
                if (shown.Value)
                {
                    Logger.Debug(typeof(TwoPanelsWithResizerBuilder), "already shown");
                    return;
                }

                if (showable)
                {
                    showAct.RemoveClasses(Magics.CssClassEnabled);
                }

                hideAct.AddClasses(Magics.CssClassEnabled);
                toBeHidden.RemoveClasses(Magics.CssClassNotRendered);
                panels.Splitter.RemoveClasses(Magics.CssClassNotRendered);
                shown.Value = true;
                panels.ForceSizeCalculation(VisibilityAction.Showing, lastSize.Value);
            }

            hideAct.OnClick += ev => HideAction();
            if (showable)
            {
                showAct.OnClick += ev => ShowAction();
            }

            return(BuiltPanels <T> .BuiltHideable(panels, leftRenderer, rightRenderer,
                                                  leftCanvas, rightCanvas, HideAction, ShowAction));
        }
Пример #22
0
 public FormShortcodeRenderer(ISession session, IFormRenderer formRenderer)
 {
     _session      = session;
     _formRenderer = formRenderer;
 }
Пример #23
0
 public ObservingRenderer(IFormRenderer <HTMLElement> adapted, OnFormRendererEvent callback)
 {
     _adapted  = adapted;
     _callback = callback;
 }
Пример #24
0
 public static IFormRenderer <HTMLElement> Observe(this IFormRenderer <HTMLElement> self, OnFormRendererEvent callback) =>
 new ObservingRenderer(self, callback);
Пример #25
0
 public static IFormRenderer <HTMLElement> Observe(this IFormRenderer <HTMLElement> self, Func <IFormRenderer <HTMLElement>, ToolbarSettings> callback) =>
 new ObservingRenderer(self, (sender, _, __) => OnFormRendererEvent(sender, callback(sender)));
Пример #26
0
 public void Run(IFormRenderer <HTMLElement> renderer, Action atExit)
 {
     renderer.ReplaceMaster(_mainMenuForm);
     _baseRenderer = renderer;
 }
Пример #27
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);
        }
Пример #28
0
 public static void Run <T>(this IFlow <T> flow, IFormRenderer <T> renderer) =>
 flow.Run(renderer, LambdaUtil.DoNothingAction);
Пример #29
0
 public FormShortcodeParser(IDocumentService documentService, IFormRenderer formRenderer)
 {
     _documentService = documentService;
     _formRenderer    = formRenderer;
 }
Пример #30
0
 public static BuiltPanels <T> BuiltNonHideable(T panel,
                                                IFormRenderer <HTMLElement> first, IFormRenderer <HTMLElement> second,
                                                ElementWrapperFormCanvas firstCanvas, ElementWrapperFormCanvas secondCanvas)
 {
     return(new BuiltPanels <T>(panel, first, second, firstCanvas, secondCanvas, null, null));
 }
Пример #31
0
 public FormShortcodeParser(IDocumentService documentService, IFormRenderer formRenderer)
 {
     _documentService = documentService;
     _formRenderer = formRenderer;
 }