Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / UI / Timer.cs / 1305376 / 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.Web;
using System.Web.Util;
using System.Web.Resources;
[
DefaultEvent("Tick"),
DefaultProperty("Interval"),
Designer("System.Web.UI.Design.TimerDesigner, " + AssemblyRef.SystemWebExtensionsDesign),
NonVisualControl,
ToolboxBitmap(typeof(EmbeddedResourceFinder), "System.Web.Resources.Timer.bmp"),
SupportsEventValidation
]
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
- CheckBoxBaseAdapter.cs
- Latin1Encoding.cs
- SerialPinChanges.cs
- FixedTextSelectionProcessor.cs
- WebPartAddingEventArgs.cs
- CheckBoxPopupAdapter.cs
- StringArrayConverter.cs
- CharacterMetrics.cs
- RelOps.cs
- SimpleType.cs
- HttpContext.cs
- Size3D.cs
- SchemaSetCompiler.cs
- CursorConverter.cs
- ServiceThrottlingElement.cs
- SimpleWebHandlerParser.cs
- StyleSheetComponentEditor.cs
- MarshalDirectiveException.cs
- CustomAttributeFormatException.cs
- AttributeEmitter.cs
- TextRunCacheImp.cs
- TrackBarRenderer.cs
- ETagAttribute.cs
- RadialGradientBrush.cs
- XmlEncoding.cs
- OutputCacheProfileCollection.cs
- WmfPlaceableFileHeader.cs
- SplashScreenNativeMethods.cs
- DesignerAttribute.cs
- RestHandlerFactory.cs
- VisualBrush.cs
- GuidelineCollection.cs
- WindowsComboBox.cs
- WinInet.cs
- PeerMaintainer.cs
- HttpListenerException.cs
- XslTransform.cs
- Drawing.cs
- DataControlHelper.cs
- MobilePage.cs
- ConsoleCancelEventArgs.cs
- UpdateEventArgs.cs
- MulticastOption.cs
- ScriptManager.cs
- CodeAttributeDeclaration.cs
- RootNamespaceAttribute.cs
- Int32RectConverter.cs
- ActivityStatusChangeEventArgs.cs
- SoapHeaders.cs
- SqlUDTStorage.cs
- Math.cs
- RouteItem.cs
- TrustManagerPromptUI.cs
- CompositeScriptReferenceEventArgs.cs
- returneventsaver.cs
- PagerSettings.cs
- QuaternionValueSerializer.cs
- OdbcConnectionFactory.cs
- ValueProviderWrapper.cs
- RIPEMD160Managed.cs
- TemplateComponentConnector.cs
- EventItfInfo.cs
- DefaultEventAttribute.cs
- InOutArgument.cs
- InputLanguageCollection.cs
- ChildTable.cs
- RecordsAffectedEventArgs.cs
- WebServicesInteroperability.cs
- SyndicationSerializer.cs
- Parallel.cs
- _AcceptOverlappedAsyncResult.cs
- controlskin.cs
- FormViewPageEventArgs.cs
- FloatUtil.cs
- AutoResizedEvent.cs
- __Filters.cs
- AlignmentYValidation.cs
- arc.cs
- HierarchicalDataBoundControl.cs
- AuthenticatedStream.cs
- PenLineCapValidation.cs
- InertiaRotationBehavior.cs
- MetricEntry.cs
- CompositeKey.cs
- SchemaCollectionCompiler.cs
- _Connection.cs
- CodeTypeDeclaration.cs
- Header.cs
- SourceFilter.cs
- Queue.cs
- FormsAuthenticationUserCollection.cs
- SiteMapProvider.cs
- XmlnsDictionary.cs
- ISAPIWorkerRequest.cs
- AssociationType.cs
- PrivilegeNotHeldException.cs
- DataGridViewRowsAddedEventArgs.cs
- DbReferenceCollection.cs
- DbReferenceCollection.cs
- BorderGapMaskConverter.cs