Author: alexsmirnov
Date: 2007-12-06 18:59:35 -0500 (Thu, 06 Dec 2007)
New Revision: 4582
Added:
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java
branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties
Modified:
branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java
branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java
branches/3.1.x/framework/api/src/main/java/org/richfaces/skin/Skin.java
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/org/w3c/tidy/PPrint.java
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/ToXHTMLStream.java
Log:
Merge from trunk :
fix for
http://jira.jboss.com/jira/browse/RF-851
fix for
http://jira.jboss.com/jira/browse/RF-1512
Modified:
branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java
===================================================================
---
branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java 2007-12-06
23:56:51 UTC (rev 4581)
+++
branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -49,7 +49,6 @@
public static final int RESOURCE_URI_PREFIX_LENGTH = RESOURCE_URI_PREFIX.length();
public static final String DATA_SEPARATOR = "/DATA/";
static public final long DEFAULT_EXPIRE = 1000L * 60L * 60L * 24L;// 1 day
-
/**
* @param resourceContext current {@link ResourceContext}
* @return Returns the contentLength.
Modified:
branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java
===================================================================
---
branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java 2007-12-06
23:56:51 UTC (rev 4581)
+++
branches/3.1.x/framework/api/src/main/java/org/ajax4jsf/resource/InternetResourceBuilder.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -38,6 +38,13 @@
public abstract class InternetResourceBuilder {
private static final Log log = LogFactory.getLog(InternetResourceBuilder.class);
+ public static final String LOAD_NONE = "NONE";
+ public static final String LOAD_ALL = "ALL";
+ public static final String COMMON_FRAMEWORK_SCRIPT =
"/org/ajax4jsf/framework.pack.js";
+ public static final String COMMON_UI_SCRIPT = "/org/richfaces/ui.pack.js";
+ public static final String COMMON_STYLE = "/org/richfaces/skin.xcss";
+ public static final String LOAD_STYLE_STRATEGY_PARAM =
"org.richfaces.LoadStyleStrategy";
+ public static final String LOAD_SCRIPT_STRATEGY_PARAM =
"org.richfaces.LoadScriptStrategy";
/**
* Get application start time for check resources modification time.
Modified: branches/3.1.x/framework/api/src/main/java/org/richfaces/skin/Skin.java
===================================================================
--- branches/3.1.x/framework/api/src/main/java/org/richfaces/skin/Skin.java 2007-12-06
23:56:51 UTC (rev 4581)
+++ branches/3.1.x/framework/api/src/main/java/org/richfaces/skin/Skin.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -241,6 +241,8 @@
public static final String panelTextColor = "panelTextColor";
+ public static final String loadStyleSheets = "loadStyleSheets";
+
// Preferable parameters
/**
* Preferable parameters names for skin ( in common, for Preferable.Name
Modified:
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
===================================================================
---
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java 2007-12-06
23:56:51 UTC (rev 4581)
+++
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -28,13 +28,11 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import javax.faces.FacesException;
-import javax.faces.FactoryFinder;
import javax.faces.application.Application;
import javax.faces.application.StateManager;
import javax.faces.application.ViewHandler;
@@ -47,8 +45,6 @@
import javax.faces.context.ResponseWriter;
import javax.faces.event.AbortProcessingException;
import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.render.Renderer;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@@ -56,13 +52,12 @@
import org.ajax4jsf.application.AjaxViewHandler;
import org.ajax4jsf.component.AjaxContainer;
import org.ajax4jsf.component.AjaxViewRoot;
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.context.ViewIdHolder;
import org.ajax4jsf.renderkit.AjaxContainerRenderer;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
-import org.ajax4jsf.renderkit.HeaderResourceProducer;
+import org.ajax4jsf.renderkit.RendererUtils;
import org.ajax4jsf.renderkit.UserResourceRenderer;
import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.ajax4jsf.resource.InternetResourceBuilder;
import org.ajax4jsf.webapp.BaseFilter;
import org.ajax4jsf.webapp.FilterServletResponseWrapper;
import org.apache.commons.logging.Log;
@@ -358,18 +353,49 @@
.debug("Process component tree for collect used scripts and styles");
}
UIViewRoot root = context.getViewRoot();
- Set scripts = new LinkedHashSet();
- Set styles = new LinkedHashSet();
- Set userScripts = new LinkedHashSet();
- Set userStyles = new LinkedHashSet();
- RenderKitFactory rkFactory = (RenderKitFactory)
FactoryFinder
-
.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
- RenderKit renderKit = rkFactory.getRenderKit(context,
context
- .getViewRoot().getRenderKitId());
- processHeadResources(context, root, scripts, userScripts,
styles, userStyles, renderKit);
- // Append user scripts after components.
- scripts.addAll(userScripts);
- styles.addAll(userStyles);
+ ViewResources viewResources = new ViewResources();
+ try {
+ Skin skin = SkinFactory.getInstance().getSkin(
+ context);
+ // Set default style sheet for current skin.
+ String styleSheetUri = (String) skin.getParameter(context,
+ Skin.generalStyleSheet);
+ if(null != styleSheetUri){
+ String resourceURL = context.getApplication()
+ .getViewHandler().getResourceURL(context,
+ styleSheetUri);
+ viewResources.addStyle(resourceURL);
+ }
+ // For a "NULL" skin, do not collect components stylesheets
+ if("false".equals(skin.getParameter(context, Skin.loadStyleSheets))){
+ viewResources.setProcessStyles(false);
+ }
+ } catch (SkinNotFoundException e) {
+ log.warn("Current Skin is not found", e);
+ }
+ InternetResourceBuilder internetResourceBuilder =
InternetResourceBuilder.getInstance();
+ // Check init parameters for a resources processing.
+ String scriptStrategy =
externalContext.getInitParameter(InternetResourceBuilder.LOAD_SCRIPT_STRATEGY_PARAM);
+ if(null != scriptStrategy){
+ if(InternetResourceBuilder.LOAD_NONE.equals(scriptStrategy)){
+ viewResources.setProcessScripts(false);
+ } else if (InternetResourceBuilder.LOAD_ALL.equals(scriptStrategy)) {
+ viewResources.setProcessScripts(false);
+ viewResources.addScript(internetResourceBuilder.createResource(this,
InternetResourceBuilder.COMMON_FRAMEWORK_SCRIPT).getUri(context, null));
+ viewResources.addScript(internetResourceBuilder.createResource(this,
InternetResourceBuilder.COMMON_UI_SCRIPT).getUri(context, null));
+ }
+ }
+ String styleStrategy =
externalContext.getInitParameter(InternetResourceBuilder.LOAD_STYLE_STRATEGY_PARAM);
+ if(null != styleStrategy){
+ if(InternetResourceBuilder.LOAD_NONE.equals(styleStrategy)){
+ viewResources.setProcessStyles(false);
+ } else if (InternetResourceBuilder.LOAD_ALL.equals(styleStrategy)) {
+ viewResources.setProcessStyles(false);
+ viewResources.addStyle(internetResourceBuilder.createResource(this,
InternetResourceBuilder.COMMON_STYLE).getUri(context, null));
+ }
+ }
+ viewResources.collect(context);
+ Set scripts = viewResources.getScripts();
if (scripts.size() > 0) {
if (log.isDebugEnabled()) {
StringBuffer buff = new StringBuffer(
@@ -382,29 +408,7 @@
}
requestMap.put(SCRIPTS_PARAMETER, scripts);
}
- // Set default style sheet for current skin.
- String styleSheetUri = null;
- try {
- styleSheetUri = (String) SkinFactory.getInstance().getSkin(
- context).getParameter(context,
- Skin.generalStyleSheet);
- } catch (SkinNotFoundException e) {
- log.warn("Current Skin is not found", e);
- }
- if (null != styleSheetUri) {
- String resourceURL = context.getApplication()
- .getViewHandler().getResourceURL(context,
- styleSheetUri);
- // TODO - some resources can be non-session aware, we
- // must
- // skip encoding for this case ?
- // But, in common case - static links not need session
- // info,
- // and dynamic resources perform encodings if nessesary
- // resourceURL =
- // context.getExternalContext().encodeResourceURL(resourceURL);
- styles.add(resourceURL);
- }
+ Set styles = viewResources.getStyles();
if (styles.size() > 0) {
if (log.isDebugEnabled()) {
StringBuffer buff = new StringBuffer(
@@ -426,79 +430,6 @@
}
}
- /**
- * Append nessesary scripts and styles from component ( if renderer
- * implements {@link HeaderResourceProducer}) and recursive process all
- * facets and childrens.
- *
- * @param context
- * TODO
- * @param root
- * @param scripts
- * @param userScripts TODO
- * @param styles
- * @param userStyles TODO
- * @param renderKit
- * TODO
- */
- private void processHeadResources(FacesContext context, UIComponent root,
- Set scripts, Set userScripts, Set styles, Set userStyles,
RenderKit renderKit) {
- Renderer renderer = getRenderer(context, root, renderKit);
- if (null != renderer) {
- if (renderer instanceof HeaderResourceProducer) {
- HeaderResourceProducer producer =
(HeaderResourceProducer) renderer;
- Set set = producer.getHeaderScripts(context, root);
- if (null != set) {
- scripts.addAll(set);
- }
- set = producer.getHeaderStyles(context, root);
- if (null != set) {
- styles.addAll(set);
- }
- } else if (renderer instanceof UserResourceRenderer) {
- UserResourceRenderer producer = (UserResourceRenderer)
renderer;
- Set set = producer.getHeaderScripts(context, root);
- if (null != set) {
- userScripts.addAll(set);
- }
- set = producer.getHeaderStyles(context, root);
- if (null != set) {
- userStyles.addAll(set);
- }
- }
-
- }
- for (Iterator iter = root.getFacets().values().iterator(); iter
- .hasNext();) {
- UIComponent child = (UIComponent) iter.next();
- processHeadResources(context, child, scripts, userScripts,
styles, userStyles, renderKit);
- }
- for (Iterator iter = root.getChildren().iterator(); iter.hasNext();) {
- UIComponent child = (UIComponent) iter.next();
- processHeadResources(context, child, scripts, userScripts,
styles, userStyles, renderKit);
- }
- }
-
- /**
- * Find renderer for given component.
- *
- * @param context
- * @param comp
- * @param renderKit
- * @return
- */
- private Renderer getRenderer(FacesContext context, UIComponent comp,
- RenderKit renderKit) {
-
- String rendererType = comp.getRendererType();
- if (rendererType != null) {
- return (renderKit.getRenderer(comp.getFamily(), rendererType));
- } else {
- return (null);
- }
-
- }
-
public void saveViewState(FacesContext context) throws IOException {
// TODO - for facelets environment, we need to remove transient
// components.
@@ -596,7 +527,7 @@
/**
* Test for relative id of target components. Attempt convert to absolute.
* For use as argument for
- * {@link UIComponent#findComponent(java.lang.String)}
+ * {@link RendererUtils#findComponentFor(UIComponent, String)}
*
* @param component
* @param id
@@ -610,7 +541,8 @@
throw new NullPointerException(
"Base component for search re-rendered compnnent is null");
}
- UIComponent target = findComponentFor(component, id);
+ UIComponent target = RendererUtils.getInstance().
+ findComponentFor(component, id);
if (null != target) {
return AjaxRendererUtils.getAbsoluteId(target);
}
@@ -619,52 +551,6 @@
}
/**
- * @param component
- * @param id
- * @return
- */
- private UIComponent findComponentFor(UIComponent component, String id) {
- UIComponent target = null;
- UIComponent parent = component;
- UIComponent root = component;
- while (null == target && null != parent) {
- target = parent.findComponent(id);
- root = parent;
- parent = parent.getParent();
- }
- if (null == target) {
- target = findUIComponentBelow(root, id);
- }
- return target;
- }
-
- private UIComponent findUIComponentBelow(UIComponent root, String id) {
-
- UIComponent target = null;
- for (Iterator iter = root.getFacetsAndChildren(); iter.hasNext();) {
- UIComponent child = (UIComponent) iter.next();
- if (child instanceof NamingContainer) {
- try {
- target = child.findComponent(id);
- } catch (IllegalArgumentException iae) {
- continue;
- }
- }
- if (target == null) {
- if (child.getChildCount() > 0) {
- target = findUIComponentBelow(child, id);
- }
- }
-
- if (target != null) {
- break;
- }
-
- }
- return target;
- }
-
- /**
* @return Returns the ajaxRenderedAreas.
*/
public Set getAjaxRenderedAreas() {
@@ -813,8 +699,11 @@
"Illegal view Id for build AJAX Action URL: " + viewId);
}
ViewHandler viewHandler = context.getApplication().getViewHandler();
+ String actionURL = viewHandler.getActionURL(context, viewId);
+ // Mark Ajax action url as transparent with jsf-portlet bridge.
+ actionURL = actionURL +
((actionURL.lastIndexOf('?')>0)?"&":"?")+"javax.portlet.faces.DirectLink=true";
return context.getExternalContext().encodeActionURL(
- viewHandler.getActionURL(context, viewId));
+ actionURL);
}
/**
Copied:
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java (from
rev 4578, trunk/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java)
===================================================================
--- branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java
(rev 0)
+++
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/context/ViewResources.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -0,0 +1,166 @@
+/**
+ *
+ */
+package org.ajax4jsf.context;
+
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+
+import org.ajax4jsf.renderkit.HeaderResourceProducer;
+import org.ajax4jsf.renderkit.UserResourceRenderer;
+
+/**
+ * @author asmirnov
+ *
+ */
+public class ViewResources {
+
+ LinkedHashSet scripts = new LinkedHashSet();
+ LinkedHashSet styles = new LinkedHashSet();
+ LinkedHashSet userScripts = new LinkedHashSet();
+ LinkedHashSet userStyles = new LinkedHashSet();
+ boolean processStyles = true;
+ boolean processScripts = true;
+ RenderKit renderKit = null;
+
+ public void collect(FacesContext context) {
+ UIViewRoot root = context.getViewRoot();
+ RenderKitFactory rkFactory = (RenderKitFactory) FactoryFinder
+ .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+ renderKit = rkFactory.getRenderKit(context, context
+ .getViewRoot().getRenderKitId());
+ processHeadResources(context, root);
+ styles.addAll(userStyles);
+ scripts.addAll(userScripts);
+ }
+
+ /**
+ * Append nessesary scripts and styles from component ( if renderer
+ * implements {@link HeaderResourceProducer}) and recursive process all
+ * facets and childrens.
+ *
+ * @param context
+ * TODO
+ * @param root
+ */
+ private void processHeadResources(FacesContext context, UIComponent root) {
+ Renderer renderer = getRenderer(context, root);
+ if (null != renderer) {
+ if ((processScripts || processStyles ) && renderer instanceof
HeaderResourceProducer) {
+ HeaderResourceProducer producer = (HeaderResourceProducer) renderer;
+ if (processScripts) {
+ Set set = producer.getHeaderScripts(context, root);
+ if (null != set) {
+ scripts.addAll(set);
+ }
+
+ }
+ if (processStyles) {
+ Set set = producer.getHeaderStyles(context, root);
+ if (null != set) {
+ styles.addAll(set);
+ }
+
+ }
+ } else if (renderer instanceof UserResourceRenderer) {
+ UserResourceRenderer producer = (UserResourceRenderer) renderer;
+ Set set = producer.getHeaderScripts(context, root);
+ if (null != set) {
+ userScripts.addAll(set);
+ }
+ set = producer.getHeaderStyles(context, root);
+ if (null != set) {
+ userStyles.addAll(set);
+ }
+ }
+
+ }
+ for (Iterator iter = root.getFacets().values().iterator(); iter
+ .hasNext();) {
+ UIComponent child = (UIComponent) iter.next();
+ processHeadResources(context, child);
+ }
+ for (Iterator iter = root.getChildren().iterator(); iter.hasNext();) {
+ UIComponent child = (UIComponent) iter.next();
+ processHeadResources(context, child);
+ }
+ }
+
+ /**
+ * Find renderer for given component.
+ *
+ * @param context
+ * @param comp
+ * @param renderKit
+ * @return
+ */
+ private Renderer getRenderer(FacesContext context, UIComponent comp) {
+
+ String rendererType = comp.getRendererType();
+ if (rendererType != null) {
+ return (renderKit.getRenderer(comp.getFamily(), rendererType));
+ } else {
+ return (null);
+ }
+
+ }
+
+ /**
+ * @return the processStyles
+ */
+ public boolean isProcessStyles() {
+ return processStyles;
+ }
+
+ /**
+ * @param processStyles the processStyles to set
+ */
+ public void setProcessStyles(boolean processStyles) {
+ this.processStyles = processStyles;
+ }
+
+ /**
+ * @return the processScripts
+ */
+ public boolean isProcessScripts() {
+ return processScripts;
+ }
+
+ /**
+ * @param processScripts the processScripts to set
+ */
+ public void setProcessScripts(boolean processScripts) {
+ this.processScripts = processScripts;
+ }
+
+ /**
+ * @return the scripts
+ */
+ public Set getScripts() {
+ return scripts;
+ }
+
+ /**
+ * @return the styles
+ */
+ public Set getStyles() {
+ return styles;
+ }
+
+ public void addScript(String scriptUrl) {
+ scripts.add(scriptUrl);
+ }
+
+ public void addStyle(String styleUrl) {
+ styles.add(styleUrl);
+ }
+}
Modified:
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/org/w3c/tidy/PPrint.java
===================================================================
---
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/org/w3c/tidy/PPrint.java 2007-12-06
23:56:51 UTC (rev 4581)
+++
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/org/w3c/tidy/PPrint.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -1047,13 +1047,13 @@
}
// look for ASP, Tango or PHP instructions for computed attribute value
- if (valueChars != null && valueChars.length >= 5 &&
valueChars[0] == '<')
- {
- if (valueChars[1] == '%' || valueChars[1] == '@' || (new
String(valueChars, 0, 5)).equals("<?php"))
- {
- mode |= CDATA;
- }
- }
+// if (valueChars != null && valueChars.length >= 5 &&
valueChars[0] == '<')
+// {
+// if (valueChars[1] == '%' || valueChars[1] == '@' || (new
String(valueChars, 0, 5)).equals("<?php"))
+// {
+// mode |= CDATA;
+// }
+// }
if (delim == 0)
{
Modified:
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
===================================================================
---
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java 2007-12-06
23:56:51 UTC (rev 4581)
+++
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -285,7 +285,8 @@
if (null != ajaxAreas) {
for (Iterator iter = ajaxAreas.iterator(); iter.hasNext();) {
String id = (String) iter.next();
- UIComponent comp = uiComponent.findComponent(id);
+ UIComponent comp = RendererUtils.getInstance().
+ findComponentFor(uiComponent, id);
if (null != comp) {
areasIds.add(comp.getClientId(facesContext));
} else {
@@ -541,24 +542,9 @@
statusId = (String) component.getAttributes().get(STATUS_ATTR_NAME);
}
if (null != statusId) {
- UIComponent status = null;
- UIComponent currentParent = component;
- try {
- // Check the naming container of the current
- // component for component identified by
- // 'forComponent'
- while (currentParent != null) {
- // If the current component is a NamingContainer,
- // see if it contains what we're looking for.
- status = currentParent.findComponent(statusId);
- if (status != null)
- break;
- // if not, start checking further up in the view
- currentParent = currentParent.getParent();
- }
- } catch (Exception e) {
- // ignore - log the warning
- }
+ UIComponent status = RendererUtils.getInstance().
+ findComponentFor(component, statusId);
+
if (null != status) {
statusId = status
.getClientId(FacesContext.getCurrentInstance());
Modified:
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
===================================================================
---
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2007-12-06
23:56:51 UTC (rev 4581)
+++
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -55,7 +55,11 @@
*
*/
public class RendererUtils {
+
+ //we'd better use this instance multithreadly quickly
+ private static final RendererUtils instance = new RendererUtils();
+
public static final String DUMMY_FORM_ID = ":_form";
/**
* Substitutions for components properies names and HTML attributes names.
@@ -69,6 +73,14 @@
Arrays.sort(HTML.PASS_THRU_URI);
}
+ /**
+ * Use this method to get singleton instance of RendererUtils
+ * @return singleton instance
+ */
+ public static RendererUtils getInstance() {
+ return instance;
+ }
+
/**
* Common HTML elements and attributes names.
*
@@ -803,13 +815,18 @@
writer.endElement(HTML.SCRIPT_ELEM);
}
+
+ public UIComponent findComponentFor(FacesContext context,
+ UIComponent component, String id) {
+ return findComponentFor(component,id);
+ }
+
/**
* @param component
* @param id
* @return
*/
- public UIComponent findComponentFor(FacesContext context,
- UIComponent component, String id) {
+ public UIComponent findComponentFor(UIComponent component, String id) {
UIComponent target = null;
UIComponent parent = component;
UIComponent root = component;
Modified:
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java
===================================================================
---
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java 2007-12-06
23:56:51 UTC (rev 4581)
+++
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/webapp/nekko/NekkoParser.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -362,8 +362,14 @@
} else if ("head".equalsIgnoreCase(element.rawname)) {
haveHead = true;
super.startElement(element, attributes, augs);
- insertResources();
+ // insertResources();
return;
+ } else if (haveHead) {
+ // <title> or <base> in the head
+ if (!("title".equalsIgnoreCase(element.rawname) || "base"
+ .equalsIgnoreCase(element.rawname))) {
+ insertResources();
+ }
} else {
if (!haveHtml) {
insertStartElement("html");
@@ -374,7 +380,7 @@
}
}
- if (isStateMarker(element, attributes)) {
+ if (stateMarkerLevel <0 && isStateMarker(element, attributes)) {
stateMarkerLevel = 0;
return;
}
@@ -464,7 +470,13 @@
}
}
if (!headParsed) {
- if ("head".equalsIgnoreCase(name.rawname)) {
+ if (haveHead) {
+ // <title> or <base> in the head
+ if (!("title".equalsIgnoreCase(name.rawname) || "base"
+ .equalsIgnoreCase(name.rawname))) {
+ insertResources();
+ }
+ } else if ("head".equalsIgnoreCase(name.rawname)) {
haveHead = true;
super.startElement(name, attributes, augmentation);
insertResources();
Modified:
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/ToXHTMLStream.java
===================================================================
---
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/ToXHTMLStream.java 2007-12-06
23:56:51 UTC (rev 4581)
+++
branches/3.1.x/framework/impl/src/main/java/org/ajax4jsf/xml/serializer/ToXHTMLStream.java 2007-12-06
23:59:35 UTC (rev 4582)
@@ -966,7 +966,7 @@
{
ElemContext elemContext = m_elemContext;
- final ElemDesc elemDesc = elemContext.m_elementDesc;
+ final ElemDesc elemDesc = elemContext.m_elementDesc !=
null?elemContext.m_elementDesc:m_dummy;
final int elemFlags = elemDesc.getFlags();
final boolean elemEmpty = (elemFlags & ElemDesc.EMPTY) != 0;
Added:
branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties
===================================================================
--- branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties
(rev 0)
+++
branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties 2007-12-06
23:59:35 UTC (rev 4582)
@@ -0,0 +1,65 @@
+loadStyleSheets=false
+#Colors
+headerBackgroundColor=#D4CFC7
+headerGradientColor=#EDEAE6
+headerTextColor=#000000
+headerWeightFont=bold
+
+generalBackgroundColor=#FFFFFF
+generalTextColor=#000000
+generalSizeFont=11px
+generalFamilyFont=Arial, Verdana, sans-serif
+
+controlTextColor=#000000
+controlBackgroundColor=#ffffff
+additionalBackgroundColor=#F1EEE9
+
+shadowBackgroundColor=#000000
+shadowOpacity=1
+
+panelBorderColor=#C4C0B9
+subBorderColor=#ffffff
+
+tabBackgroundColor=#E3DED5
+tabDisabledTextColor=#B1ADA7
+
+trimColor=#DFDCD5
+
+tipBackgroundColor=\#FAE6B0
+tipBorderColor=\#E5973E
+
+selectControlColor=#E79A00
+
+
+generalLinkColor=#0078D0
+hoverLinkColor=#0090FF
+visitedLinkColor=#0090FF
+
+# Fonts
+headerSizeFont=11px
+headerFamilyFont=Arial, Verdana, sans-serif
+
+tabSizeFont=11
+tabFamilyFont=Arial, Verdana, sans-serif
+
+buttonSizeFont=11
+buttonFamilyFont=Arial, Verdana, sans-serif
+
+tableBackgroundColor=#FFFFFF
+tableFooterBackgroundColor=#cccccc
+tableSubfooterBackgroundColor=#f1f1f1
+tableBorderColor=#C4C0C9
+tableBorderWidth=1px
+
+
+#Calendar colors
+calendarWeekBackgroundColor=#F1EEE9
+
+calendarHolidaysBackgroundColor=#FFEBDA
+calendarHolidaysTextColor=#FF7800
+
+calendarCurrentBackgroundColor=#FF7800
+calendarCurrentTextColor=#FFEBDA
+
+calendarSpecBackgroundColor=#F1EEE9
+calendarSpecTextColor=#000000
Property changes on:
branches/3.1.x/framework/impl/src/main/resources/META-INF/skins/NULL.skin.properties
___________________________________________________________________
Name: svn:mime-type
+ text/plain