Επεξεργασία

Κοινή χρήση μέσω


WorkflowMenuCommands Class

Definition

Caution

The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*

Defines a set of CommandID fields that each corresponds to a command function provided by the workflow designers. This class cannot be inherited.

public ref class WorkflowMenuCommands sealed : System::ComponentModel::Design::StandardCommands
public sealed class WorkflowMenuCommands : System.ComponentModel.Design.StandardCommands
[System.Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
public sealed class WorkflowMenuCommands : System.ComponentModel.Design.StandardCommands
type WorkflowMenuCommands = class
    inherit StandardCommands
[<System.Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")>]
type WorkflowMenuCommands = class
    inherit StandardCommands
Public NotInheritable Class WorkflowMenuCommands
Inherits StandardCommands
Inheritance
WorkflowMenuCommands
Attributes

Examples

The following example demonstrates how to create a custom MenuCommandService. In this example, a context menu is created when the ShowContextMenu is called. In the GetSelectionMenuItems method, the WorkflowMenuCommands class is utilized to associate the proper menu commands provided by the workflow designer with their corresponding text. When this is finished, an event handler is associated with each command so that when the command is selected, the appropriate MenuCommand is invoked.

internal sealed class WorkflowMenuCommandService : MenuCommandService
{
    public WorkflowMenuCommandService(IServiceProvider serviceProvider)
        : base(serviceProvider)
    {
    }

    public override void ShowContextMenu(CommandID menuID, int x, int y)
    {
        if (menuID == WorkflowMenuCommands.SelectionMenu)
        {
            ContextMenu contextMenu = new ContextMenu();

            foreach (DesignerVerb verb in Verbs)
            {
                MenuItem menuItem = new MenuItem(verb.Text, new EventHandler(OnMenuClicked));
                menuItem.Tag = verb;
                contextMenu.MenuItems.Add(menuItem);
            }

            MenuItem[] items = GetSelectionMenuItems();
            if (items.Length > 0)
            {
                contextMenu.MenuItems.Add(new MenuItem("-"));
                foreach (MenuItem item in items)
                    contextMenu.MenuItems.Add(item);
            }

            WorkflowView workflowView = GetService(typeof(WorkflowView)) as WorkflowView;
            if (workflowView != null)
                contextMenu.Show(workflowView, workflowView.PointToClient(new Point(x, y)));
        }
    }

    private MenuItem[] GetSelectionMenuItems()
    {
        List<MenuItem> menuItems = new List<MenuItem>();

        bool addMenuItems = true;
        ISelectionService selectionService = GetService(typeof(ISelectionService)) as ISelectionService;
        if (selectionService != null)
        {
            foreach (object obj in selectionService.GetSelectedComponents())
            {
                if (!(obj is Activity))
                {
                    addMenuItems = false;
                    break;
                }
            }
        }

        if (addMenuItems)
        {
            Dictionary<CommandID, string> selectionCommands = new Dictionary<CommandID, string>();
            selectionCommands.Add(WorkflowMenuCommands.Cut, "Cut");
            selectionCommands.Add(WorkflowMenuCommands.Copy, "Copy");
            selectionCommands.Add(WorkflowMenuCommands.Paste, "Paste");
            selectionCommands.Add(WorkflowMenuCommands.Delete, "Delete");
            selectionCommands.Add(WorkflowMenuCommands.Collapse, "Collapse");
            selectionCommands.Add(WorkflowMenuCommands.Expand, "Expand");
            selectionCommands.Add(WorkflowMenuCommands.Disable, "Disable");
            selectionCommands.Add(WorkflowMenuCommands.Enable, "Enable");

            foreach (CommandID id in selectionCommands.Keys)
            {
                MenuCommand command = FindCommand(id);
                if (command != null)
                {
                    MenuItem menuItem = new MenuItem(selectionCommands[id], new EventHandler(OnMenuClicked));
                    menuItem.Tag = command;
                    menuItems.Add(menuItem);
                }
            }
        }

        return menuItems.ToArray();
    }

    private void OnMenuClicked(object sender, EventArgs e)
    {
        MenuItem menuItem = sender as MenuItem;
        if (menuItem != null && menuItem.Tag is MenuCommand)
        {
            MenuCommand command = menuItem.Tag as MenuCommand;
            command.Invoke();
        }
    }
}
Friend NotInheritable Class WorkflowMenuCommandService
    Inherits MenuCommandService
    Public Sub New(ByVal serviceProvider As IServiceProvider)
        MyBase.new(serviceProvider)
    End Sub
    Public Overrides Sub ShowContextMenu(ByVal menuID As CommandID, ByVal x As Integer, ByVal y As Integer)

        If menuID.ID = WorkflowMenuCommands.SelectionMenu.ID Then
            Dim contextMenu As New ContextMenu()

            For Each verb As DesignerVerb In Verbs
                Dim MenuItem As New MenuItem(verb.Text, AddressOf OnMenuClicked)
                MenuItem.Tag = verb
                contextMenu.MenuItems.Add(MenuItem)
            Next

            Dim items As MenuItem() = GetSelectionMenuItems()
            If (items.Length > 0) Then

                contextMenu.MenuItems.Add(New MenuItem("-"))
                For Each item As MenuItem In items
                    contextMenu.MenuItems.Add(item)
                Next

                Dim workflowView As WorkflowView = CType(GetService(GetType(WorkflowView)), WorkflowView)
                If workflowView Is Nothing Then
                    contextMenu.Show(workflowView, workflowView.PointToClient(New Point(x, y)))
                End If
            End If
        End If
    End Sub

    Private Function GetSelectionMenuItems() As MenuItem()

        Dim menuItems As New List(Of MenuItem)()

        Dim addMenuItems As Boolean = True
        Dim selectionService As ISelectionService = CType(GetService(GetType(ISelectionService)), ISelectionService)
        If selectionService IsNot Nothing Then

            For Each obj As Object In selectionService.GetSelectedComponents()
                If Not TypeOf obj Is Activity Then
                    addMenuItems = False
                    Exit For
                End If
            Next
        End If


        If (addMenuItems) Then

            Dim selectionCommands As New Dictionary(Of CommandID, String)()
            selectionCommands.Add(WorkflowMenuCommands.Cut, "Cut")
            selectionCommands.Add(WorkflowMenuCommands.Copy, "Copy")
            selectionCommands.Add(WorkflowMenuCommands.Paste, "Paste")
            selectionCommands.Add(WorkflowMenuCommands.Delete, "Delete")
            selectionCommands.Add(WorkflowMenuCommands.Collapse, "Collapse")
            selectionCommands.Add(WorkflowMenuCommands.Expand, "Expand")
            selectionCommands.Add(WorkflowMenuCommands.Disable, "Disable")
            selectionCommands.Add(WorkflowMenuCommands.Enable, "Enable")

            For Each id As CommandID In selectionCommands.Keys

                Dim command As MenuCommand = FindCommand(id)
                If command IsNot Nothing Then
                    Dim menuItem As New MenuItem(selectionCommands(id), AddressOf OnMenuClicked)
                    menuItem.Tag = command
                    menuItems.Add(menuItem)
                End If
            Next
        End If

        Return menuItems.ToArray()
    End Function

    Private Sub OnMenuClicked(ByVal sender As Object, ByVal e As EventArgs)

        Dim menuItem As MenuItem = CType(sender, MenuItem)
        If menuItem IsNot Nothing And TypeOf menuItem.Tag Is MenuCommand Then
            Dim command As MenuCommand = CType(menuItem.Tag, MenuCommand)
            command.Invoke()
        End If
    End Sub
End Class

To enable this service, call the AddService method of the LoaderHost property in a WorkflowDesignerLoader class as shown in the following example.

protected override void Initialize()
{
    base.Initialize();

    IDesignerLoaderHost host = this.LoaderHost;
    if (host != null)
    {
        host.RemoveService(typeof(IIdentifierCreationService));
        host.AddService(typeof(IIdentifierCreationService), new IdentifierCreationService(host));
        host.AddService(typeof(IMenuCommandService), new WorkflowMenuCommandService(host));
        host.AddService(typeof(IToolboxService), new Toolbox(host));
        TypeProvider typeProvider = new TypeProvider(host);
        typeProvider.AddAssemblyReference(typeof(string).Assembly.Location);
        host.AddService(typeof(ITypeProvider), typeProvider, true);
        host.AddService(typeof(IEventBindingService), new EventBindingService());
    }
}
Protected Overrides Sub Initialize()
    MyBase.Initialize()

    Dim host As IDesignerLoaderHost = Me.LoaderHost
    If host IsNot Nothing Then
        host.RemoveService(GetType(IIdentifierCreationService))
        host.AddService(GetType(IIdentifierCreationService), New IdentifierCreationService(host))
        host.AddService(GetType(IMenuCommandService), New WorkflowMenuCommandService(host))
        host.AddService(GetType(IToolboxService), New Toolbox(host))
        Dim typeProvider As New TypeProvider(host)
        typeProvider.AddAssemblyReference(GetType(String).Assembly.Location)
        host.AddService(GetType(ITypeProvider), typeProvider, True)
        host.AddService(GetType(IEventBindingService), New EventBindingService())
    End If
End Sub

Remarks

Note

This material discusses types and namespaces that are obsolete. For more information, see Deprecated Types in Windows Workflow Foundation 4.5.

WorkflowMenuCommands contains a set of CommandID fields that can be used to specify a command to link when adding a command using the AddCommand method of the IMenuCommandService.

Constructors

WorkflowMenuCommands()

Initializes a new instance of the WorkflowMenuCommands class.

Fields

BreakpointActionMenu

Gets the CommandID for the breakpoint action menu. This field is read-only.

BreakpointConditionMenu

Gets the CommandID for the breakpoint condition menu. This field is read-only.

BreakpointConstraintsMenu

Gets the CommandID for the breakpoint constraints menu. This field is read-only.

BreakpointHitCountMenu

Gets the CommandID for the breakpoint hit count menu. This field is read-only.

BreakpointLocationMenu

Gets the CommandID for the breakpoint location menu. This field is read-only.

ChangeTheme

Gets the CommandID for the change theme menu. This field is read-only.

ClearBreakpointsMenu

A CommandID that can be used to access the clear breakpoints menu. This field is read-only.

Collapse

A CommandID that can be used to access the collapse menu. This field is read-only.

CopyToClipboard

A CommandID that can be used to access the copy menu. This field is read-only.

CreateTheme

A CommandID that can be used to access the create theme menu. This field is read-only.

DebugCommandSetId

Provides a unique identifier for the debug command set. This field is read-only.

DebugStepBranchMenu

A CommandID that can be used to access the debug step branch menu. This field is read-only.

DebugStepInstanceMenu

A CommandID that can be used to access the debug step instance menu. This field is read-only.

DebugWorkflowGroupId

Provides a unique identifier for the debug workflow group of menus. This field is read-only.

DefaultFilter

A CommandID that can be used to access the default filter menu. This field is read-only.

DefaultPage

A CommandID that can be used to access the default page menu. This field is read-only.

DesignerActionsMenu

A CommandID that can be used to access the designer actions menu. This field is read-only.

DesignerProperties

A CommandID that can be used to access the designer properties menu. This field is read-only.

Disable

A CommandID that can be used to access the disable menu. This field is read-only.

Enable

A CommandID that can be used to access the enable menu. This field is read-only.

EnableBreakpointMenu

A CommandID that can be used to access the enable breakpoint menu. This field is read-only.

ExecutionStateMenu

A CommandID that can be used to access the execution state menu. This field is read-only.

Expand

A CommandID that can be used to access the expand menu. This field is read-only.

FirstZoomCommand

A CommandID that can be used to access the zoom first menu. This field is read-only.

GotoDisassemblyMenu

A CommandID that can be used to access the goto disassembly menu. This field is read-only.

InsertBreakpointMenu

A CommandID that can be used to access the insert breakpoint menu. This field is read-only.

InsertTracePointMenu

A CommandID that can be used to access the insert tracepoint menu. This field is read-only.

LastZoomCommand

A CommandID that can be used to access the zoom last menu. This field is read-only.

MenuGuid

Provides a unique identifier for the menu. This field is read-only.

NewDataBreakpointMenu

A CommandID that can be used to access the new data breakpoint menu. This field is read-only.

NewFileTracePointMenu

A CommandID that can be used to access the new file tracepoint menu. This field is read-only.

PageDown

A CommandID that can be used to access the PageDown menu. This field is read-only.

PageLayoutMenu

A CommandID that can be used to access the page layout menu. This field is read-only.

PageSetup

A CommandID that can be used to access the page setup menu. This field is read-only.

PageUp

A CommandID that can be used to access the PageUp menu. This field is read-only.

Pan

A CommandID that can be used to access the pan menu. This field is read-only.

PanMenu

A CommandID that can be used to access the pan menu. This field is read-only.

Print

A CommandID that can be used to access the print menu. This field is read-only.

PrintPreview

A CommandID that can be used to access the print preview menu. This field is read-only.

PrintPreviewPage

A CommandID that can be used to access the print preview page menu. This field is read-only.

RunToCursorMenu

A CommandID that can be used to access the run to cursor menu. This field is read-only.

SaveAsImage

A CommandID that can be used to access the save as image menu. This field is read-only.

SelectionMenu

A CommandID that can be used to access the selection menu. This field is read-only.

SetNextStatementMenu

A CommandID that can be used to access the set next statement menu. This field is read-only.

ShowAll

A CommandID that can be used to access the show all menu. This field is read-only.

ShowNextStatementMenu

A CommandID that can be used to access the show next statement menu. This field is read-only.

ToggleBreakpointMenu

A CommandID that can be used to access the toggle breakpoint menu. This field is read-only.

VerbGroupActions

A CommandID that can be used to access the verb group actions menu. This field is read-only.

VerbGroupDesignerActions

A CommandID that can be used to access the verb group designer actions menu. This field is read-only.

VerbGroupEdit

A CommandID that can be used to access the edit verb group menu. This field is read-only.

VerbGroupGeneral

A CommandID that can be used to access the general verb group menu. This field is read-only.

VerbGroupMisc

A CommandID that can be used to access the miscellaneous verb group menu. This field is read-only.

VerbGroupOptions

A CommandID that can be used to access the options verb group menu. This field is read-only.

VerbGroupView

A CommandID that can be used to access the view verb group menu. This field is read-only.

WorkflowCommandSetId

Provides a unique identifier for the workflow command set. This field is read-only.

WorkflowToolBar

A CommandID that can be used to access the workflow toolbar menu. This field is read-only.

Zoom100Mode

A CommandID that can be used to access the zoom 100% menu. This field is read-only.

Zoom150Mode

A CommandID that can be used to access the zoom 150% menu. This field is read-only.

Zoom200Mode

A CommandID that can be used to access the zoom 200% menu. This field is read-only.

Zoom300Mode

A CommandID that can be used to access the zoom 300% menu. This field is read-only.

Zoom400Mode

A CommandID that can be used to access the zoom 400% menu. This field is read-only.

Zoom50Mode

A CommandID that can be used to access the zoom 50% menu. This field is read-only.

Zoom75Mode

A CommandID that can be used to access the zoom 75% menu. This field is read-only.

ZoomIn

A CommandID that can be used to access the zoom in menu. This field is read-only.

ZoomLevelCombo

A CommandID that can be used to access the zoom level combo menu. This field is read-only.

ZoomLevelListHandler

A CommandID that can be used to access the zoom level list handler menu. This field is read-only.

ZoomMenu

A CommandID that can be used to access the zoom menu. This field is read-only.

ZoomOut

A CommandID that can be used to access the zoom out menu. This field is read-only.

Methods

Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
ToString()

Returns a string that represents the current object.

(Inherited from Object)

Applies to