04687b5c0b2f7a153afd148088846733d2ce22a1
[mono.git] / mcs / class / Mainsoft.Web / Mainsoft.Web.Hosting / BaseFacesStateManager.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using javax.faces.application;\r
5 using javax.faces.component;\r
6 using javax.faces.context;\r
7 using System.Diagnostics;\r
8 using System.Web.UI;\r
9 \r
10 namespace Mainsoft.Web.Hosting\r
11 {\r
12         public abstract class BaseFacesStateManager : StateManager\r
13         {\r
14                 protected static readonly string VIEWSTATE = "__VIEWSTATE";\r
15 \r
16                 public override StateManager.SerializedView saveSerializedView (FacesContext facesContext) {\r
17                         Object treeStruct = getTreeStructureToSave (facesContext);\r
18                         Object compStates = getComponentStateToSave (facesContext);\r
19                         SerializedView serializedView = new SerializedView (this, treeStruct, compStates);\r
20                         return serializedView;\r
21                 }\r
22 \r
23                 protected override sealed Object getTreeStructureToSave (FacesContext facesContext) {\r
24                         return null;\r
25                 }\r
26 \r
27                 public override UIViewRoot restoreView (FacesContext facesContext,\r
28                                                                                                                                  String viewId,\r
29                                                                                                                                 String renderKitId) {\r
30 \r
31                         UIViewRoot uiViewRoot = restoreTreeStructure (facesContext, viewId, renderKitId);\r
32                         Page page = (Page) uiViewRoot.getChildren ().get (0);\r
33                         if (page.IsPostBack || page.IsCallback)\r
34                                 restoreComponentState (facesContext, uiViewRoot, renderKitId);\r
35                         else\r
36                                 facesContext.renderResponse ();\r
37                         return uiViewRoot;\r
38                 }\r
39 \r
40                 protected override sealed UIViewRoot restoreTreeStructure (FacesContext facesContext, string viewId, string renderKitId) {\r
41                         return facesContext.getApplication ().getViewHandler ().createView (facesContext, viewId);\r
42                 }\r
43 \r
44                 protected override Object getComponentStateToSave (FacesContext facesContext) {\r
45                         Trace.WriteLine ("Entering getComponentStateToSave");\r
46 \r
47                         UIViewRoot viewRoot = facesContext.getViewRoot ();\r
48                         if (viewRoot.isTransient ()) {\r
49                                 return null;\r
50                         }\r
51 \r
52                         Object serializedComponentStates = ((UIComponent) viewRoot.getChildren ().get (0)).processSaveState (facesContext);\r
53                         //Locale is a state attribute of UIViewRoot and need not be saved explicitly\r
54                         Trace.WriteLine ("Exiting getComponentStateToSave");\r
55                         return serializedComponentStates;\r
56                 }\r
57         }\r
58 }\r