This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch v3 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit aa7d91921272546775d102fa1fc09f504158ed2b Merge: 3cfecf841c b6ef625eb0 Author: Andi Huber <[email protected]> AuthorDate: Sat Oct 26 18:58:47 2024 +0200 merge master into v3 .../core/config/CausewayConfiguration.java | 8 + .../viewers/common/wkt/InteractionTestWkt.java | 4 +- .../commons/model/src/main/java/module-info.java | 1 - .../commons/model/action/HasManagedAction.java | 11 + .../model/action/decorator/UiActionDecorator.java | 46 ---- .../commons/model/decorators/ActionDecorators.java | 146 ++++++++++++ .../commons/model/decorators/ConfirmDecorator.java | 39 ++-- .../model/decorators/DisablingDecorator.java | 11 +- .../model/decorators/FormLabelDecorator.java | 26 +-- .../model/decorators/PrototypingDecorator.java | 12 +- .../commons/model/decorators/TooltipDecorator.java | 8 +- .../viewer/wicket/model/links/LinkAndLabel.java | 8 +- .../actionresponse/ActionResultResponseType.java | 19 +- .../wicket/ui/actionresponse/_DownloadHandler.java | 7 +- .../wicket/ui/actionresponse/_RedirectHandler.java | 5 +- .../wicket/ui/app/logout/LogoutHandlerWkt.java | 3 +- .../entityactions/AdditionalLinksPanel.java | 17 +- .../entityactions/LinkAndLabelFactory.java | 7 +- .../actionmenu/serviceactions/CssMenuItem.java | 44 ++-- .../actionmenu/serviceactions/MenuActionPanel.java | 13 +- .../serviceactions/ServiceActionUtil.java | 44 ++-- .../serviceactions/ServiceActionsPanel.java | 8 +- .../serviceactions/ServiceActionsPanelFactory.java | 10 +- .../serviceactions/TertiaryMenuPanelFactory.java | 10 +- .../actionprompt/ActionPromptHeaderPanel.java | 4 +- .../components/actions/ActionParametersForm.java | 32 ++- .../actions/ActionParametersFormPanel.java | 4 +- .../viewer/wicket/ui/components/actions/_Xray.java | 7 +- .../bookmarkedpages/BookmarkedPagesPanel.java | 8 +- .../ui/components/collection/CollectionPanel.java | 12 +- .../CollectionPresentationSelectorPanel.java | 19 +- .../CollectionContentsAsAjaxTablePanel.java | 22 +- .../CollectionContentsSortableDataProvider.java | 3 +- .../ajaxtable/columns/GenericColumnAbstract.java | 4 +- .../ajaxtable/columns/PluralColumn.java | 19 +- .../ajaxtable/columns/SingularColumn.java | 12 +- .../ajaxtable/columns/TitleColumn.java | 16 +- .../ajaxtable/columns/ToggleboxColumn.java | 10 +- .../export/CollectionContentsAsExportFactory.java | 3 +- .../icons/CollectionContentsAsIconsPanel.java | 6 +- .../CollectionContentsAsIconsPanelFactory.java | 4 +- .../summary/CollectionContentsAsSummary.java | 8 +- .../CollectionContentsAsSummaryFactory.java | 4 +- .../entity/EntityComponentFactoryAbstract.java | 6 +- .../entity/collection/EntityCollectionPanel.java | 11 +- .../collection/EntityCollectionPanelFactory.java | 3 +- .../components/entity/fieldset/PropertyGroup.java | 18 +- .../entity/header/EntityHeaderPanel.java | 6 +- .../entity/icontitle/EntityIconAndTitlePanel.java | 13 +- .../icontitle/EntityIconAndTitlePanelFactory.java | 4 +- .../wicket/ui/components/footer/FooterPanel.java | 20 +- .../wicket/ui/components/header/HeaderPanel.java | 14 +- .../ui/components/layout/bs/BSGridPanel.java | 10 +- .../components/layout/bs/BSGridPanelFactory.java | 10 +- .../wicket/ui/components/layout/bs/col/Col.java | 10 +- .../components/layout/bs/tabs/TabGroupPanel.java | 6 +- .../ui/components/property/PropertyEditForm.java | 8 +- .../components/property/PropertyEditFormPanel.java | 4 +- .../PropertyEditPromptHeaderPanel.java | 4 +- .../components/scalars/ScalarFragmentFactory.java | 15 +- .../scalars/ScalarModelChangeDispatcher.java | 5 +- .../ui/components/scalars/ScalarPanelAbstract.java | 44 ++-- .../components/scalars/ScalarPanelAbstract2.java | 34 ++- .../scalars/ScalarPanelFormFieldAbstract.java | 14 +- .../scalars/ScalarPanelSelectAbstract.java | 9 +- .../scalars/ScalarPanelTextFieldAbstract.java | 4 +- .../ScalarPanelTextFieldWithTemporalPicker.java | 6 +- .../viewer/wicket/ui/components/scalars/_Util.java | 7 +- .../viewer/wicket/ui/components/scalars/_Xray.java | 8 +- .../blobclob/CausewayBlobOrClobPanelAbstract.java | 16 +- .../ui/components/scalars/bool/BooleanPanel.java | 2 +- .../choices/ChoicesSelect2PanelFactory.java | 6 +- .../scalars/choices/ObjectChoicesSelect2Panel.java | 22 +- .../scalars/choices/ValueChoicesSelect2Panel.java | 6 +- .../datepicker/TextFieldWithDateTimePicker.java | 14 +- .../scalars/image/JavaAwtImagePanel.java | 10 +- .../scalars/image/JavaAwtImagePanelFactory.java | 4 +- .../ui/components/scalars/image/_WktImageUtil.java | 11 +- .../components/scalars/markup/MarkupComponent.java | 9 +- .../scalars/markup/MarkupComponent_reloadJs.java | 6 +- .../scalars/markup/MarkupPanelFactories.java | 8 +- .../scalars/markup/StandaloneMarkupPanel.java | 4 +- .../StandaloneCollectionPanel.java | 8 +- .../StandaloneCollectionPanelFactory.java | 4 +- .../ui/components/table/CausewayAjaxDataTable.java | 4 +- .../tree/CausewayToWicketTreeAdapter.java | 12 +- .../ui/components/tree/ParentedTreePanel.java | 8 +- .../ui/components/tree/TreePanelFactories.java | 4 +- .../ui/components/unknown/UnknownModelPanel.java | 10 +- .../ui/components/value/StandaloneValuePanel.java | 4 +- .../widgets/breadcrumbs/BreadcrumbPanel.java | 4 +- .../widgets/checkbox/ContainedToggleboxPanel.java | 6 +- .../entitysimplelink/EntityLinkSimplePanel.java | 8 +- .../widgets/linkandlabel/ActionLink.java | 29 ++- .../ui/components/widgets/select2/Select2.java | 5 +- .../widgets/select2/Select2MultiChoiceExt.java | 5 +- .../widgets/select2/Select2OnSelect.java | 19 +- .../select2/providers/ChoiceProviderAbstract.java | 14 +- .../select2/providers/ChoiceProviderDefault.java | 14 +- .../CausewayWicketThemeSupportDefault.java | 11 +- .../widgets/themepicker/ThemeChooser.java | 4 +- .../themepicker/ThemeProviderComposite.java | 3 +- .../viewer/wicket/ui/errors/ExceptionModel.java | 6 +- .../wicket/ui/errors/ExceptionStackTracePanel.java | 6 +- .../viewer/wicket/ui/errors/JGrowlBehaviour.java | 6 +- .../viewer/wicket/ui/errors/JGrowlUtil.java | 5 +- .../viewer/wicket/ui/pages/PageAbstract.java | 15 +- .../ui/pages/accmngt/AccountConfirmationMap.java | 10 +- .../accmngt/AccountManagementPageAbstract.java | 14 +- .../ui/pages/accmngt/EmailAvailableValidator.java | 6 +- .../accmngt/SuccessFeedbackCookieManager.java | 7 +- .../pages/accmngt/UsernameAvailableValidator.java | 6 +- .../password_reset/PasswordResetEmailPanel.java | 12 +- .../accmngt/password_reset/PasswordResetPage.java | 6 +- .../accmngt/password_reset/PasswordResetPanel.java | 6 +- .../ui/pages/accmngt/register/RegisterPanel.java | 6 +- .../viewer/wicket/ui/pages/entity/EntityPage.java | 8 +- .../viewer/wicket/ui/pages/error/ErrorPage.java | 6 +- .../viewer/wicket/ui/pages/home/HomePage.java | 12 +- .../wicket/ui/pages/login/CausewaySignInPanel.java | 12 +- .../wicket/ui/pages/login/SignInPanelAbstract.java | 15 +- .../wicket/ui/pages/login/WicketSignInPage.java | 4 +- .../viewer/wicket/ui/pages/value/ValuePage.java | 4 +- .../wicket/ui/panels/FormExecutorDefault.java | 9 +- .../wicket/ui/panels/PromptFormAbstract.java | 8 +- .../viewer/wicket/ui/util/BootstrapConstants.java | 3 +- .../wicket/ui/util/LicensedTextTemplate.java | 4 +- .../apache/causeway/viewer/wicket/ui/util/Wkt.java | 17 +- .../viewer/wicket/ui/util/WktDecorators.java | 245 ++++++++++++--------- .../causeway/viewer/wicket/ui/util/WktLinks.java | 78 ++----- .../viewer/wicket/ui/util/WktTooltips.java | 15 +- .../causeway/viewer/wicket/ui/util/XrayWkt.java | 3 +- 132 files changed, 857 insertions(+), 988 deletions(-) diff --cc viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelFactory.java index ea541408da,44c2bee0f8..e0ef613030 --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelFactory.java +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelFactory.java @@@ -44,13 -42,12 +43,13 @@@ import lombok.NonNull public interface LinkAndLabelFactory extends Function<ObjectAction, LinkAndLabel> { - public static LinkAndLabelFactory forMenu( - final UiObjectWkt serviceModel) { - return action -> LinkAndLabel.of( + public static LinkAndLabel linkAndLabelForMenu( + @NonNull final MenuAction menuAction) { - val serviceModel = UiObjectWkt.ofBookmark(menuAction.serviceBookmark()); ++ var serviceModel = UiObjectWkt.ofBookmark(menuAction.serviceBookmark()); + return LinkAndLabel.of( ActionModelImpl.forEntity( serviceModel, - action.getFeatureIdentifier(), + menuAction.actionId(), Where.ANYWHERE, null, null, null), new MenuLinkFactory()); diff --cc viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java index 59055cd67b,d4421d36af..560d128b5f --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java @@@ -25,11 -25,15 +25,12 @@@ import org.apache.wicket.markup.html.li import org.apache.wicket.markup.html.panel.Fragment; import org.apache.causeway.commons.collections.Can; --import org.apache.causeway.core.metamodel.context.MetaModelContext; -import org.apache.causeway.core.metamodel.interactions.managed.ManagedAction; -import org.apache.causeway.viewer.commons.applib.services.menu.MenuItemDto; -import org.apache.causeway.viewer.commons.applib.services.menu.MenuUiModel; import org.apache.causeway.viewer.commons.applib.services.menu.MenuVisitor; +import org.apache.causeway.viewer.commons.applib.services.menu.model.MenuAction; +import org.apache.causeway.viewer.commons.applib.services.menu.model.MenuDropdown; +import org.apache.causeway.viewer.commons.applib.services.menu.model.NavbarSection; + import org.apache.causeway.viewer.commons.model.decorators.ActionDecorators.ActionDecorationModel; + import org.apache.causeway.viewer.commons.model.decorators.ActionDecorators.ActionStyle; -import org.apache.causeway.viewer.wicket.model.links.LinkAndLabel; -import org.apache.causeway.viewer.wicket.model.models.UiObjectWkt; import org.apache.causeway.viewer.wicket.ui.components.actionmenu.entityactions.LinkAndLabelFactory; import org.apache.causeway.viewer.wicket.ui.util.Wkt; import org.apache.causeway.viewer.wicket.ui.util.WktDecorators; @@@ -48,20 -49,17 +46,17 @@@ class ServiceActionUtil final ListItem<CssMenuItem> listItem, final MarkupContainer parent) { - val actionUiModel = menuItem.getLinkAndLabel(); - val menuItemActionLink = actionUiModel.getUiComponent(); - val menuItemLabel = Wkt.labelAdd(menuItemActionLink, "menuLinkLabel", menuItem.getName()); + var linkAndLabel = menuItem.getLinkAndLabel(); + var menuItemActionLink = linkAndLabel.getUiComponent(); + var menuItemLabel = Wkt.labelAdd(menuItemActionLink, "menuLinkLabel", menuItem.getName()); - WktDecorators.getActionLink().decorateMenuItem( - listItem, - actionUiModel, - commonContext.getTranslationService()); + WktDecorators - .decorateMenuAction(menuItemActionLink, listItem, menuItemLabel, ++ .decorateMenuAction(menuItemActionLink, listItem, menuItemLabel, + ActionDecorationModel.builder(linkAndLabel) + .actionStyle(ActionStyle.MENU_ITEM) + .build()); - val faLayers = actionUiModel.lookupFontAwesomeLayers(true); - WktDecorators.getIcon().decorate(menuItemLabel, faLayers); - WktDecorators.getMissingIcon().decorate(menuItemActionLink, faLayers); - - val leafItem = new Fragment("content", "leafItem", parent); + var leafItem = new Fragment("content", "leafItem", parent); leafItem.add(menuItemActionLink); listItem.add(leafItem); @@@ -108,32 -104,41 +102,32 @@@ } @Override - public void addSectionSpacer() { + public void onSectionSpacer() { - val menuSection = CssMenuItem.newSpacer(); + var menuSection = CssMenuItem.newSpacer(); currentTopLevelMenu.addSubMenuItem(menuSection); } @Override - public void addSubMenu(final MenuItemDto menuDto) { - var managedAction = menuDto.getManagedAction(); - - var menuItem = CssMenuItem.newMenuItemWithLink(menuDto.getName()); + public void onMenuAction(final MenuAction menuAction) { - val menuItem = CssMenuItem.newMenuItemWithLink(menuAction.name()); ++ var menuItem = CssMenuItem.newMenuItemWithLink(menuAction.name()); currentTopLevelMenu.addSubMenuItem(menuItem); - - menuItem.setLinkAndLabel(newActionLink(managedAction)); + menuItem.setLinkAndLabel(LinkAndLabelFactory.linkAndLabelForMenu(menuAction)); } @Override - public void addSectionLabel(final String named) { + public void onSectionLabel(final String named) { - val menuSectionLabel = CssMenuItem.newSectionLabel(named); + var menuSectionLabel = CssMenuItem.newSectionLabel(named); currentTopLevelMenu.addSubMenuItem(menuSectionLabel); } - - private LinkAndLabel newActionLink(final ManagedAction managedAction) { - var serviceModel = UiObjectWkt.ofAdapter(managedAction.getOwner()); - return LinkAndLabelFactory.forMenu(serviceModel) - .apply(managedAction.getAction()); - } } - void buildMenu( - final MetaModelContext commonContext, - final MenuUiModel menuUiModel, + public static void buildMenu( + final NavbarSection navBarSection, final Consumer<CssMenuItem> onNewMenuItem) { - menuUiModel.buildMenuItems(commonContext.getMetaModelContext(), - MenuBuilderWkt.of(onNewMenuItem)); + navBarSection.visitMenuItems( + MenuBuilderWkt.of( + onNewMenuItem)); } } diff --cc viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanelFactory.java index c42b6c172f,0deac34472..95ba364ff5 --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanelFactory.java +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanelFactory.java @@@ -48,8 -46,8 +46,8 @@@ public class ServiceActionsPanelFactor if(!(model instanceof ServiceActionsModel)) { return ApplicationAdvice.DOES_NOT_APPLY; } - val navBarSection = ((ServiceActionsModel) model).getObject(); - val menuBarSelect = navBarSection.menuBarSelect(); - var menuUiModel = ((ServiceActionsModel) model).getObject(); - var menuBarSelect = menuUiModel.getMenuBarSelect(); ++ var navBarSection = ((ServiceActionsModel) model).getObject(); ++ var menuBarSelect = navBarSection.menuBarSelect(); return appliesIf( menuBarSelect != DomainServiceLayout.MenuBar.TERTIARY && menuBarSelect != null); @@@ -57,10 -55,11 +55,10 @@@ @Override public Component createComponent(final String id, final IModel<?> model) { - val navBarSection = ((ServiceActionsModel) model).getObject(); - var menuUiModel = ((ServiceActionsModel) model).getObject(); ++ var navBarSection = ((ServiceActionsModel) model).getObject(); - val menuItems = _Lists.<CssMenuItem>newArrayList(); + var menuItems = _Lists.<CssMenuItem>newArrayList(); - ServiceActionUtil.buildMenu( - super.getMetaModelContext(), menuUiModel, menuItems::add); + ServiceActionUtil.buildMenu(navBarSection, menuItems::add); return new ServiceActionsPanel(id, menuItems); } diff --cc viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryMenuPanelFactory.java index cc47f75f8c,f0cfa16db7..b3106c6cad --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryMenuPanelFactory.java +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryMenuPanelFactory.java @@@ -47,8 -45,8 +45,8 @@@ public class TertiaryMenuPanelFactory e if(!(model instanceof ServiceActionsModel)) { return ApplicationAdvice.DOES_NOT_APPLY; } - val menuUiModel = ((ServiceActionsModel) model).getObject(); - val menuBarSelect = menuUiModel.menuBarSelect(); + var menuUiModel = ((ServiceActionsModel) model).getObject(); - var menuBarSelect = menuUiModel.getMenuBarSelect(); ++ var menuBarSelect = menuUiModel.menuBarSelect(); return appliesIf( menuBarSelect == DomainServiceLayout.MenuBar.TERTIARY || menuBarSelect == null); @@@ -56,10 -54,11 +54,10 @@@ @Override public Component createComponent(final String id, final IModel<?> model) { - val navBarSection = ((ServiceActionsModel) model).getObject(); - var menuUiModel = ((ServiceActionsModel) model).getObject(); ++ var navBarSection = ((ServiceActionsModel) model).getObject(); - val menuItems = _Lists.<CssMenuItem>newArrayList(); + var menuItems = _Lists.<CssMenuItem>newArrayList(); - ServiceActionUtil.buildMenu( - super.getMetaModelContext(), menuUiModel, menuItems::add); + ServiceActionUtil.buildMenu(navBarSection, menuItems::add); return new TertiaryActionsPanel(id, menuItems); } diff --cc viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/header/HeaderPanel.java index 0f96a3550c,89436ff509..881cb2e700 --- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/header/HeaderPanel.java +++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/header/HeaderPanel.java @@@ -68,10 -66,10 +66,10 @@@ extends PanelAbstract<String, Model<Str protected void onInitialize() { super.onInitialize(); - val headerUiModel = super.getHeaderModel(); + var headerUiModel = super.getHeaderModel(); - addApplicationName(headerUiModel.getBranding()); - addUserName(headerUiModel.getUserProfile()); + addApplicationName(headerUiModel.branding()); + addUserName(headerUiModel.userProfile()); addServiceActionMenuBars(headerUiModel); } @@@ -108,7 -106,6 +106,7 @@@ } protected void addServiceActionMenuBars(final HeaderUiModel headerUiModel) { - val navbar = headerUiModel.navbar(); ++ var navbar = headerUiModel.navbar(); if (getPage() instanceof ErrorPage) { WktComponents.permanentlyHide(this, ID_PRIMARY_MENU_BAR); WktComponents.permanentlyHide(this, ID_SECONDARY_MENU_BAR); @@@ -122,13 -119,13 +120,13 @@@ private void addMenuBar( final String id, - final MenuUiModel menuUiModel) { + final NavbarSection menuUiModel) { final MarkupContainer container = this; - val menuModel = new ServiceActionsModel(menuUiModel); - val menuBarComponent = getComponentFactoryRegistry() + var menuModel = new ServiceActionsModel(menuUiModel); + var menuBarComponent = getComponentFactoryRegistry() .createComponent(id, UiComponentType.SERVICE_ACTIONS, menuModel); - Wkt.cssAppend(menuBarComponent, menuUiModel.getCssClass()); + Wkt.cssAppend(menuBarComponent, menuUiModel.cssClass()); container.add(menuBarComponent); }
