You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/10/25 16:48:11 UTC
[isis] 02/04: ISIS-1752: deletes unused methods in
ServiceActionUtil (now within MenuBarsServiceDefault).
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 1360bc36c90f9c7368d0a261d26ce8498fe58f78
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Oct 25 17:31:20 2017 +0100
ISIS-1752: deletes unused methods in ServiceActionUtil (now within MenuBarsServiceDefault).
Also tested whether can support nested items (ans: sort-of, though CSS is broken). ... hence new HTML for tertiary.
---
.../serviceactions/ServiceActionUtil.java | 150 ++-------------------
.../serviceactions/TertiaryActionsPanel.html | 12 ++
2 files changed, 25 insertions(+), 137 deletions(-)
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index 19df562..ece262f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -20,8 +20,6 @@
package org.apache.isis.viewer.wicket.ui.components.actionmenu.serviceactions;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
import com.google.common.base.Function;
import com.google.common.base.Strings;
@@ -29,8 +27,6 @@ import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableBiMap;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
@@ -42,8 +38,6 @@ import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.Model;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.filter.Filters;
import org.apache.isis.applib.layout.menus.ActionLayoutData;
import org.apache.isis.applib.layout.menus.Menu;
import org.apache.isis.applib.layout.menus.MenuBar;
@@ -51,15 +45,7 @@ import org.apache.isis.applib.layout.menus.MenuBars;
import org.apache.isis.applib.layout.menus.MenuSection;
import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.facets.actions.notinservicemenu.NotInServiceMenuFacet;
-import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
-import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet;
import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.runtime.system.IsisSystem;
import org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder;
@@ -77,7 +63,10 @@ public final class ServiceActionUtil {
private ServiceActionUtil(){}
- static void addLeafItem(final CssMenuItem menuItem, final ListItem<CssMenuItem> listItem, final MarkupContainer parent) {
+ static void addLeafItem(
+ final CssMenuItem menuItem,
+ final ListItem<CssMenuItem> listItem,
+ final MarkupContainer parent) {
Fragment leafItem;
if (!menuItem.isSeparator()) {
@@ -179,7 +168,12 @@ public final class ServiceActionUtil {
return itemsWithSeparators;
}
- static void addFolderItem(final CssMenuItem subMenuItem, final ListItem<CssMenuItem> listItem, final MarkupContainer parent, final SeparatorStrategy separatorStrategy) {
+ static void addFolderItem(
+ final CssMenuItem subMenuItem,
+ final ListItem<CssMenuItem> listItem,
+ final MarkupContainer parent,
+ final SeparatorStrategy separatorStrategy) {
+
listItem.add(new CssClassAppender("dropdown-submenu"));
Fragment folderItem = new Fragment("content", "folderItem", parent);
@@ -259,128 +253,10 @@ public final class ServiceActionUtil {
return menuItems;
}
- /**
- * Builds a hierarchy of {@link CssMenuItem}s, following the provided map of {@link ServiceAndAction}s (keyed by their service Name).
- */
- private static List<CssMenuItem> buildMenuItems(
- final Set<String> serviceNamesInOrder,
- final Map<String, List<ServiceAndAction>> serviceActionsByName) {
-
- final List<CssMenuItem> menuItems = Lists.newArrayList();
- for (String serviceName : serviceNamesInOrder) {
- final CssMenuItem serviceMenuItem = CssMenuItem.newMenuItem(serviceName).build();
- final List<ServiceAndAction> serviceActionsForName = serviceActionsByName.get(serviceName);
- for (ServiceAndAction serviceAndAction : serviceActionsForName) {
-
- final CssMenuItem.Builder subMenuItemBuilder = serviceMenuItem.newSubMenuItem(serviceAndAction);
- if (subMenuItemBuilder == null) {
- // either service or this action is not visible
- continue;
- }
- subMenuItemBuilder.build();
- }
- if (serviceMenuItem.hasSubMenuItems()) {
- menuItems.add(serviceMenuItem);
- }
- }
- return menuItems;
- }
-
-
- // //////////////////////////////////////
-
- /**
- * Spin through all object actions of the service adapter, and add to the provided List of {@link ServiceAndAction}s.
- */
- private static void collateServiceActions(
- final ObjectAdapter serviceAdapter,
- final ActionType actionType,
- final List<ServiceAndAction> serviceActions) {
-
- final ObjectSpecification serviceSpec = serviceAdapter.getSpecification();
-
- // skip if annotated to not be included in repository menu using @DomainService
- final DomainServiceFacet domainServiceFacet = serviceSpec.getFacet(DomainServiceFacet.class);
- if (domainServiceFacet != null) {
- final NatureOfService natureOfService = domainServiceFacet.getNatureOfService();
- if (natureOfService == NatureOfService.VIEW_REST_ONLY ||
- natureOfService == NatureOfService.VIEW_CONTRIBUTIONS_ONLY ||
- natureOfService == NatureOfService.DOMAIN) {
- return;
- }
- }
-
- for (final ObjectAction objectAction : serviceSpec.getObjectActions(
- actionType, Contributed.INCLUDED, Filters.<ObjectAction>any())) {
-
- // skip if annotated to not be included in repository menu using legacy mechanism
- if (objectAction.getFacet(NotInServiceMenuFacet.class) != null) {
- continue;
- }
- final MemberOrderFacet memberOrderFacet = objectAction.getFacet(MemberOrderFacet.class);
- String serviceName = memberOrderFacet != null? memberOrderFacet.name(): null;
- if(Strings.isNullOrEmpty(serviceName)){
- serviceName = serviceSpec.getFacet(NamedFacet.class).value();
- }
- final EntityModel serviceModel = new EntityModel(serviceAdapter);
- serviceActions.add(new ServiceAndAction(serviceName, serviceModel, objectAction));
- }
- }
-
- /**
- * The unique service names, as they appear in order of the provided List of {@link ServiceAndAction}s.
- * @param serviceAdapters
- */
- private static Set<String> serviceNamesInOrder(
- final List<ObjectAdapter> serviceAdapters, final List<ServiceAndAction> serviceActions) {
- final Set<String> serviceNameOrder = Sets.newLinkedHashSet();
-
- // first, order as defined in isis.properties
- for (ObjectAdapter serviceAdapter : serviceAdapters) {
- final ObjectSpecification serviceSpec = serviceAdapter.getSpecification();
- String serviceName = serviceSpec.getFacet(NamedFacet.class).value();
- serviceNameOrder.add(serviceName);
- }
- // then, any other services (eg due to misspellings, at the end)
- for (ServiceAndAction serviceAction : serviceActions) {
- if(!serviceNameOrder.contains(serviceAction.serviceName)) {
- serviceNameOrder.add(serviceAction.serviceName);
- }
- }
- return serviceNameOrder;
- }
-
- /**
- * Group the provided {@link ServiceAndAction}s by their service name.
- */
- private static Map<String, List<ServiceAndAction>> groupByServiceName(final List<ServiceAndAction> serviceActions) {
- final Map<String, List<ServiceAndAction>> serviceActionsByName = Maps.newTreeMap();
-
- // map available services
- ObjectAdapter lastServiceAdapter = null;
-
- for (ServiceAndAction serviceAction : serviceActions) {
- List<ServiceAndAction> serviceActionsForName = serviceActionsByName.get(serviceAction.serviceName);
-
- final ObjectAdapter serviceAdapter =
- serviceAction.serviceEntityModel.load(AdapterManager.ConcurrencyChecking.NO_CHECK);
-
- if(serviceActionsForName == null) {
- serviceActionsForName = Lists.newArrayList();
- serviceActionsByName.put(serviceAction.serviceName, serviceActionsForName);
- } else {
- // capture whether this action is from a different service; if so, add a separator before it
- serviceAction.separator = lastServiceAdapter != serviceAdapter;
- }
- serviceActionsForName.add(serviceAction);
- lastServiceAdapter = serviceAdapter;
- }
-
- return serviceActionsByName;
- }
-
- private static void addConfirmationDialog(Component component, final ServicesInjector servicesInjector) {
+ private static void addConfirmationDialog(
+ final Component component,
+ final ServicesInjector servicesInjector) {
final TranslationService translationService =
servicesInjector.lookupService(TranslationService.class);
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
index 8b45fed..6b1fa78 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
@@ -43,6 +43,18 @@
</a>
</wicket:fragment>
+ <wicket:fragment wicket:id="folderItem">
+ <a wicket:id="folderName" tabindex="-1"></a>
+ <ul class="dropdown-menu">
+ <li wicket:id="subMenuItems">
+ <wicket:container wicket:id="content"></wicket:container>
+ </li>
+ </ul>
+ </wicket:fragment>
+
+ <wicket:fragment wicket:id="empty">
+ </wicket:fragment>
+
</wicket:panel>
</body>
--
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.