Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / ToolStripRendererSwitcher.cs / 1305376 / 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
- AsyncOperation.cs
- WebPartChrome.cs
- VisualTransition.cs
- LogicalExpressionEditor.cs
- LogStream.cs
- VerificationException.cs
- SecurityTokenValidationException.cs
- FocusChangedEventArgs.cs
- SlotInfo.cs
- Mutex.cs
- RedBlackList.cs
- _NetworkingPerfCounters.cs
- SqlNamer.cs
- CollectionsUtil.cs
- ListViewItem.cs
- NetworkCredential.cs
- AdornerHitTestResult.cs
- Visual3D.cs
- XmlMapping.cs
- MSAANativeProvider.cs
- FilteredXmlReader.cs
- Expression.cs
- XmlSerializableServices.cs
- Bits.cs
- Rotation3D.cs
- SoundPlayerAction.cs
- RightsManagementResourceHelper.cs
- RectAnimation.cs
- UrlMappingsSection.cs
- SimpleExpression.cs
- IteratorDescriptor.cs
- ListenerAdapterBase.cs
- DiagnosticsConfiguration.cs
- TextShapeableCharacters.cs
- TextEffectResolver.cs
- TextServicesCompartment.cs
- PcmConverter.cs
- DocumentOrderComparer.cs
- Grid.cs
- ReferencedType.cs
- TemplateFactory.cs
- StringKeyFrameCollection.cs
- FixedSOMPageConstructor.cs
- CodeBlockBuilder.cs
- UnauthorizedWebPart.cs
- FontInfo.cs
- TextEndOfParagraph.cs
- UnsafeNetInfoNativeMethods.cs
- HeaderCollection.cs
- PatternMatcher.cs
- ConfigurationElementCollection.cs
- DesignSurfaceCollection.cs
- QilGeneratorEnv.cs
- BorderGapMaskConverter.cs
- TrustManagerMoreInformation.cs
- Knowncolors.cs
- X509Certificate2Collection.cs
- Transform.cs
- SessionParameter.cs
- WeakRefEnumerator.cs
- LinkTarget.cs
- MatchingStyle.cs
- SRGSCompiler.cs
- DataObjectPastingEventArgs.cs
- ClientConvert.cs
- ContextMenu.cs
- DataControlButton.cs
- PostBackOptions.cs
- CultureSpecificCharacterBufferRange.cs
- BindingElementExtensionElement.cs
- HandleCollector.cs
- WsdlWriter.cs
- AdRotator.cs
- _SecureChannel.cs
- CryptoConfig.cs
- SchemaCreator.cs
- PerfCounterSection.cs
- sqlinternaltransaction.cs
- HtmlInputCheckBox.cs
- DocumentPageViewAutomationPeer.cs
- DataGridClipboardCellContent.cs
- HandleScope.cs
- MiniParameterInfo.cs
- WSUtilitySpecificationVersion.cs
- SafeFileMappingHandle.cs
- SvcMapFileLoader.cs
- UniqueConstraint.cs
- OleDbWrapper.cs
- RuntimeConfig.cs
- EventSinkHelperWriter.cs
- XmlNamespaceManager.cs
- SmiEventSink_Default.cs
- MasterPageCodeDomTreeGenerator.cs
- SQlBooleanStorage.cs
- CodeTypeMember.cs
- TableLayoutStyle.cs
- DateTimePickerDesigner.cs
- SystemIcmpV6Statistics.cs
- CompleteWizardStep.cs
- Scanner.cs