Define Menu Items

Tasks

Task

Detail

Define Menu Items

Menu items are defined by responding to the GetMenuItems event.

The first time this event is called, MenuName is an empty string, representing the top-level menu. For a simple Add-In with just a single menu option you can return a string.

     Function EA_GetMenuItems(Repository as EA.Repository, MenuLocation As String, MenuName As String) As Variant

           EA_GetMenuItems = "&Joe's Add-In"

     End Function

Define Sub-Menus

To define sub-menus, prefix a parent menu with a dash. Parent and sub-items are defined like this:

Function EA_GetMenuItems(Repository as EA.Repository, MenuLocation As String, MenuName As String) As Variant

      Select Case MenuName

      Case ""

            'Parent Menu Item

            EA_GetMenuItems = "-&Joe's Add-In"

      Case "-&Joe's Add-In"

            'Define Sub-Menu Items using the Array notation.

            'In this example, "Diagram" and "Treeview" compose the "Joe's Add-In" sub-menu.

            EA_GetMenuItems = Array("&Diagram", "&Treeview")

      Case Else

            MsgBox "Invalid Menu", vbCritical

      End Select

End Function

Define Further Sub-Menus

Similarly, you can define further sub-items:

Function EA_GetMenuItems(Repository as EA.Repository, MenuLocation As String, MenuName As String) As Variant

      Select Case MenuName

      Case ""

            EA_GetMenuItems = "-Joe's Add-In"

      Case "-Joe's Add-In"

            EA_GetMenuItems = Array("-&Diagram", "&TreeView")

      Case "-&Diagram"

            EA_GetMenuItems = "&Properties"

      Case Else

            MsgBox "Invalid Menu", vbCritical

      End Select

End Function

Enable/Disable menu options

To enable or disable menu options by default, you can use this method to show particular items to the user:

Sub EA_GetMenuState(Repository As EA.Repository, Location As String, MenuName As String, ItemName As String, IsEnabled As Boolean, IsChecked As Boolean)

      Select Case Location

      Case "TreeView"

            'Always enable

      Case "Diagram"

            'Always enable

      Case "MainMenu"

            Select Case ItemName

            Case "&Translate", "Save &Project"

                  If GetIsProjectSelected() Then

                        IsEnabled = False

                  End If

            End Select

      End Select

      IsChecked = GetIsCurrentSelection()

End Sub