You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/07/10 12:14:07 UTC

[isis] branch master updated: ISIS-2400: update menubar visitor (also adding call site stubs)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 165a781  ISIS-2400: update menubar visitor (also adding call site stubs)
165a781 is described below

commit 165a7813955e770e4f321db3ffcf88ef38a4c6b9
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jul 10 14:01:07 2020 +0200

    ISIS-2400: update menubar visitor (also adding call site stubs)
---
 .../org/apache/isis/core/commons/internal/base/_Strings.java   | 10 ++++++++++
 .../isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java    |  6 ++++++
 .../incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java  |  8 ++++++++
 .../viewer/common/model/menu/MenuUiModel_buildMenuItems.java   | 10 ++++++++--
 .../org/apache/isis/viewer/common/model/menu/MenuVisitor.java  |  5 +++++
 .../actionmenu/serviceactions/ServiceActionUtil.java           |  6 ++++++
 .../actionmenu/serviceactions/ServiceActionsPanel.html         |  8 ++++++++
 .../actionmenu/serviceactions/TertiaryActionsPanel.html        |  8 ++++++++
 8 files changed, 59 insertions(+), 2 deletions(-)

diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_Strings.java b/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_Strings.java
index f860082..b1060b7 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_Strings.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/internal/base/_Strings.java
@@ -142,6 +142,16 @@ public final class _Strings {
     public static boolean isNotEmpty(@Nullable final CharSequence x){
         return x!=null && x.length()!=0;
     }
+    
+    // -- OPTIONAL
+    
+    /**
+     * @param x - input string
+     * @return optionally the input string based on whether the input is not empty 
+     */
+    public static Optional<String> nonEmpty(@Nullable final CharSequence x) {
+        return isEmpty(x) ? Optional.empty() : Optional.of(x.toString());
+    }
 
     // -- BASIC UNARY OPERATORS
 
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
index f029438..3f5d53d 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MenuBuilderFx.java
@@ -69,5 +69,11 @@ public class MenuBuilderFx implements MenuVisitor {
         currentTopLevelMenu.getItems()
         .add(new SeparatorMenuItem());
     }
+
+    @Override
+    public void addSectionLabel(String named) {
+        log.warn("section labels not supported yet: {}", named);
+        addSectionSpacer(); //TODO this is just a fallback
+    }
     
 }
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java
index a1bb1cb..2f58ed1 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/MenuBuilderVaa.java
@@ -34,8 +34,10 @@ import org.apache.isis.viewer.common.model.menu.MenuVisitor;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
+import lombok.extern.log4j.Log4j2;
 
 @RequiredArgsConstructor(staticName = "of") 
+@Log4j2
 class MenuBuilderVaa implements MenuVisitor {
 
     private final IsisAppCommonContext commonContext; 
@@ -73,5 +75,11 @@ class MenuBuilderVaa implements MenuVisitor {
         currentTopLevelMenu.getSubMenu()
         .addItem(spacer);
     }
+    
+    @Override
+    public void addSectionLabel(String named) {
+        log.warn("section labels not supported yet: {}", named);
+        addSectionSpacer(); //TODO this is just a fallback
+    }
 
 }
\ No newline at end of file
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
index f0b6d91..be68b12 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuUiModel_buildMenuItems.java
@@ -24,6 +24,7 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
 import org.apache.isis.applib.layout.menubars.bootstrap3.BS3Menu;
 import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBar;
+import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuSection;
 import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -77,7 +78,7 @@ final class MenuUiModel_buildMenuItems {
                     
                     val isFirstInSection = itemsPerSectionCounter.intValue()==0;
                     
-                    menuVisitor.addSubMenu(managedAction, isFirstInSection, actionLayoutData);
+                    menuVisitor.addSubMenu(menuSection, managedAction, isFirstInSection, actionLayoutData);
                     itemsPerSectionCounter.increment();
                     
                 }
@@ -103,6 +104,7 @@ final class MenuUiModel_buildMenuItems {
         }
 
         public void addSubMenu(
+                @NonNull BS3MenuSection menuSection, 
                 @NonNull ManagedAction managedAction,
                 boolean isFirstInSection, 
                 ServiceActionLayoutData actionLayoutData) {
@@ -114,7 +116,11 @@ final class MenuUiModel_buildMenuItems {
                 pushedCurrentTopLevel = true;
             } else {
                 if(isFirstInSection) {
-                    menuVisitor.addSectionSpacer();
+                    if(_Strings.isNotEmpty(menuSection.getNamed())) {
+                        menuVisitor.addSectionLabel(menuSection.getNamed());    
+                    } else {
+                        menuVisitor.addSectionSpacer();
+                    }
                 }
             }
             val menuDto = MenuItemDto.subMenu(
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuVisitor.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuVisitor.java
index e2df4b4..ba75eb1 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuVisitor.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/menu/MenuVisitor.java
@@ -24,4 +24,9 @@ public interface MenuVisitor {
     void addSectionSpacer();
     void addSubMenu(MenuItemDto menuDto);
     
+    /**
+     * @param named - not null and not empty
+     */
+    void addSectionLabel(String named);
+    
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index 8ff5986..d36ce27 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -168,6 +168,12 @@ public final class ServiceActionUtil {
                 menuItem.setNeedsSpacerBeforeSelf(true);
             }
         }
+
+        @Override
+        public void addSectionLabel(String named) {
+            // TODO Auto-generated method stub
+            
+        }
         
     }
     
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
index e0044d8..882fb6e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
@@ -29,6 +29,14 @@
                 </ul>
             </li>
 
+            <wicket:fragment wicket:id="separatorItem">
+                <div class="list-separator"/>
+            </wicket:fragment>
+            
+        	<wicket:fragment wicket:id="sectionItem">
+                <span class="sectionLabel" wicket:id="sectionLabel"></span>
+            </wicket:fragment>
+
             <wicket:fragment wicket:id="leafItem">
                 <a class="menuLink" wicket:id="menuLink">
                     <span class="menuLinkLabel" wicket:id="menuLinkLabel"></span>
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
index 8dccb28..510410f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
@@ -24,6 +24,14 @@
             <li wicket:id="subMenuItems">
                 <wicket:container wicket:id="content"></wicket:container>
             </li>
+            
+            <wicket:fragment wicket:id="separatorItem">
+                <div class="list-separator"/>
+            </wicket:fragment>
+            
+        	<wicket:fragment wicket:id="sectionItem">
+                <span class="sectionLabel" wicket:id="sectionLabel"></span>
+            </wicket:fragment>
 
             <wicket:fragment wicket:id="leafItem">
                 <a class="menuLink" wicket:id="menuLink">