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.
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
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.
- help location: an application passes the html resources to the help
browser when it creates it. A webserver would be used if no help resources
exists locally
- context sensitive help: GUI widgets providing context help shall be
named using setName("abc") to allow identifying the proper help
topic for them dynamically
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.
- all help pages are kept together with the source code in the UserDoc directory
- the makefile take care of processing them to produce documentation:
- it runs latex2html
- it converts the postscript pictures to jpg
- it creates the meta-information needed for the Java Help Library
(TOC, etc.) dynamically
the rest is just the same as in the commandcenter
- packs them together in a jar file xxxHelp.jar
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.