Author: alexsmirnov
Date: 2007-07-09 21:10:15 -0400 (Mon, 09 Jul 2007)
New Revision: 1560
Added:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AJAXDataSerializer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxChildrenRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxComponentRendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxContainerRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxPhaseListener.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxViewRootRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKit.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKitFactory.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKitImpl.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentRendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentUtils.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentVariables.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentsVariableResolver.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/HeaderResourcesRendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/PrototypeBasedRendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
Removed:
trunk/framework/impl/src/main/java/org/ajax4jsf/dnd/taglib/DropSourceMetaRule.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AJAXDataSerializer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxChildrenRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxComponentRendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxContainerRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxPhaseListener.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxRendererUtils.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxViewRootRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKit.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitFactory.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitImpl.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentRendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentUtils.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentVariables.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentsVariableResolver.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/HeaderResourcesRendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/PrototypeBasedRendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererUtils.java
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxStateManager.java
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java
trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java
trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/BreakPoint.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/ElementBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/HtmlCompiler.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/MethodParameterElement.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/PreparedTemplate.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/ResourceElement.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/TemplateContext.java
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/taglib/HtmlComponentTagBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSRenderer.java
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseFilter.java
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseXMLFilter.java
trunk/framework/impl/src/main/java/org/richfaces/component/UISwitchablePanel.java
trunk/framework/impl/src/main/java/org/richfaces/component/util/FormUtil.java
trunk/framework/impl/src/main/java/org/richfaces/renderkit/CompositeRenderer.java
trunk/framework/impl/src/main/java/org/richfaces/renderkit/InputRendererBase.java
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java
trunk/framework/impl/src/main/resources/META-INF/faces-config.xml
trunk/framework/test/src/main/java/org/ajax4jsf/tests/AbstractAjax4JsfTestCase.java
trunk/framework/test/src/test/java/org/ajax4jsf/framework/renderer/BeforeRendererListenerTestCase.java
trunk/ui/core/src/main/java/org/ajax4jsf/component/EventValueBinding.java
trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxRegion.java
trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxStatus.java
trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxSupport.java
trunk/ui/core/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java
trunk/ui/core/src/main/java/org/ajax4jsf/component/UISelector.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/AjaxCommandRendererBase.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/AjaxFunctionRendererBase.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/LoadResourceRendererBase.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxFormRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxIncludeRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxOutputPanelRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPageRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPollRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPushRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxRegionRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxStatusRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/HtmlCommandLinkRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/MediaOutputRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/RepeatRenderer.java
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxReRendrRule.java
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/KeepAliveHandler.java
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/jsp/AjaxSupportTag.java
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/jsp/KeepAliveTag.java
trunk/ui/core/src/main/templates/org/ajax4jsf/renderkit/html/log.jspx
trunk/ui/dataFilterSlider/src/main/java/org/richfaces/renderkit/DataFilterSliderRendererBase.java
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractCellRenderer.java
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractDefinitionListRenderer.java
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractGridRenderer.java
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractListRenderer.java
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/html/ColgroupRenderer.java
trunk/ui/dataTable/src/main/templates/org/richfaces/htmlSubTable.jspx
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DnDValidator.java
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DraggableRendererContributor.java
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DropzoneRendererContributor.java
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/html/DragSupportRenderer.java
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/html/DropSupportRenderer.java
trunk/ui/dropdown-menu/src/main/java/org/richfaces/renderkit/html/DropDownMenuRendererBase.java
trunk/ui/gmap/src/main/templates/gmap.jspx
trunk/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuGroupRendererBase.java
trunk/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuItemRendererBase.java
trunk/ui/menu-components/src/main/templates/org/richfaces/htmlMenuSeparator.jspx
trunk/ui/modal-panel/src/main/java/org/richfaces/renderkit/ModalPanelRendererBase.java
trunk/ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DRenderer.java
trunk/ui/panel/src/main/templates/panel.jspx
trunk/ui/separator/src/main/java/org/richfaces/renderkit/html/SeparatorRendererBase.java
trunk/ui/simpleTogglePanel/src/main/java/org/richfaces/renderkit/html/SimpleTogglePanelRenderer.java
trunk/ui/spacer/src/main/templates/spacer.jspx
trunk/ui/suggestionbox/src/main/java/org/richfaces/component/UISuggestionBox.java
trunk/ui/suggestionbox/src/main/java/org/richfaces/renderkit/html/SuggestionBoxRenderer.java
trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITab.java
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabHeaderRendererBase.java
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java
trunk/ui/togglePanel/src/main/java/org/richfaces/component/UIToggleControl.java
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/ToggleControlRenderer.java
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarGroupRenderer.java
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarRendererBase.java
trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
trunk/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java
trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
Log:
packages and classes refactor in the "impl" project
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxStateManager.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxStateManager.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxStateManager.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -27,7 +27,7 @@
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.AjaxPhaseListener;
+import org.ajax4jsf.renderkit.AjaxPhaseListener;
/**
* @author shura
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -37,9 +37,9 @@
import org.ajax4jsf.component.AjaxViewRoot;
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.context.ViewIdHolder;
-import org.ajax4jsf.framework.renderer.AjaxContainerRenderer;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.AjaxContainerRenderer;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.InternetResourceBuilder;
import org.apache.commons.logging.Log;
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -40,7 +40,7 @@
import org.ajax4jsf.context.InvokerCallback;
import org.ajax4jsf.context.ViewIdHolder;
import org.ajax4jsf.event.AjaxListener;
-import org.ajax4jsf.framework.renderer.AjaxContainerRenderer;
+import org.ajax4jsf.renderkit.AjaxContainerRenderer;
import org.apache.commons.collections.Buffer;
import org.apache.commons.collections.BufferUnderflowException;
import org.apache.commons.collections.UnboundedFifoBuffer;
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -58,10 +58,10 @@
import org.ajax4jsf.component.AjaxViewRoot;
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.context.ViewIdHolder;
-import org.ajax4jsf.framework.renderer.AjaxContainerRenderer;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.AjaxContainerRenderer;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.ajax4jsf.renderkit.HeaderResourceProducer;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.webapp.BaseFilter;
import org.ajax4jsf.webapp.FilterServletResponseWrapper;
import org.apache.commons.logging.Log;
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/dnd/taglib/DropSourceMetaRule.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/dnd/taglib/DropSourceMetaRule.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/dnd/taglib/DropSourceMetaRule.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,77 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * Copyright
- * Copyright (c) Exadel,Inc. 2006
- * All rights reserved.
- *
- * History
- * $Source:
/cvs/ajax4jsf/framework/src/main/java/org/ajax4jsf/dnd/taglib/Attic/DropSourceMetaRule.java,v
$
- * $Revision: 1.1.2.1 $
- */
-
-package org.ajax4jsf.dnd.taglib;
-
-import javax.faces.el.MethodBinding;
-
-import org.richfaces.event.DropEvent;
-import org.richfaces.event.DropSource;
-
-import com.sun.facelets.FaceletContext;
-import com.sun.facelets.tag.MetaRule;
-import com.sun.facelets.tag.Metadata;
-import com.sun.facelets.tag.MetadataTarget;
-import com.sun.facelets.tag.TagAttribute;
-
-/**
- * @author Maksim Kaszynski
- *
- */
-public class DropSourceMetaRule extends MetaRule {
-
- public static final DropSourceMetaRule INSTANCE = new DropSourceMetaRule();
- private static final Class [] SIGNATURE = {DropEvent.class};
-
- private class DropListenerMetaData extends Metadata {
-
- private TagAttribute tagAttribute;
-
- public DropListenerMetaData(TagAttribute attribute) {
- tagAttribute = attribute;
- }
-
- public void applyMetadata(FaceletContext ctx, Object instance) {
- MethodBinding binding =
ctx.getFacesContext().getApplication().createMethodBinding(tagAttribute.getValue(),
SIGNATURE);
- ((DropSource) instance).setDropListener(binding);
- }
- }
-
-
- public Metadata applyRule(String name, TagAttribute attribute,
- MetadataTarget meta) {
- if ("dropListener".equals(name)) {
- return new DropListenerMetaData(attribute);
- }
- return null;
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AJAXDataSerializer.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AJAXDataSerializer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AJAXDataSerializer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,45 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-
-
-import org.ajax4jsf.javascript.ScriptUtils;
-
-/**
- * @author shura
- *
- */
-public class AJAXDataSerializer {
-
- public static final String SERVICE = AJAXDataSerializer.class.getName();
-
- public String asString(Object data) {
- StringBuffer result = new StringBuffer();
- if(null != data){
- result.append("<![CDATA[ ");
- result.append(ScriptUtils.toScript(data));
- result.append(" ]]>");
- }
- return result.toString();
- }
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxChildrenRenderer.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxChildrenRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxChildrenRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,189 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-
-import org.ajax4jsf.Messages;
-import org.ajax4jsf.component.AjaxChildrenEncoder;
-import org.ajax4jsf.component.AjaxOutput;
-import org.ajax4jsf.renderkit.AjaxRenderer;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * @author shura
- *
- */
-public abstract class AjaxChildrenRenderer extends AjaxComponentRendererBase implements
AjaxRenderer {
-
- public static final Log log = LogFactory.getLog(AjaxChildrenRenderer.class);
-
- public static final String[] SPECIAL_COMPONENTS_TYPES = {
- "org.ajax4jsf.Bundle"/*UILoadBundle.COMPONENT_TYPE*/,
"org.apache.myfaces.AliasBean",
- "org.apache.myfaces.AliasBeansScope" };
- private static final String SPECIAL_TYPES_PARAMETER =
"org.ajax4jsf.CONTROL_COMPONENTS";
-
- /**
- * Iterate over all childs of components. If component id contains in list ,
- * or, if list is empty, compotents is submitted form - render it. TODO -
- * Instead of calculate full path for every component, build current Path
- * for componet and send as parameter.
- *
- * @param context -
- * current context
- * @param component -
- * curent faces component.
- * @param ids -
- * list of Id to render.
- * @throws IOException
- * @deprecated Use {@link #encodeAjaxChildren(FacesContext,UIComponent,String,Set,Set)}
instead
- */
- public void encodeAjaxChild(FacesContext context, UIComponent component, String path,
Set ids, Set renderedAreas) throws IOException {
- encodeAjaxChildren(context, component, path, ids, renderedAreas);
- }
-
- /* (non-Javadoc)
- * @see
org.ajax4jsf.renderkit.AjaxRenderer#encodeAjaxChildren(javax.faces.context.FacesContext,
javax.faces.component.UIComponent, java.lang.String, java.util.Set, java.util.Set)
- */
- public void encodeAjaxChildren(FacesContext context, UIComponent component, String path,
Set ids, Set renderedAreas) throws IOException {
- if (log.isDebugEnabled()) {
- log.debug(Messages.getMessage(Messages.ENCODE_CHILD_AJAX_INFO,
- path, component.getId()));
- }
- String currentPath = path;
- if (component instanceof NamingContainer) {
- currentPath += component.getId() + NamingContainer.SEPARATOR_CHAR;
- }
- for (Iterator it = component.getFacetsAndChildren(); it.hasNext();) {
- UIComponent element = (UIComponent) it.next();
- encodeAjaxComponent(context, element, currentPath, ids, renderedAreas);
- }
- }
-
- /* (non-Javadoc)
- * @see
org.ajax4jsf.renderkit.AjaxRenderer#encodeAjaxComponent(javax.faces.context.FacesContext,
javax.faces.component.UIComponent, java.lang.String, java.util.Set, java.util.Set)
- */
- public void encodeAjaxComponent(FacesContext context, UIComponent component, String
currentPath, Set ids, Set renderedAreas) throws IOException {
- if (component.isRendered()) { // skip not-rendered components.
- boolean found = false;
- if (!ids.isEmpty()) {
- // list for rendering may contains absolute id ( best ),
- // component Id or client ID
- String elementId = component.getId();
- String absoluteId = currentPath + elementId;
- // String clientId = element.getClientId(context);
- if (ids.contains(absoluteId) || ids.contains(elementId)) {
- if (log.isDebugEnabled()) {
- log
- .debug(Messages.getMessage(
- Messages.RENDER_AJAX_AREA_INFO,
- absoluteId));
- }
- // renderChild(context, element);
- found = true;
- }
- }
- if (!found && component instanceof AjaxOutput) {
- if (((AjaxOutput) component).isAjaxRendered()) {
- // renderChild(context, element);
- found = true;
- }
-
- }
-
- if (!found) {
- if (component instanceof AjaxChildrenEncoder) {
- ((AjaxChildrenEncoder) component).encodeAjaxChild(
- context, currentPath, ids, renderedAreas);
- } else {
- // Special case - for control components, not produced
- // html code - such as message bundles loaders,
- // MyFaces aliases etc. we call encodeBegin/end methods
- // even if components not in rendered areas.
- boolean special = isSpecialElement(context, component);
- if (special) {
- component.encodeBegin(context);
- }
- encodeAjaxChildren(context, component, currentPath, ids,
- renderedAreas);
- if (special) {
- component.encodeEnd(context);
- }
-
- }
- } else {
- renderedAreas.add(component.getClientId(context));
- renderChild(context, component);
- }
- }
- }
-
- private Set _specialComponentTypes = null;
-
- /**
- * Detect component as special control case - such as messages bundle
- * loader, alias bean components etc. Type of component get by reflection
- * from static field COMPONENT_TYPE
- *
- * @param context
- * @param component
- * @return true if encode methods must be called for this component even in
- * not-rendered parts.
- */
- private boolean isSpecialElement(FacesContext context, UIComponent component) {
- if (_specialComponentTypes == null) {
- _specialComponentTypes = new HashSet(10);
- for (int i = 0; i < SPECIAL_COMPONENTS_TYPES.length; i++) {
- _specialComponentTypes.add(SPECIAL_COMPONENTS_TYPES[i]);
- }
- String special = context.getExternalContext().getInitParameter(
- SPECIAL_TYPES_PARAMETER);
- if (null != special) {
- String[] split = special.split(",");
- for (int i = 0; i < split.length; i++) {
- _specialComponentTypes.add(split[i]);
- }
- }
- }
- boolean result;
- try {
- String componentType = (String) component.getClass().getField(
- "COMPONENT_TYPE").get(null);
- result = _specialComponentTypes.contains(componentType);
- } catch (Exception e) {
- // exception occurs if component not have accesible COMPONENT_TYPE
- // constant
- // we assume that component not in special types.
- result = false;
- }
- return result;
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxComponentRendererBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxComponentRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxComponentRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,93 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import org.ajax4jsf.javascript.AjaxScript;
-import org.ajax4jsf.renderkit.HeaderResourceProducer;
-import org.ajax4jsf.resource.InternetResource;
-
-
-/**
- * Base class for all Ajax enabled components. Perform common task -
- * output javasript for component.
- * @author shura (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:49 $
- *
- */
-public abstract class AjaxComponentRendererBase extends HeaderResourcesRendererBase
implements HeaderResourceProducer {
-
-// private InternetResource ajaxScript =
getResource("/com/exadel/vcp/framework/ajax/scripts/AJAX.js");
- private static final String AJAX_SCRIPT = AjaxScript.class.getName();
-
- private InternetResource[] scripts = null;
-
- /* (non-Javadoc)
- * @see
org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderScripts(javax.faces.context.FacesContext)
- */
-// public LinkedHashSet getHeaderScripts(FacesContext context, UIComponent component) {
-// LinkedHashSet scripts = new LinkedHashSet() ; //
Collections.singleton(ajaxScript.getUri(context, null));
-// scripts.add(ajaxScript.getUri(context, component));
-// String[] additionalScripts = getAdditionalScripts();
-// if (null != additionalScripts) {
-// for (int i = 0; i < additionalScripts.length; i++) {
-// String resource = additionalScripts[i];
-// scripts.add(getResource(resource).getUri(context, component));
-// }
-// }
-// return scripts;
-// }
-
-
-
- /* (non-Javadoc)
- * @see org.ajax4jsf.renderkit.HeaderResourcesRendererBase#getScripts()
- */
- protected InternetResource[] getScripts() {
- // Lazy create
- if (scripts == null) {
- InternetResource[] additionalScripts = getAdditionalScripts();
- // Custom scripts
- if (null != additionalScripts) {
- scripts = new InternetResource[additionalScripts.length+1];
- System.arraycopy(additionalScripts,0,scripts,1,additionalScripts.length);
- } else {
- scripts = new InternetResource[1];
- }
- // Ajax script
- scripts[0] = getResource(AJAX_SCRIPT);
- }
-
- return scripts;
- }
-
-
-
- /**
- * Hoock method for append custom ajax scripts
- * @return
- */
- protected InternetResource[] getAdditionalScripts() {
- return null;
- }
-
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxContainerRenderer.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxContainerRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxContainerRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,166 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.Set;
-
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-
-import org.ajax4jsf.Messages;
-import org.ajax4jsf.component.AjaxContainer;
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.event.AjaxEvent;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Base renderer for all AJAX - subview components.
- *
- * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.3 $ $Date: 2007/02/08 15:02:02 $
- *
- */
-public class AjaxContainerRenderer extends AjaxChildrenRenderer {
-
- public static final String AJAX_PARAMETER_NAME = "AJAXREQUEST";
-
- public static final String AJAX_JSF_SCRIPT = "AJAX.js";
-
- public static final String SARISSA_SCRIPT = "sarissa.js";
-
- public static final String JSDOM_SCRIPT = "JSDOM_sarissa.js";
-
- public static final String AJAX_VIEW_STATE_TAG = "span";
-
- public static final String AJAX_VIEW_STATE_ID = "ajax-update-ids";
-
- public static final String AJAX_RESULT_GROUP_TAG = "meta";
-
- public static final String AJAX_RESULT_GROUP_ATTR = "content";
-
- public static final String AJAX_RESULT_STYLE = "display: none";
-
- public static final String AJAX_UPDATE_HEADER = "Ajax-Update-Ids";
-
- static final Log log = LogFactory
- .getLog(AjaxContainerRenderer.class);
-
- public static final String AJAX_FLAG_HEADER = "Ajax-Response";
-
- public static final String AJAX_LOCATION_HEADER = "Location";
-
- /*
- * (non-Javadoc)
- *
- * @see org.ajax4jsf.renderkit.RendererBase#getComponentClass()
- */
- protected Class getComponentClass() {
- // TODO Auto-generated method stub
- return AjaxContainer.class;
- }
-
- /**
- *
- *
- * @see
javax.faces.component.UIComponent#encodeChildren(javax.faces.context.FacesContext)
- * Since main function of component - render subset of components, for
- * update on page,don't delegate this for renderer.
- *
- */
- public void encodeChildren(FacesContext context, UIComponent component)
- throws IOException {
- // Normal request - render all ...
- log.debug(Messages.getMessage(Messages.RENDER_CHILDREN_NON_AJAX_INFO));
- renderChildren(context, component);
- }
-
- /**
- * @param context
- * @param component
- * @throws IOException
- */
- public void encodeAjax(FacesContext context, UIComponent component)
- throws IOException {
- UIComponent root ;
- // Iterate over all childrens, render it if nessesary...
- log.debug(Messages.getMessage(Messages.RENDER_CHILDREN_AJAX_INFO));
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
- Set ids = ajaxContext.getAjaxAreasToRender();
- Set renderedAreas = ajaxContext.getAjaxRenderedAreas();
- if (((AjaxContainer) component).isRenderRegionOnly()) {
- root = component;
- } else {
- root = context.getViewRoot();
- }
- String path = AjaxRendererUtils.getAbsoluteId(root);
- // if(! (component instanceof NamingContainer)){
- path = path.substring(0, path
- .lastIndexOf(NamingContainer.SEPARATOR_CHAR) + 1);
- encodeAjaxComponent(context, root, path, ids, renderedAreas);
- // Write information about encoded areas after submission.
- AjaxRendererUtils.encodeAreas(context, component);
- }
-
-
-
- /*
- * always return true, since component must maintain set of rendered
- * components.
- *
- * @see javax.faces.component.UIComponent#getRendersChildren()
- */
- public boolean getRendersChildren() {
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.ajax4jsf.renderkit.RendererBase#doDecode(javax.faces.context.FacesContext,
- * javax.faces.component.UIComponent)
- */
- protected void doDecode(FacesContext context, UIComponent component) {
- String clientId = component.getClientId(context);
- Map paramMap = context.getExternalContext().getRequestParameterMap();
- if (log.isDebugEnabled()) {
- log.debug(Messages.getMessage(
- Messages.DECODE_AJAX_REQUEST_STATUS_INFO, clientId));
- log.debug(Messages.getMessage(Messages.REQUEST_PARAMETERS_MAP,
- paramMap.toString()));
- }
- Object ajaxParameter = paramMap.get(AJAX_PARAMETER_NAME);
- AjaxContainer ajaxContainer = (AjaxContainer) component;
- if (null != ajaxParameter && ajaxParameter.equals(clientId)) {
- ajaxContainer.setSubmitted(true);
- AjaxEvent event = new AjaxEvent(component);
- component.queueEvent(event);
- } else {
- ajaxContainer.setSubmitted(false);
- }
-
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxPhaseListener.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxPhaseListener.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxPhaseListener.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,169 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.faces.FacesException;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.event.PhaseEvent;
-import javax.faces.event.PhaseId;
-import javax.faces.event.PhaseListener;
-
-import org.ajax4jsf.Messages;
-import org.ajax4jsf.context.AjaxContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.richfaces.skin.SkinFactory;
-
-/**
- * Listener for act before Render phase to set RenderKit Id for current skin.
- *
- * @author shura (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.3 $ $Date: 2007/02/06 16:23:19 $
- *
- */
-public class AjaxPhaseListener implements PhaseListener {
-
- /**
- *
- */
- private static final long serialVersionUID = -4087936963051339868L;
-
- public static final String VIEW_BEAN_PREFIX = "org.ajax4jsf.viewbean:";
-
- public static final String VIEW_STATE_SAVED_PARAM =
"org.ajax4jsf.VIEW_STATE_SAVED";
-
- private static final Log log = LogFactory
- .getLog(AjaxPhaseListener.class);
-
- public static final String AJAX_BEAN_PREFIX = "org.ajax4jsf.ajaxviewbean:";
-
- /*
- * (non-Javadoc)
- *
- * @see javax.faces.event.PhaseListener#afterPhase(javax.faces.event.PhaseEvent)
- */
- public void afterPhase(PhaseEvent event) {
- PhaseId phaseId = event.getPhaseId();
- if(log.isDebugEnabled()){
- log.debug("Process after phase "+phaseId.toString());
- }
- FacesContext context = event.getFacesContext();
- Map requestMap = context.getExternalContext().getRequestMap();
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
- if (phaseId == PhaseId.RENDER_RESPONSE) {
- if (ajaxContext.isAjaxRequest()) {
- // JSF RI 1.1 hack - view state not saved in <f:view> tag.
- if(null == requestMap.get(VIEW_STATE_SAVED_PARAM)){
- try {
- ajaxContext.saveViewState(context);
- } catch (IOException e) {
- throw new FacesException(e);
- }
- }
- }
-// ajaxContext.processHeadResources(context);
- } else if (phaseId == PhaseId.RESTORE_VIEW) {
-
- UIViewRoot viewRoot = context.getViewRoot();
- if(null != viewRoot){
- boolean isAjax = ajaxContext.isAjaxRequest();
- Map attributes = viewRoot.getAttributes();
- for (Iterator it = attributes.keySet().iterator(); it.hasNext();) {
- Object key = it.next();
- if (key instanceof String) {
- String stringKey = (String) key;
- if(stringKey.startsWith(VIEW_BEAN_PREFIX)){
- requestMap.put(stringKey.substring(VIEW_BEAN_PREFIX.length()),
attributes.get(key));
- } else if(isAjax && stringKey.startsWith(AJAX_BEAN_PREFIX)){
- requestMap.put(stringKey.substring(AJAX_BEAN_PREFIX.length()),
attributes.get(key));
- }
-
- }
- }
- }
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent)
- */
- public void beforePhase(PhaseEvent event) {
- PhaseId phaseId = event.getPhaseId();
- if(log.isDebugEnabled()){
- log.debug("Process before phase "+phaseId.toString());
- }
- FacesContext context = event.getFacesContext();
- if (phaseId == PhaseId.RENDER_RESPONSE) {
- // Clear ViewId replacement, to avoid incorrect rendering of forms URI.
- AjaxContext.getCurrentInstance(context).setViewIdHolder(null);
-
- UIViewRoot root = context.getViewRoot();
- log.debug(Messages.getMessage(
- Messages.ENTER_BEFORE_RENDER_VIEW_PHASE, root.getViewId(),
- root.getRenderKitId()));
-
- // TODO - create special skin-config.xml configuration.
- String renderKitId = null;
- try {
- renderKitId = SkinFactory.getInstance().getSkin(context)
- .getRenderKitId(context);
- } catch (Exception e) {
- log.error("Exception on get current Skin ", e);
- }
- if (null != renderKitId) {
- log.debug(Messages.getMessage(Messages.SET_RENDER_KIT_ID_INFO,
- renderKitId));
- root.setRenderKitId(renderKitId);
- }
- } else if (phaseId == PhaseId.RESTORE_VIEW) {
-
- }
- }
- /*
- * (non-Javadoc)
- *
- * @see javax.faces.event.PhaseListener#getPhaseId()
- */
- public PhaseId getPhaseId() {
- return PhaseId.ANY_PHASE;
- }
-
- protected boolean isValueReference(String value) {
- if (value == null)
- throw new NullPointerException("value");
-
- int start = value.indexOf("#{");
- if (start < 0)
- return false;
-
- int end = value.lastIndexOf('}');
- return (end >= 0 && start < end);
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxRendererUtils.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxRendererUtils.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxRendererUtils.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,934 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import javax.faces.component.ActionSource;
-import javax.faces.component.EditableValueHolder;
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIForm;
-import javax.faces.component.UIParameter;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.servlet.http.HttpServletResponse;
-
-import org.ajax4jsf.Messages;
-import org.ajax4jsf.component.AjaxComponent;
-import org.ajax4jsf.component.AjaxContainer;
-import org.ajax4jsf.component.AjaxLoadBundleComponent;
-import org.ajax4jsf.component.AjaxSupport;
-import org.ajax4jsf.component.AjaxViewRoot;
-import org.ajax4jsf.component.JavaScriptParameter;
-import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
-import org.ajax4jsf.framework.util.ServicesUtils;
-import org.ajax4jsf.javascript.JSFunction;
-import org.ajax4jsf.javascript.JSFunctionDefinition;
-import org.ajax4jsf.javascript.JSReference;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * @author shura
- *
- * Some utilites for render AJAX components.
- */
-public class AjaxRendererUtils {
-
- /**
- * Name Javasript function for submit AJAX request
- */
- public static final String AJAX_FUNCTION_NAME = "A4J.AJAX.Submit";
-
- /**
- * Attribute for keep clientId of status component
- */
- public static final String STATUS_ATTR_NAME = "status";
-
- /**
- * Attribute for keep JavaScript funtion name for call after complete
- * request.
- */
- public static final String ONCOMPLETE_ATTR_NAME = "oncomplete";
-
- /**
- * Attribute to keep
- */
- public static final String LIMITTOLIST_ATTR_NAME = "limitToList";
-
- private static Log log = LogFactory.getLog(AjaxRendererUtils.class);
-
- public static final String AJAX_REGIONS_ATTRIBUTE = "reRender";
-
- private static final Class OBJECT_ARRAY_CLASS = (new Object[0]).getClass();
-
- public static final String SEQUENCE_PARAM = "jsf_sequence";
-
- private static final String VALUE_ATTR = "value";
-
- public static final String AJAX_AREAS_RENDERED =
"org.ajax4jsf.areas.rendered";
-
- private static final String AJAX_SINGLE_ATTR = "ajaxSingle";
-
- public static final String AJAX_QUEUE_ATTR = "eventsQueue";
-
- public static final String AJAX_DELAY_ATTR = "requestDelay";
-
- private static final Object AJAX_ABORT_ATTR = "ignoreDupResponses";
-
- /**
- * Static class - protect constructor TODO - make as subclass of chameleon
- * RendererUtils.
- *
- */
- private AjaxRendererUtils() {
-
- }
-
- /**
- * Build JavaScript onclick event for given component
- *
- * @param uiComponent -
- * component for build event
- * @param facesContext
- * @return <code>StringBuffer</code> with Javascript code
- */
- public static StringBuffer buildOnClick(UIComponent uiComponent,
- FacesContext facesContext) {
- return buildOnEvent(uiComponent, facesContext, HTML.onclick_ATTRIBUTE);
- }
-
- /**
- * Build JavaScript event for component
- *
- * @param uiComponent -
- * component for build event
- * @param facesContext
- * @param eventName -
- * name of event
- * @return <code>StringBuffer</code> with Javascript code TODO - for
- * key-based events build list of supported keys
- */
- public static StringBuffer buildOnEvent(UIComponent uiComponent,
- FacesContext facesContext, String eventName) {
- StringBuffer onEvent = new StringBuffer();
- if (null != eventName) {
- String commandOnEvent = (String) uiComponent.getAttributes().get(
- eventName);
- if (commandOnEvent != null) {
- onEvent.append(commandOnEvent);
- onEvent.append(';');
- }
- }
- JSFunction ajaxFunction = buildAjaxFunction(uiComponent, facesContext);
- // Create formal parameter for non-input elements ???
- // Link Control pseudo-object
- // Options map. Possible options for function call :
- // control - name of form control for submit.
- // name - name for link control \
- // value - value of control. - possible replace by parameters ?
- // single true/false - submit all form or only one control.
- // affected - array of element's ID for update on responce.
- // oncomplete - function for call after complete request.
- // status - id of request status component.
- // parameters - map of parameters name/value for append on request.
- // TODO
- // sync true/false - run script in sync mode.
- // ..........
- ajaxFunction.addParameter(buildEventOptions(facesContext, uiComponent));
-
- // appendAjaxSubmitParameters(facesContext, uiComponent, onEvent);
- ajaxFunction.appendScript(onEvent);
- if (uiComponent instanceof AjaxSupport) {
- AjaxSupport support = (AjaxSupport) uiComponent;
- if (support.isDisableDefault()) {
- onEvent.append("; return false;");
- }
- }
- log.debug(Messages.getMessage(Messages.BUILD_ONCLICK_INFO, uiComponent
- .getId(), onEvent.toString()));
- return onEvent;
-
- }
-
- /**
- * @param facesContext
- * @param uiComponent
- * @return
- */
- public static Map buildEventOptions(FacesContext facesContext,
- UIComponent uiComponent) {
- String clientId = uiComponent.getClientId(facesContext);
- Map componentAttributes = uiComponent.getAttributes();
- Map options = new HashMap();
- Map parameters = new HashMap();
- // UIForm form = getNestingForm(uiComponent);
- // "input" - if assigned to html input element.
- boolean input = (uiComponent instanceof AjaxSupport && uiComponent
- .getParent() instanceof EditableValueHolder)
- || uiComponent instanceof EditableValueHolder;
- // Action component - button etc.
- boolean action = (uiComponent instanceof AjaxSupport && uiComponent
- .getParent() instanceof ActionSource)
- || uiComponent instanceof ActionSource;
- // TODO - disable ( or not ? ) submission of action for disabled default
- // ?
- // if ( action && uiComponent instanceof AjaxSupport) {
- // AjaxSupport support = (AjaxSupport) uiComponent;
- // if (support.isDisableDefault()) {
- // action = false;
- // }
- // }
-
- boolean ajaxSingle = Boolean.TRUE.equals(componentAttributes
- .get(AJAX_SINGLE_ATTR));
- // For input components in single mode or without form submit input
- // control )
- if (ajaxSingle && input) { // || action
- // TODO - inside form, put reference :
- // document.forms['form'].controls['control']
- options.put("control", JSReference.THIS);
- }
- // Control value for submit
- String controlName;
- Object controlValue;
- // TODO - make compatible with JSF RI/MyFaces ? use submittedValue ( if
- // any ) for UIInput, converted value for ValueHolder.
- controlName = clientId;
- controlValue = clientId;
- parameters.put(controlName, controlValue);
- // Move processing of a 'single' attribute to a server-side.
-// if (ajaxSingle) {
-// options.put("single", JSReference.TRUE);
-// }
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(facesContext);
- // Setup action URL. For portlet environment, it will be different from
- // page.
- options.put("actionUrl", ajaxContext.getAjaxActionURL(facesContext));
- // Add application-wide Ajax parameters
- parameters.putAll(ajaxContext.getCommonAjaxParameters());
- // add child parameters
- for (Iterator it = uiComponent.getChildren().iterator(); it.hasNext();) {
- UIComponent child = (UIComponent) it.next();
- if (child instanceof UIParameter) {
- String name = ((UIParameter) child).getName();
- Object value = ((UIParameter) child).getValue();
- if (null == name) {
- throw new IllegalArgumentException(Messages.getMessage(
- Messages.UNNAMED_PARAMETER_ERROR, uiComponent
- .getClientId(facesContext)));
- }
- boolean escape = true;
- if (child instanceof JavaScriptParameter) {
- JavaScriptParameter actionParam = (JavaScriptParameter) child;
- escape = !actionParam.isNoEscape();
- }
- if (escape) {
- parameters.put(name, value);
- } else {
- parameters.put(name, new JSReference(value.toString()));
- // if(it.hasNext()){onEvent.append(',');};
- // renderAjaxLinkParameter( name,
- // value, onClick, jsForm, nestingForm);
- }
- }
- }
- if (!parameters.isEmpty()) {
- options.put("parameters", parameters);
- }
- // parameter to render only current list of areas.
- if (isAjaxLimitToList(uiComponent)) {
- Set ajaxAreas = getAjaxAreas(uiComponent);
- Set areasIds = new HashSet();
- if (null != ajaxAreas) {
- for (Iterator iter = ajaxAreas.iterator(); iter.hasNext();) {
- String id = (String) iter.next();
- UIComponent comp = uiComponent.findComponent(id);
- if (null != comp) {
- areasIds.add(comp.getClientId(facesContext));
- } else {
- areasIds.add(id);
- }
- }
- }
- options.put("affected", areasIds);
- }
- String oncomplete = getAjaxOncomplete(uiComponent);
- if (null != oncomplete) {
- JSFunctionDefinition function = new JSFunctionDefinition();
- function.addParameter("request");
- function.addParameter("event");
- function.addParameter("data");
- function.addToBody(oncomplete);
-
- options.put("oncomplete", function);
- }
- String status = getAjaxStatus(uiComponent);
- if (null != status) {
- options.put("status", status);
- }
- String queue = (String) componentAttributes.get(AJAX_QUEUE_ATTR);
- Integer requestDelay = (Integer) componentAttributes
- .get(AJAX_DELAY_ATTR);
- if (null != requestDelay && requestDelay.intValue() > 0) {
- options.put(AJAX_DELAY_ATTR, requestDelay);
- if (null == queue) {
- queue = clientId;
- }
- }
- Boolean ignoreDupResponses = (Boolean) componentAttributes
- .get(AJAX_ABORT_ATTR);
- if (null != ignoreDupResponses && ignoreDupResponses.booleanValue()) {
- options.put(AJAX_ABORT_ATTR, JSReference.TRUE);
- if (null == queue) {
- queue = clientId;
- }
- }
- if (null != queue) {
- options.put(AJAX_QUEUE_ATTR, queue);
- }
- // request timeout.
- Integer timeout = (Integer) componentAttributes.get("timeout");
- if (null != timeout && timeout.intValue() > 0) {
- options.put("timeout", timeout);
- }
- // Encoding for requests
- String encoding = (String) componentAttributes.get("encoding");
- if (null != encoding) {
- options.put("encoding", encoding);
- }
- return options;
- }
-
- /**
- * Create call to Ajax Submit function with first two parameters
- *
- * @param uiComponent
- * @param facesContext
- * @param functionName
- * TODO
- * @return
- */
- public static JSFunction buildAjaxFunction(UIComponent uiComponent,
- FacesContext facesContext) {
- JSFunction ajaxFunction = buildAjaxFunction(uiComponent, facesContext,
- AJAX_FUNCTION_NAME);
- // client-side script must have reference to event-enabled object.
- ajaxFunction.addParameter(new JSReference("event"));
- return ajaxFunction;
- }
-
- /**
- * Create call to Ajax Submit function with first two parameters
- *
- * @param uiComponent
- * @param facesContext
- * @param functionName
- * TODO
- * @return
- */
- public static JSFunction buildAjaxFunction(UIComponent uiComponent,
- FacesContext facesContext, String functionName) {
- JSFunction ajaxFunction = new JSFunction(functionName);
- UIComponent nestingContainer = (UIComponent) findAjaxContainer(
- facesContext, uiComponent);
- ajaxFunction.addParameter(nestingContainer.getClientId(facesContext));
- // build form name or ActionUrl for script
- UIComponent nestingForm = getNestingForm(uiComponent);
- if (null == nestingForm) {
- ajaxFunction.addParameter(JSReference.NULL);
- } else {
- ajaxFunction.addParameter(nestingForm.getClientId(facesContext));
- }
- return ajaxFunction;
- }
-
- /**
- * Append common parameters ( array of affected areas, status area id, on
- * complete function ) to JavaScript event string.
- *
- * @param uiComponent
- * @param onClick -
- * buffer with JavaScript code eg... AJAX.Submit(form,this
- */
- // public static void appendAjaxSubmitParameters(FacesContext facesContext,
- // UIComponent uiComponent, StringBuffer onClick)
- // {
- // Set ajaxAreas = getAjaxAreas(uiComponent);
- // onClick.append(',');
- // // parameter to render only current list of areas.
- // if (isAjaxLimitToList(uiComponent) && ajaxAreas != null &&
- // ajaxAreas.size() > 0)
- // {
- // onClick.append('[');
- // Iterator areas = ajaxAreas.iterator();
- // boolean first = true;
- // while (areas.hasNext())
- // {
- // String element = (String) areas.next();
- // UIComponent component = uiComponent.findComponent(element);
- // if (null != component)
- // {
- // if (!first)
- // {
- // onClick.append(',');
- // }
- // else
- // {
- // first = false;
- // }
- // onClick.append('\'');
- // onClick.append(component.getClientId(facesContext));
- // onClick.append('\'');
- // }
- // }
- // onClick.append("]");
- // }
- // else
- // {
- // onClick.append("null");
- // }
- // // insert id of request status element.
- // onClick.append(',');
- // String status = getAjaxStatus(uiComponent);
- // if (null != status)
- // {
- // onClick.append('\'').append(status).append('\'');
- // }
- // else
- // {
- // onClick.append("null");
- // }
- // // insert function name for call after completed request
- // onClick.append(',');
- // String oncomplete = getAjaxOncomplete(uiComponent);
- // if (null != oncomplete)
- // {
- // onClick.append(oncomplete);
- // }
- // else
- // {
- // onClick.append("null");
- // }
- //
- // }
- /**
- * Get list of clientId's for given component
- *
- * @param uiComponent
- * @return List of areas Id's , updated by this component.
- */
- public static Set getAjaxAreas(UIComponent uiComponent) {
- Object areas;
- if (uiComponent instanceof AjaxComponent) {
- areas = ((AjaxComponent) uiComponent).getReRender();
-
- } else {
- areas = uiComponent.getAttributes().get(
- AjaxRendererUtils.AJAX_REGIONS_ATTRIBUTE);
- }
- return asSet(areas);
- }
-
- /**
- * Convert parameter ( Collection, List, array, String, comma-separated
- * String ) to list of srings. TODO - when move to JDK 5, change to
- * List<String>
- *
- * @param valueToSet -
- * obect for convert to List.
- * @return - list of strings.
- */
- public static Set asSet(Object valueToSet) {
-
- if (null != valueToSet) {
- // Simplest case - set.
- if (valueToSet instanceof Set) {
- return (Set) valueToSet;
- }
- // Other collections.
- else if (valueToSet instanceof Collection) {
- return new HashSet((Collection) valueToSet);
- }
- // Array
- else if (OBJECT_ARRAY_CLASS.isAssignableFrom(valueToSet.getClass())) {
- return new HashSet(Arrays.asList((Object[]) valueToSet));
- }
- // Tokenize string.
- else if (valueToSet instanceof String) {
- String areasString = (String) valueToSet;
- if (areasString.indexOf(",") > 0) {
- return new HashSet(Arrays.asList(areasString.trim().split(
- "(\\s)*,(\\s)*")));
- } else {
- Set areasSet = new HashSet(5);
- areasSet.add(areasString.trim());
- return areasSet;
- }
-
- }
- }
- return null;
- }
-
- /**
- * Get status area Id for given component.
- *
- * @param component
- * @return clientId of status area, or <code>null</code>
- */
- public static String getAjaxStatus(UIComponent component) {
- String statusId;
- if (component instanceof AjaxComponent) {
- statusId = ((AjaxComponent) component).getStatus();
-
- } else {
- 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
- }
- if (null != status) {
- statusId = status
- .getClientId(FacesContext.getCurrentInstance());
- } else {
- log.warn(Messages.getMessage(
- Messages.AJAX_STATUS_COMPONENT_NOT_FOWND_WARNING,
- component.getId()));
- }
- }
- return statusId;
- }
-
- /**
- * Get function name for call on completed ajax request.
- *
- * @param component
- * for wich calculate function name
- * @return name of JavaScript function or <code>null</code>
- */
- public static String getAjaxOncomplete(UIComponent component) {
- if (component instanceof AjaxComponent) {
- return ((AjaxComponent) component).getOncomplete();
-
- }
- return (String) component.getAttributes().get(ONCOMPLETE_ATTR_NAME);
- }
-
- /**
- * Calculate, must be component render only given areas, or all sended from
- * server.
- *
- * @param component
- * @return <code>true</code> if client must render ONLY given areas.
- */
- public static boolean isAjaxLimitToList(UIComponent component) {
- boolean result = false;
- if (component instanceof AjaxComponent) {
- result = ((AjaxComponent) component).isLimitToList();
-
- } else {
- try {
- result = ((Boolean) component.getAttributes().get(
- LIMITTOLIST_ATTR_NAME)).booleanValue();
- } catch (NullPointerException e) {
- // NullPointer - ignore ...
- } catch (ClassCastException e1) {
- // not Boolean - false ...
- }
- }
- return result;
- }
-
- /**
- * Replacement for buggy in MyFaces <code>RendererUtils</code>
- *
- * @param component
- * @return
- */
- public static String getAbsoluteId(UIComponent component) {
- if (component == null)
- throw new NullPointerException(Messages
- .getMessage(Messages.COMPONENT_NULL_ERROR_2));
-
- StringBuffer idBuf = new StringBuffer();
-
- idBuf.append(component.getId());
-
- UIComponent parent = component;
-
- while ((parent = parent.getParent()) != null) {
- if (parent instanceof NamingContainer) {
- idBuf.insert(0, NamingContainer.SEPARATOR_CHAR);
- idBuf.insert(0, parent.getId());
- }
- }
- idBuf.insert(0, NamingContainer.SEPARATOR_CHAR);
- log.debug(Messages.getMessage(Messages.CALCULATE_COMPONENT_ID_INFO,
- component.getId(), idBuf.toString()));
- return idBuf.toString();
- }
-
- /**
- * Find nested form for given component
- *
- * @param component
- * @return nested <code>UIForm</code> component, or
<code>null</code>
- */
- public static UIComponent getNestingForm(UIComponent component) {
- UIComponent parent = component;
- // Search enclosed UIForm or ADF UIXForm component
- while (parent != null
- && !(parent instanceof UIForm)
- && !("org.apache.myfaces.trinidad.Form".equals(parent
- .getFamily()))
- && !("oracle.adf.Form".equals(parent.getFamily()))) {
- parent = parent.getParent();
- }
-
- return parent;
- }
-
- protected static String getAjaxActionUrl(FacesContext facesContext) {
- return
AjaxContext.getCurrentInstance(facesContext).getAjaxActionURL(facesContext);
- }
-
- /**
- * @param facesContext
- * @param uiComponent
- * @return
- */
- public static org.ajax4jsf.component.AjaxContainer findAjaxContainer(
- FacesContext facesContext, UIComponent uiComponent) {
- UIComponent parent = uiComponent.getParent();
- while (parent != null
- && !(parent instanceof org.ajax4jsf.component.AjaxContainer)) {
- parent = parent.getParent();
- }
-
- org.ajax4jsf.component.AjaxContainer nestingContainer = null;
- if (parent != null) {
- // link is nested inside a form
- nestingContainer = (org.ajax4jsf.component.AjaxContainer) parent;
- } else if (facesContext.getViewRoot() instanceof AjaxViewRoot) {
- nestingContainer = (AjaxContainer) facesContext.getViewRoot();
- }
- return nestingContainer;
- }
-
- /**
- * For Myfaces, get current viev sequence.
- *
- * @param facescontext
- * @return
- */
- private static Integer getViewSequence(FacesContext facescontext) {
- Map map = facescontext.getExternalContext().getRequestMap();
- Integer sequence = (Integer) map.get(SEQUENCE_PARAM);
- if (sequence == null) {
- sequence = new Integer(1);
- map.put(SEQUENCE_PARAM, sequence);
- }
- return sequence;
- }
-
- /**
- * Encode rendered areas as special HTML tag ( span in current release )
- *
- * @param context
- * @param component
- * @throws IOException
- */
- public static void encodeAreas(FacesContext context,
- UIComponent component) throws IOException {
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
- ExternalContext externalContext = context.getExternalContext();
- Map requestMap = externalContext.getRequestMap();
- Set rendered = ajaxContext.getAjaxRenderedAreas();
- StringBuffer senderString = new StringBuffer();
- // write special area for list of rendered elements. Client-side
- // Java
- // Script
- // read this structure for update areas of DOM tree.
- ResponseWriter out = context.getResponseWriter();
- // Create <span> element to keep list rendered aread ( in title
- // attribute )
- // More right will create special namespace for such
- // information,
- // but I want to keep simple html ( xhtml ) document - on case
- // I have troubles with microsoft XMLHTTP validations.
- out
- .startElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG,
- component);
- out.writeAttribute(HTML.NAME_ATTRIBUTE,
- AjaxContainerRenderer.AJAX_UPDATE_HEADER, null);
- for (Iterator it = rendered.iterator(); it.hasNext();) {
- String id = (String) it.next();
- // out.startElement(AJAX_RESULT_TAG, component);
- // out.writeText(id,null);
- // out.endElement(AJAX_RESULT_TAG);
- senderString.append(id);
- if (it.hasNext()) {
- senderString.append(',');
- }
- }
- out.writeAttribute(AjaxContainerRenderer.AJAX_RESULT_GROUP_ATTR,
- senderString, null);
- out.endElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG);
- // For sequences and client-saved states.
-
- out.startElement(AjaxContainerRenderer.AJAX_VIEW_STATE_TAG, component);
- out.writeAttribute(HTML.id_ATTRIBUTE,
- AjaxContainerRenderer.AJAX_VIEW_STATE_ID, null);
- writeState(context);
- out.endElement(AjaxContainerRenderer.AJAX_VIEW_STATE_TAG);
- // Write rendered flag to html <meta>
- out
- .startElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG,
- component);
- out.writeAttribute(HTML.id_ATTRIBUTE,
- AjaxContainerRenderer.AJAX_FLAG_HEADER, null);
- out.writeAttribute(HTML.NAME_ATTRIBUTE,
- AjaxContainerRenderer.AJAX_FLAG_HEADER, null);
- out.writeAttribute(AjaxContainerRenderer.AJAX_RESULT_GROUP_ATTR,
- "true", null);
- out.endElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG);
- // set response header with list of rendered ID's
- Object response = externalContext.getResponse();
- // Use reflection for send responce headers - we can get
- // different responces classes
- // for different environment ( portal, cocoon etc )
- if (response instanceof HttpServletResponse) {
- HttpServletResponse httpResponse = (HttpServletResponse) response;
- httpResponse.setHeader(AjaxContainerRenderer.AJAX_UPDATE_HEADER,
- senderString.toString());
- httpResponse.setHeader(AjaxContainerRenderer.AJAX_FLAG_HEADER,
- "true");
- } else {
- try {
- Method setHeadergMethod = response.getClass()
- .getMethod("setHeader",
- new Class[] { String.class, String.class });
- setHeadergMethod.invoke(response, new Object[] {
- AjaxContainerRenderer.AJAX_UPDATE_HEADER,
- senderString.toString() });
- setHeadergMethod.invoke(response, new Object[] {
- AjaxContainerRenderer.AJAX_FLAG_HEADER, "true" });
- } catch (Exception e) {
- log
- .error(Messages
- .getMessage(Messages.DETECTING_ENCODING_DISABLED_ERROR));
- log.error(Messages.getMessage(
- Messages.OBTAIN_RESPONSE_SET_HEADER_ERROR, e));
- }
- }
- Map responseDataMap = ajaxContext.getResponseDataMap();
- // Get data serializer instance
- AJAXDataSerializer serializer = (AJAXDataSerializer) ServicesUtils
- .getServiceInstance(AJAXDataSerializer.SERVICE);
- // Put data to JavaScript handlers, inside <span> elements.
- for (Iterator dataIterator = responseDataMap.keySet().iterator(); dataIterator
- .hasNext();) {
- Object dataKey = dataIterator.next();
- out.startElement(HTML.SPAN_ELEM, component);
- out.writeAttribute(HTML.id_ATTRIBUTE, dataKey, null);
- String dataString = serializer.asString(responseDataMap
- .get(dataKey));
- out.write(dataString);
- out.endElement(HTML.SPAN_ELEM);
- }
- // For self-rendered case, we use own methods for replace stateKey by
- // real value
- // in XML filter.
- // if(ajaxContext.isSelfRender()){
- // saveViewState(context, out);
- // }
- requestMap.put(AJAX_AREAS_RENDERED, "true");
- }
-
- /**
- * Write state saving markers to context, include MyFaces view sequence.
- *
- * @param context
- * @throws IOException
- */
- public static void writeState(FacesContext context) throws IOException {
- if (!context.getApplication().getStateManager().isSavingStateInClient(
- context)) {
- ResponseWriter writer = context.getResponseWriter();
- // MyFaces-specific view sequence attribute
- writer.startElement(HTML.INPUT_ELEM, null);
- writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_HIDDEN, null);
- writer.writeAttribute(HTML.NAME_ATTRIBUTE,
- AjaxRendererUtils.SEQUENCE_PARAM, null);
- writer.writeAttribute(HTML.value_ATTRIBUTE, AjaxRendererUtils
- .getViewSequence(context), null);
- writer.endElement(HTML.INPUT_ELEM);
- }
- context.getApplication().getViewHandler().writeState(context);
- }
-
- /**
- * Encode declaration for AJAX response. Render
<html><body>
- *
- * @param context
- * @param component
- * @throws IOException
- */
- public static void encodeAjaxBegin(FacesContext context,
- UIComponent component) throws IOException {
- // AjaxContainer ajax = (AjaxContainer) component;
- ResponseWriter out = context.getResponseWriter();
- // DebugUtils.traceView("ViewRoot in AJAX Page encode begin");
- out.startElement("html", component);
- // TODO - html attributes. lang - from current locale ?
- Locale locale = context.getViewRoot().getLocale();
- out.writeAttribute(HTML.lang_ATTRIBUTE, locale.toString(), "lang");
- out.startElement("body", component);
- }
-
- /**
- * End encoding of AJAX response. Render tag with included areas and close
- * </body></html>
- *
- * @param context
- * @param component
- * @throws IOException
- */
- public static void encodeAjaxEnd(FacesContext context, UIComponent component)
- throws IOException {
- // AjaxContainer ajax = (AjaxContainer) component;
- ResponseWriter out = context.getResponseWriter();
- // DebugUtils.traceView("ViewRoot in AJAX Page encode begin");
-
- encodeAreas(context, component);
- out.endElement("body");
- out.endElement("html");
- }
-
- /**
- * Find all instances of {@link UILoadBundle} in view tree and load bundles
- * to request-scope map.
- *
- * @param context
- * @throws IOException
- */
- public static void loadBundles(FacesContext context) {
- // TODO - performanse improove - don't seek by all components tree.
- loadBundles(context, context.getViewRoot());
-
- }
-
- /**
- * Recursive helper for {@link #loadBundles(FacesContext)}
- *
- * @param context
- * @param component
- * @throws IOException
- */
- private static void loadBundles(FacesContext context, UIComponent component) {
- // Iterate over cildrens
- for (Iterator iter = component.getChildren().iterator(); iter.hasNext();) {
- UIComponent child = (UIComponent) iter.next();
- loadCildBundles(context, child);
- }
- // Iterate over facets
- for (Iterator iter = component.getFacets().values().iterator(); iter
- .hasNext();) {
- UIComponent child = (UIComponent) iter.next();
- loadCildBundles(context, child);
- }
- }
-
- /**
- * @param context
- * @param child
- */
- private static void loadCildBundles(FacesContext context, UIComponent child) {
- if (child instanceof AjaxLoadBundleComponent) {
- try {
- child.encodeBegin(context);
- } catch (IOException e) {
- // DO nothing - really, LoadBundle don't can throw exceptions.
- }
- } else {
- loadBundles(context, child);
- }
- }
-
- /**
- * @param facesContext
- * @return
- */
- public static boolean isAjaxRequest(FacesContext facesContext) {
-
- return AjaxContext.getCurrentInstance(facesContext).isAjaxRequest(facesContext);
- }
-
- /**
- * @param facesContext
- * @param component
- * @param id
- */
- public static void addRegionByName(FacesContext facesContext, UIComponent component,
String id) {
-
- AjaxContext.getCurrentInstance(facesContext).addComponentToAjaxRender(component, id);
- }
- /**
- * @param facesContext
- * @param component
- * @param id
- */
- public static void addRegionsFromComponent(UIComponent component, FacesContext
facesContext) {
-
- AjaxContext.getCurrentInstance(facesContext).addRegionsFromComponent(component);
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxViewRootRenderer.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxViewRootRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxViewRootRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,108 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import org.ajax4jsf.component.AjaxViewRoot;
-import org.ajax4jsf.resource.InternetResource;
-
-/**
- * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.3 $ $Date: 2007/02/08 15:02:03 $
- *
- */
-public class AjaxViewRootRenderer extends AjaxContainerRenderer {
-
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.ajax4jsf.renderkit.AjaxComponentRendererBase#getScripts()
- */
- protected InternetResource[] getScripts() {
- // TODO Auto-generated method stub
- return null;
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.ajax4jsf.renderkit.RendererBase#doDecode(javax.faces.context.FacesContext,
- * javax.faces.component.UIComponent)
- */
-// protected void doDecode(FacesContext context, UIComponent component) {
-// AjaxViewRoot root = (AjaxViewRoot) component;
-// if(root.isSubmitted()) {
-// // Find submitted ajax region.
-// String ajaxId = (String)
context.getExternalContext().getRequestParameterMap().get(AJAX_PARAMETER_NAME);
-// String ajaxRegion = root.getAjaxRegionId(ajaxId);
-// if(null != ajaxRegion){
-// root.setSubmittedRegion(ajaxRegion);
-// }
-// }
-// }
-
- /*
- * (non-Javadoc)
- *
- * @see org.ajax4jsf.renderkit.AjaxContainerRenderer#getComponentClass()
- */
- protected Class getComponentClass() {
- return AjaxViewRoot.class;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
org.ajax4jsf.renderkit.RendererBase#doEncodeEnd(javax.faces.context.ResponseWriter,
- * javax.faces.context.FacesContext, javax.faces.component.UIComponent)
- */
-// protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
-// UIComponent submittedComponent = ((AjaxViewRoot)
component).getSubmittedRegion(context);
-// if (null == submittedComponent) {
-// super.doEncodeEnd(writer,context,component);
-// } else {
-// submittedComponent.encodeEnd(context);
-// }
-// }
-
-
- /*
- * (non-Javadoc)
- *
- * @see
org.ajax4jsf.renderkit.RendererBase#doEncodeBegin(javax.faces.context.ResponseWriter,
- * javax.faces.context.FacesContext, javax.faces.component.UIComponent)
- */
-// protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
-// // Reset instance of submitted region
-// AjaxViewRoot ajaxViewRoot = ((AjaxViewRoot) component);
-// ajaxViewRoot.resetSubmittedRegionInstance();
-// UIComponent submittedComponent = ajaxViewRoot.getSubmittedRegion(context);
-// if (null == submittedComponent) {
-// super.doEncodeBegin(writer, context, component);
-// } else {
-// submittedComponent.encodeBegin(context);
-// }
-// }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKit.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKit.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKit.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,40 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import javax.faces.render.RenderKit;
-
-/**
- * @author shura (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:55 $
- *
- */
-public interface ChameleonRenderKit {
-
-
-
- /**
- * @param renderKit
- */
- void setDefaultRenderKit(RenderKit renderKit);
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitFactory.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitFactory.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitFactory.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,131 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.util.Iterator;
-
-import javax.faces.FactoryFinder;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.context.FacesContext;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-
-import org.ajax4jsf.Messages;
-import org.ajax4jsf.resource.InternetResourceBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * @author shura (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:50 $
- *
- */
-public class ChameleonRenderKitFactory extends RenderKitFactory {
- RenderKitFactory defaultFactory;
-
- // private static final String AJAX_BASE_RENDER_KIT_PARAMETER =
- // "AJAX_BASE_RENDERKIT_ID";
- // private static final String AJAX_RENDER_KIT_PARAMETER =
- // "AJAX_RENDER_KIT_ID";
-
- private static final Log _log = LogFactory
- .getLog(ChameleonRenderKitFactory.class);
-
- /**
- * @param defaultFactory
- */
- public ChameleonRenderKitFactory(RenderKitFactory defaultFactory) {
- if (_log.isDebugEnabled()) {
- _log.debug("ChameleonRenderKitFactory(RenderKitFactory) - Chameleon RenderKit
factory instantiated"); //$NON-NLS-1$
- }
- this.defaultFactory = defaultFactory;
- // Init resources builder before use.
- InternetResourceBuilder.getInstance().init();
- }
-
- /**
- * @param renderKitId
- * @param renderKit
- */
- public void addRenderKit(String renderKitId, RenderKit renderKit) {
- if (_log.isDebugEnabled()) {
- _log.debug("addRenderKit(String, RenderKit) - Added RenderKit with id -
renderKitId=" + renderKitId); //$NON-NLS-1$
- }
- if (renderKit instanceof ChameleonRenderKit) {
- // ChameleonRenderKit chameleonRenderKit = (ChameleonRenderKit)
- // renderKit;
- //
chameleonRenderKit.setConfiguration(ConfigurationFactory.getRendererConfigurationInstance(renderKitId))
- // ;
- }
- defaultFactory.addRenderKit(renderKitId, renderKit);
- }
-
- /**
- * @param context
- * @param renderKitId
- * @return
- */
- public RenderKit getRenderKit(FacesContext context, String renderKitId) {
- RenderKit renderKit = defaultFactory.getRenderKit(context, renderKitId);
- if (renderKit instanceof ChameleonRenderKit) {
- if (_log.isDebugEnabled()) {
- _log.debug(Messages
- .getMessage(Messages.REQUEST_CHAMELEON_RENDER_KIT_INFO,
- renderKitId));
- }
- String baseRenderKitId = null;
- // TODO - get DefaultRenderKitId from ViewHandler ?
- try {
- // IN JSF-RI verifications, context may be null !
- if (null != context) {
- baseRenderKitId = context.getApplication()
- .getDefaultRenderKitId();
- } else {
- ApplicationFactory appFactory = (ApplicationFactory) FactoryFinder
- .getFactory(FactoryFinder.APPLICATION_FACTORY);
- baseRenderKitId = appFactory.getApplication()
- .getDefaultRenderKitId();
- }
- } catch (Exception e) {
- _log.warn(Messages
- .getMessage(Messages.GET_DEFAULT_RENDER_KIT_ERROR), e);
- }
- if (baseRenderKitId == null) {
- baseRenderKitId = RenderKitFactory.HTML_BASIC_RENDER_KIT;
- }
- if (_log.isDebugEnabled()) {
- _log.debug(Messages.getMessage(
- Messages.DEFAULT_RENDER_KIT_INFO, baseRenderKitId));
- }
- ((ChameleonRenderKit) renderKit).setDefaultRenderKit(defaultFactory
- .getRenderKit(context, baseRenderKitId));
- }
- return renderKit;
- }
-
- /**
- * @return
- */
- public Iterator getRenderKitIds() {
- return defaultFactory.getRenderKitIds();
- }
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitImpl.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitImpl.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitImpl.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,163 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.OutputStream;
-import java.io.Writer;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.faces.FactoryFinder;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseStream;
-import javax.faces.context.ResponseWriter;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.render.Renderer;
-import javax.faces.render.ResponseStateManager;
-
-/**
- * Wrapper for default applikation render kit. Only can append any
- * custom renderers , all other methods delegate to default render kit.
- *
- * @see javax.faces.render.RenderKit
- * @author shura
- *
- */
-public class ChameleonRenderKitImpl extends RenderKit implements ChameleonRenderKit {
-
- private RenderKit defaultRenderKit = null;
- public static final String RENDER_KIT_ID = "AJAX_HTML_BASIC";
-
- private Map renderers;
-
-
- //~ Constructors
-------------------------------------------------------------------------------
-
- public ChameleonRenderKitImpl()
- {
- renderers = new HashMap();
- }
-
- //~ Methods
------------------------------------------------------------------------------------
-
- private String key(String componentFamily, String rendererType)
- {
- return componentFamily + "." + rendererType;
- }
- /**
- * @param family
- * @param rendererType
- * @param renderer
- */
- public void addRenderer(String family, String rendererType,
- Renderer renderer) {
- if (renderer instanceof ChameleonRenderer) {
- ChameleonRenderer chameleonRenderer = (ChameleonRenderer) renderer;
-// chameleonRenderer.setConfiguration(getConfiguration().getRendererConfiguration(family,rendererType));
-
- }
- renderers.put(key(family, rendererType), renderer);
- }
- /**
- * @param writer
- * @param contentTypeList
- * @param characterEncoding
- * @return
- */
- public ResponseWriter createResponseWriter(Writer writer,
- String contentTypeList, String characterEncoding) {
- return getDefaultRenderKit().createResponseWriter(writer, contentTypeList,
- characterEncoding);
- }
- /**
- * @param family
- * @param rendererType
- * @return
- */
- public Renderer getRenderer(String family, String rendererType) {
- Renderer renderer = (Renderer) renderers.get(key(family, rendererType));
- if (renderer != null) {
- return renderer;
- }
- return getDefaultRenderKit().getRenderer(family, rendererType);
- }
- /**
- * @return
- */
- public ResponseStateManager getResponseStateManager() {
- return getDefaultRenderKit().getResponseStateManager();
- }
-
-
- /* (non-Javadoc)
- * @see javax.faces.render.RenderKit#createResponseStream(java.io.OutputStream)
- */
- public ResponseStream createResponseStream(OutputStream out)
- {
- return getDefaultRenderKit().createResponseStream(out);
- }
-
- /**
- * TODO - create own implementation for @see javax.faces.component.UIViewRoot ,
- * and get default renderKitId as value, setted at creation time.
- * in this case, we can substitute concrete renderKit even if it pointed
- * as value for <f:view> tag on 1.2 specification.
- * @return Returns the defaultRenderer.
- */
- protected RenderKit getDefaultRenderKit() {
- if (defaultRenderKit == null)
- {
- String defaultRenderkitId = null;
- FacesContext context = null;
- RenderKitFactory rdf = (RenderKitFactory)
FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
- try {
- context = FacesContext.getCurrentInstance();
- // IN JSF-RI verifications, context may be null !
- if(null != context) {
- defaultRenderkitId = context.getApplication()
- .getDefaultRenderKitId();
- } else {
- ApplicationFactory appFactory =(ApplicationFactory)
FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
- defaultRenderkitId =
appFactory.getApplication().getDefaultRenderKitId();
- }
- } catch (Exception e) {
- // TODO: handle exception
- }
- if(defaultRenderkitId == null ){
- defaultRenderkitId = RenderKitFactory.HTML_BASIC_RENDER_KIT;
- }
- defaultRenderKit = rdf.getRenderKit(context, defaultRenderkitId);
-
- }
-
- return defaultRenderKit;
- }
-
- public void setDefaultRenderKit(RenderKit renderKit) {
- // TODO Auto-generated method stub
- this.defaultRenderKit = renderKit;
-
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderer.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,37 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import org.ajax4jsf.resource.ResourceProduser;
-
-
-/**
- * @author shura (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:50 $
- *
- */
-public interface ChameleonRenderer extends ResourceProduser{
-
-
-
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentRendererBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,108 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.util.HashMap;
-import java.util.Stack;
-
-import javax.faces.component.UIComponent;
-
-
-
-/**
- * Components Base Renderer for all chameleon Skin's and components.
- * At most, make all common procedures and realise concrete work in "template"
methods.
- * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:52 $
- *
- */
-public abstract class ComponentRendererBase extends RendererBase{
-
- /**
- * logger for common cases.
- */
- protected static final String COMPONENT_RENDERER_BASE =
ComponentRendererBase.class.getName();
-
-
- public ComponentVariables getVariables(UIComponent component) {
- HashMap components;
- Stack stackComponentsVariables;
- ComponentVariables variables;
-
-
-
- components = (HashMap)component.getAttributes().get( COMPONENT_RENDERER_BASE );
-
- if ( components == null ) {
- components = new HashMap();
- component.getAttributes().put( COMPONENT_RENDERER_BASE, components );
- }
-
- stackComponentsVariables = (Stack)components.get( this.getClass().getName() );
-
- if ( stackComponentsVariables == null ) {
- stackComponentsVariables = new Stack();
- components.put( COMPONENT_RENDERER_BASE, stackComponentsVariables );
- }
-
- if ( stackComponentsVariables.empty() ) {
- variables = new ComponentVariables();
- stackComponentsVariables.push( variables );
- } else {
- variables = (ComponentVariables)stackComponentsVariables.peek();
- }
-
- return variables;
- }
-
- public void removeVariables(UIComponent component) {
- HashMap components;
- Stack stackComponentsVariables;
- ComponentVariables variables;
-
-
-
- components = (HashMap)component.getAttributes().get(
COMPONENT_RENDERER_BASE );
-
- if ( components != null ) {
-
- stackComponentsVariables = (Stack)component.getAttributes().get(
this.getClass().getName() );
-
- if ( stackComponentsVariables != null ) {
- if ( !stackComponentsVariables.empty() ) {
- stackComponentsVariables.pop();
- }
-
- if ( stackComponentsVariables.empty() ) {
- components.remove( this.getClass().getName() );
- }
- }
-
- if ( components.isEmpty() ) {
- component.getAttributes().remove( COMPONENT_RENDERER_BASE
);
- }
-
-
- }
-
- }
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentUtils.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentUtils.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentUtils.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,134 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-
-import javax.faces.FacesException;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.el.MethodNotFoundException;
-
-import org.ajax4jsf.Messages;
-import org.apache.commons.beanutils.MethodUtils;
-
-/**
- * Utils for working with tempates
- * @author ayukhovich(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:52 $
- */
-public class ComponentUtils {
- private final static String UTILS_PREFIX = "util.";
- /**
- *
- * @param className
- * @param functionName
- * @param parameters
- * @return
- */
- public static Object callFunction( FacesContext context, UIComponent component,
RendererBase renderer, String functionName, Object[] parameters ) {
-
- Object returnObject = null;
-
- int sizeParameters = 0;
- int sizeArrayParameters = 2;
- if ( parameters != null ) {
- sizeParameters = parameters.length;
- sizeArrayParameters = 3;
- }
-
- Object[][] arrayParameters = new Object[sizeArrayParameters][];
- arrayParameters[0] = new Object[sizeParameters+2];
- arrayParameters[1] = new Object[sizeParameters+1];
-
- if ( sizeParameters != 0 ) {
- arrayParameters[2] = new Object[sizeParameters];
- }
-
- arrayParameters[0][0] = context;
- arrayParameters[0][1] = component;
- arrayParameters[1][0] = component;
-
- if ( parameters != null ) {
- for (int iParameter=0;iParameter<parameters.length;iParameter++) {
- arrayParameters[0][iParameter+2] = parameters;
- arrayParameters[1][iParameter+1] = parameters;
- arrayParameters[2][iParameter] = parameters;
- }
- }
-
- String methodName;
- Object object;
- if(functionName.startsWith(UTILS_PREFIX)){
- methodName = functionName.substring(UTILS_PREFIX.length());
- object = renderer.getUtils();
- } else {
- object = renderer;
- methodName = functionName;
- }
-
-
- returnObject = invokeMethod(object, methodName, arrayParameters );
-
- return returnObject;
- }
-
- /**
- * Invoke a named method whose parameter type matches the object type.
- * @param objects - invoke method on this object
- * @param methodName - get method with this name
- * @param arrayParameters - use these arguments - treat null as empty array
- * @return
- */
- private static Object invokeMethod(Object object, String methodName, Object[][]
arrayParameters) {
-
- try {
- for (int iParameter = 0; iParameter < arrayParameters.length; iParameter++) {
- try {
- return MethodUtils.invokeMethod(object, methodName, arrayParameters[iParameter]);
- } catch (NoSuchMethodException e) {
- continue;
- }
- }
- } catch (InvocationTargetException e) {
- throw new FacesException(Messages.getMessage(Messages.METHOD_CALL_ERROR_2b,
methodName, e.getCause().getMessage()), e);
- } catch (IllegalAccessException e) {
- throw new FacesException(Messages.getMessage(Messages.METHOD_CALL_ERROR_4b,
methodName, e.getMessage()), e);
- }
- throw new MethodNotFoundException(Messages.getMessage(Messages.METHOD_CALL_ERROR_6b,
methodName, object));
- }
-
- /**
- * Write html-attribute
- * @param writer
- * @param attribute
- * @param value
- * @throws IOException
- */
- public static void writeAttribute(ResponseWriter writer, String attribute, Object value
) throws IOException {
- if ( (value != null) && (value.toString().length()!=0) ) {
- writer.writeAttribute(attribute, value.toString(), attribute );
- }
- }
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentVariables.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentVariables.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentVariables.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,93 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-
-/**
- * storing tempates variables
- * @author ayukhovich(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.2 $ $Date: 2007/02/28 17:01:01 $
- */
-public class ComponentVariables implements Serializable {
-
- private transient HashMap variablesMap = new HashMap();
-
- /**
- * setting variable
- * @param variableName
- * @param variable
- */
- public void setVariable(final String variableName, final Object variable ) {
- variablesMap.put(variableName, variable);
- }
-
- /**
- *
- * @param variableName
- * @return
- */
- public Object getVariable(final String variableName ) {
- return variablesMap.get(variableName);
- }
-
-
- /**
- *
- * @param variableName
- * @param addValue
- */
- public void addValueToVariable(final String variableName, final Object addValue) {
- Object variable = getVariable(variableName);
- if ( variable == null )
- return;
-
- if (variable instanceof Integer) {
- addToValue( variableName,(Integer) variable, addValue);
- }
- }
-
- /**
- *
- * @param variableName
- * @param variable
- * @param addValue
- */
- protected void addToValue(final String variableName, Integer variable, final Object
addValue ) {
- Integer retultValue;
- if ( addValue instanceof Integer ) {
- Integer intAddValue =(Integer)addValue;
- retultValue = new Integer(variable.intValue() + intAddValue.intValue());
- } else {
- retultValue = variable;
- }
-
- setVariable(variableName, retultValue);
- }
-
- private void readObject(java.io.ObjectInputStream in)
- throws IOException, ClassNotFoundException{
- variablesMap = new HashMap();
- }
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentsVariableResolver.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentsVariableResolver.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentsVariableResolver.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,62 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import javax.faces.component.UIComponent;
-
-/**
- * Resolve component variables
- *
- * @author ayukhovich(a)exadel.com (latest modification by $Author:
- * alexeyyukhovich $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:53 $
- */
-public class ComponentsVariableResolver {
- private static String COMPONENTS_VARIABLE_RESOLVER = ComponentsVariableResolver.class
- .getName();
-
- private static String getAttributeName(RendererBase renderer) {
- return COMPONENTS_VARIABLE_RESOLVER + ":" + (renderer != null ?
renderer.getClass().getName() : null);
- }
-
- public static ComponentVariables getVariables(RendererBase renderer,
- UIComponent component) {
- ComponentVariables variables;
-
- String attributeName = getAttributeName(renderer);
-
- variables = (ComponentVariables) component.getAttributes().get(attributeName);
-
- if (variables == null) {
- variables = new ComponentVariables();
-
- component.getAttributes().put(attributeName, variables);
- }
-
- return variables;
- }
-
- public static void removeVariables(RendererBase renderer,
- UIComponent component) {
- component.getAttributes().remove(getAttributeName(renderer));
- }
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/HeaderResourcesRendererBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/HeaderResourcesRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/HeaderResourcesRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,137 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.IOException;
-import java.util.LinkedHashSet;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-
-import org.ajax4jsf.renderkit.HeaderResourceProducer;
-import org.ajax4jsf.resource.InternetResource;
-import org.ajax4jsf.webapp.BaseFilter;
-
-/**
- * Base renderer for components used JavaScripts and Styles in header. In real
- * class override getScripts or/and getStyles methods
- *
- * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:51 $
- *
- */
-public abstract class HeaderResourcesRendererBase extends RendererBase
- implements HeaderResourceProducer {
-
- /*
- * (non-Javadoc)
- *
- * @see
org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderScripts(javax.faces.context.FacesContext)
- */
- public LinkedHashSet getHeaderScripts(FacesContext context,
- UIComponent component) {
- return getUrisSet(context, getScripts(), component);
- }
-
- /**
- * Hoock method to return array of scripts resources to store in head.
- *
- * @return
- */
- protected InternetResource[] getScripts() {
- // TODO Auto-generated method stub
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderStyles(javax.faces.context.FacesContext)
- */
- public LinkedHashSet getHeaderStyles(FacesContext context,
- UIComponent component) {
- return getUrisSet(context, getStyles(), component);
- }
-
- /**
- * Hoock method to return array of styles resources to store in head
- *
- * @return
- */
- protected InternetResource[] getStyles() {
- // TODO Auto-generated method stub
- return null;
- }
-
- /**
- * @param context
- * @param resources
- * @param component
- * TODO
- * @return
- */
- private LinkedHashSet getUrisSet(FacesContext context,
- InternetResource[] resources, UIComponent component) {
- if (null != resources) {
- LinkedHashSet uris = new LinkedHashSet(); //
Collections.singleton(ajaxScript.getUri(context,
- // null));
- for (int i = 0; i < resources.length; i++) {
- InternetResource resource = resources[i];
- uris.add(resource.getUri(context, component));
- }
- return uris;
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
org.ajax4jsf.renderkit.RendererBase#preEncodeBegin(javax.faces.context.FacesContext,
- * javax.faces.component.UIComponent)
- */
- protected void preEncodeBegin(FacesContext context, UIComponent component)
- throws IOException {
- if ((null == context.getExternalContext().getRequestMap().get(
- BaseFilter.RESPONSE_WRAPPER_ATTRIBUTE))
- /*&& (!AjaxRendererUtils.isAjaxRequest(context))*/) {
- // Filter not used - encode scripts and CSS before component.
- encodeResourcesArray(context, component, getScripts());
- encodeResourcesArray(context, component, getStyles());
- }
- }
-
- /**
- * @param context
- * @param component
- * @param scripts
- * @throws IOException
- */
- protected void encodeResourcesArray(FacesContext context, UIComponent component,
InternetResource[] scripts) throws IOException {
- if (scripts != null) {
- for (int i = 0; i < scripts.length; i++) {
- scripts[i].encode(context,component);
- }
- }
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/PrototypeBasedRendererBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/PrototypeBasedRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/PrototypeBasedRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,66 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.util.LinkedHashSet;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-
-import org.ajax4jsf.renderkit.HeaderResourceProducer;
-import org.ajax4jsf.resource.InternetResource;
-import org.ajax4jsf.resource.PrototypeScript;
-
-
-/**
- * @author Maksim Kaszynski
- *
- */
-public abstract class PrototypeBasedRendererBase extends RendererBase implements
HeaderResourceProducer{
-
- protected static final String[] EMPTY_ARRAY = {};
- private InternetResource prototypeScript =
getResource(PrototypeScript.class.getName());
-
- public LinkedHashSet getHeaderScripts(FacesContext context, UIComponent component) {
- LinkedHashSet scripts = new LinkedHashSet() ; //
Collections.singleton(ajaxScript.getUri(context, null));
- scripts.add(prototypeScript.getUri(context, null));
- String[] additionalScripts = getAdditionalScripts();
- for (int i = 0; i < additionalScripts.length; i++) {
- String resource = additionalScripts[i];
- scripts.add(getResource(resource).getUri(context, null));
- }
- return scripts;
- }
-
- /* (non-Javadoc)
- * @see
org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderStyles(javax.faces.context.FacesContext)
- */
- public LinkedHashSet getHeaderStyles(FacesContext context, UIComponent component) {
- // TODO Auto-generated method stub
- return null;
- }
-
- protected String[] getAdditionalScripts() {
- return EMPTY_ARRAY;
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,289 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.io.IOException;
-import java.util.Iterator;
-
-import javax.faces.FacesException;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.render.Renderer;
-
-import org.ajax4jsf.Messages;
-import org.ajax4jsf.resource.InternetResource;
-import org.ajax4jsf.resource.InternetResourceBuilder;
-import org.ajax4jsf.resource.ResourceNotFoundException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.richfaces.skin.Skin;
-import org.richfaces.skin.SkinFactory;
-
-
-/**
- * Base Renderer for all chameleon Skin's and components.
- * At most, make all common procedures and realise concrete work in "template"
methods.
- * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:51 $
- *
- */
-public abstract class RendererBase extends Renderer implements
- ChameleonRenderer {
-
- /**
- * logger for common cases.
- */
- protected static final String JAVASCRIPT_NAMESPACE = "Exadel";
- private static final Log log = LogFactory.getLog(RendererBase.class);
- private static final RendererUtils utils = new RendererUtils();
-
- private SkinFactory skinFactory = null;
- private InternetResourceBuilder resourceBuilder = null;
- /* (non-Javadoc)
- * @see javax.faces.render.Renderer#decode(javax.faces.context.FacesContext,
javax.faces.component.UIComponent)
- */
- public void decode(FacesContext context, UIComponent component) {
- // Test for correct parameters.
- if (context == null) throw new
NullPointerException(Messages.getMessage(Messages.CONTEXT_NULL_ERROR,
"decode"));
- if (component == null) throw new
NullPointerException(Messages.getMessage(Messages.COMPONENT_NULL_ERROR,
"decode"));
- if (! getComponentClass().isInstance(component)) throw new
IllegalArgumentException(Messages.getMessage(Messages.COMPONENT_CLASS_ERROR, "",
getComponentClass().getName()));
- if(log.isDebugEnabled()){
- log.debug(Messages.getMessage(Messages.START_DECODING_COMPONENT_INFO,
component.getClientId(context), component.getClass().getName()));
- }
- preDecode(context,component);
- // TODO - create set od common decoders ( UIInput, ActionSource etc. ) for
process decoding.
- if (component.isRendered()) {
- doDecode(context, component);
- }
- }
-
- protected void preDecode(FacesContext context, UIComponent component) {
- }
-
- protected void preEncodeBegin(FacesContext context, UIComponent component) throws
IOException {
-
- }
-
- /* (non-Javadoc)
- * @see javax.faces.render.Renderer#encodeBegin(javax.faces.context.FacesContext,
javax.faces.component.UIComponent)
- */
- public void encodeBegin(FacesContext context, UIComponent component) throws IOException
{
- // Test for correct parameters.
- if (context == null) throw new
NullPointerException(Messages.getMessage(Messages.CONTEXT_NULL_ERROR,
"encodeBegin"));
- if (component == null) throw new
NullPointerException(Messages.getMessage(Messages.COMPONENT_NULL_ERROR,
"encodeBegin"));
- if (! getComponentClass().isInstance(component)) throw new
IllegalArgumentException(Messages.getMessage(Messages.COMPONENT_CLASS_ERROR,
component.getClientId(context), getComponentClass().getName()));
- if(log.isDebugEnabled()){
- log.debug(Messages.getMessage(Messages.START_ENCODING_COMPONENT_INFO,
component.getClientId(context), component.getClass().getName()));
- }
- preEncodeBegin(context,component);
- if (component.isRendered()) {
- ResponseWriter writer = context.getResponseWriter();
- doEncodeBegin(writer, context, component);
- }
- }
-
-
-
- /* (non-Javadoc)
- * @see javax.faces.render.Renderer#encodeChildren(javax.faces.context.FacesContext,
javax.faces.component.UIComponent)
- */
- public void encodeChildren(FacesContext context, UIComponent component) throws
IOException {
- // Test for correct parameters.
- if (context == null) throw new
NullPointerException(Messages.getMessage(Messages.CONTEXT_NULL_ERROR,
"encodeBegin"));
- if (component == null) throw new
NullPointerException(Messages.getMessage(Messages.COMPONENT_NULL_ERROR,
"encodeBegin"));
- if (! getComponentClass().isInstance(component)) throw new
IllegalArgumentException(Messages.getMessage(Messages.COMPONENT_CLASS_ERROR,
component.getClientId(context), getComponentClass().getName()));
- if(log.isDebugEnabled()){
- log.debug(Messages.getMessage(Messages.CHILDREN_ENCODING_COMPONENT_INFO,
component.getClientId(context), component.getClass().getName()));
- }
- preEncodeBegin(context,component);
- if (component.isRendered()) {
- ResponseWriter writer = context.getResponseWriter();
- doEncodeChildren(writer, context, component);
- }
- }
-
- /* (non-Javadoc)
- * @see javax.faces.render.Renderer#encodeEnd(javax.faces.context.FacesContext,
javax.faces.component.UIComponent)
- */
- public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
- // Test for correct parameters.
- if (context == null) throw new
NullPointerException(Messages.getMessage(Messages.CONTEXT_NULL_ERROR,
"encodeEnd"));
- if (component == null) throw new
NullPointerException(Messages.getMessage(Messages.COMPONENT_NULL_ERROR,
"encodeEnd"));
- if (! getComponentClass().isInstance(component)) throw new
IllegalArgumentException(Messages.getMessage(Messages.COMPONENT_CLASS_ERROR,
component.getClientId(context), getComponentClass().getName()));
- if (component.isRendered()) {
- ResponseWriter writer = context.getResponseWriter();
- doEncodeEnd(writer, context, component);
- }
- if(log.isDebugEnabled()){
- log.debug(Messages.getMessage(Messages.FINISH_ENCODING_COMPONENT_INFO,
component.getClientId(context), component.getClass().getName()));
- }
- }
-
- /**
- * Base stub method for produce internet resource ( image, script ... )
- * since resources must be implemented in "lightweight" pattern, it instances
- * put in internal map to caching.
- * @param resourceURI - relative ( to renderer class ) uri to resource in jar or
- * key for generate ( in Java2D , for example ).
- * @return - resource instance for this uri.
- * @throws ResourceNotFoundException - if reqested resource not instantiated.
- */
- public InternetResource getResource(String resourceURI ) throws FacesException {
- return getResourceBuilder().createResource(this,resourceURI);
- }
-
- private InternetResourceBuilder getResourceBuilder(){
- if (resourceBuilder == null) {
- resourceBuilder = InternetResourceBuilder.getInstance();
-
- }
-
- return resourceBuilder;
- }
- //==========================================================
- // Protected common methods - for all Renderer's
-
- /**
- * Calculate current Skin for rendering.
- * @param context - current {@link FacesContext }
- * @return
- */
- protected Skin getSkin(FacesContext context) {
- if (skinFactory == null) {
- skinFactory = SkinFactory.getInstance();
-
- }
-
- return skinFactory.getSkin(context);
- }
-
-
- /**
- * Due to big number of common utility methods, base renderer divide to 2 classes -
renderer and utils.
- * since use static methods of utility class breack object paradigm, we use getter for
concrete util instance.
- * Developer can override any utility metod in 2 stages :
- * 1) Create subclass of {@link RendererUtils} and override utility method.
- * 2) Override this method for return instance of such subclass.
- *
- * @return Returns the utils.
- */
- public RendererUtils getUtils() {
- return utils;
- }
-
-
- /**
- * Get base component slass , targetted for this renderer. Used for check arguments in
decode/encode.
- * @return
- */
- protected abstract Class getComponentClass();
-
-
- /**
- * Template method for custom decoding of concrete renderer.
- * All parameters checking if performed in original {@see decode } method.
- * @param context
- * @param component
- */
- protected void doDecode(FacesContext context, UIComponent component) {
-
- }
-
- /**
- * Template method for custom start encoding of concrete renderer.
- * All parameters checking and writer is performed in original {@link encodeBegin }
method.
- * @param writer
- * @param context
- * @param component
- */
- protected void doEncodeBegin(ResponseWriter writer,FacesContext context, UIComponent
component) throws IOException {
-
- }
- /**
- * @param writer
- * @param context
- * @param component
- */
- protected void doEncodeChildren(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
- // Hook method, must be overriden in renderers with special children processing
- }
-
- /**
- * Template method for custom finish encoding of concrete renderer.
- * All parameters checking and writer is performed in original {@link encodeEnd }
method.
- * @param writer
- * @param context
- * @param component
- * @throws IOException
- */
- protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
-
- }
- /**
- * Append new resource to renderer cache.
- * @param key
- * @param resource
- */
- protected void addResource(String key, InternetResource resource) {
- getResourceBuilder().addResource(key,resource);
- }
-
- /**
- * Render all children for given component.
- * @param facesContext
- * @param component
- * @throws IOException
- */
- public void renderChildren(FacesContext facesContext,
- UIComponent component) throws IOException {
- if (component.getChildCount() > 0) {
- for (Iterator it = component.getChildren().iterator(); it.hasNext();) {
- UIComponent child = (UIComponent) it.next();
- renderChild(facesContext, child);
- }
- }
- }
-
-
- /**
- * Render one component and it childrens
- * @param facesContext
- * @param child
- * @throws IOException
- */
- public void renderChild(FacesContext facesContext, UIComponent child)
- throws IOException {
- if (!child.isRendered()) {
- return;
- }
-
- child.encodeBegin(facesContext);
- if (child.getRendersChildren()) {
- child.encodeChildren(facesContext);
- } else {
- renderChildren(facesContext, child);
- }
- child.encodeEnd(facesContext);
- }
-
-}
Deleted:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererUtils.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererUtils.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererUtils.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -1,803 +0,0 @@
-/**
- * License Agreement.
- *
- * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.ajax4jsf.framework.renderer;
-
-import java.awt.Dimension;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.faces.FacesException;
-import javax.faces.application.ViewHandler;
-import javax.faces.component.EditableValueHolder;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIForm;
-import javax.faces.component.UIViewRoot;
-import javax.faces.component.ValueHolder;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.convert.Converter;
-
-import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.compiler.TemplateContext;
-import org.ajax4jsf.framework.util.HtmlDimensions;
-import org.ajax4jsf.resource.InternetResource;
-import org.ajax4jsf.resource.Java2Dresource;
-
-
-/**
- * Util class for common render operations - render passthru html attributes,
- * iterate over child components etc.
- * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.6 $ $Date: 2007/02/08 19:07:16 $
- *
- */
-public class RendererUtils {
-
- public static final String DUMMY_FORM_ID = ":_form";
- /**
- * Substitutions for components properies names and HTML attributes names.
- */
- private static Map substitutions = new HashMap();
-
- static {
- substitutions.put(HTML.class_ATTRIBUTE,"styleClass");
- Arrays.sort(HTML.PASS_THRU);
- Arrays.sort(HTML.PASS_THRU_BOOLEAN);
- Arrays.sort(HTML.PASS_THRU_URI);
- }
- /**
- * Common HTML elements and attributes names.
- * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
- * @version $Revision: 1.1.2.6 $ $Date: 2007/02/08 19:07:16 $
- *
- */
- public interface HTML {
- // elements
- public static final String BUTTON = "button";
- // attributes
- public static final String id_ATTRIBUTE = "id";
- public static final String class_ATTRIBUTE = "class";
-// public static final String STYLE_ATTRIBUTE = "style";
-// public static final String dir_ATTRIBUTE = "dir";
-// public static final String lang_ATTRIBUTE = "lang";
-// public static final String title_ATTRIBUTE = "title";
- public static final String accesskey_ATTRIBUTE = "accesskey";
- public static final String alt_ATTRIBUTE = "alt";
- public static final String cols_ATTRIBUTE = "cols";
-
- public static final String height_ATTRIBUTE = "height";
-
- public static final String lang_ATTRIBUTE = "lang";
-
- public static final String longdesc_ATTRIBUTE = "longdesc";
-
- public static final String maxlength_ATTRIBUTE = "maxlength";
-
- public static final String onblur_ATTRIBUTE = "onblur";
-
- public static final String onchange_ATTRIBUTE = "onchange";
-
- public static final String onclick_ATTRIBUTE = "onclick";
-
- public static final String ondblclick_ATTRIBUTE = "ondblclick";
-
- public static final String onfocus_ATTRIBUTE = "onfocus";
-
- public static final String onkeydown_ATTRIBUTE = "onkeydown";
-
- public static final String onkeypress_ATTRIBUTE = "onkeypress";
-
- public static final String onkeyup_ATTRIBUTE = "onkeyup";
-
- public static final String onload_ATTRIBUTE = "onload";
-
- public static final String onmousedown_ATTRIBUTE = "onmousedown";
-
- public static final String onmousemove_ATTRIBUTE = "onmousemove";
-
- public static final String onmouseout_ATTRIBUTE = "onmouseout";
-
- public static final String onmouseover_ATTRIBUTE = "onmouseover";
-
- public static final String onmouseup_ATTRIBUTE = "onmouseup";
-
- public static final String onreset_ATTRIBUTE = "onreset";
-
- public static final String onselect_ATTRIBUTE = "onselect";
-
- // public static final String onsubmit_ATTRIBUTE = "onsubmit";
- public static final String onunload_ATTRIBUTE = "onunload";
-
- public static final String rows_ATTRIBUTE = "rows";
-
- public static final String size_ATTRIBUTE = "size";
-
- public static final String tabindex_ATTRIBUTE = "tabindex";
-
- public static final String title_ATTRIBUTE = "title";
-
- public static final String style_ATTRIBUTE = "style";
-
- public static final String align_ATTRIBUTE = "align";
-
- public static final String width_ATTRIBUTE = "width";
-
- public static final String dir_ATTRIBUTE = "dir";
-
- public static final String rules_ATTRIBUTE = "rules";
-
- public static final String frame_ATTRIBUTE = "frame";
-
- public static final String border_ATTRIBUTE = "border";
-
- public static final String cellspacing_ATTRIBUTE = "cellspacing";
-
- public static final String cellpadding_ATTRIBUTE = "cellpadding";
-
- public static final String summary_ATTRIBUTE = "summary";
-
- public static final String bgcolor_ATTRIBUTE = "bgcolor";
-
- public static final String usemap_ATTRIBUTE = "usemap";
-
- public static final String enctype_ATTRIBUTE = "enctype";
-
- public static final String accept_charset_ATTRIBUTE = "accept-charset";
-
- public static final String accept_ATTRIBUTE = "accept";
-
- public static final String target_ATTRIBUTE = "target";
-
- public static final String onsubmit_ATTRIBUTE = "onsubmit";
-
- public static final String readonly_ATTRIBUTE = "readonly";
-
- public static final String nowrap_ATTRIBUTE = "nowrap";
-
- //public static final String onreset_ATTRIBUTE = "onreset";
- // attributes sets.
- public static final String[] PASS_THRU = {
-// DIR_ATTRIBUTE,
-// LANG_ATTRIBUTE,
-// STYLE_ATTRIBUTE,
-// TITLE_ATTRIBUTE
- "accesskey",
- "alt",
- "cols",
- "height",
- "lang",
- "longdesc",
- "maxlength",
- "onblur",
- "onchange",
- "onclick",
- "ondblclick",
- "onfocus",
- "onkeydown",
- "onkeypress",
- "onkeyup",
- "onload",
- "onmousedown",
- "onmousemove",
- "onmouseout",
- "onmouseover",
- "onmouseup",
- "onreset",
- "onselect",
- "onsubmit",
- "onunload",
- "rows",
- "size",
- "tabindex",
- "title",
- "width",
- "dir",
- "rules",
- "frame",
- "border",
- "cellspacing",
- "cellpadding",
- "summary",
- "bgcolor",
- "usemap",
- "enctype",
- "accept-charset",
- "accept",
- "target",
- "charset",
- "coords",
- "hreflang",
- "rel",
- "rev",
- "shape",
- "disabled",
- "readonly",
- "ismap"
-
- };
-
- /**
- * HTML attributes allowed boolean-values only
- */
- public static final String[] PASS_THRU_BOOLEAN = {
- "disabled",
- "declare",
- "readonly",
- "compact",
- "ismap",
- "selected",
- "checked",
- "nowrap",
- "noresize",
- "nohref",
- "noshade",
- "multiple"
- };
-
-
- /**
- * all HTML attributes with URI value.
- */
- public static final String[] PASS_THRU_URI = {
- "usemap",
- "background",
- "codebase",
- "cite",
- "data",
- "classid",
- "href",
- "longdesc",
- "profile",
- "src"
- };
-
- public static final String[] PASS_THRU_STYLES = {
- "style",
- "class",
- };
-
- public static final String SPAN_ELEM = "span";
- public static final String DIV_ELEM = "div";
- public static final String SCRIPT_ELEM = "script";
- public static final String STYLE_CLASS_ATTR = "styleClass";
- public static final String DISABLED_ATTR = "disabled";
- public static final String TYPE_ATTR = "type";
- public static final String CHARSET_ATTR = "charset";
- public static final String COORDS_ATTR = "coords";
- public static final String HREFLANG_ATTR = "hreflang";
- public static final String REL_ATTR = "rel";
- public static final String REV_ATTR = "rev";
- public static final String SHAPE_ATTR = "shape";
- public static final String title_ELEM = "title";
- public static final String FORM_ELEMENT = "form";
- public static final String NAME_ATTRIBUTE = "name";
- public static final String METHOD_ATTRIBUTE = "method";
- public static final String ACTION_ATTRIBUTE = "action";
- public static final String INPUT_ELEM = "input";
- public static final Object INPUT_TYPE_HIDDEN = "hidden";
- public static final String value_ATTRIBUTE = "value";
- public static final String td_ELEM = "td";
- public static final String th_ELEM = "th";
- public static final String valign_ATTRIBUTE = "valign";
- public static final String a_ELEMENT = "a";
- public static final String HTML_ELEMENT = "html";
- public static final String BODY_ELEMENT = "body";
- public static final String TR_ELEMENT = "tr";
- public static final String CAPTION_ELEMENT = "caption";
- public static final String THEAD_ELEMENT = "thead";
- public static final String TFOOT_ELEMENT = "tfoot";
- }
-
- /**
- * Encode id attribute with clientId component property
- * @param context
- * @param component
- * @throws IOException
- */
- public void encodeId(FacesContext context, UIComponent component) throws IOException {
- encodeId(context,component,HTML.id_ATTRIBUTE);
- }
-
- /**
- * Encode clientId to custom attribute ( for example, to control name )
- * @param context
- * @param component
- * @param attribute
- * @throws IOException
- */
- public void encodeId(FacesContext context,UIComponent component, String attribute)
throws IOException {
- String clientId = null;
- try {
- clientId = component.getClientId(context);
- } catch(Exception e) {
- //just ignore if clientId wasn't inited yet
- }
- if (null != clientId) {
- context.getResponseWriter().writeAttribute(attribute,
- clientId,
- (String) getComponentAttributeName(attribute));
- }
- }
- /**
- * Encode id attribute with clientId component property.
- * Encoded only if id not auto generated.
- * @param context
- * @param component
- * @throws IOException
- */
- public void encodeCustomId(FacesContext context, UIComponent component) throws
IOException {
- if(component.getId() != null &&
!component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX)){
- context.getResponseWriter().writeAttribute(HTML.id_ATTRIBUTE,component.getClientId(context),HTML.id_ATTRIBUTE);
- }
- }
-
- /**
- * Encode common pass-thru html attributes.
- * @param context
- * @param component
- * @throws IOException
- */
- public void encodePassThru(FacesContext context, UIComponent component) throws
IOException {
- encodeAttributesFromArray(context,component,HTML.PASS_THRU);
- }
-
- /**
- * Encode pass-through attributes except specified ones
- * @param context
- * @param component
- * @param exclusions
- * @throws IOException
- */
- public void encodePassThruWithExclusions(FacesContext context, UIComponent
component,String exclusions) throws IOException{
- if (null != exclusions) {
- String[] exclusionsArray = exclusions.split(",");
- encodePassThruWithExclusionsArray(context,component,exclusionsArray);
- }
- }
-
- public void encodePassThruWithExclusionsArray(FacesContext context, UIComponent
component,String[] exclusions) throws IOException {
- ResponseWriter writer = context.getResponseWriter();
- Map attributes = component.getAttributes();
- Arrays.sort(exclusions);
- for (int i = 0; i < HTML.PASS_THRU.length; i++) {
- String attribute = HTML.PASS_THRU[i];
- if(Arrays.binarySearch(exclusions, attribute) < 0){
- encodePassThruAttribute(context, attributes, writer, attribute);
- }
- }
- }
-
- /**
- * Encode one pass-thru attribute, with plain/boolean/url value, got from properly
component attribute.
- * @param context
- * @param component
- * @param writer
- * @param attribute
- * @throws IOException
- */
- public void encodePassThruAttribute(FacesContext context, Map attributes, ResponseWriter
writer, String attribute) throws IOException {
- Object value =
attributeValue(attribute,attributes.get(getComponentAttributeName(attribute)));
- if (null != value && shouldRenderAttribute(value)) {
- if(Arrays.binarySearch(HTML.PASS_THRU_URI, attribute)>=0){
- String url = context.getApplication().getViewHandler().getResourceURL(context,
value.toString());
- url = context.getExternalContext().encodeResourceURL(url);
- writer.writeURIAttribute(attribute,url,attribute);
- } else {
- writer.writeAttribute(attribute,value,attribute);
- }
- }
- }
-
-
- public void encodeAttributesFromArray(FacesContext context, UIComponent
component,String[] attrs) throws IOException {
- ResponseWriter writer = context.getResponseWriter();
- Map attributes = component.getAttributes();
- for (int i = 0; i < attrs.length; i++) {
- String attribute = attrs[i];
- encodePassThruAttribute(context, attributes, writer, attribute);
- }
- }
-
-
- /**
- * Encode attributes given by comma-separated string list.
- * @param context current JSF context
- * @param component for with render attributes values
- * @param attrs comma separated list of attributes
- * @throws IOException
- */
- public void encodeAttributes(FacesContext context, UIComponent component,String attrs)
throws IOException {
- if (null != attrs) {
- String[] attrsArray = attrs.split(",");
- encodeAttributesFromArray(context,component,attrsArray);
- }
- }
- /**
- * @param context
- * @param component
- * @param string
- * @param string2
- * @throws IOException
- */
- public void encodeAttribute(FacesContext context, UIComponent component, Object
property, String attributeName) throws IOException {
- ResponseWriter writer = context.getResponseWriter();
- Object value = component.getAttributes().get(property);
- if (shouldRenderAttribute(value)) {
- writer.writeAttribute(attributeName,value,property.toString());
- }
-
- }
-
- public void encodeAttribute(FacesContext context, UIComponent component,String
attribute) throws IOException {
- encodeAttribute(context,component,getComponentAttributeName(attribute),attribute);
- }
- /**
- * Write html-attribute
- * @param writer
- * @param attribute
- * @param value
- * @throws IOException
- */
- public void writeAttribute(ResponseWriter writer, String attribute, Object value )
throws IOException {
- if ( shouldRenderAttribute(value) ) {
- writer.writeAttribute(attribute, value.toString(), attribute );
- }
- }
-
- /**
- * @return true if and only if the argument
- * <code>attributeVal</code> is an instance of a wrapper for a
- * primitive type and its value is equal to the default value for
- * that type as given in the spec.
- */
-
- public boolean shouldRenderAttribute(Object attributeVal) {
- if(null == attributeVal){
- return false;
- } else if (attributeVal instanceof Boolean &&
- ((Boolean) attributeVal).booleanValue() ==
- Boolean.FALSE.booleanValue()) {
- return false;
- } else if(attributeVal.toString().length() == 0){
- return false;
- } else return isValidProperty(attributeVal);
- }
-
-
- /**
- * Test for valid value of property. by default, for non-setted properties with Java
primitive types of
- * JSF component return appropriate MIN_VALUE .
- * @param property - value of property returned from {@link
UIComponent#getAttributes()}
- * @return true for setted property, false otherthise.
- */
- public boolean isValidProperty(Object property) {
- if (null == property) {
- return false;
- } else if (property instanceof Integer
- && ((Integer) property).intValue() == Integer.MIN_VALUE) {
- return false;
- } else if (property instanceof Double
- && ((Double) property).doubleValue() == Double.MIN_VALUE) {
- return false;
- } else if (property instanceof Character
- && ((Character) property).charValue() == Character.MIN_VALUE) {
- return false;
- } else if (property instanceof Float
- && ((Float) property).floatValue() == Float.MIN_VALUE) {
- return false;
- } else if (property instanceof Short
- && ((Short) property).shortValue() == Short.MIN_VALUE) {
- return false;
- } else if (property instanceof Byte
- && ((Byte) property).byteValue() == Byte.MIN_VALUE) {
- return false;
- } else if (property instanceof Long
- && ((Long) property).longValue() == Long.MIN_VALUE) {
- return false;
- }
- return true;
- }
-
- /**
- * Convert HTML attribute name to component property name.
- *
- * @param key
- * @return
- */
- protected Object getComponentAttributeName(Object key) {
- Object converted = substitutions.get(key);
- if (null==converted) {
- return key;
- } else {
- return converted;
- }
- }
-
- /**
- * Convert attribute value to proper object. For known html boolean attributes return
name
- * for true value, otherthise - null. For non-boolean attributes return same value.
- * @param name attribute name.
- * @param value
- * @return
- */
- protected Object attributeValue(String name, Object value){
- if (null != value && Arrays.binarySearch(HTML.PASS_THRU_BOOLEAN,name)>=0) {
- boolean checked = false;
- if (value instanceof Boolean) {
- checked = ((Boolean) value).booleanValue();
- } else {
- if( ! (value instanceof String) ){
- value = value.toString();
- }
- checked = (new Boolean((String) value)).booleanValue();
- }
- return checked?name:null;
- } else {
- return value;
- }
- }
-
-
- /**
- * Get boolean value of logical attribute
- * @param component
- * @param name attribute name
- * @return true if attribute is equals Boolean.TRUE or String "true" , false
otherwise.
- */
- public boolean isBooleanAttribute(UIComponent component, String name){
- Object attrValue = component.getAttributes().get(name);
- boolean result = false;
- if(null != attrValue){
- if(attrValue instanceof String ){
- result = "true".equalsIgnoreCase((String) attrValue);
- } else {
- result = Boolean.TRUE.equals(attrValue);
- }
- }
- return result;
- }
-
- /**
- * Return converted value for {@link javax.faces.component.ValueHolder} as String,
- * perform nessesary convertions.
- * @param context
- * @param component
- * @return
- */
- public String getValueAsString(FacesContext context, UIComponent component) {
- // First - get submitted value for input components
- if (component instanceof EditableValueHolder) {
- EditableValueHolder input = (EditableValueHolder) component;
- String submittedValue = (String) input.getSubmittedValue();
- if(null != submittedValue) {
- return submittedValue;
- }
- }
- // If no submitted value presented - convert same for UIInput/UIOutput
- if (component instanceof ValueHolder) {
- return formatValue(context, component, ((ValueHolder) component).getValue() );
- } else {
- throw new
IllegalArgumentException(Messages.getMessage(Messages.CONVERTING_NON_VALUE_HOLDER_COMPONENT_ERROR,
component.getId()));
- }
- }
-
- /**
- * Convert any object value to string. If component instance of {@link ValueHolder } got
{@link Converter} for formatting.
- * If not, attempt to use converter based on value type.
- * @param context
- * @param component
- * @return
- */
- public String formatValue(FacesContext context, UIComponent component,Object value) {
- if(value instanceof String) {
- return (String) value;
- }
- Converter converter = null;
- if (component instanceof ValueHolder) {
- ValueHolder holder = (ValueHolder) component;
- converter = holder.getConverter();
- }
- if(null == converter && null != value ) {
- try {
- converter = context.getApplication().createConverter(
- value.getClass());
- } catch (FacesException e) {
- // TODO - log converter exception.
- }
- }
- if(null == converter) {
- if(null != value) {
- return value.toString();
- }
- } else {
- return converter.getAsString(context, component, value);
- }
- return "";
- }
-
- public void encodeDimensions(FacesContext context, UIComponent component,
InternetResource resource) throws IOException {
- if (resource instanceof Java2Dresource) {
- Java2Dresource j2d = (Java2Dresource) resource;
- Dimension dim = j2d.getDimensions(context, component);
- ResponseWriter writer = context.getResponseWriter();
- writer.writeAttribute("width", String.valueOf(dim.width),
"width");
- writer.writeAttribute("height", String.valueOf(dim.height),
"height");
- }
- }
- public String encodePx(String value){
- return HtmlDimensions.formatPx(HtmlDimensions.decode(value));
- }
- /**
- * formats given value to
- * @param value
- * @param pattern
- * @return
- */
- public String encodePctOrPx(String value){
- if(value.indexOf('%') > 0){
- return value;
- } else {
- return encodePx(value);
- }
- }
-
- /**
- * Find nested form for given component
- * @param component
- * @return nested <code>UIForm</code> component, or
<code>null</code>
- */
- public UIForm getNestingForm(FacesContext context,UIComponent component)
- {
- UIComponent parent = component.getParent();
- while (parent != null && !(parent instanceof UIForm))
- {
- parent = parent.getParent();
- }
-
- UIForm nestingForm = null;
- if (parent != null)
- {
- //link is nested inside a form
- nestingForm = (UIForm) parent;
- }
- return nestingForm;
- }
-
- /**
- * @param context
- * @param component
- * @return
- * @throws IOException
- */
- public void encodeBeginFormIfNessesary(FacesContext context, UIComponent component)
throws IOException {
- UIForm form = getNestingForm(context, component);
- if(null == form) {
- ResponseWriter writer = context.getResponseWriter();
- String clientId = component.getClientId(context)+DUMMY_FORM_ID;
- encodeBeginForm(context, component, writer, clientId);
-// writer.writeAttribute(HTML.style_ATTRIBUTE, "margin:0; padding:0;",
null);
- }
- }
-
- /**
- * @param context
- * @param component
- * @param writer
- * @param clientId
- * @throws IOException
- */
- public void encodeBeginForm(FacesContext context, UIComponent component, ResponseWriter
writer, String clientId) throws IOException {
- String actionURL = getActionUrl(context);
- String encodeActionURL = context.getExternalContext().encodeActionURL(actionURL);
-
- writer.startElement(HTML.FORM_ELEMENT, component);
- writer.writeAttribute(HTML.id_ATTRIBUTE, clientId, null);
- writer.writeAttribute(HTML.NAME_ATTRIBUTE, clientId, null);
- writer.writeAttribute(HTML.METHOD_ATTRIBUTE, "post", null);
- writer.writeAttribute(HTML.style_ATTRIBUTE, "margin:0; padding:0;",
null);
- writer.writeURIAttribute(HTML.ACTION_ATTRIBUTE,
- encodeActionURL,
- "action");
- }
-
- /**
- * @param context
- * @param component
- * @throws IOException
- */
- public void encodeEndFormIfNessesary(FacesContext context, UIComponent component) throws
IOException {
- UIForm form = getNestingForm(context, component);
- if(null == form) {
- ResponseWriter writer = context.getResponseWriter();
- // TODO - hidden form parameters ?
- encodeEndForm(context, writer);
- }
- }
-
- /**
- * @param context
- * @param writer
- * @throws IOException
- */
- public void encodeEndForm(FacesContext context, ResponseWriter writer) throws
IOException {
- AjaxRendererUtils.writeState(context);
- writer.endElement(HTML.FORM_ELEMENT);
- }
-
- /**
- * @param facesContext
- * @return String A String representing the action URL
- */
- public String getActionUrl(FacesContext facesContext)
- {
- ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
- String viewId = facesContext.getViewRoot().getViewId();
- return viewHandler.getActionURL(facesContext, viewId);
- }
- /**
- *
- * @param context
- * @param value
- * @return URL of target resource (src, href, etc)
- */
- public String encodeResourceURL(TemplateContext context, Object value){
- if(value == null){
- return "";
- }
- FacesContext facesContext = context.getFacesContext();
- value = facesContext.getApplication().getViewHandler().getResourceURL(facesContext,
value.toString());
- return facesContext.getExternalContext().encodeResourceURL((String)value);
- }
- /**
- * Simplified version of {@link encodeId}
- * @param context
- * @param component
- * @return client id of current component
- */
- public String clientId(FacesContext context, UIComponent component){
- String clientId = "";
- try {
- clientId = component.getClientId(context);
- } catch (Exception e) {
- //just ignore
- }
- return clientId;
- }
-
- /**
- * Wtrie JavaScript with start/end elements and type.
- * @param context
- * @param tab
- * @param string
- */
-
- public void writeScript(FacesContext context, UIComponent component, Object script)
throws IOException {
- ResponseWriter writer = context.getResponseWriter();
- writer.startElement(HTML.SCRIPT_ELEM,component);
- writer.writeAttribute(HTML.TYPE_ATTR,"text/javascript","type");
- writer.writeText(script,null);
- writer.endElement(HTML.SCRIPT_ELEM);
- }
-
-}
\ No newline at end of file
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/BreakPoint.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/BreakPoint.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/BreakPoint.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -30,7 +30,7 @@
import javax.faces.context.FacesContext;
import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.xml.sax.SAXException;
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/ElementBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/ElementBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/ElementBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -37,7 +37,7 @@
import javax.faces.el.ValueBinding;
import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.apache.commons.beanutils.MethodUtils;
import org.richfaces.skin.SkinFactory;
import org.xml.sax.SAXException;
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/HtmlCompiler.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/HtmlCompiler.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/HtmlCompiler.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -35,7 +35,7 @@
import javax.faces.context.FacesContext;
import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.Rule;
import org.apache.commons.digester.RulesBase;
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/MethodParameterElement.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/MethodParameterElement.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/MethodParameterElement.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -26,7 +26,7 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.xml.sax.SAXException;
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/PreparedTemplate.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/PreparedTemplate.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/PreparedTemplate.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -27,7 +27,7 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.xml.sax.SAXException;
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/ResourceElement.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/ResourceElement.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/ResourceElement.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -27,7 +27,7 @@
import javax.faces.FacesException;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.InternetResourceBuilder;
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/TemplateContext.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/TemplateContext.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/compiler/TemplateContext.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,7 +28,7 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
/**
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/taglib/HtmlComponentTagBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/taglib/HtmlComponentTagBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/taglib/HtmlComponentTagBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -23,7 +23,7 @@
import javax.faces.component.UIComponent;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AJAXDataSerializer.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AJAXDataSerializer.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AJAXDataSerializer.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AJAXDataSerializer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,45 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+
+
+import org.ajax4jsf.javascript.ScriptUtils;
+
+/**
+ * @author shura
+ *
+ */
+public class AJAXDataSerializer {
+
+ public static final String SERVICE = AJAXDataSerializer.class.getName();
+
+ public String asString(Object data) {
+ StringBuffer result = new StringBuffer();
+ if(null != data){
+ result.append("<![CDATA[ ");
+ result.append(ScriptUtils.toScript(data));
+ result.append(" ]]>");
+ }
+ return result.toString();
+ }
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxChildrenRenderer.java (from
rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxChildrenRenderer.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxChildrenRenderer.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxChildrenRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,189 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.Messages;
+import org.ajax4jsf.component.AjaxChildrenEncoder;
+import org.ajax4jsf.component.AjaxOutput;
+import org.ajax4jsf.renderkit.AjaxRenderer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author shura
+ *
+ */
+public abstract class AjaxChildrenRenderer extends AjaxComponentRendererBase implements
AjaxRenderer {
+
+ public static final Log log = LogFactory.getLog(AjaxChildrenRenderer.class);
+
+ public static final String[] SPECIAL_COMPONENTS_TYPES = {
+ "org.ajax4jsf.Bundle"/*UILoadBundle.COMPONENT_TYPE*/,
"org.apache.myfaces.AliasBean",
+ "org.apache.myfaces.AliasBeansScope" };
+ private static final String SPECIAL_TYPES_PARAMETER =
"org.ajax4jsf.CONTROL_COMPONENTS";
+
+ /**
+ * Iterate over all childs of components. If component id contains in list ,
+ * or, if list is empty, compotents is submitted form - render it. TODO -
+ * Instead of calculate full path for every component, build current Path
+ * for componet and send as parameter.
+ *
+ * @param context -
+ * current context
+ * @param component -
+ * curent faces component.
+ * @param ids -
+ * list of Id to render.
+ * @throws IOException
+ * @deprecated Use {@link #encodeAjaxChildren(FacesContext,UIComponent,String,Set,Set)}
instead
+ */
+ public void encodeAjaxChild(FacesContext context, UIComponent component, String path,
Set ids, Set renderedAreas) throws IOException {
+ encodeAjaxChildren(context, component, path, ids, renderedAreas);
+ }
+
+ /* (non-Javadoc)
+ * @see
org.ajax4jsf.renderkit.AjaxRenderer#encodeAjaxChildren(javax.faces.context.FacesContext,
javax.faces.component.UIComponent, java.lang.String, java.util.Set, java.util.Set)
+ */
+ public void encodeAjaxChildren(FacesContext context, UIComponent component, String path,
Set ids, Set renderedAreas) throws IOException {
+ if (log.isDebugEnabled()) {
+ log.debug(Messages.getMessage(Messages.ENCODE_CHILD_AJAX_INFO,
+ path, component.getId()));
+ }
+ String currentPath = path;
+ if (component instanceof NamingContainer) {
+ currentPath += component.getId() + NamingContainer.SEPARATOR_CHAR;
+ }
+ for (Iterator it = component.getFacetsAndChildren(); it.hasNext();) {
+ UIComponent element = (UIComponent) it.next();
+ encodeAjaxComponent(context, element, currentPath, ids, renderedAreas);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see
org.ajax4jsf.renderkit.AjaxRenderer#encodeAjaxComponent(javax.faces.context.FacesContext,
javax.faces.component.UIComponent, java.lang.String, java.util.Set, java.util.Set)
+ */
+ public void encodeAjaxComponent(FacesContext context, UIComponent component, String
currentPath, Set ids, Set renderedAreas) throws IOException {
+ if (component.isRendered()) { // skip not-rendered components.
+ boolean found = false;
+ if (!ids.isEmpty()) {
+ // list for rendering may contains absolute id ( best ),
+ // component Id or client ID
+ String elementId = component.getId();
+ String absoluteId = currentPath + elementId;
+ // String clientId = element.getClientId(context);
+ if (ids.contains(absoluteId) || ids.contains(elementId)) {
+ if (log.isDebugEnabled()) {
+ log
+ .debug(Messages.getMessage(
+ Messages.RENDER_AJAX_AREA_INFO,
+ absoluteId));
+ }
+ // renderChild(context, element);
+ found = true;
+ }
+ }
+ if (!found && component instanceof AjaxOutput) {
+ if (((AjaxOutput) component).isAjaxRendered()) {
+ // renderChild(context, element);
+ found = true;
+ }
+
+ }
+
+ if (!found) {
+ if (component instanceof AjaxChildrenEncoder) {
+ ((AjaxChildrenEncoder) component).encodeAjaxChild(
+ context, currentPath, ids, renderedAreas);
+ } else {
+ // Special case - for control components, not produced
+ // html code - such as message bundles loaders,
+ // MyFaces aliases etc. we call encodeBegin/end methods
+ // even if components not in rendered areas.
+ boolean special = isSpecialElement(context, component);
+ if (special) {
+ component.encodeBegin(context);
+ }
+ encodeAjaxChildren(context, component, currentPath, ids,
+ renderedAreas);
+ if (special) {
+ component.encodeEnd(context);
+ }
+
+ }
+ } else {
+ renderedAreas.add(component.getClientId(context));
+ renderChild(context, component);
+ }
+ }
+ }
+
+ private Set _specialComponentTypes = null;
+
+ /**
+ * Detect component as special control case - such as messages bundle
+ * loader, alias bean components etc. Type of component get by reflection
+ * from static field COMPONENT_TYPE
+ *
+ * @param context
+ * @param component
+ * @return true if encode methods must be called for this component even in
+ * not-rendered parts.
+ */
+ private boolean isSpecialElement(FacesContext context, UIComponent component) {
+ if (_specialComponentTypes == null) {
+ _specialComponentTypes = new HashSet(10);
+ for (int i = 0; i < SPECIAL_COMPONENTS_TYPES.length; i++) {
+ _specialComponentTypes.add(SPECIAL_COMPONENTS_TYPES[i]);
+ }
+ String special = context.getExternalContext().getInitParameter(
+ SPECIAL_TYPES_PARAMETER);
+ if (null != special) {
+ String[] split = special.split(",");
+ for (int i = 0; i < split.length; i++) {
+ _specialComponentTypes.add(split[i]);
+ }
+ }
+ }
+ boolean result;
+ try {
+ String componentType = (String) component.getClass().getField(
+ "COMPONENT_TYPE").get(null);
+ result = _specialComponentTypes.contains(componentType);
+ } catch (Exception e) {
+ // exception occurs if component not have accesible COMPONENT_TYPE
+ // constant
+ // we assume that component not in special types.
+ result = false;
+ }
+ return result;
+ }
+
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxComponentRendererBase.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxComponentRendererBase.java)
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxComponentRendererBase.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxComponentRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,93 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import org.ajax4jsf.javascript.AjaxScript;
+import org.ajax4jsf.renderkit.HeaderResourceProducer;
+import org.ajax4jsf.resource.InternetResource;
+
+
+/**
+ * Base class for all Ajax enabled components. Perform common task -
+ * output javasript for component.
+ * @author shura (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:49 $
+ *
+ */
+public abstract class AjaxComponentRendererBase extends HeaderResourcesRendererBase
implements HeaderResourceProducer {
+
+// private InternetResource ajaxScript =
getResource("/com/exadel/vcp/framework/ajax/scripts/AJAX.js");
+ private static final String AJAX_SCRIPT = AjaxScript.class.getName();
+
+ private InternetResource[] scripts = null;
+
+ /* (non-Javadoc)
+ * @see
org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderScripts(javax.faces.context.FacesContext)
+ */
+// public LinkedHashSet getHeaderScripts(FacesContext context, UIComponent component) {
+// LinkedHashSet scripts = new LinkedHashSet() ; //
Collections.singleton(ajaxScript.getUri(context, null));
+// scripts.add(ajaxScript.getUri(context, component));
+// String[] additionalScripts = getAdditionalScripts();
+// if (null != additionalScripts) {
+// for (int i = 0; i < additionalScripts.length; i++) {
+// String resource = additionalScripts[i];
+// scripts.add(getResource(resource).getUri(context, component));
+// }
+// }
+// return scripts;
+// }
+
+
+
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.renderkit.HeaderResourcesRendererBase#getScripts()
+ */
+ protected InternetResource[] getScripts() {
+ // Lazy create
+ if (scripts == null) {
+ InternetResource[] additionalScripts = getAdditionalScripts();
+ // Custom scripts
+ if (null != additionalScripts) {
+ scripts = new InternetResource[additionalScripts.length+1];
+ System.arraycopy(additionalScripts,0,scripts,1,additionalScripts.length);
+ } else {
+ scripts = new InternetResource[1];
+ }
+ // Ajax script
+ scripts[0] = getResource(AJAX_SCRIPT);
+ }
+
+ return scripts;
+ }
+
+
+
+ /**
+ * Hoock method for append custom ajax scripts
+ * @return
+ */
+ protected InternetResource[] getAdditionalScripts() {
+ return null;
+ }
+
+
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxContainerRenderer.java (from
rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxContainerRenderer.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxContainerRenderer.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxContainerRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,166 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.Set;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.Messages;
+import org.ajax4jsf.component.AjaxContainer;
+import org.ajax4jsf.context.AjaxContext;
+import org.ajax4jsf.event.AjaxEvent;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Base renderer for all AJAX - subview components.
+ *
+ * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.3 $ $Date: 2007/02/08 15:02:02 $
+ *
+ */
+public class AjaxContainerRenderer extends AjaxChildrenRenderer {
+
+ public static final String AJAX_PARAMETER_NAME = "AJAXREQUEST";
+
+ public static final String AJAX_JSF_SCRIPT = "AJAX.js";
+
+ public static final String SARISSA_SCRIPT = "sarissa.js";
+
+ public static final String JSDOM_SCRIPT = "JSDOM_sarissa.js";
+
+ public static final String AJAX_VIEW_STATE_TAG = "span";
+
+ public static final String AJAX_VIEW_STATE_ID = "ajax-update-ids";
+
+ public static final String AJAX_RESULT_GROUP_TAG = "meta";
+
+ public static final String AJAX_RESULT_GROUP_ATTR = "content";
+
+ public static final String AJAX_RESULT_STYLE = "display: none";
+
+ public static final String AJAX_UPDATE_HEADER = "Ajax-Update-Ids";
+
+ static final Log log = LogFactory
+ .getLog(AjaxContainerRenderer.class);
+
+ public static final String AJAX_FLAG_HEADER = "Ajax-Response";
+
+ public static final String AJAX_LOCATION_HEADER = "Location";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.ajax4jsf.renderkit.RendererBase#getComponentClass()
+ */
+ protected Class getComponentClass() {
+ // TODO Auto-generated method stub
+ return AjaxContainer.class;
+ }
+
+ /**
+ *
+ *
+ * @see
javax.faces.component.UIComponent#encodeChildren(javax.faces.context.FacesContext)
+ * Since main function of component - render subset of components, for
+ * update on page,don't delegate this for renderer.
+ *
+ */
+ public void encodeChildren(FacesContext context, UIComponent component)
+ throws IOException {
+ // Normal request - render all ...
+ log.debug(Messages.getMessage(Messages.RENDER_CHILDREN_NON_AJAX_INFO));
+ renderChildren(context, component);
+ }
+
+ /**
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public void encodeAjax(FacesContext context, UIComponent component)
+ throws IOException {
+ UIComponent root ;
+ // Iterate over all childrens, render it if nessesary...
+ log.debug(Messages.getMessage(Messages.RENDER_CHILDREN_AJAX_INFO));
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+ Set ids = ajaxContext.getAjaxAreasToRender();
+ Set renderedAreas = ajaxContext.getAjaxRenderedAreas();
+ if (((AjaxContainer) component).isRenderRegionOnly()) {
+ root = component;
+ } else {
+ root = context.getViewRoot();
+ }
+ String path = AjaxRendererUtils.getAbsoluteId(root);
+ // if(! (component instanceof NamingContainer)){
+ path = path.substring(0, path
+ .lastIndexOf(NamingContainer.SEPARATOR_CHAR) + 1);
+ encodeAjaxComponent(context, root, path, ids, renderedAreas);
+ // Write information about encoded areas after submission.
+ AjaxRendererUtils.encodeAreas(context, component);
+ }
+
+
+
+ /*
+ * always return true, since component must maintain set of rendered
+ * components.
+ *
+ * @see javax.faces.component.UIComponent#getRendersChildren()
+ */
+ public boolean getRendersChildren() {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.ajax4jsf.renderkit.RendererBase#doDecode(javax.faces.context.FacesContext,
+ * javax.faces.component.UIComponent)
+ */
+ protected void doDecode(FacesContext context, UIComponent component) {
+ String clientId = component.getClientId(context);
+ Map paramMap = context.getExternalContext().getRequestParameterMap();
+ if (log.isDebugEnabled()) {
+ log.debug(Messages.getMessage(
+ Messages.DECODE_AJAX_REQUEST_STATUS_INFO, clientId));
+ log.debug(Messages.getMessage(Messages.REQUEST_PARAMETERS_MAP,
+ paramMap.toString()));
+ }
+ Object ajaxParameter = paramMap.get(AJAX_PARAMETER_NAME);
+ AjaxContainer ajaxContainer = (AjaxContainer) component;
+ if (null != ajaxParameter && ajaxParameter.equals(clientId)) {
+ ajaxContainer.setSubmitted(true);
+ AjaxEvent event = new AjaxEvent(component);
+ component.queueEvent(event);
+ } else {
+ ajaxContainer.setSubmitted(false);
+ }
+
+ }
+
+}
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxPhaseListener.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxPhaseListener.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxPhaseListener.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxPhaseListener.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,169 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.faces.FacesException;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+import org.ajax4jsf.Messages;
+import org.ajax4jsf.context.AjaxContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.richfaces.skin.SkinFactory;
+
+/**
+ * Listener for act before Render phase to set RenderKit Id for current skin.
+ *
+ * @author shura (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.3 $ $Date: 2007/02/06 16:23:19 $
+ *
+ */
+public class AjaxPhaseListener implements PhaseListener {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4087936963051339868L;
+
+ public static final String VIEW_BEAN_PREFIX = "org.ajax4jsf.viewbean:";
+
+ public static final String VIEW_STATE_SAVED_PARAM =
"org.ajax4jsf.VIEW_STATE_SAVED";
+
+ private static final Log log = LogFactory
+ .getLog(AjaxPhaseListener.class);
+
+ public static final String AJAX_BEAN_PREFIX = "org.ajax4jsf.ajaxviewbean:";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.event.PhaseListener#afterPhase(javax.faces.event.PhaseEvent)
+ */
+ public void afterPhase(PhaseEvent event) {
+ PhaseId phaseId = event.getPhaseId();
+ if(log.isDebugEnabled()){
+ log.debug("Process after phase "+phaseId.toString());
+ }
+ FacesContext context = event.getFacesContext();
+ Map requestMap = context.getExternalContext().getRequestMap();
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+ if (phaseId == PhaseId.RENDER_RESPONSE) {
+ if (ajaxContext.isAjaxRequest()) {
+ // JSF RI 1.1 hack - view state not saved in <f:view> tag.
+ if(null == requestMap.get(VIEW_STATE_SAVED_PARAM)){
+ try {
+ ajaxContext.saveViewState(context);
+ } catch (IOException e) {
+ throw new FacesException(e);
+ }
+ }
+ }
+// ajaxContext.processHeadResources(context);
+ } else if (phaseId == PhaseId.RESTORE_VIEW) {
+
+ UIViewRoot viewRoot = context.getViewRoot();
+ if(null != viewRoot){
+ boolean isAjax = ajaxContext.isAjaxRequest();
+ Map attributes = viewRoot.getAttributes();
+ for (Iterator it = attributes.keySet().iterator(); it.hasNext();) {
+ Object key = it.next();
+ if (key instanceof String) {
+ String stringKey = (String) key;
+ if(stringKey.startsWith(VIEW_BEAN_PREFIX)){
+ requestMap.put(stringKey.substring(VIEW_BEAN_PREFIX.length()),
attributes.get(key));
+ } else if(isAjax && stringKey.startsWith(AJAX_BEAN_PREFIX)){
+ requestMap.put(stringKey.substring(AJAX_BEAN_PREFIX.length()),
attributes.get(key));
+ }
+
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent)
+ */
+ public void beforePhase(PhaseEvent event) {
+ PhaseId phaseId = event.getPhaseId();
+ if(log.isDebugEnabled()){
+ log.debug("Process before phase "+phaseId.toString());
+ }
+ FacesContext context = event.getFacesContext();
+ if (phaseId == PhaseId.RENDER_RESPONSE) {
+ // Clear ViewId replacement, to avoid incorrect rendering of forms URI.
+ AjaxContext.getCurrentInstance(context).setViewIdHolder(null);
+
+ UIViewRoot root = context.getViewRoot();
+ log.debug(Messages.getMessage(
+ Messages.ENTER_BEFORE_RENDER_VIEW_PHASE, root.getViewId(),
+ root.getRenderKitId()));
+
+ // TODO - create special skin-config.xml configuration.
+ String renderKitId = null;
+ try {
+ renderKitId = SkinFactory.getInstance().getSkin(context)
+ .getRenderKitId(context);
+ } catch (Exception e) {
+ log.error("Exception on get current Skin ", e);
+ }
+ if (null != renderKitId) {
+ log.debug(Messages.getMessage(Messages.SET_RENDER_KIT_ID_INFO,
+ renderKitId));
+ root.setRenderKitId(renderKitId);
+ }
+ } else if (phaseId == PhaseId.RESTORE_VIEW) {
+
+ }
+ }
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.event.PhaseListener#getPhaseId()
+ */
+ public PhaseId getPhaseId() {
+ return PhaseId.ANY_PHASE;
+ }
+
+ protected boolean isValueReference(String value) {
+ if (value == null)
+ throw new NullPointerException("value");
+
+ int start = value.indexOf("#{");
+ if (start < 0)
+ return false;
+
+ int end = value.lastIndexOf('}');
+ return (end >= 0 && start < end);
+ }
+
+}
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxRendererUtils.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxRendererUtils.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,934 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.faces.component.ActionSource;
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIParameter;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.servlet.http.HttpServletResponse;
+
+import org.ajax4jsf.Messages;
+import org.ajax4jsf.component.AjaxComponent;
+import org.ajax4jsf.component.AjaxContainer;
+import org.ajax4jsf.component.AjaxLoadBundleComponent;
+import org.ajax4jsf.component.AjaxSupport;
+import org.ajax4jsf.component.AjaxViewRoot;
+import org.ajax4jsf.component.JavaScriptParameter;
+import org.ajax4jsf.context.AjaxContext;
+import org.ajax4jsf.framework.util.ServicesUtils;
+import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.javascript.JSFunctionDefinition;
+import org.ajax4jsf.javascript.JSReference;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author shura
+ *
+ * Some utilites for render AJAX components.
+ */
+public class AjaxRendererUtils {
+
+ /**
+ * Name Javasript function for submit AJAX request
+ */
+ public static final String AJAX_FUNCTION_NAME = "A4J.AJAX.Submit";
+
+ /**
+ * Attribute for keep clientId of status component
+ */
+ public static final String STATUS_ATTR_NAME = "status";
+
+ /**
+ * Attribute for keep JavaScript funtion name for call after complete
+ * request.
+ */
+ public static final String ONCOMPLETE_ATTR_NAME = "oncomplete";
+
+ /**
+ * Attribute to keep
+ */
+ public static final String LIMITTOLIST_ATTR_NAME = "limitToList";
+
+ private static Log log = LogFactory.getLog(AjaxRendererUtils.class);
+
+ public static final String AJAX_REGIONS_ATTRIBUTE = "reRender";
+
+ private static final Class OBJECT_ARRAY_CLASS = (new Object[0]).getClass();
+
+ public static final String SEQUENCE_PARAM = "jsf_sequence";
+
+ private static final String VALUE_ATTR = "value";
+
+ public static final String AJAX_AREAS_RENDERED =
"org.ajax4jsf.areas.rendered";
+
+ private static final String AJAX_SINGLE_ATTR = "ajaxSingle";
+
+ public static final String AJAX_QUEUE_ATTR = "eventsQueue";
+
+ public static final String AJAX_DELAY_ATTR = "requestDelay";
+
+ private static final Object AJAX_ABORT_ATTR = "ignoreDupResponses";
+
+ /**
+ * Static class - protect constructor TODO - make as subclass of chameleon
+ * RendererUtils.
+ *
+ */
+ private AjaxRendererUtils() {
+
+ }
+
+ /**
+ * Build JavaScript onclick event for given component
+ *
+ * @param uiComponent -
+ * component for build event
+ * @param facesContext
+ * @return <code>StringBuffer</code> with Javascript code
+ */
+ public static StringBuffer buildOnClick(UIComponent uiComponent,
+ FacesContext facesContext) {
+ return buildOnEvent(uiComponent, facesContext, HTML.onclick_ATTRIBUTE);
+ }
+
+ /**
+ * Build JavaScript event for component
+ *
+ * @param uiComponent -
+ * component for build event
+ * @param facesContext
+ * @param eventName -
+ * name of event
+ * @return <code>StringBuffer</code> with Javascript code TODO - for
+ * key-based events build list of supported keys
+ */
+ public static StringBuffer buildOnEvent(UIComponent uiComponent,
+ FacesContext facesContext, String eventName) {
+ StringBuffer onEvent = new StringBuffer();
+ if (null != eventName) {
+ String commandOnEvent = (String) uiComponent.getAttributes().get(
+ eventName);
+ if (commandOnEvent != null) {
+ onEvent.append(commandOnEvent);
+ onEvent.append(';');
+ }
+ }
+ JSFunction ajaxFunction = buildAjaxFunction(uiComponent, facesContext);
+ // Create formal parameter for non-input elements ???
+ // Link Control pseudo-object
+ // Options map. Possible options for function call :
+ // control - name of form control for submit.
+ // name - name for link control \
+ // value - value of control. - possible replace by parameters ?
+ // single true/false - submit all form or only one control.
+ // affected - array of element's ID for update on responce.
+ // oncomplete - function for call after complete request.
+ // status - id of request status component.
+ // parameters - map of parameters name/value for append on request.
+ // TODO
+ // sync true/false - run script in sync mode.
+ // ..........
+ ajaxFunction.addParameter(buildEventOptions(facesContext, uiComponent));
+
+ // appendAjaxSubmitParameters(facesContext, uiComponent, onEvent);
+ ajaxFunction.appendScript(onEvent);
+ if (uiComponent instanceof AjaxSupport) {
+ AjaxSupport support = (AjaxSupport) uiComponent;
+ if (support.isDisableDefault()) {
+ onEvent.append("; return false;");
+ }
+ }
+ log.debug(Messages.getMessage(Messages.BUILD_ONCLICK_INFO, uiComponent
+ .getId(), onEvent.toString()));
+ return onEvent;
+
+ }
+
+ /**
+ * @param facesContext
+ * @param uiComponent
+ * @return
+ */
+ public static Map buildEventOptions(FacesContext facesContext,
+ UIComponent uiComponent) {
+ String clientId = uiComponent.getClientId(facesContext);
+ Map componentAttributes = uiComponent.getAttributes();
+ Map options = new HashMap();
+ Map parameters = new HashMap();
+ // UIForm form = getNestingForm(uiComponent);
+ // "input" - if assigned to html input element.
+ boolean input = (uiComponent instanceof AjaxSupport && uiComponent
+ .getParent() instanceof EditableValueHolder)
+ || uiComponent instanceof EditableValueHolder;
+ // Action component - button etc.
+ boolean action = (uiComponent instanceof AjaxSupport && uiComponent
+ .getParent() instanceof ActionSource)
+ || uiComponent instanceof ActionSource;
+ // TODO - disable ( or not ? ) submission of action for disabled default
+ // ?
+ // if ( action && uiComponent instanceof AjaxSupport) {
+ // AjaxSupport support = (AjaxSupport) uiComponent;
+ // if (support.isDisableDefault()) {
+ // action = false;
+ // }
+ // }
+
+ boolean ajaxSingle = Boolean.TRUE.equals(componentAttributes
+ .get(AJAX_SINGLE_ATTR));
+ // For input components in single mode or without form submit input
+ // control )
+ if (ajaxSingle && input) { // || action
+ // TODO - inside form, put reference :
+ // document.forms['form'].controls['control']
+ options.put("control", JSReference.THIS);
+ }
+ // Control value for submit
+ String controlName;
+ Object controlValue;
+ // TODO - make compatible with JSF RI/MyFaces ? use submittedValue ( if
+ // any ) for UIInput, converted value for ValueHolder.
+ controlName = clientId;
+ controlValue = clientId;
+ parameters.put(controlName, controlValue);
+ // Move processing of a 'single' attribute to a server-side.
+// if (ajaxSingle) {
+// options.put("single", JSReference.TRUE);
+// }
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(facesContext);
+ // Setup action URL. For portlet environment, it will be different from
+ // page.
+ options.put("actionUrl", ajaxContext.getAjaxActionURL(facesContext));
+ // Add application-wide Ajax parameters
+ parameters.putAll(ajaxContext.getCommonAjaxParameters());
+ // add child parameters
+ for (Iterator it = uiComponent.getChildren().iterator(); it.hasNext();) {
+ UIComponent child = (UIComponent) it.next();
+ if (child instanceof UIParameter) {
+ String name = ((UIParameter) child).getName();
+ Object value = ((UIParameter) child).getValue();
+ if (null == name) {
+ throw new IllegalArgumentException(Messages.getMessage(
+ Messages.UNNAMED_PARAMETER_ERROR, uiComponent
+ .getClientId(facesContext)));
+ }
+ boolean escape = true;
+ if (child instanceof JavaScriptParameter) {
+ JavaScriptParameter actionParam = (JavaScriptParameter) child;
+ escape = !actionParam.isNoEscape();
+ }
+ if (escape) {
+ parameters.put(name, value);
+ } else {
+ parameters.put(name, new JSReference(value.toString()));
+ // if(it.hasNext()){onEvent.append(',');};
+ // renderAjaxLinkParameter( name,
+ // value, onClick, jsForm, nestingForm);
+ }
+ }
+ }
+ if (!parameters.isEmpty()) {
+ options.put("parameters", parameters);
+ }
+ // parameter to render only current list of areas.
+ if (isAjaxLimitToList(uiComponent)) {
+ Set ajaxAreas = getAjaxAreas(uiComponent);
+ Set areasIds = new HashSet();
+ if (null != ajaxAreas) {
+ for (Iterator iter = ajaxAreas.iterator(); iter.hasNext();) {
+ String id = (String) iter.next();
+ UIComponent comp = uiComponent.findComponent(id);
+ if (null != comp) {
+ areasIds.add(comp.getClientId(facesContext));
+ } else {
+ areasIds.add(id);
+ }
+ }
+ }
+ options.put("affected", areasIds);
+ }
+ String oncomplete = getAjaxOncomplete(uiComponent);
+ if (null != oncomplete) {
+ JSFunctionDefinition function = new JSFunctionDefinition();
+ function.addParameter("request");
+ function.addParameter("event");
+ function.addParameter("data");
+ function.addToBody(oncomplete);
+
+ options.put("oncomplete", function);
+ }
+ String status = getAjaxStatus(uiComponent);
+ if (null != status) {
+ options.put("status", status);
+ }
+ String queue = (String) componentAttributes.get(AJAX_QUEUE_ATTR);
+ Integer requestDelay = (Integer) componentAttributes
+ .get(AJAX_DELAY_ATTR);
+ if (null != requestDelay && requestDelay.intValue() > 0) {
+ options.put(AJAX_DELAY_ATTR, requestDelay);
+ if (null == queue) {
+ queue = clientId;
+ }
+ }
+ Boolean ignoreDupResponses = (Boolean) componentAttributes
+ .get(AJAX_ABORT_ATTR);
+ if (null != ignoreDupResponses && ignoreDupResponses.booleanValue()) {
+ options.put(AJAX_ABORT_ATTR, JSReference.TRUE);
+ if (null == queue) {
+ queue = clientId;
+ }
+ }
+ if (null != queue) {
+ options.put(AJAX_QUEUE_ATTR, queue);
+ }
+ // request timeout.
+ Integer timeout = (Integer) componentAttributes.get("timeout");
+ if (null != timeout && timeout.intValue() > 0) {
+ options.put("timeout", timeout);
+ }
+ // Encoding for requests
+ String encoding = (String) componentAttributes.get("encoding");
+ if (null != encoding) {
+ options.put("encoding", encoding);
+ }
+ return options;
+ }
+
+ /**
+ * Create call to Ajax Submit function with first two parameters
+ *
+ * @param uiComponent
+ * @param facesContext
+ * @param functionName
+ * TODO
+ * @return
+ */
+ public static JSFunction buildAjaxFunction(UIComponent uiComponent,
+ FacesContext facesContext) {
+ JSFunction ajaxFunction = buildAjaxFunction(uiComponent, facesContext,
+ AJAX_FUNCTION_NAME);
+ // client-side script must have reference to event-enabled object.
+ ajaxFunction.addParameter(new JSReference("event"));
+ return ajaxFunction;
+ }
+
+ /**
+ * Create call to Ajax Submit function with first two parameters
+ *
+ * @param uiComponent
+ * @param facesContext
+ * @param functionName
+ * TODO
+ * @return
+ */
+ public static JSFunction buildAjaxFunction(UIComponent uiComponent,
+ FacesContext facesContext, String functionName) {
+ JSFunction ajaxFunction = new JSFunction(functionName);
+ UIComponent nestingContainer = (UIComponent) findAjaxContainer(
+ facesContext, uiComponent);
+ ajaxFunction.addParameter(nestingContainer.getClientId(facesContext));
+ // build form name or ActionUrl for script
+ UIComponent nestingForm = getNestingForm(uiComponent);
+ if (null == nestingForm) {
+ ajaxFunction.addParameter(JSReference.NULL);
+ } else {
+ ajaxFunction.addParameter(nestingForm.getClientId(facesContext));
+ }
+ return ajaxFunction;
+ }
+
+ /**
+ * Append common parameters ( array of affected areas, status area id, on
+ * complete function ) to JavaScript event string.
+ *
+ * @param uiComponent
+ * @param onClick -
+ * buffer with JavaScript code eg... AJAX.Submit(form,this
+ */
+ // public static void appendAjaxSubmitParameters(FacesContext facesContext,
+ // UIComponent uiComponent, StringBuffer onClick)
+ // {
+ // Set ajaxAreas = getAjaxAreas(uiComponent);
+ // onClick.append(',');
+ // // parameter to render only current list of areas.
+ // if (isAjaxLimitToList(uiComponent) && ajaxAreas != null &&
+ // ajaxAreas.size() > 0)
+ // {
+ // onClick.append('[');
+ // Iterator areas = ajaxAreas.iterator();
+ // boolean first = true;
+ // while (areas.hasNext())
+ // {
+ // String element = (String) areas.next();
+ // UIComponent component = uiComponent.findComponent(element);
+ // if (null != component)
+ // {
+ // if (!first)
+ // {
+ // onClick.append(',');
+ // }
+ // else
+ // {
+ // first = false;
+ // }
+ // onClick.append('\'');
+ // onClick.append(component.getClientId(facesContext));
+ // onClick.append('\'');
+ // }
+ // }
+ // onClick.append("]");
+ // }
+ // else
+ // {
+ // onClick.append("null");
+ // }
+ // // insert id of request status element.
+ // onClick.append(',');
+ // String status = getAjaxStatus(uiComponent);
+ // if (null != status)
+ // {
+ // onClick.append('\'').append(status).append('\'');
+ // }
+ // else
+ // {
+ // onClick.append("null");
+ // }
+ // // insert function name for call after completed request
+ // onClick.append(',');
+ // String oncomplete = getAjaxOncomplete(uiComponent);
+ // if (null != oncomplete)
+ // {
+ // onClick.append(oncomplete);
+ // }
+ // else
+ // {
+ // onClick.append("null");
+ // }
+ //
+ // }
+ /**
+ * Get list of clientId's for given component
+ *
+ * @param uiComponent
+ * @return List of areas Id's , updated by this component.
+ */
+ public static Set getAjaxAreas(UIComponent uiComponent) {
+ Object areas;
+ if (uiComponent instanceof AjaxComponent) {
+ areas = ((AjaxComponent) uiComponent).getReRender();
+
+ } else {
+ areas = uiComponent.getAttributes().get(
+ AjaxRendererUtils.AJAX_REGIONS_ATTRIBUTE);
+ }
+ return asSet(areas);
+ }
+
+ /**
+ * Convert parameter ( Collection, List, array, String, comma-separated
+ * String ) to list of srings. TODO - when move to JDK 5, change to
+ * List<String>
+ *
+ * @param valueToSet -
+ * obect for convert to List.
+ * @return - list of strings.
+ */
+ public static Set asSet(Object valueToSet) {
+
+ if (null != valueToSet) {
+ // Simplest case - set.
+ if (valueToSet instanceof Set) {
+ return (Set) valueToSet;
+ }
+ // Other collections.
+ else if (valueToSet instanceof Collection) {
+ return new HashSet((Collection) valueToSet);
+ }
+ // Array
+ else if (OBJECT_ARRAY_CLASS.isAssignableFrom(valueToSet.getClass())) {
+ return new HashSet(Arrays.asList((Object[]) valueToSet));
+ }
+ // Tokenize string.
+ else if (valueToSet instanceof String) {
+ String areasString = (String) valueToSet;
+ if (areasString.indexOf(",") > 0) {
+ return new HashSet(Arrays.asList(areasString.trim().split(
+ "(\\s)*,(\\s)*")));
+ } else {
+ Set areasSet = new HashSet(5);
+ areasSet.add(areasString.trim());
+ return areasSet;
+ }
+
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Get status area Id for given component.
+ *
+ * @param component
+ * @return clientId of status area, or <code>null</code>
+ */
+ public static String getAjaxStatus(UIComponent component) {
+ String statusId;
+ if (component instanceof AjaxComponent) {
+ statusId = ((AjaxComponent) component).getStatus();
+
+ } else {
+ 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
+ }
+ if (null != status) {
+ statusId = status
+ .getClientId(FacesContext.getCurrentInstance());
+ } else {
+ log.warn(Messages.getMessage(
+ Messages.AJAX_STATUS_COMPONENT_NOT_FOWND_WARNING,
+ component.getId()));
+ }
+ }
+ return statusId;
+ }
+
+ /**
+ * Get function name for call on completed ajax request.
+ *
+ * @param component
+ * for wich calculate function name
+ * @return name of JavaScript function or <code>null</code>
+ */
+ public static String getAjaxOncomplete(UIComponent component) {
+ if (component instanceof AjaxComponent) {
+ return ((AjaxComponent) component).getOncomplete();
+
+ }
+ return (String) component.getAttributes().get(ONCOMPLETE_ATTR_NAME);
+ }
+
+ /**
+ * Calculate, must be component render only given areas, or all sended from
+ * server.
+ *
+ * @param component
+ * @return <code>true</code> if client must render ONLY given areas.
+ */
+ public static boolean isAjaxLimitToList(UIComponent component) {
+ boolean result = false;
+ if (component instanceof AjaxComponent) {
+ result = ((AjaxComponent) component).isLimitToList();
+
+ } else {
+ try {
+ result = ((Boolean) component.getAttributes().get(
+ LIMITTOLIST_ATTR_NAME)).booleanValue();
+ } catch (NullPointerException e) {
+ // NullPointer - ignore ...
+ } catch (ClassCastException e1) {
+ // not Boolean - false ...
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Replacement for buggy in MyFaces <code>RendererUtils</code>
+ *
+ * @param component
+ * @return
+ */
+ public static String getAbsoluteId(UIComponent component) {
+ if (component == null)
+ throw new NullPointerException(Messages
+ .getMessage(Messages.COMPONENT_NULL_ERROR_2));
+
+ StringBuffer idBuf = new StringBuffer();
+
+ idBuf.append(component.getId());
+
+ UIComponent parent = component;
+
+ while ((parent = parent.getParent()) != null) {
+ if (parent instanceof NamingContainer) {
+ idBuf.insert(0, NamingContainer.SEPARATOR_CHAR);
+ idBuf.insert(0, parent.getId());
+ }
+ }
+ idBuf.insert(0, NamingContainer.SEPARATOR_CHAR);
+ log.debug(Messages.getMessage(Messages.CALCULATE_COMPONENT_ID_INFO,
+ component.getId(), idBuf.toString()));
+ return idBuf.toString();
+ }
+
+ /**
+ * Find nested form for given component
+ *
+ * @param component
+ * @return nested <code>UIForm</code> component, or
<code>null</code>
+ */
+ public static UIComponent getNestingForm(UIComponent component) {
+ UIComponent parent = component;
+ // Search enclosed UIForm or ADF UIXForm component
+ while (parent != null
+ && !(parent instanceof UIForm)
+ && !("org.apache.myfaces.trinidad.Form".equals(parent
+ .getFamily()))
+ && !("oracle.adf.Form".equals(parent.getFamily()))) {
+ parent = parent.getParent();
+ }
+
+ return parent;
+ }
+
+ protected static String getAjaxActionUrl(FacesContext facesContext) {
+ return
AjaxContext.getCurrentInstance(facesContext).getAjaxActionURL(facesContext);
+ }
+
+ /**
+ * @param facesContext
+ * @param uiComponent
+ * @return
+ */
+ public static org.ajax4jsf.component.AjaxContainer findAjaxContainer(
+ FacesContext facesContext, UIComponent uiComponent) {
+ UIComponent parent = uiComponent.getParent();
+ while (parent != null
+ && !(parent instanceof org.ajax4jsf.component.AjaxContainer)) {
+ parent = parent.getParent();
+ }
+
+ org.ajax4jsf.component.AjaxContainer nestingContainer = null;
+ if (parent != null) {
+ // link is nested inside a form
+ nestingContainer = (org.ajax4jsf.component.AjaxContainer) parent;
+ } else if (facesContext.getViewRoot() instanceof AjaxViewRoot) {
+ nestingContainer = (AjaxContainer) facesContext.getViewRoot();
+ }
+ return nestingContainer;
+ }
+
+ /**
+ * For Myfaces, get current viev sequence.
+ *
+ * @param facescontext
+ * @return
+ */
+ private static Integer getViewSequence(FacesContext facescontext) {
+ Map map = facescontext.getExternalContext().getRequestMap();
+ Integer sequence = (Integer) map.get(SEQUENCE_PARAM);
+ if (sequence == null) {
+ sequence = new Integer(1);
+ map.put(SEQUENCE_PARAM, sequence);
+ }
+ return sequence;
+ }
+
+ /**
+ * Encode rendered areas as special HTML tag ( span in current release )
+ *
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public static void encodeAreas(FacesContext context,
+ UIComponent component) throws IOException {
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+ ExternalContext externalContext = context.getExternalContext();
+ Map requestMap = externalContext.getRequestMap();
+ Set rendered = ajaxContext.getAjaxRenderedAreas();
+ StringBuffer senderString = new StringBuffer();
+ // write special area for list of rendered elements. Client-side
+ // Java
+ // Script
+ // read this structure for update areas of DOM tree.
+ ResponseWriter out = context.getResponseWriter();
+ // Create <span> element to keep list rendered aread ( in title
+ // attribute )
+ // More right will create special namespace for such
+ // information,
+ // but I want to keep simple html ( xhtml ) document - on case
+ // I have troubles with microsoft XMLHTTP validations.
+ out
+ .startElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG,
+ component);
+ out.writeAttribute(HTML.NAME_ATTRIBUTE,
+ AjaxContainerRenderer.AJAX_UPDATE_HEADER, null);
+ for (Iterator it = rendered.iterator(); it.hasNext();) {
+ String id = (String) it.next();
+ // out.startElement(AJAX_RESULT_TAG, component);
+ // out.writeText(id,null);
+ // out.endElement(AJAX_RESULT_TAG);
+ senderString.append(id);
+ if (it.hasNext()) {
+ senderString.append(',');
+ }
+ }
+ out.writeAttribute(AjaxContainerRenderer.AJAX_RESULT_GROUP_ATTR,
+ senderString, null);
+ out.endElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG);
+ // For sequences and client-saved states.
+
+ out.startElement(AjaxContainerRenderer.AJAX_VIEW_STATE_TAG, component);
+ out.writeAttribute(HTML.id_ATTRIBUTE,
+ AjaxContainerRenderer.AJAX_VIEW_STATE_ID, null);
+ writeState(context);
+ out.endElement(AjaxContainerRenderer.AJAX_VIEW_STATE_TAG);
+ // Write rendered flag to html <meta>
+ out
+ .startElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG,
+ component);
+ out.writeAttribute(HTML.id_ATTRIBUTE,
+ AjaxContainerRenderer.AJAX_FLAG_HEADER, null);
+ out.writeAttribute(HTML.NAME_ATTRIBUTE,
+ AjaxContainerRenderer.AJAX_FLAG_HEADER, null);
+ out.writeAttribute(AjaxContainerRenderer.AJAX_RESULT_GROUP_ATTR,
+ "true", null);
+ out.endElement(AjaxContainerRenderer.AJAX_RESULT_GROUP_TAG);
+ // set response header with list of rendered ID's
+ Object response = externalContext.getResponse();
+ // Use reflection for send responce headers - we can get
+ // different responces classes
+ // for different environment ( portal, cocoon etc )
+ if (response instanceof HttpServletResponse) {
+ HttpServletResponse httpResponse = (HttpServletResponse) response;
+ httpResponse.setHeader(AjaxContainerRenderer.AJAX_UPDATE_HEADER,
+ senderString.toString());
+ httpResponse.setHeader(AjaxContainerRenderer.AJAX_FLAG_HEADER,
+ "true");
+ } else {
+ try {
+ Method setHeadergMethod = response.getClass()
+ .getMethod("setHeader",
+ new Class[] { String.class, String.class });
+ setHeadergMethod.invoke(response, new Object[] {
+ AjaxContainerRenderer.AJAX_UPDATE_HEADER,
+ senderString.toString() });
+ setHeadergMethod.invoke(response, new Object[] {
+ AjaxContainerRenderer.AJAX_FLAG_HEADER, "true" });
+ } catch (Exception e) {
+ log
+ .error(Messages
+ .getMessage(Messages.DETECTING_ENCODING_DISABLED_ERROR));
+ log.error(Messages.getMessage(
+ Messages.OBTAIN_RESPONSE_SET_HEADER_ERROR, e));
+ }
+ }
+ Map responseDataMap = ajaxContext.getResponseDataMap();
+ // Get data serializer instance
+ AJAXDataSerializer serializer = (AJAXDataSerializer) ServicesUtils
+ .getServiceInstance(AJAXDataSerializer.SERVICE);
+ // Put data to JavaScript handlers, inside <span> elements.
+ for (Iterator dataIterator = responseDataMap.keySet().iterator(); dataIterator
+ .hasNext();) {
+ Object dataKey = dataIterator.next();
+ out.startElement(HTML.SPAN_ELEM, component);
+ out.writeAttribute(HTML.id_ATTRIBUTE, dataKey, null);
+ String dataString = serializer.asString(responseDataMap
+ .get(dataKey));
+ out.write(dataString);
+ out.endElement(HTML.SPAN_ELEM);
+ }
+ // For self-rendered case, we use own methods for replace stateKey by
+ // real value
+ // in XML filter.
+ // if(ajaxContext.isSelfRender()){
+ // saveViewState(context, out);
+ // }
+ requestMap.put(AJAX_AREAS_RENDERED, "true");
+ }
+
+ /**
+ * Write state saving markers to context, include MyFaces view sequence.
+ *
+ * @param context
+ * @throws IOException
+ */
+ public static void writeState(FacesContext context) throws IOException {
+ if (!context.getApplication().getStateManager().isSavingStateInClient(
+ context)) {
+ ResponseWriter writer = context.getResponseWriter();
+ // MyFaces-specific view sequence attribute
+ writer.startElement(HTML.INPUT_ELEM, null);
+ writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_HIDDEN, null);
+ writer.writeAttribute(HTML.NAME_ATTRIBUTE,
+ AjaxRendererUtils.SEQUENCE_PARAM, null);
+ writer.writeAttribute(HTML.value_ATTRIBUTE, AjaxRendererUtils
+ .getViewSequence(context), null);
+ writer.endElement(HTML.INPUT_ELEM);
+ }
+ context.getApplication().getViewHandler().writeState(context);
+ }
+
+ /**
+ * Encode declaration for AJAX response. Render
<html><body>
+ *
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public static void encodeAjaxBegin(FacesContext context,
+ UIComponent component) throws IOException {
+ // AjaxContainer ajax = (AjaxContainer) component;
+ ResponseWriter out = context.getResponseWriter();
+ // DebugUtils.traceView("ViewRoot in AJAX Page encode begin");
+ out.startElement("html", component);
+ // TODO - html attributes. lang - from current locale ?
+ Locale locale = context.getViewRoot().getLocale();
+ out.writeAttribute(HTML.lang_ATTRIBUTE, locale.toString(), "lang");
+ out.startElement("body", component);
+ }
+
+ /**
+ * End encoding of AJAX response. Render tag with included areas and close
+ * </body></html>
+ *
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public static void encodeAjaxEnd(FacesContext context, UIComponent component)
+ throws IOException {
+ // AjaxContainer ajax = (AjaxContainer) component;
+ ResponseWriter out = context.getResponseWriter();
+ // DebugUtils.traceView("ViewRoot in AJAX Page encode begin");
+
+ encodeAreas(context, component);
+ out.endElement("body");
+ out.endElement("html");
+ }
+
+ /**
+ * Find all instances of {@link UILoadBundle} in view tree and load bundles
+ * to request-scope map.
+ *
+ * @param context
+ * @throws IOException
+ */
+ public static void loadBundles(FacesContext context) {
+ // TODO - performanse improove - don't seek by all components tree.
+ loadBundles(context, context.getViewRoot());
+
+ }
+
+ /**
+ * Recursive helper for {@link #loadBundles(FacesContext)}
+ *
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ private static void loadBundles(FacesContext context, UIComponent component) {
+ // Iterate over cildrens
+ for (Iterator iter = component.getChildren().iterator(); iter.hasNext();) {
+ UIComponent child = (UIComponent) iter.next();
+ loadCildBundles(context, child);
+ }
+ // Iterate over facets
+ for (Iterator iter = component.getFacets().values().iterator(); iter
+ .hasNext();) {
+ UIComponent child = (UIComponent) iter.next();
+ loadCildBundles(context, child);
+ }
+ }
+
+ /**
+ * @param context
+ * @param child
+ */
+ private static void loadCildBundles(FacesContext context, UIComponent child) {
+ if (child instanceof AjaxLoadBundleComponent) {
+ try {
+ child.encodeBegin(context);
+ } catch (IOException e) {
+ // DO nothing - really, LoadBundle don't can throw exceptions.
+ }
+ } else {
+ loadBundles(context, child);
+ }
+ }
+
+ /**
+ * @param facesContext
+ * @return
+ */
+ public static boolean isAjaxRequest(FacesContext facesContext) {
+
+ return AjaxContext.getCurrentInstance(facesContext).isAjaxRequest(facesContext);
+ }
+
+ /**
+ * @param facesContext
+ * @param component
+ * @param id
+ */
+ public static void addRegionByName(FacesContext facesContext, UIComponent component,
String id) {
+
+ AjaxContext.getCurrentInstance(facesContext).addComponentToAjaxRender(component, id);
+ }
+ /**
+ * @param facesContext
+ * @param component
+ * @param id
+ */
+ public static void addRegionsFromComponent(UIComponent component, FacesContext
facesContext) {
+
+ AjaxContext.getCurrentInstance(facesContext).addRegionsFromComponent(component);
+ }
+
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxViewRootRenderer.java (from
rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/AjaxViewRootRenderer.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxViewRootRenderer.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxViewRootRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,108 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import org.ajax4jsf.component.AjaxViewRoot;
+import org.ajax4jsf.resource.InternetResource;
+
+/**
+ * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.3 $ $Date: 2007/02/08 15:02:03 $
+ *
+ */
+public class AjaxViewRootRenderer extends AjaxContainerRenderer {
+
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.ajax4jsf.renderkit.AjaxComponentRendererBase#getScripts()
+ */
+ protected InternetResource[] getScripts() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.ajax4jsf.renderkit.RendererBase#doDecode(javax.faces.context.FacesContext,
+ * javax.faces.component.UIComponent)
+ */
+// protected void doDecode(FacesContext context, UIComponent component) {
+// AjaxViewRoot root = (AjaxViewRoot) component;
+// if(root.isSubmitted()) {
+// // Find submitted ajax region.
+// String ajaxId = (String)
context.getExternalContext().getRequestParameterMap().get(AJAX_PARAMETER_NAME);
+// String ajaxRegion = root.getAjaxRegionId(ajaxId);
+// if(null != ajaxRegion){
+// root.setSubmittedRegion(ajaxRegion);
+// }
+// }
+// }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.ajax4jsf.renderkit.AjaxContainerRenderer#getComponentClass()
+ */
+ protected Class getComponentClass() {
+ return AjaxViewRoot.class;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.ajax4jsf.renderkit.RendererBase#doEncodeEnd(javax.faces.context.ResponseWriter,
+ * javax.faces.context.FacesContext, javax.faces.component.UIComponent)
+ */
+// protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
+// UIComponent submittedComponent = ((AjaxViewRoot)
component).getSubmittedRegion(context);
+// if (null == submittedComponent) {
+// super.doEncodeEnd(writer,context,component);
+// } else {
+// submittedComponent.encodeEnd(context);
+// }
+// }
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.ajax4jsf.renderkit.RendererBase#doEncodeBegin(javax.faces.context.ResponseWriter,
+ * javax.faces.context.FacesContext, javax.faces.component.UIComponent)
+ */
+// protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
+// // Reset instance of submitted region
+// AjaxViewRoot ajaxViewRoot = ((AjaxViewRoot) component);
+// ajaxViewRoot.resetSubmittedRegionInstance();
+// UIComponent submittedComponent = ajaxViewRoot.getSubmittedRegion(context);
+// if (null == submittedComponent) {
+// super.doEncodeBegin(writer, context, component);
+// } else {
+// submittedComponent.encodeBegin(context);
+// }
+// }
+
+}
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKit.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKit.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKit.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKit.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,40 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import javax.faces.render.RenderKit;
+
+/**
+ * @author shura (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:55 $
+ *
+ */
+public interface ChameleonRenderKit {
+
+
+
+ /**
+ * @param renderKit
+ */
+ void setDefaultRenderKit(RenderKit renderKit);
+
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKitFactory.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitFactory.java)
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKitFactory.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKitFactory.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,131 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.util.Iterator;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+
+import org.ajax4jsf.Messages;
+import org.ajax4jsf.resource.InternetResourceBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author shura (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:50 $
+ *
+ */
+public class ChameleonRenderKitFactory extends RenderKitFactory {
+ RenderKitFactory defaultFactory;
+
+ // private static final String AJAX_BASE_RENDER_KIT_PARAMETER =
+ // "AJAX_BASE_RENDERKIT_ID";
+ // private static final String AJAX_RENDER_KIT_PARAMETER =
+ // "AJAX_RENDER_KIT_ID";
+
+ private static final Log _log = LogFactory
+ .getLog(ChameleonRenderKitFactory.class);
+
+ /**
+ * @param defaultFactory
+ */
+ public ChameleonRenderKitFactory(RenderKitFactory defaultFactory) {
+ if (_log.isDebugEnabled()) {
+ _log.debug("ChameleonRenderKitFactory(RenderKitFactory) - Chameleon RenderKit
factory instantiated"); //$NON-NLS-1$
+ }
+ this.defaultFactory = defaultFactory;
+ // Init resources builder before use.
+ InternetResourceBuilder.getInstance().init();
+ }
+
+ /**
+ * @param renderKitId
+ * @param renderKit
+ */
+ public void addRenderKit(String renderKitId, RenderKit renderKit) {
+ if (_log.isDebugEnabled()) {
+ _log.debug("addRenderKit(String, RenderKit) - Added RenderKit with id -
renderKitId=" + renderKitId); //$NON-NLS-1$
+ }
+ if (renderKit instanceof ChameleonRenderKit) {
+ // ChameleonRenderKit chameleonRenderKit = (ChameleonRenderKit)
+ // renderKit;
+ //
chameleonRenderKit.setConfiguration(ConfigurationFactory.getRendererConfigurationInstance(renderKitId))
+ // ;
+ }
+ defaultFactory.addRenderKit(renderKitId, renderKit);
+ }
+
+ /**
+ * @param context
+ * @param renderKitId
+ * @return
+ */
+ public RenderKit getRenderKit(FacesContext context, String renderKitId) {
+ RenderKit renderKit = defaultFactory.getRenderKit(context, renderKitId);
+ if (renderKit instanceof ChameleonRenderKit) {
+ if (_log.isDebugEnabled()) {
+ _log.debug(Messages
+ .getMessage(Messages.REQUEST_CHAMELEON_RENDER_KIT_INFO,
+ renderKitId));
+ }
+ String baseRenderKitId = null;
+ // TODO - get DefaultRenderKitId from ViewHandler ?
+ try {
+ // IN JSF-RI verifications, context may be null !
+ if (null != context) {
+ baseRenderKitId = context.getApplication()
+ .getDefaultRenderKitId();
+ } else {
+ ApplicationFactory appFactory = (ApplicationFactory) FactoryFinder
+ .getFactory(FactoryFinder.APPLICATION_FACTORY);
+ baseRenderKitId = appFactory.getApplication()
+ .getDefaultRenderKitId();
+ }
+ } catch (Exception e) {
+ _log.warn(Messages
+ .getMessage(Messages.GET_DEFAULT_RENDER_KIT_ERROR), e);
+ }
+ if (baseRenderKitId == null) {
+ baseRenderKitId = RenderKitFactory.HTML_BASIC_RENDER_KIT;
+ }
+ if (_log.isDebugEnabled()) {
+ _log.debug(Messages.getMessage(
+ Messages.DEFAULT_RENDER_KIT_INFO, baseRenderKitId));
+ }
+ ((ChameleonRenderKit) renderKit).setDefaultRenderKit(defaultFactory
+ .getRenderKit(context, baseRenderKitId));
+ }
+ return renderKit;
+ }
+
+ /**
+ * @return
+ */
+ public Iterator getRenderKitIds() {
+ return defaultFactory.getRenderKitIds();
+ }
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKitImpl.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderKitImpl.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKitImpl.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderKitImpl.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,163 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+
+/**
+ * Wrapper for default applikation render kit. Only can append any
+ * custom renderers , all other methods delegate to default render kit.
+ *
+ * @see javax.faces.render.RenderKit
+ * @author shura
+ *
+ */
+public class ChameleonRenderKitImpl extends RenderKit implements ChameleonRenderKit {
+
+ private RenderKit defaultRenderKit = null;
+ public static final String RENDER_KIT_ID = "AJAX_HTML_BASIC";
+
+ private Map renderers;
+
+
+ //~ Constructors
-------------------------------------------------------------------------------
+
+ public ChameleonRenderKitImpl()
+ {
+ renderers = new HashMap();
+ }
+
+ //~ Methods
------------------------------------------------------------------------------------
+
+ private String key(String componentFamily, String rendererType)
+ {
+ return componentFamily + "." + rendererType;
+ }
+ /**
+ * @param family
+ * @param rendererType
+ * @param renderer
+ */
+ public void addRenderer(String family, String rendererType,
+ Renderer renderer) {
+ if (renderer instanceof ChameleonRenderer) {
+ ChameleonRenderer chameleonRenderer = (ChameleonRenderer) renderer;
+// chameleonRenderer.setConfiguration(getConfiguration().getRendererConfiguration(family,rendererType));
+
+ }
+ renderers.put(key(family, rendererType), renderer);
+ }
+ /**
+ * @param writer
+ * @param contentTypeList
+ * @param characterEncoding
+ * @return
+ */
+ public ResponseWriter createResponseWriter(Writer writer,
+ String contentTypeList, String characterEncoding) {
+ return getDefaultRenderKit().createResponseWriter(writer, contentTypeList,
+ characterEncoding);
+ }
+ /**
+ * @param family
+ * @param rendererType
+ * @return
+ */
+ public Renderer getRenderer(String family, String rendererType) {
+ Renderer renderer = (Renderer) renderers.get(key(family, rendererType));
+ if (renderer != null) {
+ return renderer;
+ }
+ return getDefaultRenderKit().getRenderer(family, rendererType);
+ }
+ /**
+ * @return
+ */
+ public ResponseStateManager getResponseStateManager() {
+ return getDefaultRenderKit().getResponseStateManager();
+ }
+
+
+ /* (non-Javadoc)
+ * @see javax.faces.render.RenderKit#createResponseStream(java.io.OutputStream)
+ */
+ public ResponseStream createResponseStream(OutputStream out)
+ {
+ return getDefaultRenderKit().createResponseStream(out);
+ }
+
+ /**
+ * TODO - create own implementation for @see javax.faces.component.UIViewRoot ,
+ * and get default renderKitId as value, setted at creation time.
+ * in this case, we can substitute concrete renderKit even if it pointed
+ * as value for <f:view> tag on 1.2 specification.
+ * @return Returns the defaultRenderer.
+ */
+ protected RenderKit getDefaultRenderKit() {
+ if (defaultRenderKit == null)
+ {
+ String defaultRenderkitId = null;
+ FacesContext context = null;
+ RenderKitFactory rdf = (RenderKitFactory)
FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+ try {
+ context = FacesContext.getCurrentInstance();
+ // IN JSF-RI verifications, context may be null !
+ if(null != context) {
+ defaultRenderkitId = context.getApplication()
+ .getDefaultRenderKitId();
+ } else {
+ ApplicationFactory appFactory =(ApplicationFactory)
FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+ defaultRenderkitId =
appFactory.getApplication().getDefaultRenderKitId();
+ }
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ if(defaultRenderkitId == null ){
+ defaultRenderkitId = RenderKitFactory.HTML_BASIC_RENDER_KIT;
+ }
+ defaultRenderKit = rdf.getRenderKit(context, defaultRenderkitId);
+
+ }
+
+ return defaultRenderKit;
+ }
+
+ public void setDefaultRenderKit(RenderKit renderKit) {
+ // TODO Auto-generated method stub
+ this.defaultRenderKit = renderKit;
+
+ }
+
+}
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderer.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ChameleonRenderer.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderer.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ChameleonRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,37 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import org.ajax4jsf.resource.ResourceProduser;
+
+
+/**
+ * @author shura (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:50 $
+ *
+ */
+public interface ChameleonRenderer extends ResourceProduser{
+
+
+
+
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentRendererBase.java (from
rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentRendererBase.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentRendererBase.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,108 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.util.HashMap;
+import java.util.Stack;
+
+import javax.faces.component.UIComponent;
+
+
+
+/**
+ * Components Base Renderer for all chameleon Skin's and components.
+ * At most, make all common procedures and realise concrete work in "template"
methods.
+ * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:52 $
+ *
+ */
+public abstract class ComponentRendererBase extends RendererBase{
+
+ /**
+ * logger for common cases.
+ */
+ protected static final String COMPONENT_RENDERER_BASE =
ComponentRendererBase.class.getName();
+
+
+ public ComponentVariables getVariables(UIComponent component) {
+ HashMap components;
+ Stack stackComponentsVariables;
+ ComponentVariables variables;
+
+
+
+ components = (HashMap)component.getAttributes().get( COMPONENT_RENDERER_BASE );
+
+ if ( components == null ) {
+ components = new HashMap();
+ component.getAttributes().put( COMPONENT_RENDERER_BASE, components );
+ }
+
+ stackComponentsVariables = (Stack)components.get( this.getClass().getName() );
+
+ if ( stackComponentsVariables == null ) {
+ stackComponentsVariables = new Stack();
+ components.put( COMPONENT_RENDERER_BASE, stackComponentsVariables );
+ }
+
+ if ( stackComponentsVariables.empty() ) {
+ variables = new ComponentVariables();
+ stackComponentsVariables.push( variables );
+ } else {
+ variables = (ComponentVariables)stackComponentsVariables.peek();
+ }
+
+ return variables;
+ }
+
+ public void removeVariables(UIComponent component) {
+ HashMap components;
+ Stack stackComponentsVariables;
+ ComponentVariables variables;
+
+
+
+ components = (HashMap)component.getAttributes().get(
COMPONENT_RENDERER_BASE );
+
+ if ( components != null ) {
+
+ stackComponentsVariables = (Stack)component.getAttributes().get(
this.getClass().getName() );
+
+ if ( stackComponentsVariables != null ) {
+ if ( !stackComponentsVariables.empty() ) {
+ stackComponentsVariables.pop();
+ }
+
+ if ( stackComponentsVariables.empty() ) {
+ components.remove( this.getClass().getName() );
+ }
+ }
+
+ if ( components.isEmpty() ) {
+ component.getAttributes().remove( COMPONENT_RENDERER_BASE
);
+ }
+
+
+ }
+
+ }
+}
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentUtils.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentUtils.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentUtils.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentUtils.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,134 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.el.MethodNotFoundException;
+
+import org.ajax4jsf.Messages;
+import org.apache.commons.beanutils.MethodUtils;
+
+/**
+ * Utils for working with tempates
+ * @author ayukhovich(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:52 $
+ */
+public class ComponentUtils {
+ private final static String UTILS_PREFIX = "util.";
+ /**
+ *
+ * @param className
+ * @param functionName
+ * @param parameters
+ * @return
+ */
+ public static Object callFunction( FacesContext context, UIComponent component,
RendererBase renderer, String functionName, Object[] parameters ) {
+
+ Object returnObject = null;
+
+ int sizeParameters = 0;
+ int sizeArrayParameters = 2;
+ if ( parameters != null ) {
+ sizeParameters = parameters.length;
+ sizeArrayParameters = 3;
+ }
+
+ Object[][] arrayParameters = new Object[sizeArrayParameters][];
+ arrayParameters[0] = new Object[sizeParameters+2];
+ arrayParameters[1] = new Object[sizeParameters+1];
+
+ if ( sizeParameters != 0 ) {
+ arrayParameters[2] = new Object[sizeParameters];
+ }
+
+ arrayParameters[0][0] = context;
+ arrayParameters[0][1] = component;
+ arrayParameters[1][0] = component;
+
+ if ( parameters != null ) {
+ for (int iParameter=0;iParameter<parameters.length;iParameter++) {
+ arrayParameters[0][iParameter+2] = parameters;
+ arrayParameters[1][iParameter+1] = parameters;
+ arrayParameters[2][iParameter] = parameters;
+ }
+ }
+
+ String methodName;
+ Object object;
+ if(functionName.startsWith(UTILS_PREFIX)){
+ methodName = functionName.substring(UTILS_PREFIX.length());
+ object = renderer.getUtils();
+ } else {
+ object = renderer;
+ methodName = functionName;
+ }
+
+
+ returnObject = invokeMethod(object, methodName, arrayParameters );
+
+ return returnObject;
+ }
+
+ /**
+ * Invoke a named method whose parameter type matches the object type.
+ * @param objects - invoke method on this object
+ * @param methodName - get method with this name
+ * @param arrayParameters - use these arguments - treat null as empty array
+ * @return
+ */
+ private static Object invokeMethod(Object object, String methodName, Object[][]
arrayParameters) {
+
+ try {
+ for (int iParameter = 0; iParameter < arrayParameters.length; iParameter++) {
+ try {
+ return MethodUtils.invokeMethod(object, methodName, arrayParameters[iParameter]);
+ } catch (NoSuchMethodException e) {
+ continue;
+ }
+ }
+ } catch (InvocationTargetException e) {
+ throw new FacesException(Messages.getMessage(Messages.METHOD_CALL_ERROR_2b,
methodName, e.getCause().getMessage()), e);
+ } catch (IllegalAccessException e) {
+ throw new FacesException(Messages.getMessage(Messages.METHOD_CALL_ERROR_4b,
methodName, e.getMessage()), e);
+ }
+ throw new MethodNotFoundException(Messages.getMessage(Messages.METHOD_CALL_ERROR_6b,
methodName, object));
+ }
+
+ /**
+ * Write html-attribute
+ * @param writer
+ * @param attribute
+ * @param value
+ * @throws IOException
+ */
+ public static void writeAttribute(ResponseWriter writer, String attribute, Object value
) throws IOException {
+ if ( (value != null) && (value.toString().length()!=0) ) {
+ writer.writeAttribute(attribute, value.toString(), attribute );
+ }
+ }
+}
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentVariables.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentVariables.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentVariables.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentVariables.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,93 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+
+/**
+ * storing tempates variables
+ * @author ayukhovich(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.2 $ $Date: 2007/02/28 17:01:01 $
+ */
+public class ComponentVariables implements Serializable {
+
+ private transient HashMap variablesMap = new HashMap();
+
+ /**
+ * setting variable
+ * @param variableName
+ * @param variable
+ */
+ public void setVariable(final String variableName, final Object variable ) {
+ variablesMap.put(variableName, variable);
+ }
+
+ /**
+ *
+ * @param variableName
+ * @return
+ */
+ public Object getVariable(final String variableName ) {
+ return variablesMap.get(variableName);
+ }
+
+
+ /**
+ *
+ * @param variableName
+ * @param addValue
+ */
+ public void addValueToVariable(final String variableName, final Object addValue) {
+ Object variable = getVariable(variableName);
+ if ( variable == null )
+ return;
+
+ if (variable instanceof Integer) {
+ addToValue( variableName,(Integer) variable, addValue);
+ }
+ }
+
+ /**
+ *
+ * @param variableName
+ * @param variable
+ * @param addValue
+ */
+ protected void addToValue(final String variableName, Integer variable, final Object
addValue ) {
+ Integer retultValue;
+ if ( addValue instanceof Integer ) {
+ Integer intAddValue =(Integer)addValue;
+ retultValue = new Integer(variable.intValue() + intAddValue.intValue());
+ } else {
+ retultValue = variable;
+ }
+
+ setVariable(variableName, retultValue);
+ }
+
+ private void readObject(java.io.ObjectInputStream in)
+ throws IOException, ClassNotFoundException{
+ variablesMap = new HashMap();
+ }
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentsVariableResolver.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/ComponentsVariableResolver.java)
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentsVariableResolver.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/ComponentsVariableResolver.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,62 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import javax.faces.component.UIComponent;
+
+/**
+ * Resolve component variables
+ *
+ * @author ayukhovich(a)exadel.com (latest modification by $Author:
+ * alexeyyukhovich $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:53 $
+ */
+public class ComponentsVariableResolver {
+ private static String COMPONENTS_VARIABLE_RESOLVER = ComponentsVariableResolver.class
+ .getName();
+
+ private static String getAttributeName(RendererBase renderer) {
+ return COMPONENTS_VARIABLE_RESOLVER + ":" + (renderer != null ?
renderer.getClass().getName() : null);
+ }
+
+ public static ComponentVariables getVariables(RendererBase renderer,
+ UIComponent component) {
+ ComponentVariables variables;
+
+ String attributeName = getAttributeName(renderer);
+
+ variables = (ComponentVariables) component.getAttributes().get(attributeName);
+
+ if (variables == null) {
+ variables = new ComponentVariables();
+
+ component.getAttributes().put(attributeName, variables);
+ }
+
+ return variables;
+ }
+
+ public static void removeVariables(RendererBase renderer,
+ UIComponent component) {
+ component.getAttributes().remove(getAttributeName(renderer));
+ }
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/HeaderResourcesRendererBase.java
(from rev 1559,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/HeaderResourcesRendererBase.java)
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/HeaderResourcesRendererBase.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/HeaderResourcesRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,137 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.IOException;
+import java.util.LinkedHashSet;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.renderkit.HeaderResourceProducer;
+import org.ajax4jsf.resource.InternetResource;
+import org.ajax4jsf.webapp.BaseFilter;
+
+/**
+ * Base renderer for components used JavaScripts and Styles in header. In real
+ * class override getScripts or/and getStyles methods
+ *
+ * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:51 $
+ *
+ */
+public abstract class HeaderResourcesRendererBase extends RendererBase
+ implements HeaderResourceProducer {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderScripts(javax.faces.context.FacesContext)
+ */
+ public LinkedHashSet getHeaderScripts(FacesContext context,
+ UIComponent component) {
+ return getUrisSet(context, getScripts(), component);
+ }
+
+ /**
+ * Hoock method to return array of scripts resources to store in head.
+ *
+ * @return
+ */
+ protected InternetResource[] getScripts() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderStyles(javax.faces.context.FacesContext)
+ */
+ public LinkedHashSet getHeaderStyles(FacesContext context,
+ UIComponent component) {
+ return getUrisSet(context, getStyles(), component);
+ }
+
+ /**
+ * Hoock method to return array of styles resources to store in head
+ *
+ * @return
+ */
+ protected InternetResource[] getStyles() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @param context
+ * @param resources
+ * @param component
+ * TODO
+ * @return
+ */
+ private LinkedHashSet getUrisSet(FacesContext context,
+ InternetResource[] resources, UIComponent component) {
+ if (null != resources) {
+ LinkedHashSet uris = new LinkedHashSet(); //
Collections.singleton(ajaxScript.getUri(context,
+ // null));
+ for (int i = 0; i < resources.length; i++) {
+ InternetResource resource = resources[i];
+ uris.add(resource.getUri(context, component));
+ }
+ return uris;
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.ajax4jsf.renderkit.RendererBase#preEncodeBegin(javax.faces.context.FacesContext,
+ * javax.faces.component.UIComponent)
+ */
+ protected void preEncodeBegin(FacesContext context, UIComponent component)
+ throws IOException {
+ if ((null == context.getExternalContext().getRequestMap().get(
+ BaseFilter.RESPONSE_WRAPPER_ATTRIBUTE))
+ /*&& (!AjaxRendererUtils.isAjaxRequest(context))*/) {
+ // Filter not used - encode scripts and CSS before component.
+ encodeResourcesArray(context, component, getScripts());
+ encodeResourcesArray(context, component, getStyles());
+ }
+ }
+
+ /**
+ * @param context
+ * @param component
+ * @param scripts
+ * @throws IOException
+ */
+ protected void encodeResourcesArray(FacesContext context, UIComponent component,
InternetResource[] scripts) throws IOException {
+ if (scripts != null) {
+ for (int i = 0; i < scripts.length; i++) {
+ scripts[i].encode(context,component);
+ }
+ }
+ }
+
+}
Copied:
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/PrototypeBasedRendererBase.java
(from rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/PrototypeBasedRendererBase.java)
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/PrototypeBasedRendererBase.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/PrototypeBasedRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,66 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.util.LinkedHashSet;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.renderkit.HeaderResourceProducer;
+import org.ajax4jsf.resource.InternetResource;
+import org.ajax4jsf.resource.PrototypeScript;
+
+
+/**
+ * @author Maksim Kaszynski
+ *
+ */
+public abstract class PrototypeBasedRendererBase extends RendererBase implements
HeaderResourceProducer{
+
+ protected static final String[] EMPTY_ARRAY = {};
+ private InternetResource prototypeScript =
getResource(PrototypeScript.class.getName());
+
+ public LinkedHashSet getHeaderScripts(FacesContext context, UIComponent component) {
+ LinkedHashSet scripts = new LinkedHashSet() ; //
Collections.singleton(ajaxScript.getUri(context, null));
+ scripts.add(prototypeScript.getUri(context, null));
+ String[] additionalScripts = getAdditionalScripts();
+ for (int i = 0; i < additionalScripts.length; i++) {
+ String resource = additionalScripts[i];
+ scripts.add(getResource(resource).getUri(context, null));
+ }
+ return scripts;
+ }
+
+ /* (non-Javadoc)
+ * @see
org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderStyles(javax.faces.context.FacesContext)
+ */
+ public LinkedHashSet getHeaderStyles(FacesContext context, UIComponent component) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ protected String[] getAdditionalScripts() {
+ return EMPTY_ARRAY;
+ }
+
+}
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererBase.java (from
rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererBase.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererBase.java
(rev 0)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,289 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+import org.ajax4jsf.Messages;
+import org.ajax4jsf.resource.InternetResource;
+import org.ajax4jsf.resource.InternetResourceBuilder;
+import org.ajax4jsf.resource.ResourceNotFoundException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.richfaces.skin.Skin;
+import org.richfaces.skin.SkinFactory;
+
+
+/**
+ * Base Renderer for all chameleon Skin's and components.
+ * At most, make all common procedures and realise concrete work in "template"
methods.
+ * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:51 $
+ *
+ */
+public abstract class RendererBase extends Renderer implements
+ ChameleonRenderer {
+
+ /**
+ * logger for common cases.
+ */
+ protected static final String JAVASCRIPT_NAMESPACE = "Exadel";
+ private static final Log log = LogFactory.getLog(RendererBase.class);
+ private static final RendererUtils utils = new RendererUtils();
+
+ private SkinFactory skinFactory = null;
+ private InternetResourceBuilder resourceBuilder = null;
+ /* (non-Javadoc)
+ * @see javax.faces.render.Renderer#decode(javax.faces.context.FacesContext,
javax.faces.component.UIComponent)
+ */
+ public void decode(FacesContext context, UIComponent component) {
+ // Test for correct parameters.
+ if (context == null) throw new
NullPointerException(Messages.getMessage(Messages.CONTEXT_NULL_ERROR,
"decode"));
+ if (component == null) throw new
NullPointerException(Messages.getMessage(Messages.COMPONENT_NULL_ERROR,
"decode"));
+ if (! getComponentClass().isInstance(component)) throw new
IllegalArgumentException(Messages.getMessage(Messages.COMPONENT_CLASS_ERROR, "",
getComponentClass().getName()));
+ if(log.isDebugEnabled()){
+ log.debug(Messages.getMessage(Messages.START_DECODING_COMPONENT_INFO,
component.getClientId(context), component.getClass().getName()));
+ }
+ preDecode(context,component);
+ // TODO - create set od common decoders ( UIInput, ActionSource etc. ) for
process decoding.
+ if (component.isRendered()) {
+ doDecode(context, component);
+ }
+ }
+
+ protected void preDecode(FacesContext context, UIComponent component) {
+ }
+
+ protected void preEncodeBegin(FacesContext context, UIComponent component) throws
IOException {
+
+ }
+
+ /* (non-Javadoc)
+ * @see javax.faces.render.Renderer#encodeBegin(javax.faces.context.FacesContext,
javax.faces.component.UIComponent)
+ */
+ public void encodeBegin(FacesContext context, UIComponent component) throws IOException
{
+ // Test for correct parameters.
+ if (context == null) throw new
NullPointerException(Messages.getMessage(Messages.CONTEXT_NULL_ERROR,
"encodeBegin"));
+ if (component == null) throw new
NullPointerException(Messages.getMessage(Messages.COMPONENT_NULL_ERROR,
"encodeBegin"));
+ if (! getComponentClass().isInstance(component)) throw new
IllegalArgumentException(Messages.getMessage(Messages.COMPONENT_CLASS_ERROR,
component.getClientId(context), getComponentClass().getName()));
+ if(log.isDebugEnabled()){
+ log.debug(Messages.getMessage(Messages.START_ENCODING_COMPONENT_INFO,
component.getClientId(context), component.getClass().getName()));
+ }
+ preEncodeBegin(context,component);
+ if (component.isRendered()) {
+ ResponseWriter writer = context.getResponseWriter();
+ doEncodeBegin(writer, context, component);
+ }
+ }
+
+
+
+ /* (non-Javadoc)
+ * @see javax.faces.render.Renderer#encodeChildren(javax.faces.context.FacesContext,
javax.faces.component.UIComponent)
+ */
+ public void encodeChildren(FacesContext context, UIComponent component) throws
IOException {
+ // Test for correct parameters.
+ if (context == null) throw new
NullPointerException(Messages.getMessage(Messages.CONTEXT_NULL_ERROR,
"encodeBegin"));
+ if (component == null) throw new
NullPointerException(Messages.getMessage(Messages.COMPONENT_NULL_ERROR,
"encodeBegin"));
+ if (! getComponentClass().isInstance(component)) throw new
IllegalArgumentException(Messages.getMessage(Messages.COMPONENT_CLASS_ERROR,
component.getClientId(context), getComponentClass().getName()));
+ if(log.isDebugEnabled()){
+ log.debug(Messages.getMessage(Messages.CHILDREN_ENCODING_COMPONENT_INFO,
component.getClientId(context), component.getClass().getName()));
+ }
+ preEncodeBegin(context,component);
+ if (component.isRendered()) {
+ ResponseWriter writer = context.getResponseWriter();
+ doEncodeChildren(writer, context, component);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see javax.faces.render.Renderer#encodeEnd(javax.faces.context.FacesContext,
javax.faces.component.UIComponent)
+ */
+ public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+ // Test for correct parameters.
+ if (context == null) throw new
NullPointerException(Messages.getMessage(Messages.CONTEXT_NULL_ERROR,
"encodeEnd"));
+ if (component == null) throw new
NullPointerException(Messages.getMessage(Messages.COMPONENT_NULL_ERROR,
"encodeEnd"));
+ if (! getComponentClass().isInstance(component)) throw new
IllegalArgumentException(Messages.getMessage(Messages.COMPONENT_CLASS_ERROR,
component.getClientId(context), getComponentClass().getName()));
+ if (component.isRendered()) {
+ ResponseWriter writer = context.getResponseWriter();
+ doEncodeEnd(writer, context, component);
+ }
+ if(log.isDebugEnabled()){
+ log.debug(Messages.getMessage(Messages.FINISH_ENCODING_COMPONENT_INFO,
component.getClientId(context), component.getClass().getName()));
+ }
+ }
+
+ /**
+ * Base stub method for produce internet resource ( image, script ... )
+ * since resources must be implemented in "lightweight" pattern, it instances
+ * put in internal map to caching.
+ * @param resourceURI - relative ( to renderer class ) uri to resource in jar or
+ * key for generate ( in Java2D , for example ).
+ * @return - resource instance for this uri.
+ * @throws ResourceNotFoundException - if reqested resource not instantiated.
+ */
+ public InternetResource getResource(String resourceURI ) throws FacesException {
+ return getResourceBuilder().createResource(this,resourceURI);
+ }
+
+ private InternetResourceBuilder getResourceBuilder(){
+ if (resourceBuilder == null) {
+ resourceBuilder = InternetResourceBuilder.getInstance();
+
+ }
+
+ return resourceBuilder;
+ }
+ //==========================================================
+ // Protected common methods - for all Renderer's
+
+ /**
+ * Calculate current Skin for rendering.
+ * @param context - current {@link FacesContext }
+ * @return
+ */
+ protected Skin getSkin(FacesContext context) {
+ if (skinFactory == null) {
+ skinFactory = SkinFactory.getInstance();
+
+ }
+
+ return skinFactory.getSkin(context);
+ }
+
+
+ /**
+ * Due to big number of common utility methods, base renderer divide to 2 classes -
renderer and utils.
+ * since use static methods of utility class breack object paradigm, we use getter for
concrete util instance.
+ * Developer can override any utility metod in 2 stages :
+ * 1) Create subclass of {@link RendererUtils} and override utility method.
+ * 2) Override this method for return instance of such subclass.
+ *
+ * @return Returns the utils.
+ */
+ public RendererUtils getUtils() {
+ return utils;
+ }
+
+
+ /**
+ * Get base component slass , targetted for this renderer. Used for check arguments in
decode/encode.
+ * @return
+ */
+ protected abstract Class getComponentClass();
+
+
+ /**
+ * Template method for custom decoding of concrete renderer.
+ * All parameters checking if performed in original {@see decode } method.
+ * @param context
+ * @param component
+ */
+ protected void doDecode(FacesContext context, UIComponent component) {
+
+ }
+
+ /**
+ * Template method for custom start encoding of concrete renderer.
+ * All parameters checking and writer is performed in original {@link encodeBegin }
method.
+ * @param writer
+ * @param context
+ * @param component
+ */
+ protected void doEncodeBegin(ResponseWriter writer,FacesContext context, UIComponent
component) throws IOException {
+
+ }
+ /**
+ * @param writer
+ * @param context
+ * @param component
+ */
+ protected void doEncodeChildren(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
+ // Hook method, must be overriden in renderers with special children processing
+ }
+
+ /**
+ * Template method for custom finish encoding of concrete renderer.
+ * All parameters checking and writer is performed in original {@link encodeEnd }
method.
+ * @param writer
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
+
+ }
+ /**
+ * Append new resource to renderer cache.
+ * @param key
+ * @param resource
+ */
+ protected void addResource(String key, InternetResource resource) {
+ getResourceBuilder().addResource(key,resource);
+ }
+
+ /**
+ * Render all children for given component.
+ * @param facesContext
+ * @param component
+ * @throws IOException
+ */
+ public void renderChildren(FacesContext facesContext,
+ UIComponent component) throws IOException {
+ if (component.getChildCount() > 0) {
+ for (Iterator it = component.getChildren().iterator(); it.hasNext();) {
+ UIComponent child = (UIComponent) it.next();
+ renderChild(facesContext, child);
+ }
+ }
+ }
+
+
+ /**
+ * Render one component and it childrens
+ * @param facesContext
+ * @param child
+ * @throws IOException
+ */
+ public void renderChild(FacesContext facesContext, UIComponent child)
+ throws IOException {
+ if (!child.isRendered()) {
+ return;
+ }
+
+ child.encodeBegin(facesContext);
+ if (child.getRendersChildren()) {
+ child.encodeChildren(facesContext);
+ } else {
+ renderChildren(facesContext, child);
+ }
+ child.encodeEnd(facesContext);
+ }
+
+}
Copied: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java (from
rev 1558,
trunk/framework/impl/src/main/java/org/ajax4jsf/framework/renderer/RendererUtils.java)
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -0,0 +1,803 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.renderkit;
+
+import java.awt.Dimension;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.faces.FacesException;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+
+import org.ajax4jsf.Messages;
+import org.ajax4jsf.framework.renderer.compiler.TemplateContext;
+import org.ajax4jsf.framework.util.HtmlDimensions;
+import org.ajax4jsf.resource.InternetResource;
+import org.ajax4jsf.resource.Java2Dresource;
+
+
+/**
+ * Util class for common render operations - render passthru html attributes,
+ * iterate over child components etc.
+ * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.6 $ $Date: 2007/02/08 19:07:16 $
+ *
+ */
+public class RendererUtils {
+
+ public static final String DUMMY_FORM_ID = ":_form";
+ /**
+ * Substitutions for components properies names and HTML attributes names.
+ */
+ private static Map substitutions = new HashMap();
+
+ static {
+ substitutions.put(HTML.class_ATTRIBUTE,"styleClass");
+ Arrays.sort(HTML.PASS_THRU);
+ Arrays.sort(HTML.PASS_THRU_BOOLEAN);
+ Arrays.sort(HTML.PASS_THRU_URI);
+ }
+ /**
+ * Common HTML elements and attributes names.
+ * @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
+ * @version $Revision: 1.1.2.6 $ $Date: 2007/02/08 19:07:16 $
+ *
+ */
+ public interface HTML {
+ // elements
+ public static final String BUTTON = "button";
+ // attributes
+ public static final String id_ATTRIBUTE = "id";
+ public static final String class_ATTRIBUTE = "class";
+// public static final String STYLE_ATTRIBUTE = "style";
+// public static final String dir_ATTRIBUTE = "dir";
+// public static final String lang_ATTRIBUTE = "lang";
+// public static final String title_ATTRIBUTE = "title";
+ public static final String accesskey_ATTRIBUTE = "accesskey";
+ public static final String alt_ATTRIBUTE = "alt";
+ public static final String cols_ATTRIBUTE = "cols";
+
+ public static final String height_ATTRIBUTE = "height";
+
+ public static final String lang_ATTRIBUTE = "lang";
+
+ public static final String longdesc_ATTRIBUTE = "longdesc";
+
+ public static final String maxlength_ATTRIBUTE = "maxlength";
+
+ public static final String onblur_ATTRIBUTE = "onblur";
+
+ public static final String onchange_ATTRIBUTE = "onchange";
+
+ public static final String onclick_ATTRIBUTE = "onclick";
+
+ public static final String ondblclick_ATTRIBUTE = "ondblclick";
+
+ public static final String onfocus_ATTRIBUTE = "onfocus";
+
+ public static final String onkeydown_ATTRIBUTE = "onkeydown";
+
+ public static final String onkeypress_ATTRIBUTE = "onkeypress";
+
+ public static final String onkeyup_ATTRIBUTE = "onkeyup";
+
+ public static final String onload_ATTRIBUTE = "onload";
+
+ public static final String onmousedown_ATTRIBUTE = "onmousedown";
+
+ public static final String onmousemove_ATTRIBUTE = "onmousemove";
+
+ public static final String onmouseout_ATTRIBUTE = "onmouseout";
+
+ public static final String onmouseover_ATTRIBUTE = "onmouseover";
+
+ public static final String onmouseup_ATTRIBUTE = "onmouseup";
+
+ public static final String onreset_ATTRIBUTE = "onreset";
+
+ public static final String onselect_ATTRIBUTE = "onselect";
+
+ // public static final String onsubmit_ATTRIBUTE = "onsubmit";
+ public static final String onunload_ATTRIBUTE = "onunload";
+
+ public static final String rows_ATTRIBUTE = "rows";
+
+ public static final String size_ATTRIBUTE = "size";
+
+ public static final String tabindex_ATTRIBUTE = "tabindex";
+
+ public static final String title_ATTRIBUTE = "title";
+
+ public static final String style_ATTRIBUTE = "style";
+
+ public static final String align_ATTRIBUTE = "align";
+
+ public static final String width_ATTRIBUTE = "width";
+
+ public static final String dir_ATTRIBUTE = "dir";
+
+ public static final String rules_ATTRIBUTE = "rules";
+
+ public static final String frame_ATTRIBUTE = "frame";
+
+ public static final String border_ATTRIBUTE = "border";
+
+ public static final String cellspacing_ATTRIBUTE = "cellspacing";
+
+ public static final String cellpadding_ATTRIBUTE = "cellpadding";
+
+ public static final String summary_ATTRIBUTE = "summary";
+
+ public static final String bgcolor_ATTRIBUTE = "bgcolor";
+
+ public static final String usemap_ATTRIBUTE = "usemap";
+
+ public static final String enctype_ATTRIBUTE = "enctype";
+
+ public static final String accept_charset_ATTRIBUTE = "accept-charset";
+
+ public static final String accept_ATTRIBUTE = "accept";
+
+ public static final String target_ATTRIBUTE = "target";
+
+ public static final String onsubmit_ATTRIBUTE = "onsubmit";
+
+ public static final String readonly_ATTRIBUTE = "readonly";
+
+ public static final String nowrap_ATTRIBUTE = "nowrap";
+
+ //public static final String onreset_ATTRIBUTE = "onreset";
+ // attributes sets.
+ public static final String[] PASS_THRU = {
+// DIR_ATTRIBUTE,
+// LANG_ATTRIBUTE,
+// STYLE_ATTRIBUTE,
+// TITLE_ATTRIBUTE
+ "accesskey",
+ "alt",
+ "cols",
+ "height",
+ "lang",
+ "longdesc",
+ "maxlength",
+ "onblur",
+ "onchange",
+ "onclick",
+ "ondblclick",
+ "onfocus",
+ "onkeydown",
+ "onkeypress",
+ "onkeyup",
+ "onload",
+ "onmousedown",
+ "onmousemove",
+ "onmouseout",
+ "onmouseover",
+ "onmouseup",
+ "onreset",
+ "onselect",
+ "onsubmit",
+ "onunload",
+ "rows",
+ "size",
+ "tabindex",
+ "title",
+ "width",
+ "dir",
+ "rules",
+ "frame",
+ "border",
+ "cellspacing",
+ "cellpadding",
+ "summary",
+ "bgcolor",
+ "usemap",
+ "enctype",
+ "accept-charset",
+ "accept",
+ "target",
+ "charset",
+ "coords",
+ "hreflang",
+ "rel",
+ "rev",
+ "shape",
+ "disabled",
+ "readonly",
+ "ismap"
+
+ };
+
+ /**
+ * HTML attributes allowed boolean-values only
+ */
+ public static final String[] PASS_THRU_BOOLEAN = {
+ "disabled",
+ "declare",
+ "readonly",
+ "compact",
+ "ismap",
+ "selected",
+ "checked",
+ "nowrap",
+ "noresize",
+ "nohref",
+ "noshade",
+ "multiple"
+ };
+
+
+ /**
+ * all HTML attributes with URI value.
+ */
+ public static final String[] PASS_THRU_URI = {
+ "usemap",
+ "background",
+ "codebase",
+ "cite",
+ "data",
+ "classid",
+ "href",
+ "longdesc",
+ "profile",
+ "src"
+ };
+
+ public static final String[] PASS_THRU_STYLES = {
+ "style",
+ "class",
+ };
+
+ public static final String SPAN_ELEM = "span";
+ public static final String DIV_ELEM = "div";
+ public static final String SCRIPT_ELEM = "script";
+ public static final String STYLE_CLASS_ATTR = "styleClass";
+ public static final String DISABLED_ATTR = "disabled";
+ public static final String TYPE_ATTR = "type";
+ public static final String CHARSET_ATTR = "charset";
+ public static final String COORDS_ATTR = "coords";
+ public static final String HREFLANG_ATTR = "hreflang";
+ public static final String REL_ATTR = "rel";
+ public static final String REV_ATTR = "rev";
+ public static final String SHAPE_ATTR = "shape";
+ public static final String title_ELEM = "title";
+ public static final String FORM_ELEMENT = "form";
+ public static final String NAME_ATTRIBUTE = "name";
+ public static final String METHOD_ATTRIBUTE = "method";
+ public static final String ACTION_ATTRIBUTE = "action";
+ public static final String INPUT_ELEM = "input";
+ public static final Object INPUT_TYPE_HIDDEN = "hidden";
+ public static final String value_ATTRIBUTE = "value";
+ public static final String td_ELEM = "td";
+ public static final String th_ELEM = "th";
+ public static final String valign_ATTRIBUTE = "valign";
+ public static final String a_ELEMENT = "a";
+ public static final String HTML_ELEMENT = "html";
+ public static final String BODY_ELEMENT = "body";
+ public static final String TR_ELEMENT = "tr";
+ public static final String CAPTION_ELEMENT = "caption";
+ public static final String THEAD_ELEMENT = "thead";
+ public static final String TFOOT_ELEMENT = "tfoot";
+ }
+
+ /**
+ * Encode id attribute with clientId component property
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public void encodeId(FacesContext context, UIComponent component) throws IOException {
+ encodeId(context,component,HTML.id_ATTRIBUTE);
+ }
+
+ /**
+ * Encode clientId to custom attribute ( for example, to control name )
+ * @param context
+ * @param component
+ * @param attribute
+ * @throws IOException
+ */
+ public void encodeId(FacesContext context,UIComponent component, String attribute)
throws IOException {
+ String clientId = null;
+ try {
+ clientId = component.getClientId(context);
+ } catch(Exception e) {
+ //just ignore if clientId wasn't inited yet
+ }
+ if (null != clientId) {
+ context.getResponseWriter().writeAttribute(attribute,
+ clientId,
+ (String) getComponentAttributeName(attribute));
+ }
+ }
+ /**
+ * Encode id attribute with clientId component property.
+ * Encoded only if id not auto generated.
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public void encodeCustomId(FacesContext context, UIComponent component) throws
IOException {
+ if(component.getId() != null &&
!component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX)){
+ context.getResponseWriter().writeAttribute(HTML.id_ATTRIBUTE,component.getClientId(context),HTML.id_ATTRIBUTE);
+ }
+ }
+
+ /**
+ * Encode common pass-thru html attributes.
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public void encodePassThru(FacesContext context, UIComponent component) throws
IOException {
+ encodeAttributesFromArray(context,component,HTML.PASS_THRU);
+ }
+
+ /**
+ * Encode pass-through attributes except specified ones
+ * @param context
+ * @param component
+ * @param exclusions
+ * @throws IOException
+ */
+ public void encodePassThruWithExclusions(FacesContext context, UIComponent
component,String exclusions) throws IOException{
+ if (null != exclusions) {
+ String[] exclusionsArray = exclusions.split(",");
+ encodePassThruWithExclusionsArray(context,component,exclusionsArray);
+ }
+ }
+
+ public void encodePassThruWithExclusionsArray(FacesContext context, UIComponent
component,String[] exclusions) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ Map attributes = component.getAttributes();
+ Arrays.sort(exclusions);
+ for (int i = 0; i < HTML.PASS_THRU.length; i++) {
+ String attribute = HTML.PASS_THRU[i];
+ if(Arrays.binarySearch(exclusions, attribute) < 0){
+ encodePassThruAttribute(context, attributes, writer, attribute);
+ }
+ }
+ }
+
+ /**
+ * Encode one pass-thru attribute, with plain/boolean/url value, got from properly
component attribute.
+ * @param context
+ * @param component
+ * @param writer
+ * @param attribute
+ * @throws IOException
+ */
+ public void encodePassThruAttribute(FacesContext context, Map attributes, ResponseWriter
writer, String attribute) throws IOException {
+ Object value =
attributeValue(attribute,attributes.get(getComponentAttributeName(attribute)));
+ if (null != value && shouldRenderAttribute(value)) {
+ if(Arrays.binarySearch(HTML.PASS_THRU_URI, attribute)>=0){
+ String url = context.getApplication().getViewHandler().getResourceURL(context,
value.toString());
+ url = context.getExternalContext().encodeResourceURL(url);
+ writer.writeURIAttribute(attribute,url,attribute);
+ } else {
+ writer.writeAttribute(attribute,value,attribute);
+ }
+ }
+ }
+
+
+ public void encodeAttributesFromArray(FacesContext context, UIComponent
component,String[] attrs) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ Map attributes = component.getAttributes();
+ for (int i = 0; i < attrs.length; i++) {
+ String attribute = attrs[i];
+ encodePassThruAttribute(context, attributes, writer, attribute);
+ }
+ }
+
+
+ /**
+ * Encode attributes given by comma-separated string list.
+ * @param context current JSF context
+ * @param component for with render attributes values
+ * @param attrs comma separated list of attributes
+ * @throws IOException
+ */
+ public void encodeAttributes(FacesContext context, UIComponent component,String attrs)
throws IOException {
+ if (null != attrs) {
+ String[] attrsArray = attrs.split(",");
+ encodeAttributesFromArray(context,component,attrsArray);
+ }
+ }
+ /**
+ * @param context
+ * @param component
+ * @param string
+ * @param string2
+ * @throws IOException
+ */
+ public void encodeAttribute(FacesContext context, UIComponent component, Object
property, String attributeName) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ Object value = component.getAttributes().get(property);
+ if (shouldRenderAttribute(value)) {
+ writer.writeAttribute(attributeName,value,property.toString());
+ }
+
+ }
+
+ public void encodeAttribute(FacesContext context, UIComponent component,String
attribute) throws IOException {
+ encodeAttribute(context,component,getComponentAttributeName(attribute),attribute);
+ }
+ /**
+ * Write html-attribute
+ * @param writer
+ * @param attribute
+ * @param value
+ * @throws IOException
+ */
+ public void writeAttribute(ResponseWriter writer, String attribute, Object value )
throws IOException {
+ if ( shouldRenderAttribute(value) ) {
+ writer.writeAttribute(attribute, value.toString(), attribute );
+ }
+ }
+
+ /**
+ * @return true if and only if the argument
+ * <code>attributeVal</code> is an instance of a wrapper for a
+ * primitive type and its value is equal to the default value for
+ * that type as given in the spec.
+ */
+
+ public boolean shouldRenderAttribute(Object attributeVal) {
+ if(null == attributeVal){
+ return false;
+ } else if (attributeVal instanceof Boolean &&
+ ((Boolean) attributeVal).booleanValue() ==
+ Boolean.FALSE.booleanValue()) {
+ return false;
+ } else if(attributeVal.toString().length() == 0){
+ return false;
+ } else return isValidProperty(attributeVal);
+ }
+
+
+ /**
+ * Test for valid value of property. by default, for non-setted properties with Java
primitive types of
+ * JSF component return appropriate MIN_VALUE .
+ * @param property - value of property returned from {@link
UIComponent#getAttributes()}
+ * @return true for setted property, false otherthise.
+ */
+ public boolean isValidProperty(Object property) {
+ if (null == property) {
+ return false;
+ } else if (property instanceof Integer
+ && ((Integer) property).intValue() == Integer.MIN_VALUE) {
+ return false;
+ } else if (property instanceof Double
+ && ((Double) property).doubleValue() == Double.MIN_VALUE) {
+ return false;
+ } else if (property instanceof Character
+ && ((Character) property).charValue() == Character.MIN_VALUE) {
+ return false;
+ } else if (property instanceof Float
+ && ((Float) property).floatValue() == Float.MIN_VALUE) {
+ return false;
+ } else if (property instanceof Short
+ && ((Short) property).shortValue() == Short.MIN_VALUE) {
+ return false;
+ } else if (property instanceof Byte
+ && ((Byte) property).byteValue() == Byte.MIN_VALUE) {
+ return false;
+ } else if (property instanceof Long
+ && ((Long) property).longValue() == Long.MIN_VALUE) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Convert HTML attribute name to component property name.
+ *
+ * @param key
+ * @return
+ */
+ protected Object getComponentAttributeName(Object key) {
+ Object converted = substitutions.get(key);
+ if (null==converted) {
+ return key;
+ } else {
+ return converted;
+ }
+ }
+
+ /**
+ * Convert attribute value to proper object. For known html boolean attributes return
name
+ * for true value, otherthise - null. For non-boolean attributes return same value.
+ * @param name attribute name.
+ * @param value
+ * @return
+ */
+ protected Object attributeValue(String name, Object value){
+ if (null != value && Arrays.binarySearch(HTML.PASS_THRU_BOOLEAN,name)>=0) {
+ boolean checked = false;
+ if (value instanceof Boolean) {
+ checked = ((Boolean) value).booleanValue();
+ } else {
+ if( ! (value instanceof String) ){
+ value = value.toString();
+ }
+ checked = (new Boolean((String) value)).booleanValue();
+ }
+ return checked?name:null;
+ } else {
+ return value;
+ }
+ }
+
+
+ /**
+ * Get boolean value of logical attribute
+ * @param component
+ * @param name attribute name
+ * @return true if attribute is equals Boolean.TRUE or String "true" , false
otherwise.
+ */
+ public boolean isBooleanAttribute(UIComponent component, String name){
+ Object attrValue = component.getAttributes().get(name);
+ boolean result = false;
+ if(null != attrValue){
+ if(attrValue instanceof String ){
+ result = "true".equalsIgnoreCase((String) attrValue);
+ } else {
+ result = Boolean.TRUE.equals(attrValue);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Return converted value for {@link javax.faces.component.ValueHolder} as String,
+ * perform nessesary convertions.
+ * @param context
+ * @param component
+ * @return
+ */
+ public String getValueAsString(FacesContext context, UIComponent component) {
+ // First - get submitted value for input components
+ if (component instanceof EditableValueHolder) {
+ EditableValueHolder input = (EditableValueHolder) component;
+ String submittedValue = (String) input.getSubmittedValue();
+ if(null != submittedValue) {
+ return submittedValue;
+ }
+ }
+ // If no submitted value presented - convert same for UIInput/UIOutput
+ if (component instanceof ValueHolder) {
+ return formatValue(context, component, ((ValueHolder) component).getValue() );
+ } else {
+ throw new
IllegalArgumentException(Messages.getMessage(Messages.CONVERTING_NON_VALUE_HOLDER_COMPONENT_ERROR,
component.getId()));
+ }
+ }
+
+ /**
+ * Convert any object value to string. If component instance of {@link ValueHolder } got
{@link Converter} for formatting.
+ * If not, attempt to use converter based on value type.
+ * @param context
+ * @param component
+ * @return
+ */
+ public String formatValue(FacesContext context, UIComponent component,Object value) {
+ if(value instanceof String) {
+ return (String) value;
+ }
+ Converter converter = null;
+ if (component instanceof ValueHolder) {
+ ValueHolder holder = (ValueHolder) component;
+ converter = holder.getConverter();
+ }
+ if(null == converter && null != value ) {
+ try {
+ converter = context.getApplication().createConverter(
+ value.getClass());
+ } catch (FacesException e) {
+ // TODO - log converter exception.
+ }
+ }
+ if(null == converter) {
+ if(null != value) {
+ return value.toString();
+ }
+ } else {
+ return converter.getAsString(context, component, value);
+ }
+ return "";
+ }
+
+ public void encodeDimensions(FacesContext context, UIComponent component,
InternetResource resource) throws IOException {
+ if (resource instanceof Java2Dresource) {
+ Java2Dresource j2d = (Java2Dresource) resource;
+ Dimension dim = j2d.getDimensions(context, component);
+ ResponseWriter writer = context.getResponseWriter();
+ writer.writeAttribute("width", String.valueOf(dim.width),
"width");
+ writer.writeAttribute("height", String.valueOf(dim.height),
"height");
+ }
+ }
+ public String encodePx(String value){
+ return HtmlDimensions.formatPx(HtmlDimensions.decode(value));
+ }
+ /**
+ * formats given value to
+ * @param value
+ * @param pattern
+ * @return
+ */
+ public String encodePctOrPx(String value){
+ if(value.indexOf('%') > 0){
+ return value;
+ } else {
+ return encodePx(value);
+ }
+ }
+
+ /**
+ * Find nested form for given component
+ * @param component
+ * @return nested <code>UIForm</code> component, or
<code>null</code>
+ */
+ public UIForm getNestingForm(FacesContext context,UIComponent component)
+ {
+ UIComponent parent = component.getParent();
+ while (parent != null && !(parent instanceof UIForm))
+ {
+ parent = parent.getParent();
+ }
+
+ UIForm nestingForm = null;
+ if (parent != null)
+ {
+ //link is nested inside a form
+ nestingForm = (UIForm) parent;
+ }
+ return nestingForm;
+ }
+
+ /**
+ * @param context
+ * @param component
+ * @return
+ * @throws IOException
+ */
+ public void encodeBeginFormIfNessesary(FacesContext context, UIComponent component)
throws IOException {
+ UIForm form = getNestingForm(context, component);
+ if(null == form) {
+ ResponseWriter writer = context.getResponseWriter();
+ String clientId = component.getClientId(context)+DUMMY_FORM_ID;
+ encodeBeginForm(context, component, writer, clientId);
+// writer.writeAttribute(HTML.style_ATTRIBUTE, "margin:0; padding:0;",
null);
+ }
+ }
+
+ /**
+ * @param context
+ * @param component
+ * @param writer
+ * @param clientId
+ * @throws IOException
+ */
+ public void encodeBeginForm(FacesContext context, UIComponent component, ResponseWriter
writer, String clientId) throws IOException {
+ String actionURL = getActionUrl(context);
+ String encodeActionURL = context.getExternalContext().encodeActionURL(actionURL);
+
+ writer.startElement(HTML.FORM_ELEMENT, component);
+ writer.writeAttribute(HTML.id_ATTRIBUTE, clientId, null);
+ writer.writeAttribute(HTML.NAME_ATTRIBUTE, clientId, null);
+ writer.writeAttribute(HTML.METHOD_ATTRIBUTE, "post", null);
+ writer.writeAttribute(HTML.style_ATTRIBUTE, "margin:0; padding:0;",
null);
+ writer.writeURIAttribute(HTML.ACTION_ATTRIBUTE,
+ encodeActionURL,
+ "action");
+ }
+
+ /**
+ * @param context
+ * @param component
+ * @throws IOException
+ */
+ public void encodeEndFormIfNessesary(FacesContext context, UIComponent component) throws
IOException {
+ UIForm form = getNestingForm(context, component);
+ if(null == form) {
+ ResponseWriter writer = context.getResponseWriter();
+ // TODO - hidden form parameters ?
+ encodeEndForm(context, writer);
+ }
+ }
+
+ /**
+ * @param context
+ * @param writer
+ * @throws IOException
+ */
+ public void encodeEndForm(FacesContext context, ResponseWriter writer) throws
IOException {
+ AjaxRendererUtils.writeState(context);
+ writer.endElement(HTML.FORM_ELEMENT);
+ }
+
+ /**
+ * @param facesContext
+ * @return String A String representing the action URL
+ */
+ public String getActionUrl(FacesContext facesContext)
+ {
+ ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
+ String viewId = facesContext.getViewRoot().getViewId();
+ return viewHandler.getActionURL(facesContext, viewId);
+ }
+ /**
+ *
+ * @param context
+ * @param value
+ * @return URL of target resource (src, href, etc)
+ */
+ public String encodeResourceURL(TemplateContext context, Object value){
+ if(value == null){
+ return "";
+ }
+ FacesContext facesContext = context.getFacesContext();
+ value = facesContext.getApplication().getViewHandler().getResourceURL(facesContext,
value.toString());
+ return facesContext.getExternalContext().encodeResourceURL((String)value);
+ }
+ /**
+ * Simplified version of {@link encodeId}
+ * @param context
+ * @param component
+ * @return client id of current component
+ */
+ public String clientId(FacesContext context, UIComponent component){
+ String clientId = "";
+ try {
+ clientId = component.getClientId(context);
+ } catch (Exception e) {
+ //just ignore
+ }
+ return clientId;
+ }
+
+ /**
+ * Wtrie JavaScript with start/end elements and type.
+ * @param context
+ * @param tab
+ * @param string
+ */
+
+ public void writeScript(FacesContext context, UIComponent component, Object script)
throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ writer.startElement(HTML.SCRIPT_ELEM,component);
+ writer.writeAttribute(HTML.TYPE_ATTR,"text/javascript","type");
+ writer.writeText(script,null);
+ writer.endElement(HTML.SCRIPT_ELEM);
+ }
+
+}
\ No newline at end of file
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSRenderer.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -33,10 +33,10 @@
import javax.faces.render.RenderKit;
import javax.faces.render.RenderKitFactory;
-import org.ajax4jsf.framework.renderer.RendererBase;
import org.ajax4jsf.framework.renderer.compiler.HtmlCompiler;
import org.ajax4jsf.framework.renderer.compiler.PreparedTemplate;
import org.ajax4jsf.framework.renderer.compiler.TemplateContext;
+import org.ajax4jsf.renderkit.RendererBase;
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.ResourceContext;
import org.richfaces.skin.SkinFactory;
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseFilter.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseFilter.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseFilter.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -40,7 +40,7 @@
import org.ajax4jsf.Messages;
import org.ajax4jsf.ajax.PushEventsCounter;
-import org.ajax4jsf.framework.renderer.AjaxContainerRenderer;
+import org.ajax4jsf.renderkit.AjaxContainerRenderer;
import org.ajax4jsf.resource.InternetResourceService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseXMLFilter.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseXMLFilter.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseXMLFilter.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -41,7 +41,7 @@
import org.ajax4jsf.Messages;
import org.ajax4jsf.application.AjaxViewHandler;
import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.framework.renderer.AjaxContainerRenderer;
+import org.ajax4jsf.renderkit.AjaxContainerRenderer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified:
trunk/framework/impl/src/main/java/org/richfaces/component/UISwitchablePanel.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/component/UISwitchablePanel.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/richfaces/component/UISwitchablePanel.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -32,7 +32,7 @@
import javax.faces.event.PhaseId;
import javax.faces.event.ValueChangeEvent;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.richfaces.event.SwitchablePanelSwitchEvent;
/**
Modified: trunk/framework/impl/src/main/java/org/richfaces/component/util/FormUtil.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/component/util/FormUtil.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/richfaces/component/util/FormUtil.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -25,7 +25,7 @@
import javax.faces.component.UIForm;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.RendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils;
import org.richfaces.component.EnclosingFormRequiredException;
Modified:
trunk/framework/impl/src/main/java/org/richfaces/renderkit/CompositeRenderer.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/renderkit/CompositeRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/richfaces/renderkit/CompositeRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -31,7 +31,7 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.AjaxChildrenRenderer;
+import org.ajax4jsf.renderkit.AjaxChildrenRenderer;
import org.ajax4jsf.resource.InternetResource;
/**
Modified:
trunk/framework/impl/src/main/java/org/richfaces/renderkit/InputRendererBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/renderkit/InputRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/richfaces/renderkit/InputRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -29,8 +29,8 @@
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
-import org.ajax4jsf.framework.renderer.AjaxComponentRendererBase;
import org.ajax4jsf.framework.util.SelectUtils;
+import org.ajax4jsf.renderkit.AjaxComponentRendererBase;
/**
* @author Nick Belaevski - nbelaevski(a)exadel.com
Modified:
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/impl/src/main/java/org/richfaces/renderkit/TemplateEncoderRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -20,7 +20,7 @@
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXResult;
-import org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase;
+import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.ajax4jsf.webapp.tidy.TidyParser;
import org.ajax4jsf.webapp.tidy.TidyXMLFilter;
import org.richfaces.json.JSContentHandler;
Modified: trunk/framework/impl/src/main/resources/META-INF/faces-config.xml
===================================================================
--- trunk/framework/impl/src/main/resources/META-INF/faces-config.xml 2007-07-10 00:58:39
UTC (rev 1559)
+++ trunk/framework/impl/src/main/resources/META-INF/faces-config.xml 2007-07-10 01:10:15
UTC (rev 1560)
@@ -6,7 +6,7 @@
<faces-config>
<factory>
- <render-kit-factory>org.ajax4jsf.framework.renderer.ChameleonRenderKitFactory</render-kit-factory>
+ <render-kit-factory>org.ajax4jsf.renderkit.ChameleonRenderKitFactory</render-kit-factory>
<lifecycle-factory>org.ajax4jsf.application.DebugLifecycleFactory</lifecycle-factory>
</factory>
<application>
@@ -18,7 +18,7 @@
<state-manager>org.ajax4jsf.application.AjaxStateManager</state-manager>
</application>
<lifecycle>
-
<phase-listener>org.ajax4jsf.framework.renderer.AjaxPhaseListener</phase-listener>
+ <phase-listener>org.ajax4jsf.renderkit.AjaxPhaseListener</phase-listener>
<phase-listener>org.ajax4jsf.event.InitPhaseListener</phase-listener>
</lifecycle>
<managed-bean>
@@ -55,7 +55,7 @@
</description>
<component-family>javax.faces.ViewRoot</component-family>
<renderer-type>javax.faces.ViewRoot</renderer-type>
-
<renderer-class>org.ajax4jsf.framework.renderer.AjaxViewRootRenderer</renderer-class>
+
<renderer-class>org.ajax4jsf.renderkit.AjaxViewRootRenderer</renderer-class>
</renderer>
<!--
<renderer>
Modified:
trunk/framework/test/src/main/java/org/ajax4jsf/tests/AbstractAjax4JsfTestCase.java
===================================================================
---
trunk/framework/test/src/main/java/org/ajax4jsf/tests/AbstractAjax4JsfTestCase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/test/src/main/java/org/ajax4jsf/tests/AbstractAjax4JsfTestCase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -46,11 +46,11 @@
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.context.AjaxContextImpl;
-import org.ajax4jsf.framework.renderer.AjaxViewRootRenderer;
-import org.ajax4jsf.framework.renderer.ChameleonRenderKitImpl;
import org.ajax4jsf.framework.skin.SkinBean;
import org.ajax4jsf.framework.skin.VersionBean;
import org.ajax4jsf.framework.util.config.WebXml;
+import org.ajax4jsf.renderkit.AjaxViewRootRenderer;
+import org.ajax4jsf.renderkit.ChameleonRenderKitImpl;
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.InternetResourceBuilder;
import org.ajax4jsf.tests.org.apache.shale.test.config.ConfigParser;
Modified:
trunk/framework/test/src/test/java/org/ajax4jsf/framework/renderer/BeforeRendererListenerTestCase.java
===================================================================
---
trunk/framework/test/src/test/java/org/ajax4jsf/framework/renderer/BeforeRendererListenerTestCase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/framework/test/src/test/java/org/ajax4jsf/framework/renderer/BeforeRendererListenerTestCase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -26,6 +26,7 @@
import javax.faces.event.PhaseListener;
import org.ajax4jsf.context.AjaxContext;
+import org.ajax4jsf.renderkit.AjaxPhaseListener;
import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
import org.ajax4jsf.webapp.BaseFilter;
import org.ajax4jsf.webapp.FilterServletResponseWrapper;
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/component/EventValueBinding.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/component/EventValueBinding.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/component/EventValueBinding.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -31,7 +31,7 @@
import org.ajax4jsf.Messages;
import org.ajax4jsf.component.AjaxComponent;
import org.ajax4jsf.component.AjaxSupport;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
/**
* Inner class for build event string for parent component.
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxRegion.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxRegion.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxRegion.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -36,7 +36,7 @@
import org.ajax4jsf.context.AjaxContextImpl;
import org.ajax4jsf.context.InvokerCallback;
import org.ajax4jsf.event.AjaxListener;
-import org.ajax4jsf.framework.renderer.AjaxContainerRenderer;
+import org.ajax4jsf.renderkit.AjaxContainerRenderer;
/**
* @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxStatus.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxStatus.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxStatus.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -30,7 +30,7 @@
import javax.faces.el.ValueBinding;
import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
/**
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxSupport.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxSupport.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/component/UIAjaxSupport.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -27,7 +27,7 @@
import javax.faces.el.ValueBinding;
import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -47,11 +47,11 @@
import javax.faces.model.ListDataModel;
import javax.faces.render.Renderer;
-import org.ajax4jsf.framework.renderer.AjaxChildrenRenderer;
import org.ajax4jsf.model.DataComponentState;
import org.ajax4jsf.model.DataVisitor;
import org.ajax4jsf.model.ExtendedDataModel;
import org.ajax4jsf.model.SerializableDataModel;
+import org.ajax4jsf.renderkit.AjaxChildrenRenderer;
/**
* Base class for iterable components, like dataTable, Tomahawk dataList,
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/component/UISelector.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/component/UISelector.java 2007-07-10 00:58:39
UTC (rev 1559)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/component/UISelector.java 2007-07-10 01:10:15
UTC (rev 1560)
@@ -32,7 +32,7 @@
import javax.faces.context.FacesContext;
import org.ajax4jsf.component.AjaxDataEncoder;
-import org.ajax4jsf.framework.renderer.AjaxChildrenRenderer;
+import org.ajax4jsf.renderkit.AjaxChildrenRenderer;
import org.apache.commons.beanutils.PropertyUtils;
/**
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/AjaxCommandRendererBase.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/AjaxCommandRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/AjaxCommandRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -32,8 +32,6 @@
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.event.AjaxEvent;
-import org.ajax4jsf.framework.renderer.AjaxComponentRendererBase;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
/**
Modified:
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/AjaxFunctionRendererBase.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/AjaxFunctionRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/AjaxFunctionRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -30,7 +30,6 @@
import javax.faces.context.FacesContext;
import org.ajax4jsf.component.UIAjaxFunction;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSReference;
Modified:
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/LoadResourceRendererBase.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/LoadResourceRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/LoadResourceRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,7 +28,6 @@
import javax.faces.context.FacesContext;
import org.ajax4jsf.component.UIResource;
-import org.ajax4jsf.framework.renderer.RendererBase;
import org.ajax4jsf.resource.InternetResource;
/**
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxFormRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxFormRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxFormRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -37,10 +37,10 @@
import org.ajax4jsf.component.UIAjaxForm;
import org.ajax4jsf.event.AjaxEvent;
-import org.ajax4jsf.framework.renderer.AjaxComponentRendererBase;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.renderkit.AjaxComponentRendererBase;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.resource.InternetResource;
/**
Modified:
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxIncludeRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxIncludeRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxIncludeRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,8 +28,8 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.component.UIInclude;
-import org.ajax4jsf.framework.renderer.RendererBase;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
* @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
Modified:
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxOutputPanelRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxOutputPanelRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxOutputPanelRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -31,8 +31,8 @@
import org.ajax4jsf.component.UIAjaxOutputPanel;
import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.framework.renderer.RendererBase;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPageRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPageRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPageRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -32,8 +32,8 @@
import org.ajax4jsf.component.AjaxContainer;
import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.framework.renderer.AjaxContainerRenderer;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.AjaxContainerRenderer;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.webapp.BaseFilter;
/**
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPollRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPollRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPollRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -29,11 +29,11 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.component.UIPoll;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.renderkit.AjaxCommandRendererBase;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
* @author shura
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPushRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPushRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxPushRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -29,11 +29,11 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.component.UIPush;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.renderkit.AjaxCommandRendererBase;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
* @author shura
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxRegionRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxRegionRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxRegionRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -27,7 +27,7 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.AjaxContainerRenderer;
+import org.ajax4jsf.renderkit.AjaxContainerRenderer;
/**
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxStatusRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxStatusRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/AjaxStatusRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,9 +28,9 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.component.UIAjaxStatus;
-import org.ajax4jsf.framework.renderer.RendererBase;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.javascript.JSFunctionDefinition;
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
Modified:
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/HtmlCommandLinkRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/HtmlCommandLinkRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/HtmlCommandLinkRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -36,9 +36,9 @@
import javax.faces.event.ActionEvent;
import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.RendererBase;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified:
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/MediaOutputRenderer.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/MediaOutputRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/MediaOutputRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -34,8 +34,8 @@
import org.ajax4jsf.Messages;
import org.ajax4jsf.component.UIMediaOutput;
-import org.ajax4jsf.framework.renderer.RendererBase;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.InternetResourceBuilder;
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/RepeatRenderer.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/RepeatRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/renderkit/html/RepeatRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,8 +28,8 @@
import javax.faces.context.FacesContext;
import org.ajax4jsf.component.UIRepeat;
-import org.ajax4jsf.framework.renderer.RendererBase;
import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.renderkit.RendererBase;
/**
* @author shura
Modified:
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxReRendrRule.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxReRendrRule.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxReRendrRule.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -24,7 +24,7 @@
import java.util.Set;
import org.ajax4jsf.component.AjaxComponent;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import com.sun.facelets.FaceletContext;
import com.sun.facelets.tag.MetaRule;
Modified:
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/KeepAliveHandler.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/KeepAliveHandler.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/KeepAliveHandler.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -30,7 +30,7 @@
import javax.faces.el.ValueBinding;
import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.AjaxPhaseListener;
+import org.ajax4jsf.renderkit.AjaxPhaseListener;
import com.sun.facelets.FaceletContext;
import com.sun.facelets.FaceletException;
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/jsp/AjaxSupportTag.java
===================================================================
---
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/jsp/AjaxSupportTag.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/jsp/AjaxSupportTag.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -26,9 +26,9 @@
import org.ajax4jsf.Messages;
import org.ajax4jsf.component.UIAjaxSupport;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.framework.taglib.UIComponentTagBase;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
Modified: trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/jsp/KeepAliveTag.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/jsp/KeepAliveTag.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/jsp/KeepAliveTag.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -29,7 +29,7 @@
import javax.servlet.jsp.tagext.TagSupport;
import org.ajax4jsf.Messages;
-import org.ajax4jsf.framework.renderer.AjaxPhaseListener;
+import org.ajax4jsf.renderkit.AjaxPhaseListener;
/**
* @author shura
Modified: trunk/ui/core/src/main/templates/org/ajax4jsf/renderkit/html/log.jspx
===================================================================
--- trunk/ui/core/src/main/templates/org/ajax4jsf/renderkit/html/log.jspx 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/core/src/main/templates/org/ajax4jsf/renderkit/html/log.jspx 2007-07-10
01:10:15 UTC (rev 1560)
@@ -7,7 +7,7 @@
xmlns:u="
http://jsf.exadel.com/vcp"
xmlns:x="
http://jsf.exadel.com/vcp"
class="org.ajax4jsf.renderkit.html.LogRenderer"
- baseclass="org.ajax4jsf.framework.renderer.AjaxComponentRendererBase"
+ baseclass="org.ajax4jsf.renderkit.AjaxComponentRendererBase"
component="org.ajax4jsf.component.UIAjaxLog"
xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" >
<jsp:directive.page
import="javax.faces.context.FacesContext,javax.faces.component.UIComponent"/>
Modified:
trunk/ui/dataFilterSlider/src/main/java/org/richfaces/renderkit/DataFilterSliderRendererBase.java
===================================================================
---
trunk/ui/dataFilterSlider/src/main/java/org/richfaces/renderkit/DataFilterSliderRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dataFilterSlider/src/main/java/org/richfaces/renderkit/DataFilterSliderRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -37,7 +37,7 @@
/**
* @author Wesley Hales
*/
-public class DataFilterSliderRendererBase extends
org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase {
+public class DataFilterSliderRendererBase extends
org.ajax4jsf.renderkit.HeaderResourcesRendererBase {
protected Class getComponentClass() {
return UIDataFltrSlider.class;
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractCellRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractCellRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractCellRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -26,7 +26,7 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
/**
* @author shura
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractDefinitionListRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractDefinitionListRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractDefinitionListRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,7 +28,7 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.component.UIDataAdaptor;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
* @author shura
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractGridRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractGridRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractGridRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,7 +28,7 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.component.UIDataAdaptor;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.UIDataGrid;
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractListRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractListRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractListRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -27,7 +27,7 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.component.UIDataAdaptor;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
/**
* @author shura
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -29,11 +29,11 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.component.UIDataAdaptor;
-import org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase;
-import org.ajax4jsf.framework.renderer.RendererBase;
-import org.ajax4jsf.framework.renderer.RendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.Row;
/**
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -29,7 +29,7 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.iterators.FilterIterator;
import org.richfaces.component.Column;
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/html/ColgroupRenderer.java
===================================================================
---
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/html/ColgroupRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/html/ColgroupRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -29,7 +29,7 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.Column;
import org.richfaces.component.UIColumnGroup;
import org.richfaces.renderkit.AbstractRowsRenderer;
Modified: trunk/ui/dataTable/src/main/templates/org/richfaces/htmlSubTable.jspx
===================================================================
--- trunk/ui/dataTable/src/main/templates/org/richfaces/htmlSubTable.jspx 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/dataTable/src/main/templates/org/richfaces/htmlSubTable.jspx 2007-07-10
01:10:15 UTC (rev 1560)
@@ -6,7 +6,7 @@
xmlns:u="
http://ajax4jsf.org/cdk/u"
xmlns:x="
http://ajax4jsf.org/cdk/x"
class="org.richfaces.renderkit.html.SubTableRenderer"
- baseclass="org.ajax4jsf.framework.renderer.AjaxComponentRendererBase"
+ baseclass="org.ajax4jsf.renderkit.AjaxComponentRendererBase"
component="org.richfaces.component.UISubTable"
<f:clientid var="clientId"/>
Modified: trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DnDValidator.java
===================================================================
--- trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DnDValidator.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DnDValidator.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,7 +28,7 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.richfaces.component.Draggable;
import org.richfaces.component.Dropzone;
import org.richfaces.component.util.MessageUtil;
Modified:
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DraggableRendererContributor.java
===================================================================
---
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DraggableRendererContributor.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DraggableRendererContributor.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -29,8 +29,8 @@
import javax.faces.context.FacesContext;
import javax.faces.event.FacesEvent;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
import org.ajax4jsf.javascript.DnDScript;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.ajax4jsf.resource.PrototypeScript;
import org.richfaces.component.Draggable;
import org.richfaces.component.Dropzone;
Modified:
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DropzoneRendererContributor.java
===================================================================
---
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DropzoneRendererContributor.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/DropzoneRendererContributor.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,12 +28,12 @@
import javax.faces.context.FacesContext;
import javax.faces.event.FacesEvent;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
import org.ajax4jsf.javascript.DnDScript;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSReference;
import org.ajax4jsf.javascript.ScriptUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.ajax4jsf.resource.PrototypeScript;
import org.richfaces.component.Draggable;
import org.richfaces.component.Dropzone;
Modified:
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/html/DragSupportRenderer.java
===================================================================
---
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/html/DragSupportRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/html/DragSupportRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,9 +28,9 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.javascript.AjaxScript;
import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.resource.InternetResource;
import org.richfaces.component.UIDragSupport;
import org.richfaces.renderkit.CompositeRenderer;
Modified:
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/html/DropSupportRenderer.java
===================================================================
---
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/html/DropSupportRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/drag-drop/src/main/java/org/richfaces/renderkit/html/DropSupportRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,9 +28,9 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.javascript.AjaxScript;
import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.resource.InternetResource;
import org.richfaces.component.UIDropSupport;
import org.richfaces.renderkit.CompositeRenderer;
Modified:
trunk/ui/dropdown-menu/src/main/java/org/richfaces/renderkit/html/DropDownMenuRendererBase.java
===================================================================
---
trunk/ui/dropdown-menu/src/main/java/org/richfaces/renderkit/html/DropDownMenuRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/dropdown-menu/src/main/java/org/richfaces/renderkit/html/DropDownMenuRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -35,8 +35,8 @@
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase;
import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.richfaces.component.UIDropDownMenu;
import org.richfaces.component.UIMenuGroup;
import org.richfaces.component.UIMenuItem;
Modified: trunk/ui/gmap/src/main/templates/gmap.jspx
===================================================================
--- trunk/ui/gmap/src/main/templates/gmap.jspx 2007-07-10 00:58:39 UTC (rev 1559)
+++ trunk/ui/gmap/src/main/templates/gmap.jspx 2007-07-10 01:10:15 UTC (rev 1560)
@@ -6,7 +6,7 @@
xmlns:u="
http://ajax4jsf.org/cdk/u"
xmlns:x="
http://ajax4jsf.org/cdk/x"
class="org.richfaces.renderkit.html.GmapRenderer"
- baseclass="org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase"
+ baseclass="org.ajax4jsf.renderkit.HeaderResourcesRendererBase"
component="org.richfaces.component.UIGmap">
<f:clientid var="clientId"/>
Modified:
trunk/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuGroupRendererBase.java
===================================================================
---
trunk/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuGroupRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuGroupRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -25,10 +25,10 @@
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.ComponentVariables;
-import org.ajax4jsf.framework.renderer.ComponentsVariableResolver;
-import org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.ComponentVariables;
+import org.ajax4jsf.renderkit.ComponentsVariableResolver;
+import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.richfaces.component.MenuComponent;
import org.richfaces.component.UIMenuGroup;
import org.richfaces.component.UIMenuItem;
Modified:
trunk/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuItemRendererBase.java
===================================================================
---
trunk/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuItemRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/menu-components/src/main/java/org/richfaces/renderkit/html/MenuItemRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -21,9 +21,9 @@
package org.richfaces.renderkit.html;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.ComponentVariables;
-import org.ajax4jsf.framework.renderer.ComponentsVariableResolver;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.ComponentVariables;
+import org.ajax4jsf.renderkit.ComponentsVariableResolver;
import org.richfaces.component.MenuComponent;
import org.richfaces.component.UIMenuItem;
import org.richfaces.component.util.ViewUtil;
Modified:
trunk/ui/menu-components/src/main/templates/org/richfaces/htmlMenuSeparator.jspx
===================================================================
---
trunk/ui/menu-components/src/main/templates/org/richfaces/htmlMenuSeparator.jspx 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/menu-components/src/main/templates/org/richfaces/htmlMenuSeparator.jspx 2007-07-10
01:10:15 UTC (rev 1560)
@@ -5,7 +5,7 @@
xmlns:ui="
http://ajax4jsf.org/cdk/ui"
xmlns:u="
http://ajax4jsf.org/cdk/u"
xmlns:x="
http://ajax4jsf.org/cdk/x"
-
baseclass="org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase"
+ baseclass="org.ajax4jsf.renderkit.HeaderResourcesRendererBase"
class="org.richfaces.renderkit.html.MenuSeparatorRenderer"
component="org.richfaces.component.UIMenuSeparator"
Modified:
trunk/ui/modal-panel/src/main/java/org/richfaces/renderkit/ModalPanelRendererBase.java
===================================================================
---
trunk/ui/modal-panel/src/main/java/org/richfaces/renderkit/ModalPanelRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/modal-panel/src/main/java/org/richfaces/renderkit/ModalPanelRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -26,10 +26,10 @@
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
-import org.ajax4jsf.framework.renderer.AjaxComponentRendererBase;
-import org.ajax4jsf.framework.renderer.ComponentVariables;
-import org.ajax4jsf.framework.renderer.ComponentsVariableResolver;
import org.ajax4jsf.javascript.ScriptUtils;
+import org.ajax4jsf.renderkit.AjaxComponentRendererBase;
+import org.ajax4jsf.renderkit.ComponentVariables;
+import org.ajax4jsf.renderkit.ComponentsVariableResolver;
import org.richfaces.component.UIModalPanel;
import org.richfaces.component.util.ViewUtil;
Modified:
trunk/ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DRenderer.java
===================================================================
---
trunk/ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -28,7 +28,7 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.ajax4jsf.resource.InternetResource;
import org.richfaces.component.UIPaint2D;
Modified: trunk/ui/panel/src/main/templates/panel.jspx
===================================================================
--- trunk/ui/panel/src/main/templates/panel.jspx 2007-07-10 00:58:39 UTC (rev 1559)
+++ trunk/ui/panel/src/main/templates/panel.jspx 2007-07-10 01:10:15 UTC (rev 1560)
@@ -6,7 +6,7 @@
xmlns:x="
http://jsf.exadel.com/vcp"
xmlns:u="http://jsf.exadel.com/util"
xmlns:h="http://jsf.exadel.com/header"
- baseclass="org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase"
+ baseclass="org.ajax4jsf.renderkit.HeaderResourcesRendererBase"
class="org.richfaces.renderkit.html.PanelRenderer">
<f:clientid var="clientId"/>
Modified:
trunk/ui/separator/src/main/java/org/richfaces/renderkit/html/SeparatorRendererBase.java
===================================================================
---
trunk/ui/separator/src/main/java/org/richfaces/renderkit/html/SeparatorRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/separator/src/main/java/org/richfaces/renderkit/html/SeparatorRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -22,9 +22,9 @@
package org.richfaces.renderkit.html;
-import org.ajax4jsf.framework.renderer.RendererBase;
import org.ajax4jsf.framework.util.HtmlDimensions;
import org.ajax4jsf.framework.util.style.CSSFormat;
+import org.ajax4jsf.renderkit.RendererBase;
import org.richfaces.component.UISeparator;
import org.richfaces.renderkit.html.images.BevelSeparatorImage;
import org.richfaces.renderkit.html.images.SimpleSeparatorImage;
Modified:
trunk/ui/simpleTogglePanel/src/main/java/org/richfaces/renderkit/html/SimpleTogglePanelRenderer.java
===================================================================
---
trunk/ui/simpleTogglePanel/src/main/java/org/richfaces/renderkit/html/SimpleTogglePanelRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/simpleTogglePanel/src/main/java/org/richfaces/renderkit/html/SimpleTogglePanelRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -24,7 +24,7 @@
*/
package org.richfaces.renderkit.html;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.richfaces.component.UISimpleTogglePanel;
import org.richfaces.event.SimpleToggleEvent;
@@ -38,7 +38,7 @@
//public class SimpleTogglePanelRenderer extends AjaxCommandLinkRenderer {
-public class SimpleTogglePanelRenderer extends
org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase {
+public class SimpleTogglePanelRenderer extends
org.ajax4jsf.renderkit.HeaderResourcesRendererBase {
//XXXX by nick - denis - seems there is a lot of code common to
org.richfaces.renderkit.html.ToggleControlRenderer. Please commonize!
//private InternetResource[] _scripts = {new PrototypeScript(),
getResource("scripts/simpleTogglePanel.js") };
Modified: trunk/ui/spacer/src/main/templates/spacer.jspx
===================================================================
--- trunk/ui/spacer/src/main/templates/spacer.jspx 2007-07-10 00:58:39 UTC (rev 1559)
+++ trunk/ui/spacer/src/main/templates/spacer.jspx 2007-07-10 01:10:15 UTC (rev 1560)
@@ -7,7 +7,7 @@
xmlns:x="
http://ajax4jsf.org/cdk/x"
xmlns:h="http://jsf.exadel.com/header"
class="org.richfaces.renderkit.html.SpacerRenderer"
- baseclass="org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase"
+ baseclass="org.ajax4jsf.renderkit.HeaderResourcesRendererBase"
component="org.richfaces.component.UISpacer"
<h:styles>css/spacer.xcss</h:styles>
Modified:
trunk/ui/suggestionbox/src/main/java/org/richfaces/component/UISuggestionBox.java
===================================================================
---
trunk/ui/suggestionbox/src/main/java/org/richfaces/component/UISuggestionBox.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/suggestionbox/src/main/java/org/richfaces/component/UISuggestionBox.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -26,7 +26,7 @@
import org.ajax4jsf.event.AjaxEvent;
import org.ajax4jsf.event.AjaxListener;
import org.ajax4jsf.event.AjaxSource;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified:
trunk/ui/suggestionbox/src/main/java/org/richfaces/renderkit/html/SuggestionBoxRenderer.java
===================================================================
---
trunk/ui/suggestionbox/src/main/java/org/richfaces/renderkit/html/SuggestionBoxRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/suggestionbox/src/main/java/org/richfaces/renderkit/html/SuggestionBoxRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -22,15 +22,15 @@
package org.richfaces.renderkit.html;
import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.framework.renderer.AjaxComponentRendererBase;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererBase;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.framework.renderer.compiler.HtmlCompiler;
import org.ajax4jsf.framework.renderer.compiler.PreparedTemplate;
import org.ajax4jsf.framework.renderer.compiler.TemplateContext;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
+import org.ajax4jsf.renderkit.AjaxComponentRendererBase;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.TemplateCSSResource;
import org.richfaces.component.AjaxSuggestionEvent;
Modified: trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITab.java
===================================================================
--- trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITab.java 2007-07-10 00:58:39
UTC (rev 1559)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITab.java 2007-07-10 01:10:15
UTC (rev 1560)
@@ -24,7 +24,7 @@
import org.ajax4jsf.component.AjaxActionComponent;
import org.ajax4jsf.component.AjaxComponent;
import org.ajax4jsf.event.AjaxSource;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import javax.faces.FacesException;
import javax.faces.component.ActionSource;
Modified:
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabHeaderRendererBase.java
===================================================================
---
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabHeaderRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabHeaderRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -21,10 +21,10 @@
package org.richfaces.renderkit;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.framework.util.HtmlDimensions;
import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.UISwitchablePanel;
import org.richfaces.component.UITab;
import org.richfaces.component.UITabPanel;
@@ -41,7 +41,7 @@
* @author Nick Belaevski - nbelaevski(a)exadel.com
* created 12.01.2007
*/
-public class TabHeaderRendererBase extends
org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase {
+public class TabHeaderRendererBase extends
org.ajax4jsf.renderkit.HeaderResourcesRendererBase {
private static final String LABEL_SUFFIX = "_lbl";
Modified:
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java
===================================================================
---
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -22,12 +22,12 @@
package org.richfaces.renderkit;
import org.ajax4jsf.event.AjaxEvent;
-import org.ajax4jsf.framework.renderer.ComponentVariables;
-import org.ajax4jsf.framework.renderer.ComponentsVariableResolver;
-import org.ajax4jsf.framework.renderer.RendererUtils.HTML;
import org.ajax4jsf.framework.util.HtmlDimensions;
import org.ajax4jsf.javascript.JSReference;
import org.ajax4jsf.javascript.ScriptUtils;
+import org.ajax4jsf.renderkit.ComponentVariables;
+import org.ajax4jsf.renderkit.ComponentsVariableResolver;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.UISwitchablePanel;
import org.richfaces.component.UITab;
import org.richfaces.component.UITabPanel;
@@ -48,7 +48,7 @@
* @author Nick Belaevski - nbelaevski(a)exadel.com
* created 12.01.2007
*/
-public class TabPanelRendererBase extends
org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase {
+public class TabPanelRendererBase extends
org.ajax4jsf.renderkit.HeaderResourcesRendererBase {
public final static String ACTIVE_CELL_CLASSES = "dr-tbpnl-tbcell-act
rich-tabhdr-cell-active";
public final static String INACTIVE_CELL_CLASSES = "dr-tbpnl-tbcell-inact
rich-tabhdr-cell-inactive";
Modified: trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java
===================================================================
---
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -21,7 +21,7 @@
package org.richfaces.renderkit;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.richfaces.component.TabEncoder;
import org.richfaces.component.UISwitchablePanel;
import org.richfaces.component.UITab;
Modified: trunk/ui/togglePanel/src/main/java/org/richfaces/component/UIToggleControl.java
===================================================================
---
trunk/ui/togglePanel/src/main/java/org/richfaces/component/UIToggleControl.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/togglePanel/src/main/java/org/richfaces/component/UIToggleControl.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -34,8 +34,8 @@
import org.ajax4jsf.component.AjaxActionComponent;
import org.ajax4jsf.component.AjaxComponent;
import org.ajax4jsf.event.AjaxSource;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.RendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.RendererUtils;
/**
* @author igels
Modified:
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/ToggleControlRenderer.java
===================================================================
---
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/ToggleControlRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/ToggleControlRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -32,9 +32,9 @@
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase;
-import org.ajax4jsf.framework.renderer.RendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
+import org.ajax4jsf.renderkit.RendererUtils;
import org.richfaces.component.UIToggleControl;
import org.richfaces.component.UITogglePanel;
import org.richfaces.event.SwitchablePanelSwitchEvent;
Modified:
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java
===================================================================
---
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/togglePanel/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -36,7 +36,7 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.richfaces.component.UITogglePanel;
import org.richfaces.event.SwitchablePanelSwitchEvent;
Modified:
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarGroupRenderer.java
===================================================================
---
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarGroupRenderer.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarGroupRenderer.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -30,7 +30,7 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.RendererBase;
+import org.ajax4jsf.renderkit.RendererBase;
import org.richfaces.component.UIToolBarGroup;
import org.richfaces.renderkit.html.images.DotSeparatorImage;
Modified:
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarRendererBase.java
===================================================================
---
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -32,7 +32,7 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.ajax4jsf.framework.renderer.HeaderResourcesRendererBase;
+import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.richfaces.component.UIToolBar;
import org.richfaces.component.UIToolBarGroup;
import org.richfaces.renderkit.html.images.DotSeparatorImage;
Modified: trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java 2007-07-10 00:58:39
UTC (rev 1559)
+++ trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java 2007-07-10 01:10:15
UTC (rev 1560)
@@ -37,11 +37,11 @@
import org.ajax4jsf.component.UIDataAdaptor;
import org.ajax4jsf.event.AjaxEvent;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
import org.ajax4jsf.model.DataComponentState;
import org.ajax4jsf.model.DataVisitor;
import org.ajax4jsf.model.ExtendedDataModel;
import org.ajax4jsf.model.Range;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.apache.commons.collections.iterators.SingletonIterator;
import org.richfaces.component.events.TreeEvents;
import org.richfaces.component.state.TreeState;
Modified: trunk/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -13,7 +13,7 @@
import javax.faces.event.FacesEvent;
import org.ajax4jsf.event.AjaxEvent;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.richfaces.component.events.TreeEvents;
import org.richfaces.event.DragEvent;
import org.richfaces.event.DragListener;
Modified: trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -12,11 +12,11 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.ComponentVariables;
-import org.ajax4jsf.framework.renderer.ComponentsVariableResolver;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.ScriptUtils;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.ComponentVariables;
+import org.ajax4jsf.renderkit.ComponentsVariableResolver;
import org.richfaces.component.Draggable;
import org.richfaces.component.Dropzone;
import org.richfaces.component.UITree;
Modified: trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2007-07-10
00:58:39 UTC (rev 1559)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2007-07-10
01:10:15 UTC (rev 1560)
@@ -35,14 +35,14 @@
import javax.faces.context.ResponseWriter;
import javax.faces.el.MethodBinding;
-import org.ajax4jsf.framework.renderer.AjaxRendererUtils;
-import org.ajax4jsf.framework.renderer.ComponentVariables;
-import org.ajax4jsf.framework.renderer.ComponentsVariableResolver;
-import org.ajax4jsf.framework.renderer.RendererUtils;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSReference;
import org.ajax4jsf.javascript.ScriptUtils;
import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.ajax4jsf.renderkit.ComponentVariables;
+import org.ajax4jsf.renderkit.ComponentsVariableResolver;
+import org.ajax4jsf.renderkit.RendererUtils;
import org.richfaces.component.UITree;
import org.richfaces.component.UITreeNode;
import org.richfaces.component.nsutils.NSUtils;