Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- GetLastErrorDetailsRequest.cs
- IHttpResponseInternal.cs
- XmlNotation.cs
- PolyBezierSegment.cs
- Pkcs7Signer.cs
- TableCell.cs
- SiteMapDataSourceView.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- DbProviderFactory.cs
- LogicalExpr.cs
- TimeZone.cs
- XmlArrayItemAttribute.cs
- DataGridColumnHeaderCollection.cs
- DataGridViewButtonCell.cs
- Quad.cs
- KeyEvent.cs
- CqlGenerator.cs
- CallbackHandler.cs
- DataGridViewColumnCollection.cs
- XmlSchemaGroupRef.cs
- WSSecureConversationFeb2005.cs
- MemberAccessException.cs
- Dynamic.cs
- ApplicationSecurityManager.cs
- NegatedCellConstant.cs
- AdapterUtil.cs
- MetadataArtifactLoaderCompositeResource.cs
- TableCell.cs
- AppearanceEditorPart.cs
- DocumentXmlWriter.cs
- ReferenceSchema.cs
- ErrorView.xaml.cs
- InputLangChangeRequestEvent.cs
- DockAndAnchorLayout.cs
- Timeline.cs
- CompositeControl.cs
- NumberSubstitution.cs
- Focus.cs
- LiteralLink.cs
- xml.cs
- SimpleHandlerBuildProvider.cs
- DynamicUpdateCommand.cs
- SqlClientFactory.cs
- Evaluator.cs
- Typography.cs
- GlyphShapingProperties.cs
- CodeTypeMemberCollection.cs
- InkSerializer.cs
- ApplicationDirectory.cs
- DockProviderWrapper.cs
- WindowInteractionStateTracker.cs
- ClipboardProcessor.cs
- DataControlLinkButton.cs
- ConnectionPointConverter.cs
- FusionWrap.cs
- ComplexBindingPropertiesAttribute.cs
- AstTree.cs
- XpsResourceDictionary.cs
- DateRangeEvent.cs
- InProcStateClientManager.cs
- RequiredAttributeAttribute.cs
- GradientSpreadMethodValidation.cs
- Bezier.cs
- GridViewSortEventArgs.cs
- StateDesigner.Layouts.cs
- XmlChildEnumerator.cs
- BasicExpandProvider.cs
- ListViewPagedDataSource.cs
- AggregateNode.cs
- SpellCheck.cs
- DriveInfo.cs
- RuntimeIdentifierPropertyAttribute.cs
- ConnectionInterfaceCollection.cs
- MonthCalendar.cs
- LexicalChunk.cs
- ParameterModifier.cs
- ItemTypeToolStripMenuItem.cs
- VisemeEventArgs.cs
- DesignTimeParseData.cs
- XmlCollation.cs
- PageBreakRecord.cs
- ResourcesBuildProvider.cs
- VerticalConnector.xaml.cs
- BrowserInteropHelper.cs
- TaiwanLunisolarCalendar.cs
- WCFBuildProvider.cs
- Events.cs
- TdsParameterSetter.cs
- DataGridViewCellValidatingEventArgs.cs
- OdbcConnectionString.cs
- AddressingProperty.cs
- SchemaName.cs
- CustomBinding.cs
- ScrollViewer.cs
- HebrewNumber.cs
- MethodSet.cs
- RedBlackList.cs
- WindowsUpDown.cs
- ByteAnimationUsingKeyFrames.cs
- FrameSecurityDescriptor.cs