Author: jwaldman
Date: Thu Feb 8 12:57:22 2007
New Revision: 505034
URL: http://svn.apache.org/viewvc?view=rev&rev=505034
Log:
I changed my implementation for
http://issues.apache.org/jira/browse/ADFFACES-370 (Need to avoid IE's number of
CSS selectors limitation
) AGAIN
In Skin's getStyleClassMap(RenderingContext) we get the StyleContext from the
RenderingContext.
This is fine, but the problem I found is that from FileSystemStyleCache the
StyleContext is not yet set up on the RenderingContext, so calling
getStyleContext caused it to run through all the code that processes all the
skin files again (they are cached, so it doesn't get stuck in a loop). Still,
this is obviously not good.
If we could pass StyleContext to getStyleClassMap, then that would be good, but
StyleContext is not in the public api. That's why we pass in RenderingContext.
The change I made was to go back to looking to see if the skin's renderKitId is
portlet. We don't compress if portlet.
Modified:
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleProvider.java
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java
Modified:
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleProvider.java
URL:
http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleProvider.java?view=diff&rev=505034&r1=505033&r2=505034
==============================================================================
---
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleProvider.java
(original)
+++
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleProvider.java
Thu Feb 8 12:57:22 2007
@@ -210,27 +210,6 @@
return name;
}
-
- /**
- * Returns a boolean to say whether or not we should compress the styles
that are
- * written to the generated css file. We look at the skin to decide.
- * @param shortStyleClassMap
- * @return true if we want to compress styles; i.e., if the
shortStyleClassMap we are using
- * to output to the generated CSS matches the styleClassMap of the skin and
the disable content
- * compression flag is not turned on.
- */
- protected boolean isCompressGeneratedStyles(Map<String, String>
shortStyleClassMap)
- {
- Map skinsStyleClassMap = _skin.getStyleClassMap(
- RenderingContext.getCurrentInstance());
- String disableContentCompression =
- FacesContext.getCurrentInstance().getExternalContext().
- getInitParameter(StyleSheetRenderer.DISABLE_CONTENT_COMPRESSION);
- boolean compressStyles = (skinsStyleClassMap == shortStyleClassMap) &&
- !"true".equals(disableContentCompression);
- return compressStyles;
- }
-
// Returns a Map which hashes ProviderKeys to shared instances
// of SkinStyleProviders.
private static Map<ProviderKey, StyleProvider> _getProviders()
Modified:
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java
URL:
http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java?view=diff&rev=505034&r1=505033&r2=505034
==============================================================================
---
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java
(original)
+++
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java
Thu Feb 8 12:57:22 2007
@@ -50,6 +50,8 @@
import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
import org.apache.myfaces.trinidad.context.LocaleContext;
import org.apache.myfaces.trinidad.context.RenderingContext;
+import org.apache.myfaces.trinidad.skin.Skin;
+import org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit;
import
org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.StyleSheetRenderer;
import org.apache.myfaces.trinidadinternal.share.xml.JaxpXMLProvider;
import org.apache.myfaces.trinidadinternal.share.xml.XMLProvider;
@@ -349,16 +351,6 @@
return buffer.toString();
}
- /**
- * Returns a boolean to say whether or not we should compress the styles
that are
- * written to the generated css file. The default implementation returns
false.
- *
- */
- protected boolean isCompressGeneratedStyles(Map<String, String>
shortStyleClassMap)
- {
- return false;
- }
-
// Returns the current StyleSheetDocument - used by StyleMapImpl only
StyleSheetDocument __getStyleSheetDocument()
{
@@ -448,6 +440,7 @@
return entry;
// If we didn't find an entry in the cache, create a new entry
+ // This generates the CSS file.
return _createEntry(context,
document,
cache,
@@ -716,8 +709,18 @@
// Write out the style sheet
// First figure out whether or not we need to compress the style classes.
// We don't compress the style classes if the content compression flag is
disabled or
- // if the skin's styleClassMap does not match our shortStyleClassMap.
- boolean compressStyles = isCompressGeneratedStyles(shortStyleClassMap);
+ // if the skin is a portlet skin.
+ String disableContentCompression =
+ FacesContext.getCurrentInstance().getExternalContext().
+ getInitParameter(StyleSheetRenderer.DISABLE_CONTENT_COMPRESSION);
+ // we do not compress if it is a portlet skin
+ Skin skin = RenderingContext.getCurrentInstance().getSkin();
+ boolean isPortletSkin =
+ CoreRenderKit.OUTPUT_MODE_PORTLET.equals(skin.getRenderKitId());
+
+ boolean compressStyles = (!"true".equals(disableContentCompression)) &&
+ !isPortletSkin;
+
CSSGenerationUtils.writeCSS(context,
styles,