User Interface Libraries and Tools

The Java language[RD06] is the current choice for GUI development, in particular coupled with the SWING graphical library

A rich set of widgets is part of the standard package.

Java is highly platform independent [RD01 - 12.1.1 Portability]. GUIs are platform independent and can be developed on any system and run on any other system[RD01 - 12.1.2 Extended Portability].

Java Applets can run inside Web Browsers for the deployment of low complexity GUIs on remote sites [RD01 - 12.1.2 Extended Portability].

Both Java and Web Browsers have good CORBA support. JacORB [RD34] is the ORB currently used to provide CORBA support in Java.

ACS provides in addition a standard set of tools for the development of user interfaces[RD01 - 12.1.3 Tools]. This includes:

Integrated Development Environment. A COTS Java Integrated Development Environment, including a GUI builder, has to be selected. The current choice is Eclipse[RD35], that is a multi-platform, free project, with the Eclipse Visual Editor project plugin. There is no point in developing a proprietary tool.

Standard set of widgets for the implementation of applications with common look and feel. The adoption of the Characteristic Component concepts allows reuse of many Java Beans developed in the particle accelerator community specifically for the implementation of control systems. In particular the ABeans developed for ANKA[RD04] provide a set of widgets for ACS aware of of the Characteristic Component design pattern. ABeans are integrated in Eclipse [RD35] as a plugin that makes use of the Eclipse Visual Editor. Performance problems with the Abeans implementation limit their usage to small GUI applications, with a limited number of widgets.

Standard Java class libraries for the integration with all services provided by the ACS.

The ALMA Executive subsystem has designed a standard GUI user interface architecture that allows to implement GUI plugins for the main Executive GUI.

Plotting will be an important element in GUIs (see also [RD45 - EVLA Engineering Software Requirements, 4 Plotting][RD46 - EVLA Array Operations Software Requirments, 3.5 Plotting]. ACS integrates an advanced Java GUI class library [RD47 - JFreeChart]. Plotting widgets are integrated with ABeans for the development of applications and are available with all tools capable of monitoring values, like Object Explorer.

These Java and Python GUI tools allow developers and end-users to design and create their own display [RD46 - EVLA Array Operations Software Requirments, 2.8 Display Builder].

All GUIs for generic ACS applications, (Object Explorer, logMonitor...) will be developed using ACS standard GUI libraries [RD01 - 12.1.5 ACS GUIs]. Tools, prototype and engineering GUIs can be implemented in Python.

GUIs shall not implement any control logic[RD01 - 12.1.4 Modularity]. They should be dummy applications that simply send commands to Components and access Properties of Characteristic Components for display and update. Any action performed through a GUI shall also be available using command line commands, script or simple programs and no GUI shall be strictly required to drive the system.

Online documentation and help

Integration with the Web through the usage of an HTML/XML Browser provides access to online documentation [RD45 - EVLA Engineering Software Requirements, 5 Documentation and Help][RD46 - EVLA Array Operations Software Requirments, 1.4 Online Help].

Java help
Online help systems, for example for graphical user interfaces, shall use he the JavaHelp extension (http://java.sun.com/products/javahelp/index.jsp): help pages are written in html and they are rendered inside the application by the help browser that it pard of the Java Development Kit (jhall-2.0_02.jar). This allows to deploy help pages locally or throught the web and, the other way around, to reference and access web pages from the application's help browser.

Printed help and documentation
If the same document shall provide both online help and printed documentation, it is often convenient to write it in a higher level, more printing friendly, format than plain html, as long as a good conversion to PDF for printing and HTML for online usage are available and can be made automatic through Makefile.

A good and proven solution is Latex (currently used to produce OT documentation):

OT help pages are written in latex. Before each OT user test, Alan generates a pdf file from them which is good to download and printout.

The Java Web Start[RD40] technology is used to deploy and update GUIs and more in general Java applications on remote sites without requiring installation of specific and heavy software packages. Using this technology, GUIs do not run inside the Web Browser but as stand-alone applications.

LabView[RD13] can be integrated with ACS and be used, for example, as a platform to develop engineering GUIs. It is possible to implement ACS functions in LabView applications via Code Interface Nodes (CIN). In this way LabVIEW GUIs can control and interact with standard ACS Components.