ADD_LOG.PRG
-----------

This AddIn gives you the ability to add multiple logs, and multiple main dialogs, to the Coverage Standard UI interface.  It demonstrates the fact that the Coverage Engine can work with many sets of source and target tables at once.**  

The Coverage Standard UI subclass and its main and zoom dialogs are not intended to exploit the full depth of functionality in the Coverage Engine superclass and cannot be maintained in multiple instances within the Engine formset. The new Coverage browser dialogs added by this AddIn (one per call to the AddIn) are instances of a rudimentary dialog class written in code in ADD_LOG.PRG, not instances of the same dialog used for the Standard UI's main dialog. 

The additional, simpler dialogs instantiated by this AddIn are Preview mode only (no Zoom window).  You can, however, drag and drop the list and editbox objects to change their relative sizes within the dialog. You can't use the formset context menu by pressing rightclick in this dialog; because the two controls use automatic DragMode, they don't receive the right mouse click.  You can use the keyboard equivalent, Shift-F10, to reach the context menu in this dialog.

These dialogs do not have the standard dialog's tool container and buttons. (You can consider the main dialog's tool container and buttons as global for the Coverage formset.)  The additional dialogs will take their Profile or Coverage mode characteristics from the Engine's mode at the time the AddIn instantiates them.  You can't switch this dialog back and forth between the two modes. On the other hand, you can certainly create multiple instances of this dialog within the Coverage formset, that look at the same log in both modes at once.

It's important to realize that the Engine does not care *how* you display the results of its work, or how many different types of displays you maintain within its single formset.  There is no reason why you couldn't have multiple dialogs within its formset that were as fully-featured as, or more fully-featured than, or completely different from, the standard UI main and zoom dialog pair. That -- rather than the specific dialog UI implemented here -- is the point this AddIn is designed to demonstrate.

** Note: There are actually two other tables involved in the Coverage Engine's main tasks, beyond the source and target tables. One of these, the list of files to ignore while parsing -- presumably the COVERAGE.APP's own file list -- would be the same for *all* your logs.  It does not need to exist in multiple versions.  The other table is the list of files that are skipped because the APP couldn't locate the source file. This table is created on the fly from deleted records in the target table, using the Engine's CreateSkippedCursor() method. The example dialog class in this AddIn does not implement the appropriate call to this method, but such a call -- passing the relevant Target alias -- is left as a (very simple) exercise for the student!