move RenderKitFactory to the base
[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 using javax.faces.render;\r
10 using javax.faces;\r
11 \r
12 namespace Mainsoft.Web.Hosting\r
13 {\r
14         public abstract class BaseFacesStateManager : StateManager\r
15         {\r
16                 protected static readonly string VIEWSTATE = "__VIEWSTATE";\r
17                 protected static readonly RenderKitFactory RenderKitFactory = (RenderKitFactory) FactoryFinder.getFactory (FactoryFinder.RENDER_KIT_FACTORY);\r
18 \r
19                 public override StateManager.SerializedView saveSerializedView (FacesContext facesContext) {\r
20                         Object treeStruct = getTreeStructureToSave (facesContext);\r
21                         Object compStates = getComponentStateToSave (facesContext);\r
22                         SerializedView serializedView = new SerializedView (this, treeStruct, compStates);\r
23                         return serializedView;\r
24                 }\r
25 \r
26                 protected override sealed Object getTreeStructureToSave (FacesContext facesContext) {\r
27                         return null;\r
28                 }\r
29 \r
30                 public override UIViewRoot restoreView (FacesContext facesContext,\r
31                                                                                                                                  String viewId,\r
32                                                                                                                                 String renderKitId) {\r
33 \r
34                         UIViewRoot uiViewRoot = restoreTreeStructure (facesContext, viewId, renderKitId);\r
35                         Page page = (Page) uiViewRoot.getChildren ().get (0);\r
36                         if (page.IsPostBack || page.IsCallback)\r
37                                 restoreComponentState (facesContext, uiViewRoot, renderKitId);\r
38                         else\r
39                                 facesContext.renderResponse ();\r
40                         return uiViewRoot;\r
41                 }\r
42 \r
43                 protected override sealed UIViewRoot restoreTreeStructure (FacesContext facesContext, string viewId, string renderKitId) {\r
44                         return facesContext.getApplication ().getViewHandler ().createView (facesContext, viewId);\r
45                 }\r
46 \r
47                 protected override Object getComponentStateToSave (FacesContext facesContext) {\r
48                         Trace.WriteLine ("Entering getComponentStateToSave");\r
49 \r
50                         UIViewRoot viewRoot = facesContext.getViewRoot ();\r
51                         if (viewRoot.isTransient ()) {\r
52                                 return null;\r
53                         }\r
54 \r
55                         Object serializedComponentStates = ((UIComponent) viewRoot.getChildren ().get (0)).processSaveState (facesContext);\r
56                         //Locale is a state attribute of UIViewRoot and need not be saved explicitly\r
57                         Trace.WriteLine ("Exiting getComponentStateToSave");\r
58                         return serializedComponentStates;\r
59                 }\r
60         }\r
61 }\r