You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2006/04/07 21:20:43 UTC
svn commit: r392370 - in /incubator/tobago/trunk:
core/src/main/java/org/apache/myfaces/tobago/ajax/api/
core/src/main/java/org/apache/myfaces/tobago/component/
theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag...
Author: weber
Date: Fri Apr 7 12:20:39 2006
New Revision: 392370
URL: http://svn.apache.org/viewcvs?rev=392370&view=rev
Log:
make box reloadable by ajax (currently speyside only)
Modified:
incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java
incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPanel.java
incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UITabGroup.java
incubator/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java
incubator/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js
Modified: incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java?rev=392370&r1=392369&r2=392370&view=diff
==============================================================================
--- incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java (original)
+++ incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/ajax/api/AjaxUtils.java Fri Apr 7 12:20:39 2006
@@ -119,16 +119,26 @@
// TODO: handle phaseListeners ??
- component.processValidators(facesContext);
- viewRoot.broadcastEventsForPhase(facesContext, PhaseId.PROCESS_VALIDATIONS);
+ if (!facesContext.getRenderResponse()) {
+ component.processValidators(facesContext);
+ viewRoot.broadcastEventsForPhase(facesContext, PhaseId.PROCESS_VALIDATIONS);
+ } else if (LOG.isDebugEnabled()) {
+ LOG.debug("Skipping validate");
+ }
if (!facesContext.getRenderResponse()) {
component.processUpdates(facesContext);
viewRoot.broadcastEventsForPhase(facesContext, PhaseId.UPDATE_MODEL_VALUES);
+ } else if (LOG.isDebugEnabled()) {
+
+ } {
+ LOG.debug("Skipping updates");
}
if (!facesContext.getRenderResponse()) {
viewRoot.processApplication(facesContext);
+ } else if (LOG.isDebugEnabled()) {
+ LOG.debug("Skipping application");
}
((AjaxComponent) component).encodeAjax(facesContext);
Modified: incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPanel.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPanel.java?rev=392370&r1=392369&r2=392370&view=diff
==============================================================================
--- incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPanel.java (original)
+++ incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPanel.java Fri Apr 7 12:20:39 2006
@@ -16,6 +16,10 @@
* limitations under the License.
*/
+import org.apache.myfaces.tobago.ajax.api.AjaxComponent;
+import org.apache.myfaces.tobago.ajax.api.AjaxPhaseListener;
+import org.apache.myfaces.tobago.ajax.api.AjaxUtils;
+
import javax.faces.context.FacesContext;
import java.io.IOException;
@@ -24,7 +28,8 @@
* Date: Feb 28, 2005
* Time: 3:05:19 PM
*/
-public class UIPanel extends javax.faces.component.UIPanel {
+public class UIPanel extends javax.faces.component.UIPanel
+ implements AjaxComponent {
public static final String COMPONENT_TYPE = "org.apache.myfaces.tobago.Panel";
@@ -38,5 +43,21 @@
if (isRendered()) {
UILayout.getLayout(this).encodeChildrenOfComponent(facesContext, this);
}
+ }
+
+
+ public void encodeAjax(FacesContext facesContext) throws IOException {
+ AjaxUtils.encodeAjaxComponent(facesContext, this);
+ }
+
+ public void processAjax(FacesContext facesContext) throws IOException {
+ final String ajaxId = (String) facesContext.getExternalContext()
+ .getRequestParameterMap().get(AjaxPhaseListener.AJAX_COMPONENT_ID);
+
+ if (ajaxId.equals(getClientId(facesContext))) {
+ AjaxUtils.processActiveAjaxComponent(facesContext, this);
+ } else {
+ AjaxUtils.processAjaxOnChildren(facesContext, this);
+ }
}
}
Modified: incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UITabGroup.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UITabGroup.java?rev=392370&r1=392369&r2=392370&view=diff
==============================================================================
--- incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UITabGroup.java (original)
+++ incubator/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UITabGroup.java Fri Apr 7 12:20:39 2006
@@ -23,7 +23,6 @@
import static org.apache.myfaces.tobago.TobagoConstants.ATTR_STATE;
import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SWITCH_TYPE;
import org.apache.myfaces.tobago.ajax.api.AjaxComponent;
-import org.apache.myfaces.tobago.ajax.api.AjaxPhaseListener;
import org.apache.myfaces.tobago.ajax.api.AjaxUtils;
import org.apache.myfaces.tobago.event.TabChangeListener;
import org.apache.myfaces.tobago.event.TabChangeSource;
@@ -261,18 +260,6 @@
setRenderedIndex(activeIndex);
AjaxUtils.encodeAjaxComponent(facesContext, this);
}
-
- public void processAjax(FacesContext facesContext) throws IOException {
- final String ajaxId = (String) facesContext.getExternalContext()
- .getRequestParameterMap().get(AjaxPhaseListener.AJAX_COMPONENT_ID);
-
- if (ajaxId.equals(getClientId(facesContext))) {
- AjaxUtils.processActiveAjaxComponent(facesContext, this);
- } else {
- AjaxUtils.processAjaxOnChildren(facesContext, this);
- }
- }
-
public int getActiveIndex() {
return activeIndex;
Modified: incubator/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java?rev=392370&r1=392369&r2=392370&view=diff
==============================================================================
--- incubator/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java (original)
+++ incubator/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java Fri Apr 7 12:20:39 2006
@@ -31,6 +31,8 @@
import static org.apache.myfaces.tobago.TobagoConstants.ATTR_SUPPPRESS_TOOLBAR_CONTAINER;
import static org.apache.myfaces.tobago.TobagoConstants.FACET_LABEL;
import static org.apache.myfaces.tobago.TobagoConstants.FACET_TOOL_BAR;
+import org.apache.myfaces.tobago.ajax.api.AjaxRenderer;
+import org.apache.myfaces.tobago.ajax.api.AjaxUtils;
import org.apache.myfaces.tobago.renderkit.BoxRendererBase;
import org.apache.myfaces.tobago.renderkit.RenderUtil;
import org.apache.myfaces.tobago.renderkit.html.HtmlRendererUtil;
@@ -44,7 +46,7 @@
import java.io.IOException;
import java.util.Map;
-public class BoxRenderer extends BoxRendererBase {
+public class BoxRenderer extends BoxRendererBase implements AjaxRenderer {
private static final Log LOG = LogFactory.getLog(BoxRenderer.class);
@@ -72,10 +74,20 @@
// TODO
}
+ String clientId = component.getClientId(facesContext);
+
writer.startElement("div", component);
writer.writeComponentClass();
+ writer.writeIdAttribute(clientId);
writer.writeAttribute("style", style, null);
+ HtmlRendererUtil.writeJavascript(writer,
+ "Tobago.addAjaxComponent(\"" + clientId + "\")");
+
+ encodeBeginInner(facesContext, writer, component);
+ }
+
+ private void encodeBeginInner(FacesContext facesContext, TobagoResponseWriter writer, UIComponent component) throws IOException {
renderBoxHeader(facesContext, writer, component);
@@ -89,7 +101,7 @@
protected void renderBoxHeader(FacesContext facesContext,
- TobagoResponseWriter writer, UIComponent component) throws IOException {
+ TobagoResponseWriter writer, UIComponent component) throws IOException {
writer.startElement("div", component);
writer.writeClassAttribute("tobago-box-header");
@@ -115,14 +127,19 @@
public void encodeEndTobago(FacesContext facesContext,
UIComponent component) throws IOException {
ResponseWriter writer = facesContext.getResponseWriter();
+
+ encodeEndInner(writer);
+
writer.endElement("div");
- writer.endElement("div");
+ }
+ private void encodeEndInner(ResponseWriter writer) throws IOException {
+ writer.endElement("div");
writer.endElement("div");
}
protected void renderToolbar(FacesContext facesContext,
- TobagoResponseWriter writer, UIPanel toolbar) throws IOException {
+ TobagoResponseWriter writer, UIPanel toolbar) throws IOException {
final Map attributes = toolbar.getAttributes();
String className = "tobago-box-header-toolbar-div";
if (ToolBarTag.LABEL_OFF.equals(attributes.get(ATTR_LABEL_POSITION))) {
@@ -141,5 +158,15 @@
writer.endElement("div");
}
+ public void encodeAjax(FacesContext facesContext, UIComponent component) throws IOException {
+ AjaxUtils.checkParamValidity(facesContext, component, UIPanel.class);
+ TobagoResponseWriter writer
+ = (TobagoResponseWriter) facesContext.getResponseWriter();
+
+ encodeBeginInner(facesContext, writer, component);
+ component.encodeChildren(facesContext);
+ encodeEndInner(writer);
+ facesContext.responseComplete();
+ }
}
Modified: incubator/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js
URL: http://svn.apache.org/viewcvs/incubator/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js?rev=392370&r1=392369&r2=392370&view=diff
==============================================================================
--- incubator/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js (original)
+++ incubator/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js Fri Apr 7 12:20:39 2006
@@ -136,6 +136,8 @@
*/
scriptLoaders: new Array(),
+ ajaxComponents: {},
+
/**
* Flag indicating that the page is complete loaded.
*/
@@ -369,6 +371,25 @@
}
},
+ addAjaxComponent: function(componentId, containerId) {
+ if (! containerId) {
+ containerId = componentId;
+ }
+ this.ajaxComponents[componentId] = containerId;
+ },
+
+ reloadComponent: function(id, actionId) {
+ var containerId = this.ajaxComponents[id];
+ if (containerId) {
+ if (!actionId) {
+ actionId = containerId;
+ }
+ Tobago.Updater.update(this.element(containerId), this.page, actionId, id);
+ } else {
+ LOG.warn("Can't find container for '" + id + "'! skip reload!");
+ }
+ },
+
/**
* Mouseover function for images.
*/
@@ -1065,6 +1086,14 @@
};
Tobago.Updater = {
+
+ options: {
+ method: 'post',
+ asynchronous: true,
+ parameters: '',
+ evalScripts: true
+ },
+
update: function(container, page, actionId, ajaxComponentId, options) {
if (this.hasTransport()) {
@@ -1075,7 +1104,7 @@
Tobago.createOverlay(container);
// LOG.debug("request url = " + url);
- new Ajax.Updater(container, url, options);
+ new Ajax.Updater(container, url, options || this.options);
} else {
LOG.info("No Ajax transport found! Doing full page reload.");
Tobago.submitAction(actionId);