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 3d22bf9b EMPIREDB-405 allow TavView to be renderd with divs
3d22bf9b is described below

commit 3d22bf9be4bb80d621f35ab0e12c50cd0f048b3a
Author: Rainer Döbele <[email protected]>
AuthorDate: Wed Apr 12 15:22:00 2023 +0200

    EMPIREDB-405
    allow TavView to be renderd with divs
---
 .../src/main/webapp/css/content.css                | 16 +++-
 .../src/main/webapp/pages/employeeDetailPage.xhtml | 11 +--
 .../main/webapp/resources/empire/formGrid.xhtml    |  5 --
 .../src/main/webapp/resources/empire/tabView.xhtml |  2 +
 .../apache/empire/jsf2/components/FormGridTag.java | 33 ++++----
 .../apache/empire/jsf2/components/TabPageTag.java  | 52 +++++++++---
 .../apache/empire/jsf2/components/TabViewTag.java  | 98 ++++++++++++++++++----
 .../empire/jsf2/utils/TagEncodingHelper.java       |  6 ++
 .../apache/empire/jsf2/utils/TagStyleClass.java    | 16 ++--
 9 files changed, 175 insertions(+), 64 deletions(-)

diff --git 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/css/content.css 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/css/content.css
index e097f62b..ef0806ba 100644
--- a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/css/content.css
+++ b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/css/content.css
@@ -77,6 +77,9 @@ span.searchResult {
 /* tab view */
 div.eTabView {
 }
+div.eTabBar {
+       display: flex;
+}
 table.eTabBar {
        width: 100%;
        border-spacing: 0;
@@ -84,11 +87,13 @@ table.eTabBar {
        table-layout: auto;
        padding: 0;
 }
+div.eTabBar .eTabLabel,
 table.eTabBar tr td.eTabLabel {
        border: 1px #8F99EF solid;
        padding: 8px;   
        white-space: nowrap;
 }
+div.eTabBar .eTabLabel.eTabActive,
 table.eTabBar tr td.eTabLabel.eTabActive {
        border-bottom: 1px #F8F8F8 solid;
        background-color: #F8F8F8;      
@@ -97,7 +102,7 @@ table.eTabBar tr td.eTabLabel.eTabDisabled {
        color: gray;
        font-style: italic;
 }
-table.eTabBar tr td.eTabBarEmpty {
+.eTabBar .eTabBarEmpty {
        width: 99%;
        border-bottom: 1px #8F99EF solid;       
 }
@@ -105,15 +110,20 @@ table.eTabPanel {
        width: 100%;
        border-spacing: 0;
        border-collapse: collapse;
+}
+div.eTabPanel {
+       display: grid;
+}
+.eTabPanel {
        border: 1px #8F99EF solid;
        border-top: 0px;        
 }
-table.eTabPanel tr td.eTabPage {
+.eTabPanel .eTabPage {
        padding: 8px;
        background-color: #F8F8F8;
        vertical-align: top;
 }
-table.eTabPanel tr td.eTabPage div.formPanel {
+.eTabPanel .eTabPage .formPanel {
        border: 0;
 }
 div.info-msg {
diff --git 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/pages/employeeDetailPage.xhtml
 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/pages/employeeDetailPage.xhtml
index 5b019a8d..186eb80f 100644
--- 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/pages/employeeDetailPage.xhtml
+++ 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/pages/employeeDetailPage.xhtml
@@ -38,8 +38,8 @@
                <h:form id="employeeDetail">
 
                <e:tabView minHeight="400px" activeIndex="#{page.activeTab}" 
tabChangedListener="#{page.onTabChanged}">
-                       <e:tabPage title="#{msg.employeeDetail_tab_basic}" 
id="tabBasic">
-
+                       <!-- first page -->
+                       <e:tabPage id="tabBasic" 
title="#{msg.employeeDetail_tab_basic}">
                                <e:record value="#{page.employeeRecord}">
                                <!-- formPanel -->
                                <div class="formPanel">
@@ -57,12 +57,12 @@
                                                <e:control 
column="#{db.EMPLOYEES.UPDATE_TIMESTAMP}"/> 
                                        </e:formGrid>
                                </div>
-                               <!-- formPanel -->
+                               <!-- end formPanel -->
                                </e:record>
-                               
                        </e:tabPage>
                        
-                       <e:tabPage title="#{msg.employeeDetail_tab_extended}" 
id="tabExtended" disabled="#{not page.employeeRecord.exists}">
+                       <!-- second page -->
+                       <e:tabPage id="tabExtended" 
title="#{msg.employeeDetail_tab_extended}" disabled="#{not 
page.employeeRecord.exists}">
                                <h3><h:outputText 
value="#{msg.employeeDetail_payments}"/></h3>
                                <!-- Payment data -->
                                <h:dataTable id="paymentData" 
value="#{page.payments}" var="item" rowClasses="odd,even">
@@ -85,6 +85,7 @@
                                                <e:value record="#{item}" 
column="#{db.PAYMENTS.AMOUNT}"/>
                                        </h:column>
                                </h:dataTable>
+                               <!-- info message -->
                                <h:panelGroup layout="block" 
styleClass="info-msg">
                                        <h:outputText 
value="#{msg.employeeDetail_msg_extended}"/>
                                </h:panelGroup>
diff --git 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/resources/empire/formGrid.xhtml
 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/resources/empire/formGrid.xhtml
index 0c5e262b..dee8bc63 100644
--- 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/resources/empire/formGrid.xhtml
+++ 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/resources/empire/formGrid.xhtml
@@ -24,11 +24,6 @@
        <!-- Interface -->
        <cc:interface componentType="components.FormGridTag">
                <cc:attribute name="mode" />
-               <!-- overrides -->
-               <cc:attribute name="tag" />
-               <cc:attribute name="controlTag" />      
-               <cc:attribute name="labelTag" />        
-               <cc:attribute name="inputTag" />
                <cc:attribute name="renderAutoId" />    
        </cc:interface>
        
diff --git 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/resources/empire/tabView.xhtml
 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/resources/empire/tabView.xhtml
index 9d7dd50d..a83b0efe 100644
--- 
a/empire-db-examples/empire-db-example-jsf2/src/main/webapp/resources/empire/tabView.xhtml
+++ 
b/empire-db-examples/empire-db-example-jsf2/src/main/webapp/resources/empire/tabView.xhtml
@@ -23,6 +23,8 @@
 
        <!-- Interface -->
        <cc:interface componentType="components.TabViewTag">
+               <cc:attribute name="mode" />
+               <cc:attribute name="minHeight" />
                <cc:attribute name="activeIndex" type="java.lang.Integer" />
                <cc:attribute name="tabChangedListener" method-signature="void 
method(java.lang.Integer)"/>
        </cc:interface>
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
index 107d94c9..d7a98aa8 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
@@ -51,16 +51,16 @@ public class FormGridTag extends UIOutput implements 
NamingContainer
         FLAT  (InputControl.HTML_TAG_DIV, InputControl.HTML_TAG_DIV, null, 
null);
         
         public final String GRID_TAG;
-        public final String DEFAULT_CONTROL_TAG;
-        public final String DEFAULT_LABEL_TAG;
-        public final String DEFAULT_INPUT_TAG;
+        public final String CONTROL_TAG;
+        public final String LABEL_TAG;
+        public final String INPUT_TAG;
         
         private FormGridMode(String gridTag, String controlTag, String 
labelTag, String inputTag)
         {
             this.GRID_TAG = gridTag;
-            this.DEFAULT_CONTROL_TAG = controlTag;
-            this.DEFAULT_LABEL_TAG = labelTag;
-            this.DEFAULT_INPUT_TAG = inputTag;
+            this.CONTROL_TAG = controlTag;
+            this.LABEL_TAG = labelTag;
+            this.INPUT_TAG = inputTag;
         }
         
         public static FormGridMode detect(String mode)
@@ -90,7 +90,7 @@ public class FormGridTag extends UIOutput implements 
NamingContainer
     
     protected ControlRenderInfo controlRenderInfo = null;
     
-    private String tagName;
+    private FormGridMode mode;
 
     @Override
     public String getFamily()
@@ -106,12 +106,11 @@ public class FormGridTag extends UIOutput implements 
NamingContainer
         super.encodeBegin(context);
         
         // tagName
-        FormGridMode mode = 
FormGridMode.detect(helper.getTagAttributeString("mode")); 
-        this.tagName = helper.getTagAttributeString("tag", mode.GRID_TAG);
+        this.mode = FormGridMode.detect(helper.getTagAttributeString("mode", 
FormGridMode.GRID.name())); 
         
         // render components
         ResponseWriter writer = context.getResponseWriter();
-        writer.startElement(tagName, this);
+        writer.startElement(mode.GRID_TAG, this);
         // id
         helper.writeComponentId(writer, getControlRenderInfo().RENDER_AUTO_ID);
         // style class
@@ -140,7 +139,7 @@ public class FormGridTag extends UIOutput implements 
NamingContainer
         super.encodeEnd(context);
         // close
         ResponseWriter writer = context.getResponseWriter();
-        writer.endElement(this.tagName);
+        writer.endElement(mode.GRID_TAG);
     }
     
     public ControlRenderInfo getControlRenderInfo()
@@ -149,14 +148,12 @@ public class FormGridTag extends UIOutput implements 
NamingContainer
         if (controlRenderInfo!=null)
             return controlRenderInfo;
         // check mode
-        FormGridMode mode = 
FormGridMode.detect(helper.getTagAttributeString("mode", 
FormGridMode.GRID.name())); 
-        // override?
-        String controlTag = helper.getTagAttributeString("controlTag", 
mode.DEFAULT_CONTROL_TAG);
-        String labelTag   = helper.getTagAttributeString("labelTag",   
mode.DEFAULT_LABEL_TAG);
-        String inputTag   = helper.getTagAttributeString("inputTag",   
mode.DEFAULT_INPUT_TAG);
+        if (this.mode==null)
+            this.mode = 
FormGridMode.detect(helper.getTagAttributeString("mode", 
FormGridMode.GRID.name())); 
+        // additional
         boolean renderAutoId = 
ObjectUtils.getBoolean(helper.getTagAttributeString("renderAutoId"));
-        // done
-        this.controlRenderInfo = new ControlRenderInfo(controlTag, labelTag, 
inputTag, renderAutoId);
+        // create control info
+        this.controlRenderInfo = new ControlRenderInfo(mode.CONTROL_TAG, 
mode.LABEL_TAG, mode.INPUT_TAG, renderAutoId);
         return controlRenderInfo;
     }
 }
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TabPageTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TabPageTag.java
index f76f2655..4b2fdb4f 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TabPageTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TabPageTag.java
@@ -21,23 +21,29 @@ package org.apache.empire.jsf2.components;
 import java.io.IOException;
 
 import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
 import javax.faces.component.UINamingContainer;
 import javax.faces.component.UIOutput;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
+import org.apache.empire.jsf2.components.TabViewTag.TabViewMode;
 import org.apache.empire.jsf2.controls.InputControl;
 import org.apache.empire.jsf2.utils.TagEncodingHelper;
 import org.apache.empire.jsf2.utils.TagEncodingHelperFactory;
 import org.apache.empire.jsf2.utils.TagStyleClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class TabPageTag extends UIOutput implements NamingContainer
 {
     // Logger
-    // private static final Logger log = 
LoggerFactory.getLogger(MenuTag.class);
+    private static final Logger log = 
LoggerFactory.getLogger(TabPageTag.class);
     
     protected final TagEncodingHelper helper = 
TagEncodingHelperFactory.create(this, TagStyleClass.TAB_PAGE.get());
 
+    private TabViewMode mode;
+    
     @Override
     public String getFamily()
     {
@@ -51,15 +57,23 @@ public class TabPageTag extends UIOutput implements 
NamingContainer
         // call base
         super.encodeBegin(context);
         
+        // TabViewMode 
+        this.mode = detectTabViewMode();
+        
         // render components
         ResponseWriter writer = context.getResponseWriter();
-        writer.startElement(InputControl.HTML_TAG_TR, this);
-        writer.writeAttribute(InputControl.HTML_ATTR_ID, getClientId(), null);
-        helper.writeAttribute(writer, InputControl.HTML_ATTR_CLASS, 
helper.getTagAttributeString("styleClass"));
-        helper.writeAttribute(writer, InputControl.HTML_ATTR_STYLE, 
helper.getTagAttributeString("style"));
+        if (mode.PAGE_WRAP_TAG!=null)
+        {   // render page wrap tag
+            writer.startElement(mode.PAGE_WRAP_TAG, this);
+            writer.writeAttribute(InputControl.HTML_ATTR_ID, getClientId(), 
null);
+        }
         // TabPage
-        writer.startElement(InputControl.HTML_TAG_TD, this);
-        writer.writeAttribute(InputControl.HTML_ATTR_CLASS, "eTabPage", null);
+        writer.startElement(mode.PAGE_TAG, this);
+        if (mode.PAGE_WRAP_TAG==null)
+        {   // no wrapper tag
+            writer.writeAttribute(InputControl.HTML_ATTR_ID, getClientId(), 
null);
+        }
+        writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
this.helper.getSimpleStyleClass(), null);
     }
 
     @Override
@@ -81,14 +95,32 @@ public class TabPageTag extends UIOutput implements 
NamingContainer
     {
         // call base
         super.encodeEnd(context);
-        // close
+        // close tags
         ResponseWriter writer = context.getResponseWriter();
-        writer.endElement(InputControl.HTML_TAG_TD);
-        writer.endElement(InputControl.HTML_TAG_TR);
+        writer.endElement(mode.PAGE_TAG);
+        // wrapper tag?
+        if (mode.PAGE_WRAP_TAG!=null)
+            writer.endElement(mode.PAGE_WRAP_TAG);
     }
 
     public String getTabLabel()
     {
         return helper.getTagAttributeString("title");
     }
+    
+    protected TabViewMode detectTabViewMode()
+    {
+        // walk upwards the parent component tree and return the first record 
component found (if any)
+        UIComponent parent = this;
+        while ((parent = parent.getParent()) != null)
+        {
+            if (parent instanceof TabViewTag)
+            {   // found
+                return ((TabViewTag) parent).getViewMode();
+            }
+        }
+        log.warn("TabViewTag not found! Unable to detect TabViewMode.");
+        return TabViewMode.GRID;
+    }
+    
 }
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TabViewTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TabViewTag.java
index a69e0334..b159b52b 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TabViewTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TabViewTag.java
@@ -126,6 +126,60 @@ public class TabViewTag extends UIOutput implements 
NamingContainer
         }
     }
 
+    /*
+     * TabViewMode
+     */
+    public enum TabViewMode 
+    {
+        TABLE (InputControl.HTML_TAG_TABLE, InputControl.HTML_TAG_TR,  
InputControl.HTML_TAG_TD,  InputControl.HTML_TAG_TD
+             , InputControl.HTML_TAG_TABLE, InputControl.HTML_TAG_TR,  
InputControl.HTML_TAG_TD),
+        GRID  (InputControl.HTML_TAG_DIV,   null,                      
InputControl.HTML_TAG_DIV, InputControl.HTML_TAG_DIV
+             , InputControl.HTML_TAG_DIV,   null,                      
InputControl.HTML_TAG_DIV);
+        
+        public final String BAR_TAG;        // InputControl.HTML_TAG_TABLE
+        public final String BAR_ROW_TAG;    // InputControl.HTML_TAG_TR
+        public final String BAR_ITEM_TAG;   // InputControl.HTML_TAG_TD
+        public final String BAR_PAD_TAG;    // InputControl.HTML_TAG_TD
+        public final String PANEL_TAG;      // InputControl.HTML_TAG_TABLE
+        public final String PAGE_WRAP_TAG;  // InputControl.HTML_TAG_TR
+        public final String PAGE_TAG;       // InputControl.HTML_TAG_TD
+        
+        private TabViewMode(String barTag, String barRowTag, String 
barItemTag, String barPadTag, String panelTag, String pageWrapTag, String 
pageTag)
+        {
+            this.BAR_TAG = barTag;          // InputControl.HTML_TAG_TABLE
+            this.BAR_ROW_TAG = barRowTag;   // InputControl.HTML_TAG_TR
+            this.BAR_ITEM_TAG = barItemTag; // InputControl.HTML_TAG_TD
+            this.BAR_PAD_TAG = barPadTag;   // InputControl.HTML_TAG_TD
+            this.PANEL_TAG = panelTag;      // InputControl.HTML_TAG_TABLE
+            this.PAGE_WRAP_TAG = pageWrapTag;   // InputControl.HTML_TAG_TR
+            this.PAGE_TAG = pageTag;            // InputControl.HTML_TAG_TD
+        }
+        
+        public static TabViewMode detect(String mode)
+        {
+            if (mode==null || mode.length()==0)
+                return TABLE;
+            // find
+            TabViewMode[] values = values();
+            for (int i=0; i<values.length; i++)
+            {
+                if (values[i].name().equalsIgnoreCase(mode))
+                    return values[i]; 
+            }
+            // not found
+            log.warn("TabViewMode \"{}\" not found. Using default!", mode);
+            return TABLE;
+        }
+        
+        @Override
+        public String toString()
+        {
+            return name();
+        }
+    }
+    
+    private TabViewMode mode;
+    
     public TabViewTag()
     {
         log.trace("TabViewTag created");
@@ -137,6 +191,11 @@ public class TabViewTag extends UIOutput implements 
NamingContainer
         return UINamingContainer.COMPONENT_FAMILY;
     }
 
+    public TabViewMode getViewMode()
+    {
+        return mode;
+    }
+
     @Override
     public void encodeBegin(FacesContext context)
         throws IOException
@@ -147,11 +206,14 @@ public class TabViewTag extends UIOutput implements 
NamingContainer
         // registerTabViewBean
         // context.getExternalContext().getRequestMap().put("tabView", this);
 
+        // check mode
+        this.mode = TabViewMode.detect(helper.getTagAttributeString("mode", 
TabViewMode.TABLE.name())); 
+
         // render components
         ResponseWriter writer = context.getResponseWriter();
         writer.startElement(InputControl.HTML_TAG_DIV, this);
         writer.writeAttribute(InputControl.HTML_ATTR_ID, getClientId(), null);
-        writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
this.helper.getTagStyleClass(), null);
+        writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
this.helper.getSimpleStyleClass(), null);
         this.helper.writeAttribute(writer, InputControl.HTML_ATTR_STYLE, 
this.helper.getTagAttributeString("style"));
 
         // The Tabs
@@ -161,20 +223,28 @@ public class TabViewTag extends UIOutput implements 
NamingContainer
         }
         else
         {   // show bar
-            writer.startElement(InputControl.HTML_TAG_TABLE, this);
-            writer.writeAttribute(InputControl.HTML_ATTR_CLASS, "eTabBar", 
null);
-            writer.startElement(InputControl.HTML_TAG_TR, this);
+            writer.startElement(mode.BAR_TAG, this);
+            writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
TagStyleClass.TAB_BAR.get(), null);
+            if (mode.BAR_ROW_TAG!=null)
+                writer.startElement(mode.BAR_ROW_TAG, this);
+            // encode Tabs
             encodeTabs(context, writer);
-            writer.startElement(InputControl.HTML_TAG_TD, this);
-            writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
"eTabBarEmpty", null);
-            writer.endElement(InputControl.HTML_TAG_TD);
-            writer.endElement(InputControl.HTML_TAG_TR);
-            writer.endElement(InputControl.HTML_TAG_TABLE);
+            // Bar padding item
+            if (mode.BAR_PAD_TAG!=null)
+            {   // Bar padding item
+                writer.startElement(mode.BAR_PAD_TAG, this);
+                writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
TagStyleClass.TAB_BAR_PADDING.get(), null);
+                writer.endElement(mode.BAR_PAD_TAG);
+            }
+            // finish
+            if (mode.BAR_ROW_TAG!=null)
+                writer.endElement(mode.BAR_ROW_TAG);
+            writer.endElement(mode.BAR_TAG);
         }
         
         // The Pages
-        writer.startElement(InputControl.HTML_TAG_TABLE, this);
-        writer.writeAttribute(InputControl.HTML_ATTR_CLASS, "eTabPanel", null);
+        writer.startElement(mode.PANEL_TAG, this);
+        writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
TagStyleClass.TAB_PANEL.get(), null);
         String minHeight = this.helper.getTagAttributeString("minHeight");
         if (StringUtils.isNotEmpty(minHeight))
         {
@@ -203,7 +273,7 @@ public class TabViewTag extends UIOutput implements 
NamingContainer
         super.encodeEnd(context);
         // close
         ResponseWriter writer = context.getResponseWriter();
-        writer.endElement(InputControl.HTML_TAG_TABLE);
+        writer.endElement(mode.PANEL_TAG);
         writer.endElement(InputControl.HTML_TAG_DIV);
     }
 
@@ -266,7 +336,7 @@ public class TabViewTag extends UIOutput implements 
NamingContainer
             if (writer!=null)
             {   // encode Tab
                 boolean disabled = 
ObjectUtils.getBoolean(TagEncodingHelper.getTagAttributeValue(page, 
"disabled"));
-                writer.startElement(InputControl.HTML_TAG_TD, this);
+                writer.startElement(mode.BAR_ITEM_TAG, this);
                 // tab label
                 String styleClasses = TagStyleClass.TAB_LABEL.get();
                 if (active)
@@ -280,7 +350,7 @@ public class TabViewTag extends UIOutput implements 
NamingContainer
                 writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
styleClasses, null);
                 // encode Link
                 encodeTabLink(context, writer, index, page, (active || 
disabled));
-                writer.endElement(InputControl.HTML_TAG_TD);
+                writer.endElement(mode.BAR_ITEM_TAG);
             }
             // set rendered
             page.setRendered(active);
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index 76b09136..0edd27ef 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -1752,6 +1752,12 @@ public class TagEncodingHelper implements NamingContainer
         }
     }
 
+    public String getSimpleStyleClass()
+    {
+        String userStyle = getTagAttributeStringEx("styleClass");
+        return assembleStyleClassString(cssStyleClass, null, null, userStyle);
+    }
+
     public String getTagStyleClass(DataType dataType, String addlStyle, String 
userStyle)
     {
         String typeClass = (dataType!=null) ? getDataTypeClass(dataType) : 
null;
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagStyleClass.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagStyleClass.java
index 15652872..e64257a2 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagStyleClass.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagStyleClass.java
@@ -18,6 +18,8 @@
  */
 package org.apache.empire.jsf2.utils;
 
+import org.apache.empire.commons.StringUtils;
+
 /**
  * Collection of TagStyleClasses
  */
@@ -43,6 +45,9 @@ public enum TagStyleClass
     MENU("eMenuList"),
     UNIT("eUnit"),
     TAB_VIEW("eTabView"),
+    TAB_BAR("eTabBar"),
+    TAB_BAR_PADDING("eTabBarEmpty"),
+    TAB_PANEL("eTabPanel"),
     TAB_PAGE("eTabPage"),
     TAB_LINK("eTabLink"),
     TAB_LABEL("eTabLabel"),
@@ -105,11 +110,7 @@ public enum TagStyleClass
         if (existsIn(styleClasses, styleClassName))
             return styleClasses;
         // add with space
-        StringBuilder b = new 
StringBuilder(styleClasses.length()+styleClassName.length()+1);
-        b.append(styleClasses);
-        b.append(" ");
-        b.append(styleClassName);
-        return b.toString();
+        return StringUtils.concat(styleClasses, " ", styleClassName);
     }
 
     public final String addTo(String styleClasses)
@@ -150,10 +151,7 @@ public enum TagStyleClass
         // in between
         int after  = idx + styleClassName.length();
         int before = idx - 1; // SPACE assumed!
-        StringBuilder b = new 
StringBuilder(styleClasses.length()-(after-before));
-        b.append(styleClasses.substring(0, before));
-        b.append(styleClasses.substring(after));
-        return b.toString();
+        return StringUtils.concat(styleClasses.substring(0, before), 
styleClasses.substring(after));
     }
 
     public final String removeFrom(String styleClasses)

Reply via email to