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 2010/05/25 20:56:47 UTC

svn commit: r948169 - in /myfaces/trinidad/trunk: src/site/xdoc/devguide/ trinidad-examples/trinidad-demo/src/main/webapp/skins/purple/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/

Author: jwaldman
Date: Tue May 25 18:56:47 2010
New Revision: 948169

URL: http://svn.apache.org/viewvc?rev=948169&view=rev
Log:
TRINIDAD-1745 Introduce @mode in CSS files
patch by Marius Petoi

Modified:
    myfaces/trinidad/trunk/src/site/xdoc/devguide/skinning.xml
    myfaces/trinidad/trunk/trinidad-examples/trinidad-demo/src/main/webapp/skins/purple/purpleSkin.css
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinCSSDocumentHandler.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetNode.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java

Modified: myfaces/trinidad/trunk/src/site/xdoc/devguide/skinning.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/src/site/xdoc/devguide/skinning.xml?rev=948169&r1=948168&r2=948169&view=diff
==============================================================================
--- myfaces/trinidad/trunk/src/site/xdoc/devguide/skinning.xml (original)
+++ myfaces/trinidad/trunk/src/site/xdoc/devguide/skinning.xml Tue May 25 18:56:47 2010
@@ -903,6 +903,10 @@ public class SkinTranslationMapDemo
         This is to define styles only for a particular language and country.
         </li>
         <li>
+        <strong>@mode</strong> {/skin definitions go here/} - >
+        Possible values are quirks or standards. This is to define styles particular only for browser quirks or standard mode.
+        </li>
+        <li>
         <strong>:rtl</strong> - >  pseudo-class to create a style or icon definition when the browser 
         is in a right-to-left language. The best example is that of images that are not symmetric.
         If you set a skin selector that uses a asymmetrical image, when you set your browser to

Modified: myfaces/trinidad/trunk/trinidad-examples/trinidad-demo/src/main/webapp/skins/purple/purpleSkin.css
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-examples/trinidad-demo/src/main/webapp/skins/purple/purpleSkin.css?rev=948169&r1=948168&r2=948169&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-examples/trinidad-demo/src/main/webapp/skins/purple/purpleSkin.css (original)
+++ myfaces/trinidad/trunk/trinidad-examples/trinidad-demo/src/main/webapp/skins/purple/purpleSkin.css Tue May 25 18:56:47 2010
@@ -34,13 +34,18 @@ af|foo af|bar {color: purple; background
   font-size: medium;
 }
 
-
-af|foo {font-style:italic; font-size: large;}
-af|commandButton
+@mode quirks
+{
+  af|foo {font-style:italic; font-size: large;}
+}
+@mode standards
 {
-  max-width: 100px;
-  background-color: -tr-property-ref(".AFTestBackgroundColor:alias"); 
-  font-style: -tr-property-ref("af|foo");
+  af|commandButton
+  {
+    max-width: 100px;
+    background-color: -tr-property-ref(".AFTestBackgroundColor:alias");
+    font-style: -tr-property-ref("af|foo");
+  }
 }
 
 /* test the new include property functionality */

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinCSSDocumentHandler.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinCSSDocumentHandler.java?rev=948169&r1=948168&r2=948169&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinCSSDocumentHandler.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinCSSDocumentHandler.java Tue May 25 18:56:47 2010
@@ -34,6 +34,7 @@ import java.util.LinkedList;
 import org.apache.myfaces.trinidad.context.Version;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 import org.apache.myfaces.trinidadinternal.agent.TrinidadAgent;
+import org.apache.myfaces.trinidadinternal.style.util.ModeUtils;
 import org.apache.myfaces.trinidadinternal.style.util.NameUtils;
 import org.apache.myfaces.trinidadinternal.style.util.StyleUtils;
 import org.apache.myfaces.trinidadinternal.style.xml.parse.PropertyNode;
@@ -117,7 +118,8 @@ public class SkinCSSDocumentHandler
                                      _locales,
                                      _agentAtRuleMatcher,
                                      _selectorPlatforms,
-                                     _getSelectorAccProperties());
+                                     _getSelectorAccProperties(),
+                                     _mode);
        _completeSelectorNodeList.add(node);
     }
     // reset flags
@@ -200,6 +202,10 @@ public class SkinCSSDocumentHandler
       {
         _parseCustomAtRule(_AT_ACC_PROFILE, atRule);
       }
+      else if (atRule.startsWith(_AT_MODE))
+      {
+        _parseCustomAtRule(_AT_MODE, atRule);
+      }
       // for now, ignore other atRules in a skinning css file
       
     }
@@ -244,6 +250,10 @@ public class SkinCSSDocumentHandler
       if (!_selectorAccPropertiesStack.isEmpty())
         _selectorAccPropertiesStack.removeLast();
     }
+    else if (_AT_MODE.equals(type))
+    {
+      _mode = ModeUtils.MODE_DEFAULT;
+    }
   }
   
    // create a CompleteSelectorNode (this is the selector, properties, and
@@ -254,7 +264,8 @@ public class SkinCSSDocumentHandler
     Set<Locale>                locales,
     AgentAtRuleMatcher         agentMatcher,
     int[]                      selectorPlatforms,
-    Set<String>                selectorAccProperties)
+    Set<String>                selectorAccProperties,
+    int                        mode)
   {
     // parse the selector to see if there is a :rtl or :ltr ending.
     // if so, then set the reading direction.
@@ -282,7 +293,8 @@ public class SkinCSSDocumentHandler
         direction,
         agentMatcher,
         selectorPlatforms,
-        selectorAccProperties);
+        selectorAccProperties,
+        mode);
   }
 
   /**
@@ -308,6 +320,7 @@ public class SkinCSSDocumentHandler
       int[] platforms = completeSelectorNode.getPlatforms();
       Set<Locale> locales = completeSelectorNode.getLocales();
       Set<String> accProperties = completeSelectorNode.getAccessibilityProperties();
+      int mode = completeSelectorNode.getMode();
 
       // loop through the skinStyleSheetNodeList to find a match
       // of direction, agents, platforms, etc.
@@ -318,7 +331,7 @@ public class SkinCSSDocumentHandler
       for (int i = skinStyleSheetNodes.size() - 1; i >= 0 && !match; --i)
       {
         SkinStyleSheetNode ssNode = skinStyleSheetNodes.get(i);
-        match = ssNode.matches(direction, agentMatcher, platforms, locales, accProperties);
+        match = ssNode.matches(direction, agentMatcher, platforms, locales, accProperties, mode);
 
         if (match)
           ssNode.add(completeSelectorNode.getSkinSelectorPropertiesNode());
@@ -328,7 +341,7 @@ public class SkinCSSDocumentHandler
       {
         // no matching stylesheet node found, so create a new one
         SkinStyleSheetNode ssNode =
-         new SkinStyleSheetNode(namespaceMap, direction, locales, agentMatcher, platforms, accProperties);
+         new SkinStyleSheetNode(namespaceMap, direction, locales, agentMatcher, platforms, accProperties, mode);
         ssNode.add(completeSelectorNode.getSkinSelectorPropertiesNode());
         skinStyleSheetNodes.add(ssNode);
       }
@@ -413,6 +426,10 @@ public class SkinCSSDocumentHandler
 
         _selectorAccPropertiesStack.add(set);
       }
+      else if (_AT_MODE.equals(type))
+      {
+        _mode = NameUtils.getMode(typeArray[0].trim());
+      }
     }
   }
  
@@ -529,7 +546,8 @@ public class SkinCSSDocumentHandler
       int                        direction,
       AgentAtRuleMatcher         agentMatcher,
       int[]                      platforms,
-      Set<String>                accProperties
+      Set<String>                accProperties,
+      int                        mode
       )
     {
       _node = new SkinSelectorPropertiesNode(selectorName, propertyNodes);
@@ -553,6 +571,7 @@ public class SkinCSSDocumentHandler
       {
         _accProperties = null;
       }
+      _mode = mode;
     }
     
     public SkinSelectorPropertiesNode getSkinSelectorPropertiesNode()
@@ -588,6 +607,11 @@ public class SkinCSSDocumentHandler
       return _accProperties;
     }
 
+    public int getMode()
+    {
+      return _mode;
+    }
+
     // Returns a copy of the int array
     private static int[] _copyIntArray(int[] array)
     {
@@ -606,12 +630,14 @@ public class SkinCSSDocumentHandler
     private final int[] _platforms;
     private final Set<Locale> _locales; 
     private final Set<String> _accProperties;
+    private int _mode;
   }
 
   private static final String _AT_AGENT = "@agent";
   private static final String _AT_PLATFORM = "@platform";
   private static final String _AT_LOCALE = "@locale";
   private static final String _AT_ACC_PROFILE = "@accessibility-profile";
+  private static final String _AT_MODE = "@mode";
 
   // below are properties that we set and reset
   // as the methods of this documentHandler get called.
@@ -631,6 +657,9 @@ public class SkinCSSDocumentHandler
   // the locales of the selectors parsed in this document.
   private Set<Locale> _locales = null;
 
+  //the mode for which the parsed selectors are valid.
+  private int _mode = ModeUtils.MODE_DEFAULT;
+
   // Stack of accessibility property sets.  While java.util.Stack has the
   // push/pop API that we want, we don't need the synchronization, so we
   // just use a LinkedList instead and pretend its a stack.

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetNode.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetNode.java?rev=948169&r1=948168&r2=948169&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetNode.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetNode.java Tue May 25 18:56:47 2010
@@ -44,7 +44,8 @@ class SkinStyleSheetNode
     int                              direction,
     Set<Locale>                      locales,
     AgentAtRuleMatcher               agentMatcher,
-    Set<String>                      accProperties)
+    Set<String>                      accProperties,
+    int                              mode)
   {
     _skinSelectorNodeList = skinSelectorNodeList;
     _namespaceMap = namespaceMap;
@@ -53,6 +54,7 @@ class SkinStyleSheetNode
     _agentMatcher = agentMatcher;
     _platforms     = null;
     _accProperties = accProperties;
+    _mode = mode;
   }
 
   SkinStyleSheetNode(
@@ -61,7 +63,8 @@ class SkinStyleSheetNode
     Set<Locale>                locales,
     AgentAtRuleMatcher         agentMatcher,
     int[]                      platforms,
-    Set<String>                accProperties)
+    Set<String>                accProperties,
+    int                        mode)
   {
     _namespaceMap = namespaceMap;
     _direction = direction;
@@ -69,6 +72,7 @@ class SkinStyleSheetNode
     _agentMatcher = agentMatcher;
     _platforms = platforms;
     _accProperties = accProperties;
+    _mode = mode;
   }
 
   public void add(SkinSelectorPropertiesNode node)
@@ -123,6 +127,11 @@ class SkinStyleSheetNode
     return _locales;
   }
 
+  public int getMode()
+  {
+    return _mode;
+  }
+
   public Set<String> getAcessibilityProperties()
   {
     return _accProperties;
@@ -133,7 +142,8 @@ class SkinStyleSheetNode
     AgentAtRuleMatcher         agentMatcher,
     int[]                      platforms,
     Set<Locale>                locales,
-    Set<String>                accProperties)
+    Set<String>                accProperties,
+    int                        mode)
   {
     if (direction == _direction)
     {
@@ -149,7 +159,11 @@ class SkinStyleSheetNode
           {
             boolean accMatch = _setsEqual(accProperties, _accProperties);
             if (accMatch)
-             return true;
+            {
+              boolean modeMatch = (mode == _mode);
+              if (modeMatch)
+                return true;
+            }
           }
         }
       }
@@ -183,4 +197,5 @@ class SkinStyleSheetNode
   private final int[] _platforms;
   private final Set<Locale> _locales;
   private final Set<String> _accProperties;
+  private final int _mode;
 }

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java?rev=948169&r1=948168&r2=948169&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java Tue May 25 18:56:47 2010
@@ -277,7 +277,7 @@ class SkinStyleSheetParserUtils
                              skinSSNode.getDirection(),
                              skinSSNode.getAgentMatcher(),
                              skinSSNode.getPlatforms(),
-                             0,
+                             skinSSNode.getMode(),
                              skinSSNode.getAcessibilityProperties());
         ssNodeList.add(ssNode);
       }