You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2005/07/27 20:09:12 UTC
svn commit: r225559 - in
/myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable:
./ AutoUpdateDataTable.java AutoUpdateDataTableRenderer.java
AutoUpdateDataTableTag.java
Author: mmarinschek
Date: Wed Jul 27 11:08:40 2005
New Revision: 225559
URL: http://svn.apache.org/viewcvs?rev=225559&view=rev
Log: (empty)
Added:
myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/
myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java
myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableRenderer.java
myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableTag.java
Added: myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java
URL: http://svn.apache.org/viewcvs/myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java?rev=225559&view=auto
==============================================================================
--- myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java (added)
+++ myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java Wed Jul 27 11:08:40 2005
@@ -0,0 +1,68 @@
+package org.apache.myfaces.custom.autoupdatedatatable;
+
+import org.apache.myfaces.component.html.ext.HtmlDataTable;
+import org.apache.myfaces.custom.inputsuggestajax.AjaxComponent;
+import org.apache.myfaces.custom.inputsuggestajax.AjaxRenderer;
+
+import javax.faces.context.FacesContext;
+import javax.faces.render.Renderer;
+import java.io.IOException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: ich
+ * Date: 13.07.2005
+ * Time: 19:16:29
+ * To change this template use File | Settings | File Templates.
+ */
+public class AutoUpdateDataTable extends HtmlDataTable implements AjaxComponent{
+
+ private String _frequency;
+
+ public void processRestoreState(FacesContext context, Object state)
+ {
+ super.processRestoreState(context, state);
+ }
+
+ public Object processSaveState(FacesContext context)
+ {
+ return super.processSaveState(context);
+ }
+
+
+ public Object saveState(FacesContext context)
+ {
+ Object[] values = new Object[2];
+ values[0] = super.saveState(context);
+ values[1] = _frequency;
+
+ return values;
+ }
+
+ public void restoreState(FacesContext context, Object state)
+ {
+ Object values[] = (Object[])state;
+ super.restoreState(context, values[0]);
+ _frequency = (String) values[1];
+ }
+
+ public String getFrequency() {
+ return _frequency;
+ }
+
+ public void setFrequency(String _frequency) {
+ this._frequency = _frequency;
+ }
+
+ public void encodeAjax(FacesContext context) throws IOException {
+ if (context == null) throw new NullPointerException("context");
+ if (!isRendered()) return;
+ Renderer renderer = getRenderer(context);
+ if (renderer != null && renderer instanceof AjaxRenderer)
+ {
+
+ ((AjaxRenderer) renderer).encodeAjax(context, this);
+
+ }
+ }
+}
Added: myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableRenderer.java?rev=225559&view=auto
==============================================================================
--- myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableRenderer.java (added)
+++ myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableRenderer.java Wed Jul 27 11:08:40 2005
@@ -0,0 +1,131 @@
+package org.apache.myfaces.custom.autoupdatedatatable;
+
+import org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer;
+import org.apache.myfaces.renderkit.html.HTML;
+import org.apache.myfaces.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.renderkit.JSFAttr;
+import org.apache.myfaces.renderkit.RendererUtils;
+import org.apache.myfaces.custom.inputsuggestajax.AjaxRenderer;
+import org.apache.myfaces.custom.inputsuggestajax.InputSuggestAjaxRenderer;
+import org.apache.myfaces.custom.inputsuggestajax.InputSuggestAjax;
+import org.apache.myfaces.custom.buffer.HtmlBufferResponseWriterWrapper;
+import org.apache.myfaces.component.html.util.AddResource;
+import org.apache.myfaces.el.ValueBindingImpl;
+import org.apache.myfaces.util.DebugUtils;
+import org.apache.myfaces.util.ArrayUtils;
+import org.apache.myfaces.util.StringUtils;
+import org.apache.myfaces.lifecycle.LifecycleImpl;
+import org.apache.myfaces.context.FacesContextWrapper;
+import org.apache.myfaces.context.ResponseWriterWrapper;
+import org.apache.myfaces.context.servlet.ServletFacesContextImpl;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIData;
+import javax.faces.component.UIColumn;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.application.ViewHandler;
+import javax.faces.application.Application;
+import javax.faces.application.StateManager;
+import javax.faces.el.ValueBinding;
+import javax.faces.FacesException;
+import javax.faces.event.PhaseId;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Random;
+import java.util.Iterator;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: ich
+ * Date: 13.07.2005
+ * Time: 19:46:00
+ * To change this template use File | Settings | File Templates.
+ */
+public class AutoUpdateDataTableRenderer extends HtmlTableRenderer implements AjaxRenderer{
+
+ private static final String JAVASCRIPT_ENCODED = "org.apache.myfaces.autoupdatedatatable.JAVASCRIPT_ENCODED";
+
+ private void encodeJavascript(FacesContext context, UIComponent component) throws IOException
+ {
+ // check to see if javascript has already been written (which could happen if more than one tree on the same page)
+ if (context.getExternalContext().getRequestMap().containsKey(JAVASCRIPT_ENCODED))
+ {
+ return;
+ }
+
+ // render javascript function for client-side toggle (it won't be used if user has opted for server-side toggle)
+ ResponseWriter out = context.getResponseWriter();
+ String javascriptLocation = (String)component.getAttributes().get(JSFAttr.JAVASCRIPT_LOCATION);
+ if (javascriptLocation == null)
+ {
+ AddResource.addJavaScriptHere(AutoUpdateDataTableRenderer.class, "prototype.js", context);
+ }
+ else
+ {
+ out.startElement(HTML.SCRIPT_ELEM, null);
+ out.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
+ out.writeAttribute(HTML.SRC_ATTR,
+ javascriptLocation + "/prototype.js", null);
+ out.endElement(HTML.SCRIPT_ELEM);
+
+ }
+ context.getExternalContext().getRequestMap().put(JAVASCRIPT_ENCODED, Boolean.TRUE);
+ }
+
+ public void encodeEnd(FacesContext context, UIComponent component) throws IOException
+ {
+ RendererUtils.checkParamValidity(context, component, AutoUpdateDataTable.class);
+ AutoUpdateDataTable autoUpdateDataTable = (AutoUpdateDataTable) component;
+
+ this.encodeJavascript(context,component);
+
+ StateManager stateManager = context.getApplication().getStateManager();
+ StateManager.SerializedView serializedView = stateManager.saveSerializedView(context);
+
+ super.encodeEnd(context, component);
+
+ ResponseWriter out = context.getResponseWriter();
+
+ String viewId = context.getViewRoot().getViewId();
+ ViewHandler viewHandler = context.getApplication().getViewHandler();
+ String actionURL = viewHandler.getActionURL(context, viewId);
+
+ out.startElement(HTML.FORM_ELEM, null);
+ context.getRenderKit().getResponseStateManager().writeState(context, serializedView);
+ out.endElement(HTML.FORM_ELEM);
+
+ out.startElement(HTML.SCRIPT_ELEM, null);
+ out.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
+ out.writeText("new Ajax.PeriodicalUpdater('",null);
+ out.writeText(component.getClientId(context)+":tbody_element",null);
+ out.writeText("','",null);
+ out.writeText(context.getExternalContext().encodeActionURL(actionURL+"?affectedAjaxComponent="+component.getClientId(context)),null);
+ out.writeText("', {\n" +
+ " frequency: "+ autoUpdateDataTable.getFrequency() +" , parameters: '&jsf_tree_64='+encodeURIComponent(document.getElementById('jsf_tree_64').value)+'&jsf_state_64='+encodeURIComponent(document.getElementById('jsf_state_64').value)+'&jsf_viewid='+encodeURIComponent(document.getElementById('jsf_viewid').value)"+
+ " })",null);
+
+ out.endElement(HTML.SCRIPT_ELEM);
+
+
+ }
+
+ public void decode(FacesContext facesContext, UIComponent component)
+ {
+ super.decode(facesContext, component);
+ }
+
+
+
+ public void encodeAjax(FacesContext context, UIComponent component) throws IOException
+ {
+ encodeInnerHtml(context, component);
+ }
+
+}
Added: myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableTag.java
URL: http://svn.apache.org/viewcvs/myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableTag.java?rev=225559&view=auto
==============================================================================
--- myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableTag.java (added)
+++ myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTableTag.java Wed Jul 27 11:08:40 2005
@@ -0,0 +1,49 @@
+package org.apache.myfaces.custom.autoupdatedatatable;
+
+import org.apache.myfaces.taglib.html.ext.HtmlDataTableTag;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.faces.component.UIComponent;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: ich
+ * Date: 13.07.2005
+ * Time: 19:16:58
+ * To change this template use File | Settings | File Templates.
+ */
+public class AutoUpdateDataTableTag extends HtmlDataTableTag{
+ private static Log log = LogFactory.getLog(AutoUpdateDataTableTag.class);
+
+
+ private String _frequency;
+
+ public String getFrequency() {
+ return _frequency;
+ }
+
+ public void setFrequency(String _frequency) {
+ this._frequency = _frequency;
+ }
+
+
+ public String getComponentType() {
+ return "org.apache.myfaces.AutoUpdateDataTable";
+ }
+
+ public String getRendererType() {
+ return "org.apache.myfaces.AutoUpdateDataTable";
+ }
+
+ public void release() {
+ super.release();
+ _frequency = null;
+ }
+
+ protected void setProperties(UIComponent component) {
+ super.setProperties(component);
+
+ setStringProperty(component, "frequency", _frequency);
+ }
+}