Author: nbelaevski
Date: 2008-07-23 10:57:02 -0400 (Wed, 23 Jul 2008)
New Revision: 9751
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/context/RenderPhaseViewResourcesVisitor.java
Log:
Invalid order of skin resources fixed
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/context/RenderPhaseViewResourcesVisitor.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/context/RenderPhaseViewResourcesVisitor.java 2008-07-23
14:08:31 UTC (rev 9750)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/context/RenderPhaseViewResourcesVisitor.java 2008-07-23
14:57:02 UTC (rev 9751)
@@ -156,11 +156,21 @@
private boolean useSkinning;
private boolean ajaxRequest;
+ private String skinStyleSheetUri;
+ private String skinExtendedStyleSheetUri;
+ private Skin skin;
+
protected ResourceRenderer getScriptRenderer() {
+ if (scriptRenderer == null) {
+ scriptRenderer = resourceBuilder.getRenderer(".js");
+ }
return scriptRenderer;
}
protected ResourceRenderer getStyleRenderer() {
+ if (styleRenderer == null) {
+ styleRenderer = resourceBuilder.getRenderer(".css");
+ }
return styleRenderer;
}
@@ -187,8 +197,7 @@
RenderKit renderKit, InternetResourceBuilder resourceBuilder,
HeadResponseWriter component,
HeadResponseWriter user,
- ResourceRenderer scriptRenderer,
- ResourceRenderer styleRenderer, boolean ajaxRequest) {
+ boolean ajaxRequest, Skin skin) {
super();
this.processScripts = processScripts;
this.processStyles = processStyles;
@@ -197,11 +206,8 @@
this.resourceBuilder = resourceBuilder;
this.component = component;
this.user = user;
-
- this.scriptRenderer = scriptRenderer;
- this.styleRenderer = styleRenderer;
-
this.ajaxRequest = ajaxRequest;
+ this.skin = skin;
}
}
@@ -293,32 +299,20 @@
.debug("Process component tree for collect used scripts and styles");
}
- String skinStyleSheetUri = null;
- String skinExtendedStyleSheetUri = null;
-
+ Skin skin = null;
try {
- Skin skin = SkinFactory.getInstance().getSkin(context);
+ skin = SkinFactory.getInstance().getSkin(context);
// For a "NULL" skin, do not collect components stylesheets
if ("false".equals(skin.getParameter(context,
Skin.loadStyleSheets))) {
processStyles = false;
}
-
- // Set default style sheet for current skin.
- skinStyleSheetUri = (String) skin.getParameter(context,
- Skin.generalStyleSheet);
- // Set default style sheet for current skin.
- skinExtendedStyleSheetUri = (String) skin.getParameter(context,
- Skin.extendedStyleSheet);
} catch (SkinNotFoundException e) {
log.warn("Current Skin is not found", e);
}
InternetResourceBuilder internetResourceBuilder = InternetResourceBuilder
.getInstance();
- ResourceRenderer scriptRenderer =
internetResourceBuilder.getRenderer(".js");
- ResourceRenderer styleRenderer =
internetResourceBuilder.getRenderer(".css");
-
ResponseWriter oldResponseWriter = context.getResponseWriter();
HeadResponseWriter componentWriter = new HeadResponseWriter("component");
@@ -330,32 +324,6 @@
context.setResponseWriter(componentWriter);
- // Append Skin StyleSheet after a
- if (null != skinStyleSheetUri) {
- String resourceURL = context.getApplication()
- .getViewHandler().getResourceURL(context,
- skinStyleSheetUri);
-
- InternetResourceImpl resourceImpl = new InternetResourceImpl();
- resourceImpl.setUri(resourceURL);
- resourceImpl.setRenderer(styleRenderer);
- resourceImpl.encode(context, null);
-
- useSkinning = true;
- }
-
- if (null != skinExtendedStyleSheetUri && extendedSkinningAllowed) {
- String resourceURL =
context.getApplication().getViewHandler().getResourceURL(context,
- skinExtendedStyleSheetUri);
-
- InternetResourceImpl resourceImpl = new InternetResourceImpl();
- resourceImpl.setUri(resourceURL);
- resourceImpl.setRenderer(styleRenderer);
- resourceImpl.encode(context, null, EXTENDED_SKINNING);
-
- useSkinning = true;
- }
-
// Check init parameters for a resources processing.
String scriptStrategy = externalContext
.getInitParameter(InternetResourceBuilder.LOAD_SCRIPT_STRATEGY_PARAM);
@@ -431,8 +399,7 @@
.getViewRoot().getRenderKitId());
result = new State(processScripts, processStyles, useSkinning, renderKit,
- internetResourceBuilder, componentWriter, userWriter,
- scriptRenderer, styleRenderer, ajaxRequest);
+ internetResourceBuilder, componentWriter, userWriter, ajaxRequest, skin);
}
}
return result;
@@ -539,33 +506,70 @@
Map<String,Object> requestMap = externalContext.getRequestMap();
State state = (State) object;
+ String skinStyleSheetUri = null;
+ String skinExtendedStyleSheetUri = null;
+
+ if (state.skin != null) {
+ // Set default style sheet for current skin.
+ skinStyleSheetUri = (String) state.skin.getParameter(context,
+ Skin.generalStyleSheet);
+ // Set default style sheet for current skin.
+ skinExtendedStyleSheetUri = (String) state.skin.getParameter(context,
+ Skin.extendedStyleSheet);
+ }
+
+ boolean useSkinning = state.useSkinning;
try {
- if (state.useSkinning && extendedSkinningAllowed) {
- ResponseWriter oldWriter = context.getResponseWriter();
-
- try {
- HeadResponseWriter responseWriter = state.getComponentWriter();
- if (!state.ajaxRequest) {
- //skinning levels aren't dynamic, page-level setting cannot be changed
- //by AJAX request
- responseWriter.startElement("script", null);
- responseWriter.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
- responseWriter.writeText("window.RICH_FACES_SKINNING_ON=true;", null);
- responseWriter.endElement("script");
- }
-
- context.setResponseWriter(responseWriter);
-
- if (state.processScripts) {
- InternetResource resource = state.resourceBuilder.createResource(null,
- "/org/richfaces/renderkit/html/scripts/skinning.js");
+ ResponseWriter oldWriter = context.getResponseWriter();
- resource.encode(context, null);
- }
-
- } finally {
- context.setResponseWriter(oldWriter);
+ try {
+ HeadResponseWriter responseWriter = state.getComponentWriter();
+ context.setResponseWriter(responseWriter);
+
+ // Append Skin StyleSheet after a
+ if (null != skinStyleSheetUri) {
+ String resourceURL = context.getApplication()
+ .getViewHandler().getResourceURL(context,
+ skinStyleSheetUri);
+
+ InternetResourceImpl resourceImpl = new InternetResourceImpl();
+ resourceImpl.setUri(resourceURL);
+ resourceImpl.setRenderer(state.getStyleRenderer());
+ resourceImpl.encode(context, null);
+
+ useSkinning = true;
}
+
+ if (null != skinExtendedStyleSheetUri && extendedSkinningAllowed) {
+ String resourceURL =
context.getApplication().getViewHandler().getResourceURL(context,
+ skinExtendedStyleSheetUri);
+
+ InternetResourceImpl resourceImpl = new InternetResourceImpl();
+ resourceImpl.setUri(resourceURL);
+ resourceImpl.setRenderer(state.getStyleRenderer());
+ resourceImpl.encode(context, null, EXTENDED_SKINNING);
+
+ useSkinning = true;
+ }
+
+ if (!state.ajaxRequest && useSkinning && extendedSkinningAllowed) {
+ //skinning levels aren't dynamic, page-level setting cannot be changed
+ //by AJAX request
+ responseWriter.startElement("script", null);
+ responseWriter.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
+ responseWriter.writeText("window.RICH_FACES_SKINNING_ON=true;", null);
+ responseWriter.endElement("script");
+ }
+
+ if (state.processScripts) {
+ InternetResource resource = state.resourceBuilder.createResource(null,
+ "/org/richfaces/renderkit/html/scripts/skinning.js");
+
+ resource.encode(context, null);
+ }
+
+ } finally {
+ context.setResponseWriter(oldWriter);
}
state.getComponentWriter().endDocument();
@@ -576,7 +580,6 @@
Object[] stateEvents = state.getEvents();
- log.debug(Arrays.toString(stateEvents));
if (log.isDebugEnabled()) {
log.debug(Arrays.toString(stateEvents));
}