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
- CompoundFileStreamReference.cs
- Attribute.cs
- SchemaDeclBase.cs
- CacheVirtualItemsEvent.cs
- TreeNode.cs
- TraceListeners.cs
- ToolStripDropDownDesigner.cs
- RSAOAEPKeyExchangeFormatter.cs
- Calendar.cs
- StackOverflowException.cs
- OracleNumber.cs
- SystemResourceKey.cs
- DbConnectionStringCommon.cs
- ClientUtils.cs
- DataObjectEventArgs.cs
- Attributes.cs
- GeneralTransformCollection.cs
- CancellableEnumerable.cs
- LogSwitch.cs
- CodeDomSerializer.cs
- PersistenceMetadataNamespace.cs
- XsdDateTime.cs
- EventHandlersStore.cs
- MTConfigUtil.cs
- SqlGatherConsumedAliases.cs
- AttributeData.cs
- DataGridViewColumnCollection.cs
- QilPatternVisitor.cs
- ExtentJoinTreeNode.cs
- ByteStorage.cs
- SocketInformation.cs
- DropDownList.cs
- XhtmlBasicImageAdapter.cs
- EventItfInfo.cs
- TraceHandlerErrorFormatter.cs
- SpeechSeg.cs
- Errors.cs
- DetailsView.cs
- BrowserCapabilitiesCompiler.cs
- ToggleProviderWrapper.cs
- ButtonField.cs
- CompensateDesigner.cs
- WinFormsSecurity.cs
- ExtractorMetadata.cs
- ButtonPopupAdapter.cs
- GeometryConverter.cs
- ScrollPattern.cs
- HMACSHA384.cs
- VirtualDirectoryMappingCollection.cs
- DataGridPagerStyle.cs
- CodeCompiler.cs
- UriTemplateEquivalenceComparer.cs
- ListBoxChrome.cs
- ContractDescription.cs
- SingleObjectCollection.cs
- TabPageDesigner.cs
- WebServiceTypeData.cs
- TreeNodeConverter.cs
- SynchronousChannel.cs
- SettingsBindableAttribute.cs
- ByteAnimationBase.cs
- EntryPointNotFoundException.cs
- HtmlHistory.cs
- ListBoxAutomationPeer.cs
- TabletCollection.cs
- Parameter.cs
- EntityProviderServices.cs
- WebRequestModulesSection.cs
- TreeViewImageIndexConverter.cs
- StickyNoteContentControl.cs
- EditorBrowsableAttribute.cs
- ApplicationProxyInternal.cs
- CharAnimationUsingKeyFrames.cs
- PersonalizationAdministration.cs
- ComponentRenameEvent.cs
- SiteMapNodeCollection.cs
- XamlReader.cs
- PointHitTestResult.cs
- HasActivatableWorkflowEvent.cs
- Interfaces.cs
- Attributes.cs
- GridViewCommandEventArgs.cs
- XPathNodePointer.cs
- InputLanguageCollection.cs
- ChannelParameterCollection.cs
- HttpWebRequest.cs
- SqlVersion.cs
- DBPropSet.cs
- Tuple.cs
- QuaternionAnimation.cs
- XmlSortKey.cs
- ArrayList.cs
- NavigationHelper.cs
- Cast.cs
- TextSpanModifier.cs
- FontEditor.cs
- StreamUpdate.cs
- HtmlUtf8RawTextWriter.cs
- PropertyChangeTracker.cs
- NTAccount.cs