Creating a menu bar and pull-down menu using simple menu protocol
          The following code creates a window with a menu bar containing the menu illustrated at right. Simple menu creation methods are used. 
          | shell main menuBar fileMenu |
          shell := CwTopLevelShell
             createApplicationShell: 'shell'
             argBlock: [:w | 
                w title: 'Pull-down Menu Example'].
           main := shell
             createMainWindow: 'main'
             argBlock: nil.
          main manageChild.
          "A simple menu bar is created as a child of the main window.
           The label for the button and its mnemonic is specified. In a
           menu bar, all items are cascade buttons, so the buttonType
           resource need not be explicitly set."
          menuBar := main
             createSimpleMenuBar: 'bar'
             argBlock: [:w |
                w
                   buttons: #('File');
                   buttonMnemonics: #($F)].
          menuBar manageChild.
           
          fileMenu := menuBar
          "A simple pull-down menu is created as a child of the menu bar."
             createSimplePulldownMenu: 'file'
             argBlock: [:w |
                w
                   buttons: #('Open' 'separator' 'Close');
                   buttonType: (Array
          "Two normal items and a separator are specified"
                      with: XmPUSHBUTTON
                      with: XmSEPARATOR
                      with: XmPUSHBUTTON);
                   buttonMnemonics: (Array
                      with: $O
                      with: 0 asCharacter
                      with: $C);
          "The menu is attached to (dropped down from) the first 
          (0th) item i the menu bar: the File cascade button."
                   postFromButton: 0].
          fileMenu
          "A simple callback runs whenever an item is selected from the File menu."
             addCallback: XmNsimpleCallback
             receiver: self
             selector: #fileMenu:clientData:callData:
             clientData: nil.
           
          main
             setAreas: menuBar
             horizontalScrollbar: nil
             verticalScrollbar: nil
             workRegion: nil.
           
          shell realizeWidget.
           
          
          The simpleCallback callback used by the code is shown below. 
          fileMenu: widget clientData: clientData callData: callData
             "Execute the desired operation."
           
             self perform: (#(#doOpen #doClose) at: clientData + 1).
         
        
          Last modified date: 04/18/2020