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);
}