Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebParts / ToolZone.cs / 4 / ToolZone.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls.WebParts { using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Drawing.Design; using System.Globalization; using System.Security.Permissions; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Util; [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public abstract class ToolZone : WebZone, IPostBackEventHandler { private const string headerCloseEventArgument = "headerClose"; private const int baseIndex = 0; private const int editUIStyleIndex = 1; private const int headerCloseVerbIndex = 3; private const int headerVerbStyleIndex = 4; private const int instructionTextStyleIndex = 5; private const int labelStyleIndex = 6; private const int viewStateArrayLength = 7; private Style _editUIStyle; private WebPartVerb _headerCloseVerb; private Style _headerVerbStyle; private Style _instructionTextStyle; private Style _labelStyle; private WebPartDisplayModeCollection _associatedDisplayModes; protected ToolZone(ICollection associatedDisplayModes) { if ((associatedDisplayModes == null) || (associatedDisplayModes.Count == 0)) { throw new ArgumentNullException("associatedDisplayModes"); } _associatedDisplayModes = new WebPartDisplayModeCollection(); foreach (WebPartDisplayMode mode in associatedDisplayModes) { _associatedDisplayModes.Add(mode); } _associatedDisplayModes.SetReadOnly(SR.ToolZone_DisplayModesReadOnly); } protected ToolZone(WebPartDisplayMode associatedDisplayMode) { if (associatedDisplayMode == null) { throw new ArgumentNullException("associatedDisplayMode"); } _associatedDisplayModes = new WebPartDisplayModeCollection(); _associatedDisplayModes.Add(associatedDisplayMode); _associatedDisplayModes.SetReadOnly(SR.ToolZone_DisplayModesReadOnly); } [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public WebPartDisplayModeCollection AssociatedDisplayModes { get { return _associatedDisplayModes; } } protected virtual bool Display { get { if (WebPartManager != null) { WebPartDisplayModeCollection associatedDisplayModes = AssociatedDisplayModes; if (associatedDisplayModes != null) { return associatedDisplayModes.Contains(WebPartManager.DisplayMode); } } return false; } } [ DefaultValue(null), NotifyParentProperty(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty), WebCategory("Styles"), WebSysDescription(SR.ToolZone_EditUIStyle), ] public Style EditUIStyle { get { if (_editUIStyle == null) { _editUIStyle = new Style(); if (IsTrackingViewState) { ((IStateManager)_editUIStyle).TrackViewState(); } } return _editUIStyle; } } [ DefaultValue(null), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), NotifyParentProperty(true), PersistenceMode(PersistenceMode.InnerProperty), WebCategory("Verbs"), WebSysDescription(SR.ToolZone_HeaderCloseVerb), ] public virtual WebPartVerb HeaderCloseVerb { get { if (_headerCloseVerb == null) { _headerCloseVerb = new WebPartHeaderCloseVerb(); _headerCloseVerb.EventArgument = headerCloseEventArgument; if (IsTrackingViewState) { ((IStateManager)_headerCloseVerb).TrackViewState(); } } return _headerCloseVerb; } } [ DefaultValue(null), NotifyParentProperty(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty), WebCategory("Styles"), WebSysDescription(SR.ToolZone_HeaderVerbStyle), ] public Style HeaderVerbStyle { get { if (_headerVerbStyle == null) { _headerVerbStyle = new Style(); if (IsTrackingViewState) { ((IStateManager)_headerVerbStyle).TrackViewState(); } } return _headerVerbStyle; } } [ // Must use WebSysDefaultValue instead of DefaultValue, since it is overridden in extending classes Localizable(true), WebSysDefaultValue(""), WebCategory("Behavior"), WebSysDescription(SR.ToolZone_InstructionText), ] public virtual string InstructionText { get { string s = (string)ViewState["InstructionText"]; return((s == null) ? String.Empty : s); } set { ViewState["InstructionText"] = value; } } [ DefaultValue(null), NotifyParentProperty(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty), WebCategory("Styles"), WebSysDescription(SR.ToolZone_InstructionTextStyle), ] public Style InstructionTextStyle { get { if (_instructionTextStyle == null) { _instructionTextStyle = new Style(); if (IsTrackingViewState) { ((IStateManager)_instructionTextStyle).TrackViewState(); } } return _instructionTextStyle; } } [ DefaultValue(null), NotifyParentProperty(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty), WebCategory("Styles"), WebSysDescription(SR.ToolZone_LabelStyle), ] public Style LabelStyle { get { if (_labelStyle == null) { _labelStyle = new Style(); if (IsTrackingViewState) { ((IStateManager)_labelStyle).TrackViewState(); } } return _labelStyle; } } [ Bindable(false), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never), ] public override bool Visible { get { return Display && base.Visible; } set { if (!DesignMode) { throw new InvalidOperationException(SR.GetString(SR.ToolZone_CantSetVisible)); } } } protected abstract void Close(); protected override void LoadViewState(object savedState) { if (savedState == null) { base.LoadViewState(null); } else { object[] myState = (object[]) savedState; if (myState.Length != viewStateArrayLength) { throw new ArgumentException(SR.GetString(SR.ViewState_InvalidViewState)); } base.LoadViewState(myState[baseIndex]); if (myState[editUIStyleIndex] != null) { ((IStateManager) EditUIStyle).LoadViewState(myState[editUIStyleIndex]); } if (myState[headerCloseVerbIndex] != null) { ((IStateManager) HeaderCloseVerb).LoadViewState(myState[headerCloseVerbIndex]); } if (myState[headerVerbStyleIndex] != null) { ((IStateManager) HeaderVerbStyle).LoadViewState(myState[headerVerbStyleIndex]); } if (myState[instructionTextStyleIndex] != null) { ((IStateManager) InstructionTextStyle).LoadViewState(myState[instructionTextStyleIndex]); } if (myState[labelStyleIndex] != null) { ((IStateManager) LabelStyle).LoadViewState(myState[labelStyleIndex]); } } } protected virtual void OnDisplayModeChanged(object sender, WebPartDisplayModeEventArgs e) { } ///protected internal override void OnInit(EventArgs e) { base.OnInit(e); WebPartManager webPartManager = WebPartManager; if (webPartManager != null) { webPartManager.DisplayModeChanged += new WebPartDisplayModeEventHandler(OnDisplayModeChanged); webPartManager.SelectedWebPartChanged += new WebPartEventHandler(OnSelectedWebPartChanged); } } protected virtual void OnSelectedWebPartChanged(object sender, WebPartEventArgs e) { } protected virtual void RaisePostBackEvent(string eventArgument) { ValidateEvent(UniqueID, eventArgument); if (String.Equals(eventArgument, headerCloseEventArgument, StringComparison.OrdinalIgnoreCase) && HeaderCloseVerb.Visible && HeaderCloseVerb.Enabled) { Close(); } } protected override void RenderFooter(HtmlTextWriter writer) { writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "4px"); writer.RenderBeginTag(HtmlTextWriterTag.Div); RenderVerbs(writer); writer.RenderEndTag(); // Div } protected override void RenderHeader(HtmlTextWriter writer) { // Render title bar writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0"); writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "2"); writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%"); TitleStyle headerStyle = HeaderStyle; if (!headerStyle.IsEmpty) { // Apply font and forecolor from HeaderStyle to inner table Style style = new Style(); if (!headerStyle.ForeColor.IsEmpty) { style.ForeColor = headerStyle.ForeColor; } style.Font.CopyFrom(headerStyle.Font); if (!headerStyle.Font.Size.IsEmpty) { // If the font size is specified on the HeaderStyle, force the font size to 100%, // so it inherits the font size from its parent in IE compatibility mode. I would // think that "1em" would work here as well, but "1em" doesn't work when you change // the font size in the browser. style.Font.Size = new FontUnit(new Unit(100, UnitType.Percentage)); } if (!style.IsEmpty) { style.AddAttributesToRender(writer, this); } } writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); // Copied from Panel.cs // HorizontalAlign hAlign = headerStyle.HorizontalAlign; if (hAlign != HorizontalAlign.NotSet) { TypeConverter hac = TypeDescriptor.GetConverter(typeof(HorizontalAlign)); writer.AddAttribute(HtmlTextWriterAttribute.Align, hac.ConvertToString(hAlign)); } writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%"); writer.AddStyleAttribute(HtmlTextWriterStyle.WhiteSpace, "nowrap"); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write(HeaderText); writer.RenderEndTag(); // Td WebPartVerb headerCloseVerb = HeaderCloseVerb; if (headerCloseVerb.Visible) { writer.AddStyleAttribute(HtmlTextWriterStyle.WhiteSpace, "nowrap"); writer.RenderBeginTag(HtmlTextWriterTag.Td); ZoneLinkButton closeButton = new ZoneLinkButton(this, headerCloseVerb.EventArgument); closeButton.Text = headerCloseVerb.Text; closeButton.ImageUrl = headerCloseVerb.ImageUrl; closeButton.ToolTip = headerCloseVerb.Description; closeButton.Enabled = headerCloseVerb.Enabled; closeButton.Page = Page; closeButton.ApplyStyle(HeaderVerbStyle); closeButton.RenderControl(writer); writer.RenderEndTag(); // Td } writer.RenderEndTag(); // Tr writer.RenderEndTag(); // Table } protected virtual void RenderVerbs(HtmlTextWriter writer) { } internal void RenderVerbsInternal(HtmlTextWriter writer, ICollection verbs) { ArrayList visibleVerbs = new ArrayList(); foreach (WebPartVerb verb in verbs) { if (verb.Visible) { visibleVerbs.Add(verb); } } // Render between each pair of verbs ( if (visibleVerbs.Count > 0) { bool firstVerb = true; foreach (WebPartVerb verb in visibleVerbs) { if (!firstVerb) { writer.Write(" "); } RenderVerb(writer, verb); firstVerb = false; } } } protected virtual void RenderVerb(HtmlTextWriter writer, WebPartVerb verb) { string eventArgument = verb.EventArgument; WebControl verbControl; if (VerbButtonType == ButtonType.Button) { ZoneButton button = new ZoneButton(this, eventArgument); button.Text = verb.Text; verbControl = button; } else { ZoneLinkButton linkButton = new ZoneLinkButton(this, eventArgument); linkButton.Text = verb.Text; if (VerbButtonType == ButtonType.Image) { linkButton.ImageUrl = verb.ImageUrl; } verbControl = linkButton; } verbControl.ApplyStyle(VerbStyle); verbControl.ToolTip = verb.Description; verbControl.Enabled = verb.Enabled; verbControl.Page = Page; verbControl.RenderControl(writer); } protected override object SaveViewState() { object[] myState = new object[viewStateArrayLength]; myState[baseIndex] = base.SaveViewState(); myState[editUIStyleIndex] = (_editUIStyle != null) ? ((IStateManager)_editUIStyle).SaveViewState() : null; myState[headerCloseVerbIndex] = (_headerCloseVerb != null) ? ((IStateManager)_headerCloseVerb).SaveViewState() : null; myState[headerVerbStyleIndex] = (_headerVerbStyle != null) ? ((IStateManager)_headerVerbStyle).SaveViewState() : null; myState[instructionTextStyleIndex] = (_instructionTextStyle != null) ? ((IStateManager)_instructionTextStyle).SaveViewState() : null; myState[labelStyleIndex] = (_labelStyle != null) ? ((IStateManager)_labelStyle).SaveViewState() : null; for (int i=0; i < viewStateArrayLength; i++) { if (myState[i] != null) { return myState; } } // More performant to return null than an array of null values return null; } protected override void TrackViewState() { base.TrackViewState(); if (_editUIStyle != null) { ((IStateManager) _editUIStyle).TrackViewState(); } if (_headerCloseVerb != null) { ((IStateManager) _headerCloseVerb).TrackViewState(); } if (_headerVerbStyle != null) { ((IStateManager) _headerVerbStyle).TrackViewState(); } if (_instructionTextStyle != null) { ((IStateManager) _instructionTextStyle).TrackViewState(); } if (_labelStyle != null) { ((IStateManager) _labelStyle).TrackViewState(); } } #region Implementation of IPostBackEventHandler /// void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) { RaisePostBackEvent(eventArgument); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HashHelpers.cs
- TextServicesDisplayAttributePropertyRanges.cs
- NavigationHelper.cs
- DetailsViewDeleteEventArgs.cs
- arclist.cs
- SQLDateTimeStorage.cs
- ControlBuilderAttribute.cs
- PropertyStore.cs
- PageSettings.cs
- MenuScrollingVisibilityConverter.cs
- PieceNameHelper.cs
- Int32.cs
- XNodeValidator.cs
- SpinLock.cs
- NativeCppClassAttribute.cs
- OleStrCAMarshaler.cs
- URLMembershipCondition.cs
- ValueChangedEventManager.cs
- CompoundFileStreamReference.cs
- ConfigXmlElement.cs
- SqlDataSourceRefreshSchemaForm.cs
- InstanceHandle.cs
- CachingHintValidation.cs
- DockPattern.cs
- DecimalKeyFrameCollection.cs
- InstanceDataCollection.cs
- SmtpNtlmAuthenticationModule.cs
- ArgIterator.cs
- SafeTimerHandle.cs
- XPathSelfQuery.cs
- infer.cs
- AnnouncementSendsAsyncResult.cs
- CollectionBuilder.cs
- AlphaSortedEnumConverter.cs
- RoutedEventArgs.cs
- PersonalizationStateInfoCollection.cs
- InternalException.cs
- BoundField.cs
- EventLogEntry.cs
- DataServiceQueryContinuation.cs
- SchemaElement.cs
- SuppressIldasmAttribute.cs
- XmlResolver.cs
- GlyphElement.cs
- RuntimeConfig.cs
- MailDefinition.cs
- Mutex.cs
- HyperLinkStyle.cs
- XmlObjectSerializerReadContextComplex.cs
- ViewBox.cs
- InvokeBase.cs
- SystemBrushes.cs
- SwitchLevelAttribute.cs
- DataGridBoundColumn.cs
- ToolBar.cs
- WsdlBuildProvider.cs
- NavigationPropertyEmitter.cs
- Avt.cs
- PrivilegeNotHeldException.cs
- DocumentEventArgs.cs
- MaskedTextBox.cs
- ReadOnlyCollectionBase.cs
- LocalFileSettingsProvider.cs
- shaper.cs
- ActivityDesignerAccessibleObject.cs
- Padding.cs
- CodeVariableDeclarationStatement.cs
- HelloMessageApril2005.cs
- WaitHandleCannotBeOpenedException.cs
- FilterInvalidBodyAccessException.cs
- ComPlusTypeValidator.cs
- ByteFacetDescriptionElement.cs
- ApplicationSettingsBase.cs
- MemberHolder.cs
- DetailsView.cs
- MsmqIntegrationSecurity.cs
- SQLInt16.cs
- ColorConverter.cs
- ImageButton.cs
- TransactionChannelFactory.cs
- TransactionProtocol.cs
- OdbcConnectionHandle.cs
- HwndTarget.cs
- LoadRetryStrategyFactory.cs
- keycontainerpermission.cs
- DocumentPageViewAutomationPeer.cs
- SerializationSectionGroup.cs
- Application.cs
- AssociatedControlConverter.cs
- ApplicationServiceHelper.cs
- UnmanagedHandle.cs
- ConvertEvent.cs
- FixedBufferAttribute.cs
- DataGridViewColumn.cs
- TabControl.cs
- SecurityPermission.cs
- WebException.cs
- Module.cs
- ChannelServices.cs
- EntitySetRetriever.cs