You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by jw...@apache.org on 2013/02/04 21:57:30 UTC

svn commit: r1442351 - in /myfaces/trinidad/trunk: trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/p...

Author: jwaldman
Date: Mon Feb  4 20:57:29 2013
New Revision: 1442351

URL: http://svn.apache.org/viewvc?rev=1442351&view=rev
Log:
TRINIDAD-2358 add "features" support in the trinidad-skins to the "skin-addition" node
thanks to Gary VanMatre for the patch

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinAddition.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinExtension.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNode.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNodeParser.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/resources/org/apache/myfaces/trinidadinternal/ui/laf/xml/schemas/skin/trinidad-skins.xsd

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinAddition.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinAddition.java?rev=1442351&r1=1442350&r2=1442351&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinAddition.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/skin/SkinAddition.java Mon Feb  4 20:57:29 2013
@@ -20,6 +20,8 @@ package org.apache.myfaces.trinidad.skin
 
 import java.util.Collections;
 
+import java.util.Map;
+
 import javax.el.ValueExpression;
 
 import javax.faces.el.ValueBinding;
@@ -65,6 +67,7 @@ public class SkinAddition
     _resourceBundleName = resourceBundleName;
     _translationSourceVE = null;
     _translationSourceVB = null;
+    _skinFeatures = null;
   }
 
   /**
@@ -79,6 +82,7 @@ public class SkinAddition
     _resourceBundleName = null;
     _translationSourceVE = translationSourceValueExpression;
     _translationSourceVB = null;
+    _skinFeatures = null;
   }
   /**
    * Constructor takes a styleSheet name. resource bundle name and 
@@ -92,6 +96,68 @@ public class SkinAddition
     _resourceBundleName = null;
     _translationSourceVE = null;
     _translationSourceVB = null;
+    _skinFeatures = null;
+  }
+  
+  /**
+   * Constructor takes a styleSheet name and a resourceBundle name.
+   */
+  public SkinAddition (
+    String styleSheetName,
+    String resourceBundleName,
+    Map<String, String> features
+    )
+  {
+    _styleSheetName = styleSheetName;
+    _resourceBundleName = resourceBundleName;
+    _translationSourceVE = null;
+    _translationSourceVB = null;
+    _skinFeatures = features;
+  }
+  
+  /**
+   * Constructor takes a styleSheet name and a translationSource ValueExpression.
+   */
+  public SkinAddition (
+    String       styleSheetName,
+    ValueExpression translationSourceValueExpression,
+    Map<String, String> features
+    )
+  {
+    _styleSheetName = styleSheetName;
+    _resourceBundleName = null;
+    _translationSourceVE = translationSourceValueExpression;
+    _translationSourceVB = null;
+    _skinFeatures = features;
+  }
+  /**
+   * Constructor takes a styleSheet name. resource bundle name and 
+   * translation source value expression will be null.
+   */
+  public SkinAddition (
+    String styleSheetName,
+    Map<String, String> features
+    )
+  {
+    _styleSheetName = styleSheetName;
+    _resourceBundleName = null;
+    _translationSourceVE = null;
+    _translationSourceVB = null;
+    _skinFeatures = features;
+  }
+  
+  /**
+   * Constructor takes only features.
+   */
+  public SkinAddition (
+    Map<String, String> features
+    )
+  {
+    _styleSheetName = null;
+    _resourceBundleName = null;
+    _translationSourceVE = null;
+    _translationSourceVB = null;
+    _skinFeatures = features;
   }
   
   /**
@@ -108,6 +174,7 @@ public class SkinAddition
     _resourceBundleName = null;
     _translationSourceVE = null;
     _translationSourceVB = translationSourceValueBinding;
+    _skinFeatures = null;
   }
   
   /**
@@ -150,11 +217,20 @@ public class SkinAddition
   public ValueBinding getTranslationSourceValueBinding()
   {
     return _translationSourceVB;
-  } 
+  }
+
+  /**
+   * Gets any skin features added through the skin addition
+   */
+  public Map<String, String> getSkinFeatures()
+  {
+    return _skinFeatures;
+  }
  
   private final String       _styleSheetName;
   private final String       _resourceBundleName;
   private final ValueExpression _translationSourceVE;
   private final ValueBinding _translationSourceVB;
+  private final Map<String, String> _skinFeatures;
   
 }

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinExtension.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinExtension.java?rev=1442351&r1=1442350&r2=1442351&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinExtension.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinExtension.java Mon Feb  4 20:57:29 2013
@@ -20,6 +20,7 @@ package org.apache.myfaces.trinidadinter
 
 import java.io.IOException;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.MissingResourceException;
 import java.util.Stack;
@@ -31,6 +32,7 @@ import org.apache.myfaces.trinidad.conte
 import org.apache.myfaces.trinidad.context.RenderingContext;
 import org.apache.myfaces.trinidad.skin.Skin;
 import org.apache.myfaces.trinidad.skin.Icon;
+import org.apache.myfaces.trinidad.skin.SkinAddition;
 import org.apache.myfaces.trinidad.skin.SkinVersion;
 import org.apache.myfaces.trinidadinternal.skin.icon.ReferenceIcon;
 
@@ -325,6 +327,19 @@ public class SkinExtension extends SkinI
     {
       allFeatures.putAll(_skinFeatures);
     }
+    
+    List<SkinAddition> additions = getSkinAdditions();
+    if(additions != null && additions.size() > 0)
+    {
+      for(SkinAddition addition : additions)
+      {
+        Map<String, String> additionFeatures = addition.getSkinFeatures();
+        if(additionFeatures != null && additionFeatures.size() > 0)
+        {
+          allFeatures.putAll(additionFeatures);
+        }
+      }
+    }
     return allFeatures;
   }
   

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java?rev=1442351&r1=1442350&r2=1442351&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java Mon Feb  4 20:57:29 2013
@@ -828,12 +828,13 @@ public class SkinUtils
       String skinId = skinAdditionNode.getSkinId();
       String styleSheetName = skinAdditionNode.getStyleSheetName();
       String resourceBundleName = skinAdditionNode.getResourceBundleName();
-      String translationSourceExpression =
+      String translationSourceExpression = 
         skinAdditionNode.getTranslationSourceExpression();
-
+      Map<String, String> features = skinAdditionNode.getSkinFeatures();
+      SkinAddition addition = null;
       Skin skin = skinFactory.getSkin(fContext, skinId);
-      if (skin != null
-          && ((styleSheetName != null)
+      if (skin != null 
+          && ((styleSheetName != null) 
               || (resourceBundleName != null)
               || (translationSourceExpression != null)))
       {
@@ -843,13 +844,10 @@ public class SkinUtils
         if (isMetaInfFile && (styleSheetName != null))
             styleSheetName = _prependMetaInf(styleSheetName);
 
-
-        SkinAddition addition = null;
-
         if (resourceBundleName != null)
         {
-          // create SkinAddition with resourceBundleName
-          addition = new SkinAddition(styleSheetName, resourceBundleName);
+          // create SkinAddition with resourceBundleName 
+          addition = new SkinAddition(styleSheetName, resourceBundleName, features);
         }
         else
         {
@@ -862,22 +860,25 @@ public class SkinUtils
 
           if (translationSourceVE != null)
           {
-            // Create a SkinAddition with translationSourceVE
-            addition = new SkinAddition(styleSheetName, translationSourceVE);
+            // Create a SkinAddition with translationSourceVE 
+            addition = new SkinAddition(styleSheetName, translationSourceVE, features);
 
           }
           else
           {
-            // Create a SkinAddition with stylesheetName only
-            addition = new SkinAddition(styleSheetName);
+            // Create a SkinAddition with stylesheetName only 
+            addition = new SkinAddition(styleSheetName, features);
 
           }
-
         }
-
-        skin.addSkinAddition(addition);
       }
-    }
+      else if(features != null)
+      {
+        addition = new SkinAddition(features);
+      }
+      if(addition != null)
+        skin.addSkinAddition(addition);
+    }    
   }
 
   /**

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNode.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNode.java?rev=1442351&r1=1442350&r2=1442351&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNode.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNode.java Mon Feb  4 20:57:29 2013
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.trinidadinternal.skin.parse;
 
+import java.util.Map;
+
 /**
  * Object which represents a single &lt;skin-addition&gt; element in trinidad-skins.xml.
  *
@@ -44,6 +46,19 @@ public class SkinAdditionNode implements
     _translationSourceExpression = translationSourceExpression;
   }
   
+  public SkinAdditionNode (
+    String skinId,
+    String styleSheetName,
+    String resourceBundleName,
+    String translationSourceExpression,
+    SkinFeaturesNode featuresNode
+    )
+  {
+    this(skinId, styleSheetName, resourceBundleName, translationSourceExpression);
+    if(featuresNode != null)
+      setSkinFeatures(featuresNode.getSkinFeatures());
+  }
+  
   public String getSkinId()
   {
     return _skinId;
@@ -87,6 +102,16 @@ public class SkinAdditionNode implements
     return _translationSourceExpression;
   } 
   
+  public void setSkinFeatures(Map<String, String> skinFeatures)
+  {
+    _skinFeatures = skinFeatures;
+  }
+
+  public Map<String, String> getSkinFeatures()
+  {
+    return _skinFeatures;
+  }
+  
   // Sort by the name of the stylesheet
   public int compareTo(SkinAdditionNode node)
   {
@@ -97,5 +122,6 @@ public class SkinAdditionNode implements
   private String _styleSheetName;
   private String _resourceBundleName;
   private String _translationSourceExpression;
+  private Map<String, String> _skinFeatures;
 
 }

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNodeParser.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNodeParser.java?rev=1442351&r1=1442350&r2=1442351&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNodeParser.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/parse/SkinAdditionNodeParser.java Mon Feb  4 20:57:29 2013
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.trinidadinternal.skin.parse;
 
+import java.util.Map;
+
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 import org.apache.myfaces.trinidadinternal.share.xml.StringParser;
 import org.xml.sax.Attributes;
@@ -75,7 +77,7 @@ public class SkinAdditionNodeParser exte
     }
 
     return new SkinAdditionNode(_skinId, _styleSheetName,
-                                _resourceBundleName, _translationSourceExpression);
+                                _resourceBundleName, _translationSourceExpression, _skinFeatures);
   }
 
   @Override
@@ -95,7 +97,10 @@ public class SkinAdditionNodeParser exte
     {
       return new StringParser();
     }
-
+    else if ("features".equals(localName))
+    {
+      return context.getParser(SkinFeaturesNode.class, namespaceURI, localName);
+    }
     return null;
   }
 
@@ -116,12 +121,17 @@ public class SkinAdditionNodeParser exte
       _resourceBundleName = (String) child;
     else if ("translation-source".equals(localName))
       _translationSourceExpression = (String) child;
+    else if ("features".equals(localName))
+    {
+      _skinFeatures = (SkinFeaturesNode) child; 
+    }
   }
 
   private String _skinId;
   private String _styleSheetName;
   private String _resourceBundleName;
   private String _translationSourceExpression;
+  private SkinFeaturesNode _skinFeatures;
 
 
   private static final TrinidadLogger _LOG = 

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/resources/org/apache/myfaces/trinidadinternal/ui/laf/xml/schemas/skin/trinidad-skins.xsd
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/resources/org/apache/myfaces/trinidadinternal/ui/laf/xml/schemas/skin/trinidad-skins.xsd?rev=1442351&r1=1442350&r2=1442351&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/resources/org/apache/myfaces/trinidadinternal/ui/laf/xml/schemas/skin/trinidad-skins.xsd (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/resources/org/apache/myfaces/trinidadinternal/ui/laf/xml/schemas/skin/trinidad-skins.xsd Mon Feb  4 20:57:29 2013
@@ -140,7 +140,12 @@
         </xsd:annotation>
       </xsd:element>
       <xsd:element ref="skin:bundleSource" minOccurs="0" maxOccurs="1" />
-      <xsd:element ref="skin:metadata" minOccurs="0" maxOccurs="1" />
+      <xsd:element name="features" type="skin:featuresType" minOccurs="0" maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>Collection of features that a skin may require during rendering.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element ref="skin:metadata" minOccurs="0" maxOccurs="1" />    
     </xsd:sequence>
   </xsd:complexType>
   <!-- Use XSD "inheritance" of the substitution group to avoid the use of xsd:choice as it