forked from extnet/Ext.NET
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathViewStateProxy.cs
More file actions
124 lines (109 loc) · 3.67 KB
/
ViewStateProxy.cs
File metadata and controls
124 lines (109 loc) · 3.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/********
* @version : 1.6.0 - Ext.NET Pro License
* @author : Ext.NET, Inc. http://www.ext.net/
* @date : 2012-11-21
* @copyright : Copyright (c) 2007-2012, Ext.NET, Inc. (http://www.ext.net/). All rights reserved.
* @license : See license.txt and http://www.ext.net/license/.
********/
using System.ComponentModel;
using System.Reflection;
using System.Threading;
using System.Web.UI;
using Ext.Net.Utilities;
namespace Ext.Net
{
/// <summary>
///
/// </summary>
[Description("")]
public partial class ViewStateProxy : StateManagedItem
{
private readonly XControl control;
/// <summary>
///
/// </summary>
[Description("")]
public ViewStateProxy(XControl control, StateBag viewState)
{
this.control = control;
this.ViewState = viewState;
}
/// <summary>
///
/// </summary>
[Description("")]
public virtual bool Suspend()
{
bool oldValue = control.AllowCallbackScriptMonitoring;
this.control.AllowCallbackScriptMonitoring = false;
Monitor.Enter(this.control);
return oldValue;
}
/// <summary>
///
/// </summary>
[Description("")]
public virtual void Resume(bool oldValue)
{
this.control.AllowCallbackScriptMonitoring = oldValue;
Monitor.Exit(this.control);
}
/// <summary>
///
/// </summary>
[Description("")]
public virtual void Resume()
{
this.Resume(true);
}
/// <summary>
///
/// </summary>
[Description("")]
public object this[string key]
{
get
{
return this.ViewState[key];
}
set
{
this.ViewState[key] = value;
if ((control.GenerateMethodsCalling) || (RequestManager.IsAjaxRequest && (control.AllowCallbackScriptMonitoring && (!control.IsDynamic || control.IsProxy))))
{
PropertyInfo pi = control.GetType().GetProperty(key);
if (pi == null)
{
return;
}
object[] attrs = pi.GetCustomAttributes(typeof(DirectEventUpdateAttribute), true);
if (attrs.Length > 0)
{
this.control.CallbackValues[key] = value;
if (value is Icon)
{
if (this.ResourceManager != null)
{
this.ResourceManager.RegisterIcon((Icon)value);
}
else
{
this.control.AddScript("Ext.net.ResourceMgr.registerIcon({0});", JSON.Serialize(value));
}
}
((DirectEventUpdateAttribute)attrs[0]).RegisterScript(this.control, pi);
}
else
{
ConfigOptionAttribute attr = ClientConfig.GetClientConfigAttribute(pi);
if (attr != null)
{
this.control.CallbackValues[key] = value;
this.control.AddScript(string.Format(DirectEventUpdateAttribute.AutoGenerateFormat, this.control.ClientID, JSON.Serialize(value), pi.Name.ToLowerCamelCase()));
}
}
}
}
}
}
}