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

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 6f3ff5e3 EMPIREDB-422 MenuItemTag generated id
6f3ff5e3 is described below

commit 6f3ff5e3cd5d2d751ecede32e214639b9c720454
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Apr 29 08:39:51 2024 +0200

    EMPIREDB-422
    MenuItemTag generated id
---
 .../apache/empire/jsf2/components/MenuItemTag.java | 30 +++++++++++++++++-----
 .../apache/empire/jsf2/components/MenuListTag.java | 24 ++++++++---------
 2 files changed, 35 insertions(+), 19 deletions(-)

diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/MenuItemTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/MenuItemTag.java
index 52298c1c..3a35b721 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/MenuItemTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/MenuItemTag.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 
 import javax.faces.component.UIComponent;
 import javax.faces.component.UINamingContainer;
-import javax.faces.component.UIPanel;
 import javax.faces.component.html.HtmlOutcomeTargetLink;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
@@ -38,7 +37,7 @@ public class MenuItemTag extends LinkTag
     // Logger
     private static final Logger log = 
LoggerFactory.getLogger(MenuItemTag.class);
     
-    protected MenuListTag parentMenu = null;
+    protected MenuListTag parentMenu;
     protected String menuId;
 
     public MenuItemTag()
@@ -52,6 +51,10 @@ public class MenuItemTag extends LinkTag
         return UINamingContainer.COMPONENT_FAMILY; 
     }
     
+    /* 
+     * Auto-generate Menu item component id
+     * Works, but is too inflexible
+     * 
     @Override
     public void setParent(UIComponent parent)
     {
@@ -72,13 +75,29 @@ public class MenuItemTag extends LinkTag
             }
         }
     }
+    */
+    
+    @Override
+    public void setId(String id)
+    {
+        if (id.endsWith("@")) {
+            // Generate MenuItem component id from menuId
+            menuId = helper.getTagAttributeString("menuId");
+            if (StringUtils.isNotEmpty(menuId)) {
+                int idx = id.indexOf('@');
+                String ident = (idx>0) ? id.substring(0,idx)+menuId : menuId;
+                id = TagEncodingHelper.buildComponentId(ident);
+            }
+        }
+        super.setId(id);
+    }
     
     @Override
     public void encodeBegin(FacesContext context)
         throws IOException
     {
         // Detect Parent Menu
-        parentMenu = getParentMenu();
+        parentMenu = findParentMenu();
         if (menuId==null)
             menuId = helper.getTagAttributeString("menuId");         
         
@@ -90,8 +109,7 @@ public class MenuItemTag extends LinkTag
         writer.startElement("li", this);
         
         //Compoent-ID
-        if (helper.hasComponentId())    
-            writer.writeAttribute("id", getClientId(context), null);
+        helper.writeComponentId(writer, false);
         
         // Style Class
         helper.writeAttribute(writer, "class", getStyleClass());
@@ -174,7 +192,7 @@ public class MenuItemTag extends LinkTag
         return null;
     }
     
-    protected MenuListTag getParentMenu()
+    protected MenuListTag findParentMenu()
     {
         // walk upwards the parent component tree and return the first record 
component found (if
         // any)
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/MenuListTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/MenuListTag.java
index 4e9cd86f..709da792 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/MenuListTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/MenuListTag.java
@@ -46,8 +46,8 @@ public class MenuListTag extends UIOutput // implements 
NamingContainer
         disabledClass,
         expandedClass,
         itemWrapTag,
-        defaultItemClass,
-        autoItemId;
+        defaultItemClass;
+        // autoItemId
     }
     
     protected String currentId = null; 
@@ -57,7 +57,7 @@ public class MenuListTag extends UIOutput // implements 
NamingContainer
     protected String expandedClass = null;
     protected String itemWrapTag = null;
     protected String defaultItemClass = null; // e.g. "level{}"
-    protected Boolean autoItemId = null;
+    // protected Boolean autoItemId = null;
     protected int level = 0;
     
     private MenuListTag parentMenu = null; 
@@ -82,17 +82,11 @@ public class MenuListTag extends UIOutput // implements 
NamingContainer
         writer.startElement("ul", this);
         
         //Compoent-ID
-        if (helper.hasComponentId())    
-            writer.writeAttribute("id", getClientId(context), null);
+        helper.writeComponentId(writer, false);
         
         // Style class and style
         helper.writeAttribute(writer, "class", getStyleClass());
         helper.writeAttribute(writer, "style", 
helper.getTagAttributeString("style"));
-        // previousId
-        /*
-        if (prevMenuId!=null)
-            helper.writeAttribute(writer, "previousId", prevMenuId);
-        */    
     }
 
     @Override
@@ -132,7 +126,7 @@ public class MenuListTag extends UIOutput // implements 
NamingContainer
 
         // find parent
         if (parentMenu==null)
-            parentMenu = getParentMenu();
+            parentMenu = findParentMenu();
         if (parentMenu==null)
             return;
         
@@ -220,19 +214,21 @@ public class MenuListTag extends UIOutput // implements 
NamingContainer
         return defaultItemClass;
     }
     
+    /*
     public Boolean isAutoItemId()
     {
         if (this.autoItemId == null) {
             this.autoItemId = 
(Boolean)getStateHelper().get(Properties.autoItemId);
             if (this.autoItemId==null) {
                 if (parentMenu==null)
-                    parentMenu = getParentMenu();
+                    parentMenu = findParentMenu();
                 if (parentMenu!=null)
                     return parentMenu.isAutoItemId();
             }
         }
         return this.autoItemId;
     }
+    */
 
     /* setters */
     
@@ -278,18 +274,20 @@ public class MenuListTag extends UIOutput // implements 
NamingContainer
         getStateHelper().put(Properties.itemWrapTag, itemWrapTag);
     }
 
+    /*
     public void setAutoItemId(Boolean autoItemId)
     {
         this.autoItemId = autoItemId;
         // save
         getStateHelper().put(Properties.autoItemId, this.autoItemId);
     }
+    */
 
     /*
      * helpers
      */
 
-    protected MenuListTag getParentMenu()
+    protected MenuListTag findParentMenu()
     {
         // walk upwards the parent component tree and return the first record 
component found (if
         // any)

Reply via email to