# The MenuBtnVBT interface

A `MenuBtnVBT.T` is a button suitable for the items in pop-up and pull-down menus.

When the cursor rolls into a menu button, the `pre` method is called and the button is readied. If it receives a mouse transition of type `LastUp` while it is readied, the `action` and `post` methods are called. The `cancel` method is called if the cursor leaves the button or the user chords with the mouse while the button is readied .

    INTERFACE MenuBtnVBT;

    IMPORT ButtonVBT, VBT;

    TYPE T <: ButtonVBT.T;

The call `v.init(ch, action, ref)` initializes `v` as a menu button with child `ch` and action procedure `action`, and adds `ref` to `v`'s property set if it is not `NIL`.

    PROCEDURE New(
      ch: VBT.T; action: ButtonVBT.Proc;
      ref: REFANY := NIL): T; <* LL.sup = VBT.mu *>

`New(...)` is equivalent to `NEW(T).init(...)`.

    PROCEDURE TextItem(
      name: TEXT; action: ButtonVBT.Proc;
      ref: REFANY := NIL): T; <* LL.sup = VBT.mu *>

Return a menu button that displays the text `name`.

`TextItem` is a convenience procedure for making a menu button with a `TextVBT` child. The borders are initialized to make the button suitable for stacking into a menu using a vertical `HVSplit`. More precisely, `TextItem` is equivalent to:

     New(TextVBT.New(name, 0.0, 0.5, 3.0, 0.5),
         action, ref)

    END MenuBtnVBT.