You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2006/05/21 21:34:17 UTC

svn commit: r408469 - in /myfaces/tobago/trunk: core/src/main/java/org/apache/myfaces/tobago/renderkit/ example/demo/src/main/webapp/overview/ theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/

Author: bommel
Date: Sun May 21 12:34:17 2006
New Revision: 408469

URL: http://svn.apache.org/viewvc?rev=408469&view=rev
Log:
added ResponseStateManager for
TOBAGO-76

Added:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoResponseStateManager.java
Modified:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoRenderKit.java
    myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp
    myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoRenderKit.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoRenderKit.java?rev=408469&r1=408468&r2=408469&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoRenderKit.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoRenderKit.java Sun May 21 12:34:17 2006
@@ -39,6 +39,12 @@
 
   private ResourceManager resources;
 
+  private ResponseStateManager responseStateManager;
+
+  public TobagoRenderKit() {
+    responseStateManager = new TobagoResponseStateManager();
+  }
+
   // FIXME: use family
   public Renderer getRenderer(String family, String rendererType) {
     if (LOG.isDebugEnabled()) {
@@ -96,10 +102,7 @@
   }
 
   public ResponseStateManager getResponseStateManager() {
-    LOG.error(
-        "This method isn't implemented yet, and should not be called: "
-        + new Exception().getStackTrace()[0].getMethodName()); //FIXME jsfbeta
-    return null;
+    return responseStateManager;
   }
 
   public ResponseStream createResponseStream(OutputStream outputstream) {

Added: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoResponseStateManager.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoResponseStateManager.java?rev=408469&view=auto
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoResponseStateManager.java (added)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/renderkit/TobagoResponseStateManager.java Sun May 21 12:34:17 2006
@@ -0,0 +1,101 @@
+package org.apache.myfaces.tobago.renderkit;
+
+/*
+ * Copyright 2002-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.faces.render.ResponseStateManager;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.application.StateManager;
+import java.util.Map;
+import java.io.IOException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: bommel
+ * Date: 21.05.2006
+ * Time: 10:59:19
+ * To change this template use File | Settings | File Templates.
+ */
+public class TobagoResponseStateManager extends ResponseStateManager {
+  private static final Log LOG = LogFactory.getLog(TobagoResponseStateManager.class);
+
+  private static final String TREE_PARAM = "jsf_tree";
+  private static final String STATE_PARAM = "jsf_state";
+  private static final String VIEWID_PARAM = "jsf_viewid";
+
+  public Object getTreeStructureToRestore(FacesContext facescontext, String viewId) {
+    Map requestMap = facescontext.getExternalContext().getRequestParameterMap();
+    Object requestViewId = requestMap.get(VIEWID_PARAM);
+    if (requestViewId == null || !requestViewId.equals(viewId)) {
+      //no saved state or state of different viewId
+      return null;
+    }
+
+    return requestMap.get(TREE_PARAM);
+
+  }
+
+  public Object getComponentStateToRestore(FacesContext facesContext) {
+    Map requestMap = facesContext.getExternalContext().getRequestParameterMap();
+    return requestMap.get(STATE_PARAM);
+  }
+
+  public void writeState(FacesContext facescontext,
+      StateManager.SerializedView serializedview) throws IOException {
+    ResponseWriter responseWriter = facescontext.getResponseWriter();
+    Object treeStruct = serializedview.getStructure();
+    System.err.print("State " + treeStruct);
+    Object compStates = serializedview.getState();
+
+    if (treeStruct != null) {
+      if (treeStruct instanceof String) {
+        responseWriter.startElement("input", null);
+        responseWriter.writeAttribute("type", "hidden", null);
+        responseWriter.writeAttribute("name", TREE_PARAM, null);
+        responseWriter.writeAttribute("id", TREE_PARAM, null);
+        responseWriter.writeAttribute("value", treeStruct, null);
+        responseWriter.endElement("input");
+      }
+    } else {
+      LOG.error("No tree structure to be saved in client response!");
+    }
+
+    if (compStates != null) {
+      if (compStates instanceof String) {
+        responseWriter.startElement("input", null);
+        responseWriter.writeAttribute("type", "hidden", null);
+        responseWriter.writeAttribute("name", STATE_PARAM, null);
+        responseWriter.writeAttribute("id", STATE_PARAM, null);
+        responseWriter.writeAttribute("value", compStates, null);
+        responseWriter.endElement("input");
+      }
+    } else {
+      LOG.error("No component states to be saved in client response!");
+    }
+
+    responseWriter.startElement("input", null);
+    responseWriter.writeAttribute("type", "hidden", null);
+    responseWriter.writeAttribute("name", VIEWID_PARAM, null);
+    responseWriter.writeAttribute("id", VIEWID_PARAM, null);
+    responseWriter.writeAttribute("value", facescontext.getViewRoot().getViewId(), null);
+    responseWriter.endElement("input");
+  }
+
+}

Modified: myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp?rev=408469&r1=408468&r2=408469&view=diff
==============================================================================
--- myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp (original)
+++ myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp Sun May 21 12:34:17 2006
@@ -167,7 +167,7 @@
 
             <tc:menuItem link="http://www.atanion.com" disabled="true" label="disabled" />
 
-            <tc:menuCheckbox action="#{demo.clickButton}"  label="#{overviewBundle.toolbar_linkClickme}" value="#{demo.boolTest}" />
+            <tx:menuCheckbox action="#{demo.clickButton}"  label="#{overviewBundle.toolbar_linkClickme}" value="#{demo.boolTest}" />
           </tc:menu>
           <tc:menu label="Menu 2">
 
@@ -185,9 +185,9 @@
 
             <tc:menu label="#{overviewBundle.toolbar_selectSingleselect}">
 
-              <tc:menuRadio value="#{overviewController.radioValue}" >
+              <tx:menuRadio value="#{overviewController.radioValue}" >
                 <f:selectItems value="#{overviewController.items}" />
-              </tc:menuRadio>
+              </tx:menuRadio>
 
             </tc:menu>
 
@@ -201,7 +201,7 @@
                 <tc:selectBooleanCheckbox value="#{demo.bool[0]}" />
               </f:facet>
             </tc:menuItem>
-            <tc:menuCheckbox label="#{overviewBundle.toolbar_linkClickme}" value="#{demo.bool[1]}" />
+            <tx:menuCheckbox label="#{overviewBundle.toolbar_linkClickme}" value="#{demo.bool[1]}" />
             <tx:menuCheckbox label="#{overviewBundle.toolbar_linkClickme}" value="#{demo.bool[2]}" />
 
           </tc:menu>

Modified: myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java?rev=408469&r1=408468&r2=408469&view=diff
==============================================================================
--- myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java (original)
+++ myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java Sun May 21 12:34:17 2006
@@ -323,6 +323,8 @@
 
     // write the previously rendered popups
     writer.write(popups.toString());
+    
+    viewHandler.writeState(facesContext);
 
 //    facesContext.getApplication().getViewHandler().writeState(facesContext);