Fiswidget Overview

Design goals

Fiswidgets (Functional Imaging Software Widgets) is a set of Java classes built on top of the Java AWT and Java Foundation Class (JFC, Swing) toolkits; it includes both GUI components and thread control components and is designed to permit a programmer to very quickly write simple Java graphical user interfaces to run application programs that would otherwise be invoked by a command line or from within a shell script. FisWidgets is designed for ease, speed, and cleanliness of use; in order to achieve these goals a number of constraints are placed on the functionality and appearance of fiswidget applications.

GUI components

Fiswidgets supplies a number of high level GUI components, eg text fields and numeric fields with optional labels and default values. In addition, there is a generic component, so that the programmer can design a customized component and add that to the fiswidgets application. Components are added to the fiswidgets window in a "flow" layout, from left to right, with line breaks set by the programmer. A standard menu is added to the top of the fiswidget application window, and a standard toolbar is added to the bottom. A popup window component (FisAdvancedButton) is supplied, so that more complex or infrequently used parts of a fiswidget GUI may be hidden from the user. The popup window appears as a button; when the user selects this button, another window containing any number of additional fiswidget components appears. We explicitly and intentionally put a lot of restrictions on what fiswidget GUIs can look like. The idea is that a computer programmer does not need to spend a great deal of time dealing with aesthetic issues, gridbox layouts, etc., but can quickly and efficiently produce a serviceable set of GUIs. And, by enforcing many constraints on appearance, fiswidget applications will all have a similar look and feel, without explicit collaboration amongst programmers.

Software architecture

The following diagram describes how the fiswidgets API fits into the general Java environment. At the lowest level is the standard Java language. All Java language constructs, including AWT components, may be used in a fiswidget application. However, the use of AWT components is discouraged, because one of the design goals of fiswidgets is to protect the programmer from changes and updates to the Java language. At the next level are the publicly available Java libraries, eg Swing, JGL, etc.. Fiswidget applications can use classes from any Java libraries the programmer needs. The fiswidgets API uses the Swing components, and therefore sits on top of both the Java language and the public libraries layer. Finally, the fiswidget application is written using the fiswidgets API.

Within the fiswidgets API, the software architecture preserves a very clean separation bewteen GUI elements (the FisBase class), and thread management elements (the FisRunManager class).

fiswidget application
fiswidgets API
public Java libraries
Java language

Built-in features