`ccl` is a reusable Java library distributed under the terms of the Mozilla Public License (or GNU GPL or GNU LGPL, whichever of these you like).

It contains code I wrote and (re-)used for several projects (Jacob, Timelog, WebPresenter, and others) and plan to use again for new projects in the future.

Maybe this code is of some use for you too.

How the gui part of the library is used to create a base application, can be seen from the source code examples Main.java and ViewController.java. It is a base application with a frame, menu, info box, and help page. The code can be used to jump start your own application.
A precompiled project setup of the example with start and build script etc. can be found in this guiexample.zip file.

The file utility methods have a separate page dedicated to them. They can also be used by a package of its own independently from the rest of the ccl library: FileUtil

You can always find the newest version of this page at: http://www.kclee.com/clemens/java/ccl/

Here is the meat: The `ccl` API Documentation

## Features

- Basic GUI/Swing application framework and utility classes
- Additional string methods
- Vector methods
- File methods
- Debug and assertion support
- Test framework

## System Requirements

Java JDK >= 1.4.1.

## Download

ccl Version 32.69 If you want to get notified when new updates for ccl are available please press the following button:
(thanks for your interest)

## Installation

Just unzip `ccl32.69.zip` and add `ccl32.69/lib/ccl.jar` to your classpath. Now you can use the ccl package in your project. With

`java ccl.Main -check`

you can trigger a ccl self test. There is also a script in the `bin` directory which you can use to invoke the self test.

`./bin/ccl -check`

This should work most of the time. Eventually you need to specify in the shell script or batch file some environment variables explicitly if the script could not figure out everything itself.

If you use the help feature from ccl.swing.MainJFrame, you have to add JavaHelp to your classpath. For convenience reasons JavaHelp is distributed together with ccl (just add `ccl32.69/lib/jhbasic.jar` to your classpath).

## Release History

Version 32.69 has been released on November 23, 2003

...

#### What's New

1. Improved exception verbosity in XML/XSLT processing.
2. Method getStandardDate became getDate in Util class.
3. New method getName in Test class lets you overwrite the test class name.
4. New assertion methods 'assertEquals' in ccl.util.Test.
5. New method 'FileUtil.writeTempFile' to write content into a new temporary file.
6. New convenience method 'Util.getStackTrace()'.
7. New convenience method 'Util.getDateTime()'.

#### Fixed Bugs

1. XMLImporter has to post to the full class name.
2. Increased XMLImporter file limit from 2 to 256 MB.
3. Util.getMonth(..) is now more picky about its input.

Here is the documentation about changes of previous versions.

## Authors

Below is a list of additional contributors and supporters: Thanks to

- Doug Lea for ccl.util.Comparable interface and ccl.util.Util.quicksort(..) methods (they are Public Domain and taken out of his collection library)
- Elliotte Rusty Harold for ccl.util.StreamCopier copied from Java I/O p. 43.
- Benjamin "Quincy" Cabell V (thethe@wpi.edu), Besiex Software for StringMethods.java which is renamed to ccl/util/IniFile.java and which is distributed under the terms of the GNU Library General Public License.
- Paddy Ramanathan <rpaddy@concordesolutions.com> for ccl.util.SysEnv. It was a contribution for the Jacob project.
- My managers at UBS Warburg who let me use and maintain this library for project development.
- Marcel Nijman for SplitPane code, which I took out of a news group.
- Matt T. Yourst for Java Class File library which is used by the the ccl.jcf package. The Matt's jcf library, which is redistributed with this library, has the following copyright disclaimer:

  JCF Copyright
  All included source code, binaries, and information ("the Software") are Copyright 1997 Matt Yourst ("the Author"). Permission is granted to use the included files for any purpose so long as appropriate credit is given to the Author.

- Glen Cordrey for a tip to set the application home directory automatically in a batch file.
- Brian Uegawachi and jalal for bug reports.
- The Apache Xerces project for making code for escaping a string with XML entity references freely available.
- Jason Pell for a multipart request library under the LGPL which ccl uses for importing data from an XML file into an SQL database using a servlet [2002-05-20].
- Alex Molochnikov (alex@gestalt.com) for example code to set the hour glass mouse cursor properly [2002-05-20].
- Jeff Quarrington for reporting a severe bug in method copyDir in class FileUtil [2002-09-22].
- Kenneth Westelinck (kenneth.westelinck@pandora.be) for his code and debugging work on the ccl.swing.CCLTable [2003-05-01].
- Kenneth Westelinck for feedback of missing files and for a minor bug fix [2003-05-04].
- J. M. G. Elliott for the Gif89Encoder package, which is used internally [2003-05-09].
- Marco Schmidt for his example code to save an image as an jpeg file [2003-05-09].
- Jef Poskanzer for GifEncoder on which Gif89Encoder is based on [2003-05-09].

## Links

- Clemens' Java Page - take a look at the other Java stuff I did which also uses the ccl lib.
- CCL Java Coding Standard - my personel code conventions used also for the ccl code.

Chr. Clemens Lee <clemens@kclee.com> (my resume), last updated: $Date: 2003/05/09 20:25:17 $