Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / UI / WebControls / MultiView.cs / 1 / MultiView.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.ComponentModel; using System.Globalization; using System.Security.Permissions; using System.Web.UI; ////// [ ControlBuilder(typeof(MultiViewControlBuilder)), Designer("System.Web.UI.Design.WebControls.MultiViewDesigner, " + AssemblyRef.SystemDesign), DefaultEvent("ActiveViewChanged"), ParseChildren(typeof(View)) ] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] [ToolboxData("<{0}:MultiView runat=\"server\">{0}:MultiView>")] public class MultiView : Control { private static readonly object _eventActiveViewChanged = new object(); private int _activeViewIndex = -1; private int _cachedActiveViewIndex = -1; private bool _ignoreBubbleEvents = false; private bool _controlStateApplied; ////// /// public static readonly string NextViewCommandName = "NextView"; ///Specifies the NextView command. This field is constant. ////// public static readonly string PreviousViewCommandName = "PrevView"; ///Specifies the PrevView command. This field is constant. ////// public static readonly string SwitchViewByIDCommandName = "SwitchViewByID"; ///Specifies the SwitchViewById command. This field is constant. ////// public static readonly string SwitchViewByIndexCommandName = "SwitchViewByIndex"; ///Specifies the SwitchViewByIndex command. This field is constant. ////// [ DefaultValue(-1), WebCategory("Behavior"), WebSysDescription(SR.MultiView_ActiveView) ] public virtual int ActiveViewIndex { get { if (_cachedActiveViewIndex > -1) { return _cachedActiveViewIndex; } return _activeViewIndex; } set { if (value < -1) { throw new ArgumentOutOfRangeException("value", SR.GetString(SR.MultiView_ActiveViewIndex_less_than_minus_one, value)); } if (Views.Count == 0 && ControlState < ControlState.FrameworkInitialized /* Whidbey 113333 */) { _cachedActiveViewIndex = value; return; } if (value >= Views.Count) { throw new ArgumentOutOfRangeException("value", SR.GetString(SR.MultiView_ActiveViewIndex_equal_or_greater_than_count, value, Views.Count)); } // VSWhidbey 472054: If the cached index is not -1, that means we // haven't activate any view, hence original index is set to -1. int originalIndex = (_cachedActiveViewIndex != -1) ? -1 : _activeViewIndex; _activeViewIndex = value; _cachedActiveViewIndex = -1; // Need to compare originalIndex to Views.Count in case originalIndex was set declaratively. if (originalIndex != value && originalIndex != -1 && originalIndex < Views.Count) { Views[originalIndex].Active = false; if (ShouldTriggerViewEvent) { Views[originalIndex].OnDeactivate(EventArgs.Empty); } } if (originalIndex != value && Views.Count != 0 && value != -1) { Views[value].Active = true; if (ShouldTriggerViewEvent) { Views[value].OnActivate(EventArgs.Empty); OnActiveViewChanged(EventArgs.Empty); } } } } ///Indicates the active ///inside the control. /// [ Browsable(true) ] public override bool EnableTheming { get { return base.EnableTheming; } set { base.EnableTheming = value; } } private bool ShouldTriggerViewEvent { get { // We want to fire the View's event on the first request return (_controlStateApplied || (Page != null && !Page.IsPostBack)); } } ///Gets and sets a value indicating whether theme is enabled. ////// [ Browsable(false), WebSysDescription(SR.MultiView_Views), PersistenceMode(PersistenceMode.InnerDefaultProperty) ] public virtual ViewCollection Views { get { return (ViewCollection)Controls; } } ///[To be supplied.] ////// [ WebCategory("Action"), WebSysDescription(SR.MultiView_ActiveViewChanged) ] public event EventHandler ActiveViewChanged { add { Events.AddHandler(_eventActiveViewChanged, value); } remove { Events.RemoveHandler(_eventActiveViewChanged, value); } } ///Occurs when the active view changed. ////// /// Overridden to only allow View controls to be added. /// protected override void AddParsedSubObject(object obj) { if (obj is View) { Controls.Add((Control)obj); } else if (!(obj is LiteralControl)) throw new HttpException(SR.GetString(SR.MultiView_cannot_have_children_of_type, obj.GetType().Name)); } ////// [To be supplied.] /// protected override ControlCollection CreateControlCollection() { return new ViewCollection(this); } ////// public View GetActiveView() { int activeViewIndex = ActiveViewIndex; if (activeViewIndex >= Views.Count) { throw new Exception(SR.GetString(SR.MultiView_ActiveViewIndex_out_of_range)); } if (activeViewIndex < 0) { return null; } View view = Views[activeViewIndex]; if (!view.Active) { UpdateActiveView(activeViewIndex); } return view; } // Used to wizard to disable bubble events on MultiView. internal void IgnoreBubbleEvents() { _ignoreBubbleEvents = true; } private void UpdateActiveView(int activeViewIndex) { for (int i=0; i[To be supplied.] ////// Loads the control state. /// protected internal override void LoadControlState(object state) { Pair p = state as Pair; if (p != null) { base.LoadControlState(p.First); ActiveViewIndex = (int) p.Second; } _controlStateApplied = true; } ////// protected virtual void OnActiveViewChanged(EventArgs e) { EventHandler handler = (EventHandler)Events[_eventActiveViewChanged]; if (handler != null) { handler(this, e); } } ///Raises the ///event. /// /// Overridden to handle navigation between child views. /// protected override bool OnBubbleEvent(object source, EventArgs e) { if (_ignoreBubbleEvents) { return false; } if (e is CommandEventArgs) { CommandEventArgs ce = (CommandEventArgs) e; string cn = ce.CommandName; if (cn == NextViewCommandName) { if (ActiveViewIndex < Views.Count - 1) { ActiveViewIndex = ActiveViewIndex + 1; } else { ActiveViewIndex = - 1; } return true; } else if (cn == PreviousViewCommandName) { if (ActiveViewIndex > -1 ) { ActiveViewIndex = ActiveViewIndex - 1; } return true; } else if (cn == SwitchViewByIDCommandName) { View view = FindControl((string)ce.CommandArgument) as View; if (view != null && view.Parent == this) { SetActiveView(view); return true; } else { throw new HttpException(SR.GetString( SR.MultiView_invalid_view_id, ID, (string)ce.CommandArgument, SwitchViewByIDCommandName)); } } else if (cn == SwitchViewByIndexCommandName) { int index; try { index = Int32.Parse((string)ce.CommandArgument, CultureInfo.InvariantCulture); } catch (FormatException) { throw new FormatException(SR.GetString( SR.MultiView_invalid_view_index_format, (string)ce.CommandArgument, SwitchViewByIndexCommandName)); } ActiveViewIndex = index; return true; } } return false; } ////// /// Overridden to handle navigation between child views. /// protected internal override void OnInit(EventArgs e) { base.OnInit(e); Page.RegisterRequiresControlState(this); if (_cachedActiveViewIndex > -1) { ActiveViewIndex = _cachedActiveViewIndex; _cachedActiveViewIndex = -1; GetActiveView(); } } protected internal override void RemovedControl(Control ctl) { if (((View)ctl).Active && ActiveViewIndex < Views.Count) { GetActiveView(); } base.RemovedControl(ctl); } protected internal override void Render(HtmlTextWriter writer) { View activeView = GetActiveView(); if (activeView != null) { activeView.RenderControl(writer); } } ////// protected internal override object SaveControlState() { int avi = ActiveViewIndex; object obj = base.SaveControlState(); if (obj != null || avi != -1) { return new Pair(obj, avi); } return null; } ///Saves the control state. ////// public void SetActiveView(View view) { int index = Views.IndexOf (view); if (index < 0) { throw new HttpException(SR.GetString(SR.MultiView_view_not_found, (view == null ? "null" : view.ID), this.ID)); } ActiveViewIndex = index; } } ///[To be supplied.] ///[To be supplied.] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class MultiViewControlBuilder : ControlBuilder { public override void AppendSubBuilder(ControlBuilder subBuilder) { if (subBuilder is CodeBlockBuilder) { throw new Exception(SR.GetString(SR.Multiview_rendering_block_not_allowed)); } base.AppendSubBuilder(subBuilder); } } ///[To be supplied.] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class ViewCollection : ControlCollection { ///[To be supplied.] public ViewCollection (Control owner) : base (owner) {} ///[To be supplied.] public override void Add(Control v) { if (!(v is View)) { throw new ArgumentException(SR.GetString(SR.ViewCollection_must_contain_view)); } base.Add(v); } ///[To be supplied.] public override void AddAt(int index, Control v) { if (!(v is View)) { throw new ArgumentException(SR.GetString(SR.ViewCollection_must_contain_view)); } base.AddAt(index, v); } ///[To be supplied.] public new View this[int i] { get { return (View)base[i]; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls { using System; using System.ComponentModel; using System.Globalization; using System.Security.Permissions; using System.Web.UI; ////// [ ControlBuilder(typeof(MultiViewControlBuilder)), Designer("System.Web.UI.Design.WebControls.MultiViewDesigner, " + AssemblyRef.SystemDesign), DefaultEvent("ActiveViewChanged"), ParseChildren(typeof(View)) ] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] [ToolboxData("<{0}:MultiView runat=\"server\">{0}:MultiView>")] public class MultiView : Control { private static readonly object _eventActiveViewChanged = new object(); private int _activeViewIndex = -1; private int _cachedActiveViewIndex = -1; private bool _ignoreBubbleEvents = false; private bool _controlStateApplied; ////// /// public static readonly string NextViewCommandName = "NextView"; ///Specifies the NextView command. This field is constant. ////// public static readonly string PreviousViewCommandName = "PrevView"; ///Specifies the PrevView command. This field is constant. ////// public static readonly string SwitchViewByIDCommandName = "SwitchViewByID"; ///Specifies the SwitchViewById command. This field is constant. ////// public static readonly string SwitchViewByIndexCommandName = "SwitchViewByIndex"; ///Specifies the SwitchViewByIndex command. This field is constant. ////// [ DefaultValue(-1), WebCategory("Behavior"), WebSysDescription(SR.MultiView_ActiveView) ] public virtual int ActiveViewIndex { get { if (_cachedActiveViewIndex > -1) { return _cachedActiveViewIndex; } return _activeViewIndex; } set { if (value < -1) { throw new ArgumentOutOfRangeException("value", SR.GetString(SR.MultiView_ActiveViewIndex_less_than_minus_one, value)); } if (Views.Count == 0 && ControlState < ControlState.FrameworkInitialized /* Whidbey 113333 */) { _cachedActiveViewIndex = value; return; } if (value >= Views.Count) { throw new ArgumentOutOfRangeException("value", SR.GetString(SR.MultiView_ActiveViewIndex_equal_or_greater_than_count, value, Views.Count)); } // VSWhidbey 472054: If the cached index is not -1, that means we // haven't activate any view, hence original index is set to -1. int originalIndex = (_cachedActiveViewIndex != -1) ? -1 : _activeViewIndex; _activeViewIndex = value; _cachedActiveViewIndex = -1; // Need to compare originalIndex to Views.Count in case originalIndex was set declaratively. if (originalIndex != value && originalIndex != -1 && originalIndex < Views.Count) { Views[originalIndex].Active = false; if (ShouldTriggerViewEvent) { Views[originalIndex].OnDeactivate(EventArgs.Empty); } } if (originalIndex != value && Views.Count != 0 && value != -1) { Views[value].Active = true; if (ShouldTriggerViewEvent) { Views[value].OnActivate(EventArgs.Empty); OnActiveViewChanged(EventArgs.Empty); } } } } ///Indicates the active ///inside the control. /// [ Browsable(true) ] public override bool EnableTheming { get { return base.EnableTheming; } set { base.EnableTheming = value; } } private bool ShouldTriggerViewEvent { get { // We want to fire the View's event on the first request return (_controlStateApplied || (Page != null && !Page.IsPostBack)); } } ///Gets and sets a value indicating whether theme is enabled. ////// [ Browsable(false), WebSysDescription(SR.MultiView_Views), PersistenceMode(PersistenceMode.InnerDefaultProperty) ] public virtual ViewCollection Views { get { return (ViewCollection)Controls; } } ///[To be supplied.] ////// [ WebCategory("Action"), WebSysDescription(SR.MultiView_ActiveViewChanged) ] public event EventHandler ActiveViewChanged { add { Events.AddHandler(_eventActiveViewChanged, value); } remove { Events.RemoveHandler(_eventActiveViewChanged, value); } } ///Occurs when the active view changed. ////// /// Overridden to only allow View controls to be added. /// protected override void AddParsedSubObject(object obj) { if (obj is View) { Controls.Add((Control)obj); } else if (!(obj is LiteralControl)) throw new HttpException(SR.GetString(SR.MultiView_cannot_have_children_of_type, obj.GetType().Name)); } ////// [To be supplied.] /// protected override ControlCollection CreateControlCollection() { return new ViewCollection(this); } ////// public View GetActiveView() { int activeViewIndex = ActiveViewIndex; if (activeViewIndex >= Views.Count) { throw new Exception(SR.GetString(SR.MultiView_ActiveViewIndex_out_of_range)); } if (activeViewIndex < 0) { return null; } View view = Views[activeViewIndex]; if (!view.Active) { UpdateActiveView(activeViewIndex); } return view; } // Used to wizard to disable bubble events on MultiView. internal void IgnoreBubbleEvents() { _ignoreBubbleEvents = true; } private void UpdateActiveView(int activeViewIndex) { for (int i=0; i[To be supplied.] ////// Loads the control state. /// protected internal override void LoadControlState(object state) { Pair p = state as Pair; if (p != null) { base.LoadControlState(p.First); ActiveViewIndex = (int) p.Second; } _controlStateApplied = true; } ////// protected virtual void OnActiveViewChanged(EventArgs e) { EventHandler handler = (EventHandler)Events[_eventActiveViewChanged]; if (handler != null) { handler(this, e); } } ///Raises the ///event. /// /// Overridden to handle navigation between child views. /// protected override bool OnBubbleEvent(object source, EventArgs e) { if (_ignoreBubbleEvents) { return false; } if (e is CommandEventArgs) { CommandEventArgs ce = (CommandEventArgs) e; string cn = ce.CommandName; if (cn == NextViewCommandName) { if (ActiveViewIndex < Views.Count - 1) { ActiveViewIndex = ActiveViewIndex + 1; } else { ActiveViewIndex = - 1; } return true; } else if (cn == PreviousViewCommandName) { if (ActiveViewIndex > -1 ) { ActiveViewIndex = ActiveViewIndex - 1; } return true; } else if (cn == SwitchViewByIDCommandName) { View view = FindControl((string)ce.CommandArgument) as View; if (view != null && view.Parent == this) { SetActiveView(view); return true; } else { throw new HttpException(SR.GetString( SR.MultiView_invalid_view_id, ID, (string)ce.CommandArgument, SwitchViewByIDCommandName)); } } else if (cn == SwitchViewByIndexCommandName) { int index; try { index = Int32.Parse((string)ce.CommandArgument, CultureInfo.InvariantCulture); } catch (FormatException) { throw new FormatException(SR.GetString( SR.MultiView_invalid_view_index_format, (string)ce.CommandArgument, SwitchViewByIndexCommandName)); } ActiveViewIndex = index; return true; } } return false; } ////// /// Overridden to handle navigation between child views. /// protected internal override void OnInit(EventArgs e) { base.OnInit(e); Page.RegisterRequiresControlState(this); if (_cachedActiveViewIndex > -1) { ActiveViewIndex = _cachedActiveViewIndex; _cachedActiveViewIndex = -1; GetActiveView(); } } protected internal override void RemovedControl(Control ctl) { if (((View)ctl).Active && ActiveViewIndex < Views.Count) { GetActiveView(); } base.RemovedControl(ctl); } protected internal override void Render(HtmlTextWriter writer) { View activeView = GetActiveView(); if (activeView != null) { activeView.RenderControl(writer); } } ////// protected internal override object SaveControlState() { int avi = ActiveViewIndex; object obj = base.SaveControlState(); if (obj != null || avi != -1) { return new Pair(obj, avi); } return null; } ///Saves the control state. ////// public void SetActiveView(View view) { int index = Views.IndexOf (view); if (index < 0) { throw new HttpException(SR.GetString(SR.MultiView_view_not_found, (view == null ? "null" : view.ID), this.ID)); } ActiveViewIndex = index; } } ///[To be supplied.] ///[To be supplied.] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class MultiViewControlBuilder : ControlBuilder { public override void AppendSubBuilder(ControlBuilder subBuilder) { if (subBuilder is CodeBlockBuilder) { throw new Exception(SR.GetString(SR.Multiview_rendering_block_not_allowed)); } base.AppendSubBuilder(subBuilder); } } ///[To be supplied.] [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class ViewCollection : ControlCollection { ///[To be supplied.] public ViewCollection (Control owner) : base (owner) {} ///[To be supplied.] public override void Add(Control v) { if (!(v is View)) { throw new ArgumentException(SR.GetString(SR.ViewCollection_must_contain_view)); } base.Add(v); } ///[To be supplied.] public override void AddAt(int index, Control v) { if (!(v is View)) { throw new ArgumentException(SR.GetString(SR.ViewCollection_must_contain_view)); } base.AddAt(index, v); } ///[To be supplied.] public new View this[int i] { get { return (View)base[i]; } } } } // 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
- PointCollectionValueSerializer.cs
- SplineKeyFrames.cs
- BackgroundWorker.cs
- NameNode.cs
- LayoutTable.cs
- ZipIOExtraFieldZip64Element.cs
- PrintPreviewDialog.cs
- Schema.cs
- SiteMapSection.cs
- CompleteWizardStep.cs
- HwndSource.cs
- EdgeProfileValidation.cs
- Activity.cs
- WebPartEditVerb.cs
- columnmapfactory.cs
- TextProperties.cs
- HtmlGenericControl.cs
- PingReply.cs
- AnimationTimeline.cs
- DataGridPageChangedEventArgs.cs
- VisualSerializer.cs
- ResourceAttributes.cs
- RSAOAEPKeyExchangeDeformatter.cs
- OutputCacheProfileCollection.cs
- SqlSupersetValidator.cs
- CollectionDataContract.cs
- BitmapEffect.cs
- FormViewModeEventArgs.cs
- CommonDialog.cs
- ClientScriptManager.cs
- UITypeEditors.cs
- SamlNameIdentifierClaimResource.cs
- EnvironmentPermission.cs
- SoapFault.cs
- ExtensionWindow.cs
- TableRowGroup.cs
- EntityClassGenerator.cs
- DynamicMethod.cs
- BypassElementCollection.cs
- SystemNetworkInterface.cs
- OleDbMetaDataFactory.cs
- Config.cs
- FrameworkContextData.cs
- IndexedEnumerable.cs
- XmlElementAttributes.cs
- Operator.cs
- XmlElementCollection.cs
- StorageEntityTypeMapping.cs
- EntityTypeBase.cs
- DataControlField.cs
- MouseEvent.cs
- _NTAuthentication.cs
- UTF7Encoding.cs
- AppDomainUnloadedException.cs
- SmtpCommands.cs
- ConfigXmlAttribute.cs
- TreeView.cs
- EmptyStringExpandableObjectConverter.cs
- CapabilitiesPattern.cs
- StateMachineExecutionState.cs
- UrlMapping.cs
- PhysicalOps.cs
- DataGridViewCheckBoxCell.cs
- TreeNodeBinding.cs
- AuthenticationModulesSection.cs
- QualifierSet.cs
- LabelAutomationPeer.cs
- PresentationAppDomainManager.cs
- HttpWebRequest.cs
- MethodBuilder.cs
- TextSelection.cs
- StorageMappingItemCollection.cs
- Validator.cs
- ParserContext.cs
- entitydatasourceentitysetnameconverter.cs
- SafeSecurityHelper.cs
- SafeNativeMethods.cs
- ActiveDocumentEvent.cs
- LogLogRecordHeader.cs
- BoolExpression.cs
- LogStore.cs
- EntityDataReader.cs
- WebPartConnectionsEventArgs.cs
- ObjectAssociationEndMapping.cs
- FixedDocumentSequencePaginator.cs
- OdbcPermission.cs
- PageClientProxyGenerator.cs
- BindingGroup.cs
- CompModHelpers.cs
- AnonymousIdentificationSection.cs
- DateTimeFormat.cs
- SlipBehavior.cs
- WebPartsPersonalizationAuthorization.cs
- XmlChoiceIdentifierAttribute.cs
- VScrollProperties.cs
- RawStylusInputReport.cs
- StructuredTypeEmitter.cs
- wgx_commands.cs
- safePerfProviderHandle.cs
- PointCollection.cs