When the Enif project started in the summer of 1999, its design was approached with the following goals in mind:
In the past 15 months most effort went into the development of the general concepts and the basic mechanisms needed for their implementation. These concepts are more important for understanding the ``philosophy'' behind Enif than the details of graphical interface presented to the user on screen.
The basic design of Enif is shown in Figure 1 in the form of a block diagram. The central part of the diagram describes the internal concepts which, as such, are not specific for the graphical user interface, but form the abstract pilers on which Enif is built. This includes the internal representation of the network, the attributes, the expressions and the parameters, which are the basic objects used to build user configurable objects in Enif.
The graphical interface part of Enif is depicted on the right hand side of Figure 1. It is based on an abstract network plane which receives the graphical information generated by a set of mappers using an abstract drawing and a writing tool we call the stylus.
Other functionalities can be based on the foundation provided by Enif, as indicated in the upper left corner of the block diagram. One example of this is the list generator.
The access to the EMME/2 data bank is completely modular and separated from the rest of the Enif code. This implies that accessing network data from other sources than an EMME/2 data bank could be achieved by simply providing the corresponding alternate network I/O modules, should this ever be required.
In the following sections, all these fundamental building blocks of Enif will be discussed in more detail. While reading on, it is a good idea to return back to Figure 1 from time to time. What at the beginning might look like a bunch of empty phrases, will --hopefully!-- after having reached the end of this paper be filled with concrete meaning and serve as a useful summary of the functionality of Enif.
In order to give an idea how Enif presents itself on the screen, a typical Enif window is shown in Figure 2. It shows the zonal productions and attractions colored according to the corresponding mode share of the auto mode.
The main part of the Enif window shows the current view of the network plane. Located above it, the tabbed mapper control dialogs are used to access the configurable parameters of the current plot configuration. At the left side of the window, the view controls can be used to change the current view or to send the current plot to the printer. A menu bar on the top gives access to the various available tools and options, and, finally, the status bar on the very bottom of the window is used to display transient messages.