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
- StringFormat.cs
- RegexCapture.cs
- ApplicationDirectory.cs
- DocumentPageHost.cs
- NamespaceInfo.cs
- CodeEventReferenceExpression.cs
- LicenseProviderAttribute.cs
- AsymmetricSignatureDeformatter.cs
- RsaKeyGen.cs
- _SslSessionsCache.cs
- SecuritySessionFilter.cs
- WebMessageEncodingBindingElement.cs
- DataBoundControlDesigner.cs
- DefaultBinder.cs
- RoleManagerEventArgs.cs
- ContextStack.cs
- ControlCollection.cs
- ConfigPathUtility.cs
- AuthenticationSection.cs
- XmlQualifiedName.cs
- WindowsListViewScroll.cs
- HwndSubclass.cs
- CommonDialog.cs
- ConfigXmlText.cs
- SecurityToken.cs
- Parser.cs
- PageWrapper.cs
- Propagator.Evaluator.cs
- BaseTemplateBuildProvider.cs
- GeometryGroup.cs
- MeasureItemEvent.cs
- TextParaLineResult.cs
- DataBoundControlAdapter.cs
- SharedStatics.cs
- LoaderAllocator.cs
- TypeGeneratedEventArgs.cs
- X509RawDataKeyIdentifierClause.cs
- DesignerActionVerbItem.cs
- AnnotationAuthorChangedEventArgs.cs
- PackageFilter.cs
- TrackBarRenderer.cs
- TraceProvider.cs
- SizeConverter.cs
- CriticalExceptions.cs
- SessionStateSection.cs
- SQLByteStorage.cs
- DataSvcMapFileSerializer.cs
- AvTraceFormat.cs
- cache.cs
- WebPartDeleteVerb.cs
- JavaScriptObjectDeserializer.cs
- TransactionScope.cs
- ListViewGroupCollectionEditor.cs
- EntityDataSourceValidationException.cs
- ObjectMemberMapping.cs
- UniqueTransportManagerRegistration.cs
- RadioButton.cs
- ManagementEventWatcher.cs
- EventLogException.cs
- filewebrequest.cs
- Int32.cs
- HttpModuleActionCollection.cs
- TraceHandler.cs
- RectAnimationClockResource.cs
- RichTextBoxAutomationPeer.cs
- BitmapImage.cs
- TransformBlockRequest.cs
- CapacityStreamGeometryContext.cs
- BidOverLoads.cs
- BmpBitmapDecoder.cs
- ToolStripRenderer.cs
- Binding.cs
- DataStreams.cs
- Process.cs
- SafeRegistryHandle.cs
- IntegerFacetDescriptionElement.cs
- BitmapFrameEncode.cs
- ELinqQueryState.cs
- SqlTypesSchemaImporter.cs
- HttpProfileGroupBase.cs
- SocketManager.cs
- XmlObjectSerializerReadContextComplexJson.cs
- CodeNamespaceImport.cs
- SqlProfileProvider.cs
- FilteredSchemaElementLookUpTable.cs
- GetMemberBinder.cs
- SwitchElementsCollection.cs
- ScriptingSectionGroup.cs
- BinaryFormatterWriter.cs
- LogManagementAsyncResult.cs
- Point3DValueSerializer.cs
- GeneralTransform3DCollection.cs
- SiteMapNode.cs
- SafeRightsManagementQueryHandle.cs
- RepeaterItem.cs
- TextRunProperties.cs
- EdmToObjectNamespaceMap.cs
- BindingCollection.cs
- LookupTables.cs
- WebReferencesBuildProvider.cs