Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / WinForms / Managed / System / WinForms / ToolStripRendererSwitcher.cs / 1 / ToolStripRendererSwitcher.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Drawing; using System.Collections.Specialized; using System.ComponentModel; // this class encapsulates the logic for Renderer and RenderMode so it can // be shared across classes. internal class ToolStripRendererSwitcher { private static readonly int stateUseDefaultRenderer = BitVector32.CreateMask(); private static readonly int stateAttachedRendererChanged = BitVector32.CreateMask(stateUseDefaultRenderer); private ToolStripRenderer renderer = null; private Type currentRendererType = typeof(System.Type); private BitVector32 state = new BitVector32(); private ToolStripRenderMode defaultRenderMode = ToolStripRenderMode.ManagerRenderMode; public ToolStripRendererSwitcher(Control owner, ToolStripRenderMode defaultRenderMode) : this(owner) { this.defaultRenderMode = defaultRenderMode; this.RenderMode = defaultRenderMode; } public ToolStripRendererSwitcher(Control owner) { state[stateUseDefaultRenderer] = true; state[stateAttachedRendererChanged] = false; owner.Disposed += new EventHandler(OnControlDisposed); owner.VisibleChanged += new EventHandler(OnControlVisibleChanged); if (owner.Visible) { OnControlVisibleChanged(owner, EventArgs.Empty); } } public ToolStripRenderer Renderer { get { if (RenderMode == ToolStripRenderMode.ManagerRenderMode) { return ToolStripManager.Renderer; } // always return a valid renderer so our paint code // doesn't have to be bogged down by checks for null. state[stateUseDefaultRenderer] = false; if (renderer == null) { Renderer = ToolStripManager.CreateRenderer(RenderMode); } return renderer; } set { // if the value happens to be null, the next get // will autogenerate a new ToolStripRenderer. if (renderer != value) { state[stateUseDefaultRenderer] = (value == null); renderer = value; currentRendererType = (renderer != null) ? renderer.GetType() : typeof(System.Type); OnRendererChanged(EventArgs.Empty); } } } public ToolStripRenderMode RenderMode { get { if (state[stateUseDefaultRenderer]) { return ToolStripRenderMode.ManagerRenderMode; } if (renderer != null && !renderer.IsAutoGenerated) { return ToolStripRenderMode.Custom; } // check the type of the currently set renderer. // types are cached as this may be called frequently. if (currentRendererType == ToolStripManager.ProfessionalRendererType) { return ToolStripRenderMode.Professional; } if (currentRendererType == ToolStripManager.SystemRendererType) { return ToolStripRenderMode.System; } return ToolStripRenderMode.Custom; } set { //valid values are 0x0 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)ToolStripRenderMode.Custom, (int)ToolStripRenderMode.ManagerRenderMode)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(ToolStripRenderMode)); } if (value == ToolStripRenderMode.Custom) { throw new NotSupportedException(SR.GetString(SR.ToolStripRenderModeUseRendererPropertyInstead)); } if (value == ToolStripRenderMode.ManagerRenderMode) { if (!state[stateUseDefaultRenderer] ) { state[stateUseDefaultRenderer] = true; OnRendererChanged(EventArgs.Empty); } } else { state[stateUseDefaultRenderer] = false; Renderer = ToolStripManager.CreateRenderer(value); } } } public event EventHandler RendererChanged; private void OnRendererChanged(EventArgs e) { if (this.RendererChanged != null) { this.RendererChanged(this, e); } } private void OnDefaultRendererChanged(object sender, EventArgs e) { if (state[stateUseDefaultRenderer]) { OnRendererChanged(e); } } private void OnControlDisposed(object sender, EventArgs e) { if (state[stateAttachedRendererChanged]) { ToolStripManager.RendererChanged -= new EventHandler(OnDefaultRendererChanged); state[stateAttachedRendererChanged] = false; } } private void OnControlVisibleChanged(object sender, EventArgs e) { Control control = sender as Control; if (control != null) { if (control.Visible) { if (!state[stateAttachedRendererChanged]) { ToolStripManager.RendererChanged += new EventHandler(OnDefaultRendererChanged); state[stateAttachedRendererChanged] = true; } } else { if (state[stateAttachedRendererChanged]) { ToolStripManager.RendererChanged -= new EventHandler(OnDefaultRendererChanged); state[stateAttachedRendererChanged] = false; } } } } public bool ShouldSerializeRenderMode() { // We should NEVER serialize custom. return (RenderMode != defaultRenderMode && RenderMode != ToolStripRenderMode.Custom); } public void ResetRenderMode() { this.RenderMode = defaultRenderMode; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Drawing; using System.Collections.Specialized; using System.ComponentModel; // this class encapsulates the logic for Renderer and RenderMode so it can // be shared across classes. internal class ToolStripRendererSwitcher { private static readonly int stateUseDefaultRenderer = BitVector32.CreateMask(); private static readonly int stateAttachedRendererChanged = BitVector32.CreateMask(stateUseDefaultRenderer); private ToolStripRenderer renderer = null; private Type currentRendererType = typeof(System.Type); private BitVector32 state = new BitVector32(); private ToolStripRenderMode defaultRenderMode = ToolStripRenderMode.ManagerRenderMode; public ToolStripRendererSwitcher(Control owner, ToolStripRenderMode defaultRenderMode) : this(owner) { this.defaultRenderMode = defaultRenderMode; this.RenderMode = defaultRenderMode; } public ToolStripRendererSwitcher(Control owner) { state[stateUseDefaultRenderer] = true; state[stateAttachedRendererChanged] = false; owner.Disposed += new EventHandler(OnControlDisposed); owner.VisibleChanged += new EventHandler(OnControlVisibleChanged); if (owner.Visible) { OnControlVisibleChanged(owner, EventArgs.Empty); } } public ToolStripRenderer Renderer { get { if (RenderMode == ToolStripRenderMode.ManagerRenderMode) { return ToolStripManager.Renderer; } // always return a valid renderer so our paint code // doesn't have to be bogged down by checks for null. state[stateUseDefaultRenderer] = false; if (renderer == null) { Renderer = ToolStripManager.CreateRenderer(RenderMode); } return renderer; } set { // if the value happens to be null, the next get // will autogenerate a new ToolStripRenderer. if (renderer != value) { state[stateUseDefaultRenderer] = (value == null); renderer = value; currentRendererType = (renderer != null) ? renderer.GetType() : typeof(System.Type); OnRendererChanged(EventArgs.Empty); } } } public ToolStripRenderMode RenderMode { get { if (state[stateUseDefaultRenderer]) { return ToolStripRenderMode.ManagerRenderMode; } if (renderer != null && !renderer.IsAutoGenerated) { return ToolStripRenderMode.Custom; } // check the type of the currently set renderer. // types are cached as this may be called frequently. if (currentRendererType == ToolStripManager.ProfessionalRendererType) { return ToolStripRenderMode.Professional; } if (currentRendererType == ToolStripManager.SystemRendererType) { return ToolStripRenderMode.System; } return ToolStripRenderMode.Custom; } set { //valid values are 0x0 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)ToolStripRenderMode.Custom, (int)ToolStripRenderMode.ManagerRenderMode)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(ToolStripRenderMode)); } if (value == ToolStripRenderMode.Custom) { throw new NotSupportedException(SR.GetString(SR.ToolStripRenderModeUseRendererPropertyInstead)); } if (value == ToolStripRenderMode.ManagerRenderMode) { if (!state[stateUseDefaultRenderer] ) { state[stateUseDefaultRenderer] = true; OnRendererChanged(EventArgs.Empty); } } else { state[stateUseDefaultRenderer] = false; Renderer = ToolStripManager.CreateRenderer(value); } } } public event EventHandler RendererChanged; private void OnRendererChanged(EventArgs e) { if (this.RendererChanged != null) { this.RendererChanged(this, e); } } private void OnDefaultRendererChanged(object sender, EventArgs e) { if (state[stateUseDefaultRenderer]) { OnRendererChanged(e); } } private void OnControlDisposed(object sender, EventArgs e) { if (state[stateAttachedRendererChanged]) { ToolStripManager.RendererChanged -= new EventHandler(OnDefaultRendererChanged); state[stateAttachedRendererChanged] = false; } } private void OnControlVisibleChanged(object sender, EventArgs e) { Control control = sender as Control; if (control != null) { if (control.Visible) { if (!state[stateAttachedRendererChanged]) { ToolStripManager.RendererChanged += new EventHandler(OnDefaultRendererChanged); state[stateAttachedRendererChanged] = true; } } else { if (state[stateAttachedRendererChanged]) { ToolStripManager.RendererChanged -= new EventHandler(OnDefaultRendererChanged); state[stateAttachedRendererChanged] = false; } } } } public bool ShouldSerializeRenderMode() { // We should NEVER serialize custom. return (RenderMode != defaultRenderMode && RenderMode != ToolStripRenderMode.Custom); } public void ResetRenderMode() { this.RenderMode = defaultRenderMode; } } } // 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
- UnsignedPublishLicense.cs
- CapabilitiesSection.cs
- DataSourceCacheDurationConverter.cs
- MaskedTextProvider.cs
- IteratorFilter.cs
- LinqDataSourceDisposeEventArgs.cs
- UTF7Encoding.cs
- LocalFileSettingsProvider.cs
- MarkupCompilePass1.cs
- ToolStripPanelSelectionBehavior.cs
- DefaultSettingsSection.cs
- ActivityDesignerAccessibleObject.cs
- X509CertificateStore.cs
- DependencyObject.cs
- InvokeAction.cs
- Message.cs
- FixedSOMContainer.cs
- mansign.cs
- MruCache.cs
- NavigatorInput.cs
- Helpers.cs
- ValidatingPropertiesEventArgs.cs
- SimpleHandlerFactory.cs
- ConfigurationStrings.cs
- DataGridViewLayoutData.cs
- DataQuery.cs
- FormsIdentity.cs
- SQLByteStorage.cs
- GPPOINTF.cs
- PrintPageEvent.cs
- DynamicQueryableWrapper.cs
- IntegerValidator.cs
- SessionPageStateSection.cs
- XmlSchemaType.cs
- XmlConvert.cs
- MailDefinition.cs
- HttpSysSettings.cs
- CommonXSendMessage.cs
- TypedRowHandler.cs
- CompilerInfo.cs
- NativeMethods.cs
- DataTemplateSelector.cs
- CatalogPartChrome.cs
- DataTemplateKey.cs
- SqlTriggerAttribute.cs
- MobileContainerDesigner.cs
- ObjRef.cs
- IdnElement.cs
- EventMappingSettingsCollection.cs
- ConfigXmlSignificantWhitespace.cs
- ServicePrincipalNameElement.cs
- SessionStateSection.cs
- AbstractSvcMapFileLoader.cs
- BindingMAnagerBase.cs
- MSAAWinEventWrap.cs
- IInstanceContextProvider.cs
- Constraint.cs
- XamlParser.cs
- SqlProviderServices.cs
- ListViewInsertionMark.cs
- ReceiveSecurityHeaderElementManager.cs
- ColorKeyFrameCollection.cs
- DataSpaceManager.cs
- PropertyDescriptorCollection.cs
- DependencyPropertyKey.cs
- HttpCacheParams.cs
- ToolStripContentPanelRenderEventArgs.cs
- ModuleBuilder.cs
- DataGridViewImageCell.cs
- DiscoveryVersion.cs
- StrokeCollectionConverter.cs
- SqlCacheDependency.cs
- UdpMessageProperty.cs
- TripleDESCryptoServiceProvider.cs
- DateTimeValueSerializer.cs
- MemoryMappedViewAccessor.cs
- BindingCollection.cs
- Pkcs7Recipient.cs
- FillBehavior.cs
- TransportBindingElementImporter.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- SrgsElementList.cs
- ProfileManager.cs
- ObjectDataSourceFilteringEventArgs.cs
- XmlnsCache.cs
- BitmapCodecInfo.cs
- SelectorAutomationPeer.cs
- PersistenceTypeAttribute.cs
- BCLDebug.cs
- OdbcDataReader.cs
- ChtmlPageAdapter.cs
- IFlowDocumentViewer.cs
- controlskin.cs
- ErrorRuntimeConfig.cs
- SQLMembershipProvider.cs
- OutputCacheProviderCollection.cs
- RawContentTypeMapper.cs
- PeerEndPoint.cs
- WindowVisualStateTracker.cs
- ExtensionDataObject.cs