XTREE Indexed PopupMenus

An enhancement to XTREE provides support for indexed PopupMenus. These allow for column- and/or row- specific context menus to be assembled by concatenating one or shared partial indexed menus. To accomplish these three new variations of the PopupMenu syntax are introduced:

PopupMenu:?=lbl1,cmd1;lbl2,cmd2;...lblN,cmdN

PopupMenu={+}?{???}

PopupMenu={+}###

where each ? is replaced by an alphabetic character A-Z, and ### is replaced by a column number.

The first variation defines a full or partial menu to be indexed by the letter replacing ?. The definition can be attached as an Advance Coldef Option clause to any column definition (zero column or a real column). Unlike the standard PopupMenu definition syntax, the resulting menu is not automatically invoked; it only becomes available for reference via one of the other syntax options associated with a real column.

The second variation may be associated with a real column, indicating that the context menu for that column should be made up of the previously indexed menus associated with the ? character(s). The optional "+" prefix prepends the global PopupMenu to the start of the column-specific menu. For example:

PopupMenu=+AQZ

indicates that the context menu for the column should be made from the global PopupMenu, combined with the indexed PopupMenus A, Q, and Z.

The third variation indicates that the specified column ### (current row) contains the list of indexed PopupMenus to be used for this column, thus allowing the possibility of a different set of context menu items for each cell. Note that the specified column ### would normally be hidden, but it doesn't have to be.

See the EXLIB sample program XTRA21 for an example.