Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / WinForms / Managed / System / WinForms / Layout / LayoutEngine.cs / 1 / LayoutEngine.cs
//#define LAYOUT_PERFWATCH
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms.Layout {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Drawing;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Security.Permissions;
///
public abstract class LayoutEngine {
internal IArrangedElement CastToArrangedElement(object obj) {
IArrangedElement element = obj as IArrangedElement;
if(obj == null) {
throw new NotSupportedException(SR.GetString(SR.LayoutEngineUnsupportedType, obj.GetType()));
}
return element;
}
internal virtual Size GetPreferredSize(IArrangedElement container, Size proposedConstraints) { return Size.Empty; }
///
public virtual void InitLayout(object child, BoundsSpecified specified) {
InitLayoutCore(CastToArrangedElement(child), specified);
}
internal virtual void InitLayoutCore(IArrangedElement element, BoundsSpecified bounds) {}
internal virtual void ProcessSuspendedLayoutEventArgs(IArrangedElement container, LayoutEventArgs args) {}
#if LAYOUT_PERFWATCH
private static int LayoutWatch = 100;
#endif
///
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")]
public virtual bool Layout(object container, LayoutEventArgs layoutEventArgs) {
#if LAYOUT_PERFWATCH
Debug.WriteLine(container.GetType().Name + "::Layout("
+ (layoutEventArgs.AffectedControl != null ? layoutEventArgs.AffectedControl.Name : "null")
+ ", " + layoutEventArgs.AffectedProperty + ")");
Debug.Indent();
Stopwatch sw = new Stopwatch();
sw.Start();
#endif
bool parentNeedsLayout = LayoutCore(CastToArrangedElement(container), layoutEventArgs);
#if LAYOUT_PERFWATCH
sw.Stop();
if (sw.ElapsedMilliseconds > LayoutWatch && Debugger.IsAttached) {
Debugger.Break();
}
Debug.Unindent();
Debug.WriteLine(container.GetType().Name + "::Layout elapsed " + sw.ElapsedMilliseconds.ToString() + " returned: " + parentNeedsLayout);
#endif
return parentNeedsLayout;
}
internal virtual bool LayoutCore(IArrangedElement container, LayoutEventArgs layoutEventArgs) { return false; }
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//#define LAYOUT_PERFWATCH
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms.Layout {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Drawing;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Security.Permissions;
///
public abstract class LayoutEngine {
internal IArrangedElement CastToArrangedElement(object obj) {
IArrangedElement element = obj as IArrangedElement;
if(obj == null) {
throw new NotSupportedException(SR.GetString(SR.LayoutEngineUnsupportedType, obj.GetType()));
}
return element;
}
internal virtual Size GetPreferredSize(IArrangedElement container, Size proposedConstraints) { return Size.Empty; }
///
public virtual void InitLayout(object child, BoundsSpecified specified) {
InitLayoutCore(CastToArrangedElement(child), specified);
}
internal virtual void InitLayoutCore(IArrangedElement element, BoundsSpecified bounds) {}
internal virtual void ProcessSuspendedLayoutEventArgs(IArrangedElement container, LayoutEventArgs args) {}
#if LAYOUT_PERFWATCH
private static int LayoutWatch = 100;
#endif
///
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")]
public virtual bool Layout(object container, LayoutEventArgs layoutEventArgs) {
#if LAYOUT_PERFWATCH
Debug.WriteLine(container.GetType().Name + "::Layout("
+ (layoutEventArgs.AffectedControl != null ? layoutEventArgs.AffectedControl.Name : "null")
+ ", " + layoutEventArgs.AffectedProperty + ")");
Debug.Indent();
Stopwatch sw = new Stopwatch();
sw.Start();
#endif
bool parentNeedsLayout = LayoutCore(CastToArrangedElement(container), layoutEventArgs);
#if LAYOUT_PERFWATCH
sw.Stop();
if (sw.ElapsedMilliseconds > LayoutWatch && Debugger.IsAttached) {
Debugger.Break();
}
Debug.Unindent();
Debug.WriteLine(container.GetType().Name + "::Layout elapsed " + sw.ElapsedMilliseconds.ToString() + " returned: " + parentNeedsLayout);
#endif
return parentNeedsLayout;
}
internal virtual bool LayoutCore(IArrangedElement container, LayoutEventArgs layoutEventArgs) { return false; }
}
}
// 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
- DataGridViewAccessibleObject.cs
- HandlerBase.cs
- IteratorFilter.cs
- OpCodes.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- DataMemberConverter.cs
- OrderByQueryOptionExpression.cs
- Rules.cs
- unsafenativemethodstextservices.cs
- CompoundFileDeflateTransform.cs
- Validator.cs
- AccessibleObject.cs
- ElementFactory.cs
- TextRunTypographyProperties.cs
- BasicExpressionVisitor.cs
- DataView.cs
- PropertyInformation.cs
- WebEventCodes.cs
- MonthCalendarDesigner.cs
- PropertyOverridesDialog.cs
- Table.cs
- CannotUnloadAppDomainException.cs
- WebPartRestoreVerb.cs
- InputLanguageSource.cs
- XmlBinaryReaderSession.cs
- HtmlLinkAdapter.cs
- UserControlParser.cs
- PageAdapter.cs
- DataViewSetting.cs
- TextFindEngine.cs
- GridLengthConverter.cs
- Empty.cs
- CaretElement.cs
- ISessionStateStore.cs
- SelectionRange.cs
- ProxyWebPart.cs
- TcpTransportElement.cs
- VerticalAlignConverter.cs
- ResourcesBuildProvider.cs
- BookmarkTable.cs
- HelpProvider.cs
- WebPartConnectionsEventArgs.cs
- HWStack.cs
- DrawingAttributeSerializer.cs
- SelectionRangeConverter.cs
- PngBitmapDecoder.cs
- FilterEventArgs.cs
- Soap11ServerProtocol.cs
- DataGridHeaderBorder.cs
- XslAst.cs
- DebugTrace.cs
- FilterQueryOptionExpression.cs
- WindowsImpersonationContext.cs
- ExecutionContext.cs
- DataContext.cs
- TextUtf8RawTextWriter.cs
- SqlCacheDependencySection.cs
- ProjectionAnalyzer.cs
- DependencyPropertyAttribute.cs
- BindingsSection.cs
- DiagnosticsConfigurationHandler.cs
- DataSysAttribute.cs
- ListChangedEventArgs.cs
- EndSelectCardRequest.cs
- RoutingConfiguration.cs
- InstanceStoreQueryResult.cs
- BaseAppDomainProtocolHandler.cs
- PropertyRecord.cs
- NonBatchDirectoryCompiler.cs
- RewritingPass.cs
- Task.cs
- IsolatedStorageException.cs
- LogSwitch.cs
- WorkflowServiceHost.cs
- PriorityRange.cs
- TypeCollectionDesigner.xaml.cs
- BlockCollection.cs
- OpenTypeLayoutCache.cs
- ThicknessConverter.cs
- ValuePattern.cs
- HttpCapabilitiesBase.cs
- SrgsElementFactoryCompiler.cs
- Adorner.cs
- ExpressionNormalizer.cs
- GenerateScriptTypeAttribute.cs
- TraceListener.cs
- XPathScanner.cs
- EventLogger.cs
- ObjectStateManagerMetadata.cs
- ImageUrlEditor.cs
- ModuleBuilder.cs
- HttpCapabilitiesBase.cs
- TableColumn.cs
- _SslSessionsCache.cs
- MethodSignatureGenerator.cs
- BuildProviderAppliesToAttribute.cs
- DataViewSetting.cs
- MouseEvent.cs
- UnsafeNativeMethods.cs
- SpeechDetectedEventArgs.cs