-----BEGIN PGP SIGNED MESSAGE-----
Quality First Software is looking for beta testers for the
soon-to-be-released new version of our free Java library qflib.
Due to the growing number of slightly incompatible JDK versions on
various operating systems, it is getting hard to test a new release
thoroughly. Instead of delaying the new release further we decided to
start a beta test program.
If you are interested in a pre-release of qflib 0.98.0, please send an
email to qflib _at_ qfs.de, stating the operating system and JDK versions
you intend to use qflib on. We'd also like to know whether you intend
to compile qflib yourself and whether you are using an IDE like
JBuilder.
This information is voluntary and considered confidential.
If you don't already know about qflib:
======================================
One of the key factors in the development of our products is the
reusability of their components. For that reason, many parts have been
separated into a library which has grown into a project of its own
under the name of qflib.
Packages include:
- elaborate logging system with tool support
- configuration management for user settings
- lots of GUI stuff, especially a JTable extension that supports
sorting and filtering with only a few lines of code
- a collection of miscellaneous utilities, e.g. a command line
parser, a thread pool, an extension to ResourceBundle and many
more
Apart from the source code, complete Javadoc API documentation is
available as well as introductory documentation and examples in
English and German.
Detailed information and the current version are available at
http://www.qfs.de/en/projects/qflib/index.html
Changes in version 0.98.0
=========================
This release took far too long, so it includes quite a lot of changes.
Also included is a new demo for the option package in the demo directory.
New features:
- - The logging system has been redesigned to separate the issues of
filtering, writing and formatting into specialized classes and
interfaces. This time the changes are fully backwards compatible.
Special thanks to Oliver Brandt of ATecoM GmbH who provided most of
this code. Based on this there is now support for writing messages
to a log file that is limited in size, starting a new one when it
fills.
- - The LogSetup class in the util package can be used to set up the
various aspects of the logging system through a wide range of
command line arguments.
- - The option package has undergone a major overhaul:
- Things look and behave nicer and there is better support for
enabled/disabled edits and groups.
- TextOptionEdits can have their own JScrollPane.
- The new EditorOptionEdit can be used, among other things, to display
and edit HTML.
- RadioOptionGroups now can have a frame and title of their own.
- The TextOption class now has static methods split and join to
convert between a string array and a multi line string.
- The OptionGroup/OptionEdit tree hierarchy has been made public
and can be traversed.
- OptionDialogs are now based on the new ModalDialog class so the
buttons of an OptionDialog are now configurable.
- - A new common base class for message and option dialogs is introduced
with gui/ModalDialog. It simplifies configuration of the buttons of
a dialog.
- - The new class MultiMap is an implementation of the Map interface
that stores more than one value per key. Initially written mainly as
a base for the MRUCache (see below) it already proved its usefulness
many times.
- - Based on the MultiMap, the new class MRUCache stores only a limited
number of resources, keeping the most recently used ones when it
starts to overflow. This is similar in a way to a WeakHashMap, but
also works with JDK 1.1.
- - ExtensionFileFilter is a generic implementation of an extension
based file filter that can be used with AWT, Swing and File.list().
- - The EventQueue now uses a trick to get inside the AWT event queue
thread even for JDK 1.1. This means that the ExceptionHandler will
now work for JDK 1.1 along with the other EventQueue hacks. There
also is a new hack that fixes Alt-... keybindings for some Motif
based JDKs (eg. IBM's JDKs for Linux), so menu shortcuts will work
again.
- - Commands may now signal the CommandDistributor that they don't
require a handler. This avoids UnhandledCommandExceptions for message
type commands.
- - The ArgsParser has new methods to set default values for command line
options and to ease evaluation of the parse result.
- - For better comformance with similar methods in option/OptionSet and
util/ArgsParser, MapResourceBundle.getInteger has been deprecated and
replaced with getInt.
Bugs fixed:
- - SwingUtil.withEvents used together with qflib's EventQueue had
problems under JDK 1.2. This lead to a deadlock in qflog when loading
log files.
- - SortedTableHelper now cancels table editing automatically when the
sort order or the filter settings change.
- - The LevelTreeSelectionModel had a bug that caused a
NullPointerException when the root of a tree was visible.
- - A timing problem in gui/MultiPane could cause the initial divider
setting to override the saved and restored setting.
- - Message.showMessage now displays custom objects after the message
instead of before.
- - log/TreeFilter could not be compiled without the JUnit framework.
- - The constant FATAL_ERROR in util/MessageCollector is now 3 (it was
accidentally defined as 0).
- - util/MessageCollector now has an instance mechanism to associate
collectors with the current thread.
- --
Gregor Schmid gs _at_ qfs.de
Quality First Software http://www.qfs.de
- --
This article has been digitally signed by the moderator, using PGP.
http://www.iki.fi/mjr/cola-public-key.asc has PGP key for validating signature.
Send submissions for comp.os.linux.announce to: linux-announce _at_ news.ornl.gov
PLEASE remember a short description of the software and the LOCATION.
This group is archived at http://www.iki.fi/mjr/linux/cola.html
-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: latin1
iQCVAgUBOmI5qVrUI/eHXJZ5AQFf0gP6Ap5kaJaolNoa4TksTdeLlt7d8wUBFBwh
s+pEMIlZAxq9pMWEeNefiWNDCbiZDtOyJ4l/iykqPHSKFkYffAbL8PZ3j+i+CQMi
HrDvid0EQqPQutBsGZTK1YOBGlMm4XgsSuvQeLPO21/n0TmqLDvAMgdn2HlTiiay
ELvxJOxJ+XM=
=6+hX
-----END PGP SIGNATURE-----