ActivityDesigner Class
TOC
Collapse the table of content
Expand the table of content

ActivityDesigner Class

Provides a mandatory base class for all activity designer components.

Namespace:  System.Workflow.ComponentModel.Design
Assembly:  System.Workflow.ComponentModel (in System.Workflow.ComponentModel.dll)

'Declaration
<ActivityDesignerThemeAttribute(GetType(ActivityDesignerTheme))> _
Public Class ActivityDesigner _
	Implements IDesignerFilter, IToolboxUser, IPersistUIState, IWorkflowRootDesigner,  _
	IRootDesigner, IDesigner, IDisposable
'Usage
Dim instance As ActivityDesigner

All activity designer components derive from ActivityDesigner. The ActivityDesigner provides a simple designer which lets the user visually design activities in the design mode.

ActivityDesigner provides a simple mechanism for the activities so they can participate in rendering the workflow on the design surface.

ActivityDesigner lets the user customize layout and drawing associated with the activity.

ActivityDesigner lets the user extend the metadata associated with the activity.

The following example shows a complete implementation of an ActivityDesigner for a custom activity. The designer has a flag that can be toggled to allow the base class ActivityDesigner to control the painting or to utilize the various methods the ActivityDesignerPaint class to draw the activity.

<ActivityDesignerTheme(GetType(CustomCompositeActivityDesignerTheme))> _
Public Class CustomActivityDesigner
    Inherits ActivityDesigner


    Public Overrides Function CanBeParentedTo(ByVal parentActivityDesigner As CompositeActivityDesigner) As Boolean 
        If parentActivityDesigner.GetType().ToString() = "System.Workflow.Activities.IfElseBranchDesigner" Then 
            Return False 
        End If 
        Return True 
    End Function 

    Private verbsValue As ActivityDesignerVerbCollection = Nothing 

    Protected Overrides ReadOnly Property Verbs() As ActivityDesignerVerbCollection
        Get 
            If verbsValue Is Nothing Then
                CreateActivityVerbs()
            End If 
            Return Me.verbsValue

        End Get 
    End Property 

    Private Sub CreateActivityVerbs()
        Me.verbsValue = New ActivityDesignerVerbCollection()

        Dim addBranchVerb As New ActivityDesignerVerb(Me, DesignerVerbGroup.View, "Add New Parallel Branch", AddressOf OnAddParallelBranch)

        Me.verbsValue.Clear()

        Me.verbsValue.Add(addBranchVerb)
    End Sub 

    Protected Sub OnAddParallelBranch(ByVal sender As Object, ByVal e As EventArgs)
        ' Code for adding a new branch to the parallel activity goes here 
    End Sub 

    Protected Overrides ReadOnly Property ImageRectangle() As Rectangle

        Get 
            Dim Bounds As Rectangle = Me.Bounds
            Dim sz As New Size(24, 24)

            Dim imageRect As New Rectangle()
            imageRect.X = Bounds.Left + ((Bounds.Width - sz.Width) / 2)
            imageRect.Y = Bounds.Top + 4
            imageRect.Size = sz

            Return imageRect
        End Get 
    End Property 

    Protected Overrides ReadOnly Property TextRectangle() As Rectangle
        Get 
            Return New Rectangle( _
                Me.Bounds.Left + 2, _
                 Me.ImageRectangle.Bottom, _
                Me.Bounds.Width - 4, _
                Me.Bounds.Height - Me.ImageRectangle.Height - 1)
        End Get 
    End Property 


    Protected Overrides Sub Initialize(ByVal activity As Activity)

        MyBase.Initialize(activity)
        Dim bmp As Bitmap = Resources.ToolboxImage
        bmp.MakeTransparent()
        Me.Image = bmp
    End Sub 

    Shared ReadOnly BaseSize As New Size(64, 64)
    Protected Overrides Function OnLayoutSize(ByVal e As ActivityDesignerLayoutEventArgs) As Size
        Return BaseSize
    End Function 

    Private expandedValue As Boolean = True 
    Private useBasePaintValue As Boolean = False 

    Public Property UseBasePaint() As Boolean 
        Get 
            Return Me.useBasePaintValue
        End Get 

        Set(ByVal value As Boolean)
            Me.useBasePaintValue = value
        End Set 
    End Property 

    Public Property Expanded() As Boolean 
        Get 
            Return Me.expandedValue
        End Get 
        Set(ByVal value As Boolean)
            Me.expandedValue = value
        End Set 
    End Property 


    Protected Overrides Sub OnPaint(ByVal e As ActivityDesignerPaintEventArgs)
        If Me.UseBasePaint = True Then 
            MyBase.OnPaint(e)
            Return 
        End If

        DrawCustomActivity(e)
    End Sub 

    Private Sub DrawCustomActivity(ByVal e As ActivityDesignerPaintEventArgs)
        Dim graphics As Graphics = e.Graphics

        Dim compositeDesignerTheme As CompositeDesignerTheme = CType(e.DesignerTheme, CompositeDesignerTheme)

        ActivityDesignerPaint.DrawRoundedRectangle(graphics, compositeDesignerTheme.BorderPen, Me.Bounds, compositeDesignerTheme.BorderWidth)

        Dim text As String = Me.Text
        Dim TextRectangle As Rectangle = Me.TextRectangle
        If Not String.IsNullOrEmpty(text) And Not TextRectangle.IsEmpty Then
            ActivityDesignerPaint.DrawText(graphics, compositeDesignerTheme.Font, text, TextRectangle, StringAlignment.Center, e.AmbientTheme.TextQuality, compositeDesignerTheme.ForegroundBrush)
        End If 

        Dim Image As System.Drawing.Image = Me.Image
        Dim ImageRectangle As Rectangle = Me.ImageRectangle
        If Image IsNot Nothing And Not ImageRectangle.IsEmpty Then
            ActivityDesignerPaint.DrawImage(graphics, Image, ImageRectangle, DesignerContentAlignment.Fill)
        End If

        ActivityDesignerPaint.DrawExpandButton(graphics, _
            New Rectangle(Me.Location.X, Me.Location.Y, 10, 10), _
            Me.Expanded, _
            compositeDesignerTheme)
    End Sub 
End Class

System.Object
  System.Workflow.ComponentModel.Design.ActivityDesigner
    System.Workflow.ComponentModel.Design.CompositeActivityDesigner

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0

Community Additions

ADD
Show:
© 2016 Microsoft