You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2011/04/05 21:26:42 UTC

svn commit: r1089168 - in /myfaces/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/ tobago-core/src/main/java/org/apache/myfaces/tobago/util/ tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/m...

Author: bommel
Date: Tue Apr  5 19:26:42 2011
New Revision: 1089168

URL: http://svn.apache.org/viewvc?rev=1089168&view=rev
Log:
(TOBAGO-110) After validation of a mandatory field there is no jump to the correct tab in tabGroup

Modified:
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasCurrentMarkup.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
    myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TabGroupRenderer.java

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasCurrentMarkup.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasCurrentMarkup.java?rev=1089168&r1=1089167&r2=1089168&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasCurrentMarkup.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasCurrentMarkup.java Tue Apr  5 19:26:42 2011
@@ -28,6 +28,6 @@ public interface HasCurrentMarkup {
    */
   @UIComponentTagAttribute(
       type = "org.apache.myfaces.tobago.context.Markup",
-      defaultCode = "getMarkup()")
+      isTransient = true)
   void setCurrentMarkup(String markup);
 }

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java?rev=1089168&r1=1089167&r2=1089168&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java Tue Apr  5 19:26:42 2011
@@ -899,7 +899,29 @@ public class ComponentUtils {
     return false;
   }
 
-  public static String[] getChildrenWithMessages(FacesContext facesContext, NamingContainer  container) {
+  public static FacesMessage.Severity getMaximumSeverityOfChildrenMessages(FacesContext facesContext,
+      NamingContainer container) {
+    if (container instanceof UIComponent) {
+      String clientId = ((UIComponent) container).getClientId(facesContext);
+      FacesMessage.Severity max = null;
+      for (Iterator ids = facesContext.getClientIdsWithMessages(); ids.hasNext();) {
+        String id = (String) ids.next();
+        if (id.startsWith(clientId)) {
+          final Iterator messages = facesContext.getMessages(id);
+          while (messages.hasNext()) {
+            FacesMessage message = (FacesMessage) messages.next();
+            if (max == null || message.getSeverity().getOrdinal() > max.getOrdinal()) {
+              max = message.getSeverity();
+            }
+          }
+        }
+      }
+      return max;
+    }
+    return null;
+  }
+
+  public static String[] getChildrenWithMessages(FacesContext facesContext, NamingContainer container) {
     if (container instanceof UIComponent) {
       List<String> clientIds = new ArrayList<String>();
       String clientId = ((UIComponent) container).getClientId(facesContext);

Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TabGroupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TabGroupRenderer.java?rev=1089168&r1=1089167&r2=1089168&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TabGroupRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TabGroupRenderer.java Tue Apr  5 19:26:42 2011
@@ -51,6 +51,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import java.io.IOException;
@@ -115,7 +116,8 @@ public class TabGroupRenderer extends La
     int index = 0;
     for (UIComponent tab : (List<UIComponent>) tabGroup.getChildren()) {
       if (tab instanceof UITab) {
-        if (tab.isRendered()) {
+        if (tab.isRendered() //&& (UITabGroup.SWITCH_TYPE_CLIENT.equals(switchType) || index == activeIndex)
+          ) {
           encodeContent(writer, facesContext, (UITab) tab, index);
         }
         index++;
@@ -186,13 +188,10 @@ public class TabGroupRenderer extends La
           LabelWithAccessKey label = new LabelWithAccessKey(tab);
           if (activeIndex == index) {
             tab.setCurrentMarkup(tab.getCurrentMarkup().add(Markup.SELECTED));
-          } else {
-            tab.setCurrentMarkup(tab.getCurrentMarkup().remove(Markup.SELECTED));
           }
-          if (ComponentUtils.hasChildrenWithMessages(facesContext, tab)) {
-            tab.setCurrentMarkup(tab.getCurrentMarkup().add(Markup.ERROR));
-          } else {
-            tab.setCurrentMarkup(tab.getCurrentMarkup().remove(Markup.ERROR));
+          FacesMessage.Severity maxSeverity = ComponentUtils.getMaximumSeverityOfChildrenMessages(facesContext, tab);
+          if (maxSeverity != null) {
+            tab.setCurrentMarkup(tab.getCurrentMarkup().add(ComponentUtils.markupOfSeverity(maxSeverity)));
           }
           writer.startElement(HtmlElements.DIV, tab);
           writer.writeClassAttribute(Classes.create(tab));