Software Organization
The design of JObserve is divided along several lines.
In order to potentially support multiple telescopes, generic operations
which are presumed to apply to any telescope are separated from those
which are specific to a given telescope.
This is accomplished using generic virtual base classes for
Telescope
and
Scan
; all actual instantiation is done of a derived specific
class, e.g.
VLATelescope
or
VLAScan
.
The second line of division is between the manipulation of the
schedule and the GUI user interface.
This allows for possible changes in the user interface and/or the
inner scheduling mechanisms with minimal impact on the other.
The major reason that the previous VLA observe program was abandoned
was that the scheduling mechanisms were too intertwined with the
display to allow an upgrade of the display as computer technology
changed.
However, much of the design of JObserve is inherited from the older
program.
The Java package (directory) structure is shown in the following.

|
The structure of the packages used in JObserve.
|
Program Organization
The main window of JObserve is defined by class
Observe
which has the structure displayed in the following:
The visible components of the GUI interface are the MenuBar,
(GUI.ObserveMenubar)
Buttor bar
(GUI.ObserveButtonBar)
and the status line
(GUI.StatusLabel).
The Observation
(Observation)
contains the actual schedule, auxillary,
and related information.
The schedule basically consists of a set of initial/global
information and a linked list of Scan structures.
A
Scan
is the atomic unit of scheduling and describes a single
measurement or procedure which the telescope is to execute.
The scans are linked in the order in which they are to be performed.
There are also a number of auxillary lists in addition to the list of
observing Scans; these are illustrated in the following which shows
the basic structure of an Observation:
In addition to the editing window there is an optional Help browser
window which consists of topic/subtopic lists an an html rendering window: