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
- SafeNativeMethods.cs
- EncryptedType.cs
- SecurityBindingElement.cs
- WebPartManager.cs
- cookie.cs
- SessionEndedEventArgs.cs
- UIElementAutomationPeer.cs
- OleDbSchemaGuid.cs
- designeractionbehavior.cs
- StsCommunicationException.cs
- XmlJsonReader.cs
- tooltip.cs
- CodePrimitiveExpression.cs
- ContextDataSourceView.cs
- ObjectAssociationEndMapping.cs
- StructuredTypeEmitter.cs
- AddingNewEventArgs.cs
- RootDesignerSerializerAttribute.cs
- SqlClientPermission.cs
- EventHandlersStore.cs
- MarkupExtensionParser.cs
- TimelineClockCollection.cs
- DocumentPage.cs
- BitmapEffectCollection.cs
- DateTimeSerializationSection.cs
- ListBoxItemWrapperAutomationPeer.cs
- FormParameter.cs
- FactoryRecord.cs
- FastEncoderWindow.cs
- SmiEventStream.cs
- DockingAttribute.cs
- SQLStringStorage.cs
- WorkflowInstanceQuery.cs
- Image.cs
- SEHException.cs
- BamlRecordWriter.cs
- TraceUtility.cs
- mongolianshape.cs
- IdentityModelDictionary.cs
- templategroup.cs
- WebPartCloseVerb.cs
- WorkflowPageSetupDialog.cs
- CompleteWizardStep.cs
- MetaChildrenColumn.cs
- XmlReturnWriter.cs
- XmlWellformedWriter.cs
- VisualTreeHelper.cs
- MenuItemBinding.cs
- HttpCookieCollection.cs
- XmlStringTable.cs
- PenThreadWorker.cs
- DataGridViewCellConverter.cs
- MatrixTransform.cs
- PointCollectionConverter.cs
- TypefaceCollection.cs
- UIInitializationException.cs
- ThumbAutomationPeer.cs
- FontFamily.cs
- ColorTransformHelper.cs
- CodeExporter.cs
- TextRenderer.cs
- TextEndOfSegment.cs
- UnsafeNativeMethodsPenimc.cs
- DataBoundControlHelper.cs
- itemelement.cs
- SerialErrors.cs
- SqlConnectionStringBuilder.cs
- SplitterEvent.cs
- InstanceLockException.cs
- MouseGesture.cs
- PocoEntityKeyStrategy.cs
- ListViewGroupCollectionEditor.cs
- FlowchartDesigner.xaml.cs
- PageBreakRecord.cs
- HebrewNumber.cs
- dataSvcMapFileLoader.cs
- Pen.cs
- ConnectionStringsSection.cs
- DataIdProcessor.cs
- ClaimComparer.cs
- WebBrowserProgressChangedEventHandler.cs
- EndPoint.cs
- PKCS1MaskGenerationMethod.cs
- VectorCollection.cs
- ObservableDictionary.cs
- MultiAsyncResult.cs
- References.cs
- NamedElement.cs
- Exceptions.cs
- MailMessage.cs
- ComponentConverter.cs
- ZipIOCentralDirectoryFileHeader.cs
- SettingsPropertyWrongTypeException.cs
- ScrollBar.cs
- XslNumber.cs
- NetSectionGroup.cs
- KeyPullup.cs
- TextDecorationUnitValidation.cs
- FormViewRow.cs
- CompositeFontInfo.cs