JX Application Framework
The JX Application Framework is an application framework built on top of X11 for Unix-like computer operating systems. It provides a document model, a rich set of widgets, and support for model-view-controller, drag and drop, and printing.
History
The JX Application Framework begin life in 1996 as a thin C++ wrapper around XForms to support development of a graphical interface for manipulating the symbolic results of applying the Extra Element Theorem to an electrical circuit via Mathematica. The library soon took on a life of its own, and the limitations of both XForms and wrapping C++ around C forced a rewrite to build the library directly directly on top of X11. Since X11 does not provide anything beyond a canvas on which to draw, all widgets had to be built from scratch. The inverted order of development provided some unique advantages: table support was built while still on top of XForms, so when it came time to implement menus, these were implemented using tables. Development of the JX Application Framework continues as features are added to support the applications built on top of it.
Features
The JX Application Framework is split into two levels. The JCore layer provides functionality independent of any particular graphical interface. The JX layer provides the user interface library that works with X11.
Standard widgets like buttons and menus are implemented directly on top of the base JXWidget class in the JX layer. More complex features like tables and styled text editing are built using multiple inheritance: an abstract base class in JCore provides all the platform-independent functionality using the abstract JPainter class for drawing, and a concrete leaf class in JX glues this into the JXWidget hierarchy that provided the concrete implementation JXWindowPainter.
The JX layer provides:
- Director/Window separation -- A director manages a window. A special case of a director is a Document, which manages saving the data displayed in the window.
- Multiple document interface and document interaction
- Model-view-controller
- Drag and drop via XDND
- Widgets: buttons, checkboxes, radio buttons, menus, input fields, tabbed container, file chooser, styled text editing, tables with inline editing, trees, 2D plots, 3D plots
- Window docking
- Searchable, hypertext, on-line help
- Copy/paste
- Connections to muliple X servers
- Localization
The JCore layer provides
- Regular expressions via PCRE
- Networking via the Adaptive Communication Environment
- PostScript and Encapsulated PostScript printing
- User preference storage
- Memory manager for detecting leaks and double deletion
See also
- Gtk+
- Qt
- wxWidgets