You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2012/09/16 15:28:46 UTC

svn commit: r1385259 - in /empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2: components/LinkTag.java components/NbspTag.java components/TitleTag.java controls/InputControl.java utils/TagEncodingHelper.java

Author: doebele
Date: Sun Sep 16 13:28:46 2012
New Revision: 1385259

URL: http://svn.apache.org/viewvc?rev=1385259&view=rev
Log:
EMPIREDB-157 
JSF2 allow input-control to provide different input-id for the label's "for"-attribute

Modified:
    empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
    empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/NbspTag.java
    empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TitleTag.java
    empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
    empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java

Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java?rev=1385259&r1=1385258&r2=1385259&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/LinkTag.java Sun Sep 16 13:28:46 2012
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
-import javax.faces.component.NamingContainer;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UINamingContainer;
 import javax.faces.component.UIOutput;
@@ -41,7 +40,7 @@ import org.apache.empire.jsf2.utils.TagE
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class LinkTag extends UIOutput implements NamingContainer
+public class LinkTag extends UIOutput // implements NamingContainer
 {
     // or HtmlOutcomeTargetLink
     // or HtmlOutputLink

Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/NbspTag.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/NbspTag.java?rev=1385259&r1=1385258&r2=1385259&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/NbspTag.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/NbspTag.java Sun Sep 16 13:28:46 2012
@@ -20,7 +20,6 @@ package org.apache.empire.jsf2.component
 
 import java.io.IOException;
 
-import javax.faces.component.NamingContainer;
 import javax.faces.component.UINamingContainer;
 import javax.faces.component.UIOutput;
 import javax.faces.context.FacesContext;
@@ -28,7 +27,7 @@ import javax.faces.context.ResponseWrite
 
 import org.apache.empire.commons.ObjectUtils;
 
-public class NbspTag extends UIOutput implements NamingContainer
+public class NbspTag extends UIOutput // implements NamingContainer
 {
     // private int count = 1;
 

Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TitleTag.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TitleTag.java?rev=1385259&r1=1385258&r2=1385259&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TitleTag.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/TitleTag.java Sun Sep 16 13:28:46 2012
@@ -21,7 +21,6 @@ package org.apache.empire.jsf2.component
 import java.io.IOException;
 import java.util.Map;
 
-import javax.faces.component.NamingContainer;
 import javax.faces.component.UIOutput;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
@@ -33,7 +32,7 @@ import org.apache.empire.jsf2.utils.TagE
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class TitleTag extends UIOutput implements NamingContainer
+public class TitleTag extends UIOutput // implements NamingContainer
 {
     // Logger
     private static final Logger log = LoggerFactory.getLogger(TitleTag.class);

Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java?rev=1385259&r1=1385258&r2=1385259&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java Sun Sep 16 13:28:46 2012
@@ -230,6 +230,11 @@ public abstract class InputControl
     {
         return name;
     }
+    
+    public String getLabelForId(InputInfo ii)
+    {
+        return ii.getInputId();
+    }
 
     /* Value */
     public void renderValue(ValueInfo vi, ResponseWriter writer)

Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java?rev=1385259&r1=1385258&r2=1385259&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java Sun Sep 16 13:28:46 2012
@@ -20,6 +20,7 @@ package org.apache.empire.jsf2.utils;
 
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
+import java.util.Iterator;
 import java.util.Locale;
 
 import javax.el.ValueExpression;
@@ -326,6 +327,10 @@ public class TagEncodingHelper implement
         public String getStyleClass(String addlStyle)
         {
             String style = getTagStyleClass(addlStyle);
+            if (hasError)
+            {   // Invalid
+                style = "eInvalid "+style;
+            }
             return style; 
         }
 
@@ -358,6 +363,7 @@ public class TagEncodingHelper implement
     private TextResolver        textResolver = null;
     private Object              mostRecentValue = null;
     private boolean             skipValidation = false;
+    private boolean             hasError = false;
 
     public TagEncodingHelper(UIOutput tag, String tagCssStyle)
     {
@@ -487,6 +493,8 @@ public class TagEncodingHelper implement
     {
         // Skip validate
         skipValidation = FacesUtils.isSkipInputValidation(ctx);
+        // check whether we have got an error
+        hasError = detectError(ctx);            
         // create
         return new InputInfoImpl(getColumn(), getTextResolver(ctx));
     }
@@ -1076,6 +1084,18 @@ public class TagEncodingHelper implement
         return textResolver;
     }
     
+    private boolean detectError(FacesContext context)
+    {
+        Iterator<FacesMessage> iter = context.getMessages(tag.getClientId());
+        while (iter.hasNext())
+        {   // Check for error
+            FacesMessage m = iter.next();
+            if (m.getSeverity()==FacesMessage.SEVERITY_ERROR)
+                return true;
+        }
+        return false;
+    }
+    
     public void addErrorMessage(FacesContext context, Exception e)
     {
         String msgText = getTextResolver(context).getExceptionMessage(e);
@@ -1176,6 +1196,10 @@ public class TagEncodingHelper implement
                 readOnly = inputTag.isInputReadOnly();
                 required = inputTag.isInputRequired();
             }
+            else
+            {   // Not found (<e:input id="ABC"...> must match <e:label for="ABC"...>
+                log.warn("Input component {} not found for label {}.", forInput, getColumn().getName());
+            }
         }
         if (column==null)
         {   // Get from LinkTag
@@ -1211,11 +1235,19 @@ public class TagEncodingHelper implement
         // for 
         if (StringUtils.isNotEmpty(forInput) && !readOnly)
         {   // Set Label input Id
-            String inputId = getInputInfo(context).getInputId();
-            if (forInput.equals("*"))
-                label.setFor(inputId);
+            InputControl.InputInfo ii = getInputInfo(context);
+            String inputId = getInputControl().getLabelForId(ii);
+            if (StringUtils.isNotEmpty(inputId))
+            {   // input_id was given
+                if (forInput.equals("*"))
+                    label.setFor(inputId);
+                else
+                    label.setFor(forInput+":"+inputId);
+            }
             else
-                label.setFor(forInput+":"+inputId);
+            {   // No input-id available
+                log.info("No input-id provided for {}.", getColumn().getName());
+            }    
         }    
 
         // style