Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / xsp / System / Web / Extensions / ui / Timer.cs / 2 / Timer.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI {
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Globalization;
using System.Reflection;
using System.Security.Permissions;
using System.Web;
using System.Web.Util;
using System.Web.Resources;
[
AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal),
DefaultEvent("Tick"),
DefaultProperty("Interval"),
Designer("System.Web.UI.Design.TimerDesigner, " + AssemblyRef.SystemWebExtensionsDesign),
NonVisualControl,
ToolboxBitmap(typeof(EmbeddedResourceFinder), "System.Web.Resources.Timer.bmp"),
SupportsEventValidation,
ToolboxItemFilterAttribute(AssemblyRef.SystemWebExtensions, ToolboxItemFilterType.Require),
]
public class Timer : Control, IPostBackEventHandler, IScriptControl {
private static readonly object TickEventKey = new object();
private bool _stateDirty;
private new IPage _page;
private ScriptManager _scriptManager;
public Timer() {}
private IPage IPage {
get {
if (null == _page) {
Page page = Page;
if (null == page) {
throw new InvalidOperationException(AtlasWeb.Common_PageCannotBeNull);
}
_page = new PageWrapper(page);
}
return _page;
}
}
[
ResourceDescription("Timer_TimerEnable"),
Category("Behavior"),
DefaultValue(true)
]
public bool Enabled {
get {
object o = ViewState["Enabled"];
return (o != null) ? (bool)o : true;
}
set {
if (!_stateDirty && IsTrackingViewState) {
object o = ViewState["Enabled"];
_stateDirty = (null == o) ? true : (value != (bool)o);
}
ViewState["Enabled"] = value;
}
}
[
ResourceDescription("Timer_TimerInterval"),
Category("Behavior"),
DefaultValue(60000)
]
public int Interval {
get {
object o = ViewState["Interval"];
return (o != null) ? (int)o : 60000;
}
set {
if (value <= 0) {
throw new ArgumentOutOfRangeException("value", AtlasWeb.Timer_IntervalMustBeGreaterThanZero);
}
if (!_stateDirty && IsTrackingViewState) {
object o = ViewState["Interval"];
_stateDirty = (null == o) ? true : (value != (int)o);
}
ViewState["Interval"] = value;
}
}
internal ScriptManager ScriptManager {
get {
if (_scriptManager == null) {
Page page = Page;
if (page == null) {
throw new InvalidOperationException(AtlasWeb.Common_PageCannotBeNull);
}
_scriptManager = ScriptManager.GetCurrent(page);
if (_scriptManager == null) {
throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, AtlasWeb.Common_ScriptManagerRequired, ID));
}
}
return _scriptManager;
}
}
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
EditorBrowsable(EditorBrowsableState.Never)
]
public override bool Visible {
get {
return base.Visible;
}
set {
throw new NotImplementedException();
}
}
[
ResourceDescription("Timer_TimerTick"),
Category("Action")
]
public event EventHandler Tick {
add {
Events.AddHandler(TickEventKey, value);
}
remove {
Events.RemoveHandler(TickEventKey, value);
}
}
private string GetJsonState() {
return "[" + ((Enabled) ? "true" : "false") + "," + Interval.ToString(CultureInfo.InvariantCulture) + "]";
}
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
Justification = "Matches IScriptControl interface.")]
protected virtual IEnumerable GetScriptDescriptors() {
ScriptComponentDescriptor s = new ScriptControlDescriptor("Sys.UI._Timer", this.ClientID);
s.AddProperty("interval", Interval);
s.AddProperty("enabled", Enabled);
s.AddProperty("uniqueID",this.UniqueID);
yield return s;
}
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
Justification = "Matches IScriptControl interface.")]
protected virtual IEnumerable GetScriptReferences() {
yield return new ScriptReference("MicrosoftAjaxTimer.js", Assembly.GetAssembly(typeof(Timer)).FullName) ;
}
#region IPostBackEventHandler Members
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) {
RaisePostBackEvent(eventArgument);
}
#endregion
#region IScriptControl Members
IEnumerable IScriptControl.GetScriptDescriptors() {
return GetScriptDescriptors();
}
IEnumerable IScriptControl.GetScriptReferences() {
return GetScriptReferences();
}
#endregion
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")]
protected internal override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
this.ScriptManager.RegisterScriptControl(this);
if (_stateDirty && this.ScriptManager.IsInAsyncPostBack) {
_stateDirty = false;
this.ScriptManager.RegisterDataItem(this, GetJsonState(), true);
}
// Get a postback event reference to ensure that the postback script is generated
// and to make sure this is an expected name/value pair from an event validation
// perspective.
IPage.ClientScript.GetPostBackEventReference(new PostBackOptions(this, String.Empty));
}
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")]
protected virtual void OnTick(EventArgs e) {
EventHandler handler = (EventHandler)Events[TickEventKey];
if (handler != null) {
handler(this, e);
}
}
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
Justification = "Matches IPostBackEventHandler interface.")]
protected virtual void RaisePostBackEvent(string eventArgument) {
if (Enabled) {
OnTick(EventArgs.Empty);
}
}
protected internal override void Render(HtmlTextWriter writer) {
// Make sure we are in a form tag with runat=server.
IPage.VerifyRenderingInServerForm(this);
writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
writer.AddStyleAttribute(HtmlTextWriterStyle.Visibility, "hidden");
writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.RenderEndTag(); // Span
if (!DesignMode) {
ScriptManager.RegisterScriptDescriptors(this);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI {
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Globalization;
using System.Reflection;
using System.Security.Permissions;
using System.Web;
using System.Web.Util;
using System.Web.Resources;
[
AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal),
DefaultEvent("Tick"),
DefaultProperty("Interval"),
Designer("System.Web.UI.Design.TimerDesigner, " + AssemblyRef.SystemWebExtensionsDesign),
NonVisualControl,
ToolboxBitmap(typeof(EmbeddedResourceFinder), "System.Web.Resources.Timer.bmp"),
SupportsEventValidation,
ToolboxItemFilterAttribute(AssemblyRef.SystemWebExtensions, ToolboxItemFilterType.Require),
]
public class Timer : Control, IPostBackEventHandler, IScriptControl {
private static readonly object TickEventKey = new object();
private bool _stateDirty;
private new IPage _page;
private ScriptManager _scriptManager;
public Timer() {}
private IPage IPage {
get {
if (null == _page) {
Page page = Page;
if (null == page) {
throw new InvalidOperationException(AtlasWeb.Common_PageCannotBeNull);
}
_page = new PageWrapper(page);
}
return _page;
}
}
[
ResourceDescription("Timer_TimerEnable"),
Category("Behavior"),
DefaultValue(true)
]
public bool Enabled {
get {
object o = ViewState["Enabled"];
return (o != null) ? (bool)o : true;
}
set {
if (!_stateDirty && IsTrackingViewState) {
object o = ViewState["Enabled"];
_stateDirty = (null == o) ? true : (value != (bool)o);
}
ViewState["Enabled"] = value;
}
}
[
ResourceDescription("Timer_TimerInterval"),
Category("Behavior"),
DefaultValue(60000)
]
public int Interval {
get {
object o = ViewState["Interval"];
return (o != null) ? (int)o : 60000;
}
set {
if (value <= 0) {
throw new ArgumentOutOfRangeException("value", AtlasWeb.Timer_IntervalMustBeGreaterThanZero);
}
if (!_stateDirty && IsTrackingViewState) {
object o = ViewState["Interval"];
_stateDirty = (null == o) ? true : (value != (int)o);
}
ViewState["Interval"] = value;
}
}
internal ScriptManager ScriptManager {
get {
if (_scriptManager == null) {
Page page = Page;
if (page == null) {
throw new InvalidOperationException(AtlasWeb.Common_PageCannotBeNull);
}
_scriptManager = ScriptManager.GetCurrent(page);
if (_scriptManager == null) {
throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, AtlasWeb.Common_ScriptManagerRequired, ID));
}
}
return _scriptManager;
}
}
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
EditorBrowsable(EditorBrowsableState.Never)
]
public override bool Visible {
get {
return base.Visible;
}
set {
throw new NotImplementedException();
}
}
[
ResourceDescription("Timer_TimerTick"),
Category("Action")
]
public event EventHandler Tick {
add {
Events.AddHandler(TickEventKey, value);
}
remove {
Events.RemoveHandler(TickEventKey, value);
}
}
private string GetJsonState() {
return "[" + ((Enabled) ? "true" : "false") + "," + Interval.ToString(CultureInfo.InvariantCulture) + "]";
}
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
Justification = "Matches IScriptControl interface.")]
protected virtual IEnumerable GetScriptDescriptors() {
ScriptComponentDescriptor s = new ScriptControlDescriptor("Sys.UI._Timer", this.ClientID);
s.AddProperty("interval", Interval);
s.AddProperty("enabled", Enabled);
s.AddProperty("uniqueID",this.UniqueID);
yield return s;
}
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
Justification = "Matches IScriptControl interface.")]
protected virtual IEnumerable GetScriptReferences() {
yield return new ScriptReference("MicrosoftAjaxTimer.js", Assembly.GetAssembly(typeof(Timer)).FullName) ;
}
#region IPostBackEventHandler Members
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) {
RaisePostBackEvent(eventArgument);
}
#endregion
#region IScriptControl Members
IEnumerable IScriptControl.GetScriptDescriptors() {
return GetScriptDescriptors();
}
IEnumerable IScriptControl.GetScriptReferences() {
return GetScriptReferences();
}
#endregion
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")]
protected internal override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
this.ScriptManager.RegisterScriptControl(this);
if (_stateDirty && this.ScriptManager.IsInAsyncPostBack) {
_stateDirty = false;
this.ScriptManager.RegisterDataItem(this, GetJsonState(), true);
}
// Get a postback event reference to ensure that the postback script is generated
// and to make sure this is an expected name/value pair from an event validation
// perspective.
IPage.ClientScript.GetPostBackEventReference(new PostBackOptions(this, String.Empty));
}
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")]
protected virtual void OnTick(EventArgs e) {
EventHandler handler = (EventHandler)Events[TickEventKey];
if (handler != null) {
handler(this, e);
}
}
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
Justification = "Matches IPostBackEventHandler interface.")]
protected virtual void RaisePostBackEvent(string eventArgument) {
if (Enabled) {
OnTick(EventArgs.Empty);
}
}
protected internal override void Render(HtmlTextWriter writer) {
// Make sure we are in a form tag with runat=server.
IPage.VerifyRenderingInServerForm(this);
writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
writer.AddStyleAttribute(HtmlTextWriterStyle.Visibility, "hidden");
writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.RenderEndTag(); // Span
if (!DesignMode) {
ScriptManager.RegisterScriptDescriptors(this);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlDomTextWriter.cs
- RolePrincipal.cs
- HostingEnvironmentException.cs
- XmlTextReaderImplHelpers.cs
- Win32Exception.cs
- DataGridViewRow.cs
- WebPartCatalogAddVerb.cs
- HandleCollector.cs
- Empty.cs
- GuidConverter.cs
- DbMetaDataCollectionNames.cs
- DrawingContextWalker.cs
- SqlRowUpdatingEvent.cs
- ErrorProvider.cs
- XhtmlBasicControlAdapter.cs
- BindingExpression.cs
- UnmanagedHandle.cs
- MissingMethodException.cs
- SplitterCancelEvent.cs
- ProfilePropertyMetadata.cs
- LayoutInformation.cs
- TdsParameterSetter.cs
- TdsParserStaticMethods.cs
- GroupBoxAutomationPeer.cs
- DataGridClipboardCellContent.cs
- CodeTypeOfExpression.cs
- ZipIOLocalFileHeader.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- Viewport3DAutomationPeer.cs
- SchemaDeclBase.cs
- TableLayoutPanelCellPosition.cs
- FastPropertyAccessor.cs
- DbConnectionPoolOptions.cs
- TextBoxView.cs
- HtmlTitle.cs
- GetWinFXPath.cs
- GC.cs
- CheckBoxBaseAdapter.cs
- StylusShape.cs
- Console.cs
- DebugView.cs
- XmlSequenceWriter.cs
- ColorAnimation.cs
- ISO2022Encoding.cs
- CryptoConfig.cs
- Attributes.cs
- IgnoreDeviceFilterElement.cs
- IdentitySection.cs
- CapabilitiesUse.cs
- NullReferenceException.cs
- WebPartTransformer.cs
- odbcmetadatacollectionnames.cs
- DefaultTextStoreTextComposition.cs
- ColorAnimation.cs
- Enum.cs
- SizeAnimation.cs
- ActivityValidator.cs
- CurrentChangingEventArgs.cs
- CommonDialog.cs
- SspiWrapper.cs
- HiddenFieldPageStatePersister.cs
- HwndSource.cs
- RoutedEventHandlerInfo.cs
- ThemeInfoAttribute.cs
- ObjectPropertyMapping.cs
- Peer.cs
- RestHandlerFactory.cs
- DefaultBindingPropertyAttribute.cs
- FixedElement.cs
- Zone.cs
- shaperfactoryquerycacheentry.cs
- NativeCppClassAttribute.cs
- WebPartDisplayMode.cs
- SynchronizedRandom.cs
- IPipelineRuntime.cs
- PtsHost.cs
- DataMemberFieldEditor.cs
- XPathNodeIterator.cs
- FormClosingEvent.cs
- CodeTypeConstructor.cs
- DetailsView.cs
- SQLInt32Storage.cs
- ProxyWebPartConnectionCollection.cs
- ContextMenu.cs
- DateTimeSerializationSection.cs
- AnnotationHelper.cs
- ApplicationSecurityManager.cs
- ActivityExecutionFilter.cs
- WebBrowsableAttribute.cs
- MetadataException.cs
- ping.cs
- EdmToObjectNamespaceMap.cs
- X509Certificate.cs
- DependentList.cs
- Configuration.cs
- HtmlControl.cs
- ParenthesizePropertyNameAttribute.cs
- ComplexPropertyEntry.cs
- IntSecurity.cs
- TabControlEvent.cs