Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / Workflow / ComponentModel / Design / DesignerPainter.cs / 1305376 / DesignerPainter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Workflow.ComponentModel.Design { using System; using System.Collections.Generic; using System.Text; using System.Workflow.ComponentModel.Design; using System.Windows.Forms; using System.Reflection; using System.Drawing; using System.Diagnostics; using System.ServiceModel; //// This is a helper class with static methods that dont fit anywhere but are useful in general // internal static class DesignerPainter { public static CompositeActivityDesigner GetRootDesigner(ActivityDesigner designer) { if (designer == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("designer"); } CompositeActivityDesigner rootDesigner = designer.ParentDesigner; while (!rootDesigner.IsRootDesigner && rootDesigner.ParentDesigner != null) { rootDesigner = rootDesigner.ParentDesigner; } return rootDesigner; } public static void PaintDesigner(ActivityDesigner activityDesigner, ActivityDesignerPaintEventArgs eventArgs) { if (activityDesigner == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("activityDesigner"); } if (eventArgs == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("eventArgs"); } ActivityDesigner parentDesigner = activityDesigner.ParentDesigner; if (parentDesigner == null) { // This designer is no more on the design surface , dont paint this. return; } if (!IsBranchVisible(activityDesigner)) { return; } // special case designers contained inside activity preview designers ( only one of the contained designers is shown) bool visible = false; if (IsInsidePreviewDesignerBranch(activityDesigner, out visible)) { if (visible) { PaintDesignerInternal(activityDesigner, eventArgs); } } else { PaintDesignerInternal(activityDesigner, eventArgs); } } private static bool IsBranchVisible(ActivityDesigner activityDesigner) { ActivityDesigner currentDesigner = activityDesigner; ActivityDesigner parentDesigner = activityDesigner.ParentDesigner; while (!currentDesigner.IsRootDesigner) { if (!((CompositeActivityDesigner) parentDesigner).ContainedDesigners.Contains(currentDesigner)) { return false; } else { currentDesigner = parentDesigner; parentDesigner = parentDesigner.ParentDesigner; } } return true; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] // The above suppression is required because, the parentDesigner object is changeing inside the loop and it is // not possible to cache the result of the cast as suggested by FxCop private static bool IsInsidePreviewDesignerBranch(ActivityDesigner activityDesigner, out bool visible) { visible = false; ActivityDesigner currentDesigner = activityDesigner; ActivityDesigner parentDesigner = activityDesigner.ParentDesigner; while (!currentDesigner.IsRootDesigner) { if (parentDesigner is ActivityPreviewDesigner) { break; } else { currentDesigner = parentDesigner; parentDesigner = parentDesigner.ParentDesigner; } } if (parentDesigner is ActivityPreviewDesigner) { if (((ActivityPreviewDesigner) parentDesigner).IsContainedDesignerVisible(currentDesigner)) { visible = true; } return true; } return false; } private static void PaintDesignerInternal(ActivityDesigner activityDesigner, ActivityDesignerPaintEventArgs eventArgs) { IWorkflowDesignerMessageSink sink = (IWorkflowDesignerMessageSink) activityDesigner; sink.OnPaint(new PaintEventArgs(eventArgs.Graphics, eventArgs.ClipRectangle), eventArgs.ClipRectangle); } } } // 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
- ContextBase.cs
- ReadOnlyHierarchicalDataSourceView.cs
- AssociatedControlConverter.cs
- SingleResultAttribute.cs
- CodeGenerationManager.cs
- MatchNoneMessageFilter.cs
- ResourcePermissionBaseEntry.cs
- MobileTemplatedControlDesigner.cs
- CollectionViewGroupRoot.cs
- IApplicationTrustManager.cs
- Single.cs
- FunctionCommandText.cs
- BinaryNode.cs
- NamespaceList.cs
- BinaryWriter.cs
- BamlLocalizationDictionary.cs
- Matrix3D.cs
- PathSegment.cs
- PointAnimationUsingKeyFrames.cs
- NetNamedPipeSecurityElement.cs
- CombinedHttpChannel.cs
- IntermediatePolicyValidator.cs
- ByteKeyFrameCollection.cs
- DBDataPermissionAttribute.cs
- HiddenField.cs
- XmlDataProvider.cs
- TypedRowHandler.cs
- EventListenerClientSide.cs
- OpenFileDialog.cs
- CodeGotoStatement.cs
- PartialTrustVisibleAssembly.cs
- HtmlInputRadioButton.cs
- XmlTextEncoder.cs
- FormViewCommandEventArgs.cs
- CodeMemberField.cs
- WindowsListViewSubItem.cs
- Int16Converter.cs
- CodeTypeDeclaration.cs
- SkinBuilder.cs
- XmlSchemaInferenceException.cs
- GradientBrush.cs
- SecurityContextTokenValidationException.cs
- DefaultObjectMappingItemCollection.cs
- DummyDataSource.cs
- SinglePhaseEnlistment.cs
- Message.cs
- HtmlForm.cs
- GeneralTransform.cs
- ListViewDataItem.cs
- Parser.cs
- CommonProperties.cs
- ReadOnlyObservableCollection.cs
- HostingEnvironmentSection.cs
- CodeTypeReference.cs
- LZCodec.cs
- QilUnary.cs
- ElementHost.cs
- ViewCellRelation.cs
- BufferedGraphics.cs
- TileModeValidation.cs
- NavigatorInput.cs
- NavigationEventArgs.cs
- CacheDependency.cs
- COM2ColorConverter.cs
- PtsHelper.cs
- ClientClassGenerator.cs
- SspiNegotiationTokenProvider.cs
- DomainConstraint.cs
- LicenseException.cs
- ReachDocumentPageSerializer.cs
- TreeView.cs
- FormViewPageEventArgs.cs
- SafeReadContext.cs
- AppDomainManager.cs
- xmlglyphRunInfo.cs
- ClassValidator.cs
- PropertyGridView.cs
- Hash.cs
- KeyFrames.cs
- WsatServiceCertificate.cs
- DependencySource.cs
- ObjectDisposedException.cs
- XhtmlConformanceSection.cs
- GeneralTransform.cs
- HwndSourceKeyboardInputSite.cs
- HtmlAnchor.cs
- PackageFilter.cs
- KeyGestureConverter.cs
- FormatVersion.cs
- ObservableDictionary.cs
- altserialization.cs
- SoapCodeExporter.cs
- XmlSchemaValidator.cs
- ManagementOptions.cs
- DataControlLinkButton.cs
- SqlDataSource.cs
- xmlsaver.cs
- DictionaryContent.cs
- BooleanSwitch.cs
- EntityChangedParams.cs