README File - JClass BWT 2.0.8

Copyright (c) 1996-97 by KL Group, Inc. All Rights Reserved. 

Products
--------

This release of BWT is composed of 2 products corresponding to the 
two JDK versions:

BWT 2.0.8T - "transitional Bean" library for JDK 1.0.2
BWT 2.0.8  - library for JDK 1.1.x

Both products have the same programming interface and methods. 
BWT 2.0.8T supports a JDK 1.1-style of event processing which replaces 
the JDK 1.0 event handling model with a callback mechanism similar to 
that used by previous versions of BWT.

If you develop applications using JDK 1.0 and BWT 2.0.8T, you can
later move to JDK 1.1 (and BWT 2.0.8), and your code can remain
unchanged.

Programs developed with an earlier version of BWT are not compatible
with this release. See the end of the file for conversion instructions.


BWT 2.0.8 Requirements
----------------------
- JDK 1.1.x (qualified against JDK 1.1.4)


BWT 2.0.8 Tested Platforms
--------------------------
The following platforms have been tested:
- Sun Solaris JDK 1.1.4
- MS Windows NT JDK 1.1.4


Changes
-------
Many Composite components have properties from their children
    components exposed at the highest level to make the beans easy to
    use.
Text Cursor is now always visible unless explicitly hidden
JCString now caches images
JCString supports external caching of existing images
JCString now supports escape characters for "[" and "]" characters
Page Up/Page Down now functions in JCComboBox
Double click and folder state changes are now distinguishable for
    overriding purposes in JCOutliner
Non-editable Combo and SpinBoxes now support list searching through
    keystroke matching
JCButton inherits foreground color from its parent

Changes (JDK 1.1 Only)
----------------------
Page-based printing for JCOutliner
JCText Components now have a Windows 95 style pop-up menu hooked to the
   right mouse button
JCText Components now use VM supported Clipboard

Fixed Bugs
----------
Most of the core classes were restructured for deadlock avoidance to
improve multi-thread safety.  

2792 In MultiColumn components a hidden column can be resized to be
     visible if dragged from the right 
2847 Attempting to edit a JCTextField in some browsers can cause a
     Security Violation
2854 Holding down an arrow key on a JCSpinBox can cause
     ArrayIndexOutOfBounds exception
2856 JCText Components do not always remove old cursors
2869 In JCTextArea, changes to "background" can be visibly delayed
2875 JCOutliner returns 0 instead of -999 from getSelectedNode()
2889 JCScrollBar is disabled if there is not enough room to paint it
2919 JCComboBox pops list down on mouse down instead of mouse up.  This
     has the side effect of confusing any Windows AWT peer pushButton
     that happens to be underneath the pop down
2927 JCOutliner redraw problems happen in rare circumstances
2958 In certain environments, clicking the arrow buttons pops down the list
2959 JCTabManager is missing arrow buttons
2962 Repeat thread for repeating arrow button does not terminate in IE4
2967 BWT components do not properly override all "add()" methods
2971 JCTabButton sometimes generates a NullPointerException
2992 Text examples do not function when deleting over masked characters
3000 JCOutliner occasionally deadlocks during double-click processing
3003 Changing the "echoChar" doesn't trigger repaint()
3017 Query to preferredSize() can generate an infinite loop in
     certain circumstances
3019 JCSlider occasionally deadlocks
3060 JCTabManager get confused when frame is resized
3073 Lines overlap in JCComboBox when font size is changed
3075 TabButtons do not size themselves big enough to take into account
     the selected font
3111 JCButtons draw incorrectly when clicked and dragged out of
3115 JCMuliColumnList occasionally deadlocks when clicking on arrows
3119 JCTabManager occasionally deadlocks when clicking on arrows
3120 JCOutliner cannot be serialized

Known Problems
--------------
2887 (Some VMs) JCComboBox Popdown is not properly located
3037 In JCComboBox double clicking a scrollbar causes the list to
     pop down (JDK 1.0.2 only)
3109 JCOutliner consider mouse clicking from two different buttons
     (within the double-click time-out) a doubleClick

Files Contained Within This Release
-----------------------------------
Once you have obtained the jcbwt208.exe, jcbwt208.tar.Z or 
distribution file, extract (unarchive) its contents. The .exe file
contains the same files as the .tar.Z, but as an automated setup
program for Windows platforms. Extracting or installing the
distribution file creates the following directories and files on your
system:

- jclass/bwt/api/ [directory]
- jclass/bwt/examples/ [directory]
- jclass/bwt/demos/ [directory]
- jclass/bwt/lib/jcbwt208-classes.zip [file]
- jclass/bwt/lib/jcbwt208T-classes.zip [file]
- jclass/integrations/VisualCafe/bwt [directory]
- jclass/readme.txt [file]

The jclass/bwt/api/ directory contains hypertext documentation of 
all of the JClass BWT classes in HTML format. To view the documentation,
open jclass_bwt.html in a Frames-capable browser (such as Netscape 
Navigator 3.0 or later, or Internet Explorer 3.0 or later). If you do not have 
a Frames-capable browser, open bwt_default.html instead, which explains 
how the JClass BWT API is arranged; then proceed to bwt_toc.html, the 
Table of Contents file. 

The jclass/bwt/examples/ and jclass/bwt/demos/ directories contain
sample Java programs that use JClass BWT components. Each directory
contains the file index.html, which provides a convenient way of 
accessing the Java applets in the directory. The Java programs can 
also be run directly from the command prompt. They can also be 
accessed through the HTML documentation from jclass_bwt.html.

The jclass/bwt/lib/jcbwt208-classes.zip file contains all of the 
BWT .class files. Your CLASSPATH environment variable
needs to point to this file (the EXE distribution updates CLASSPATH
automatically). If you are using the BWT release files in a development 
environment, do not attempt to extract (unarchive) the contents of the 
jcbwt208-classes.zip file, as its contents are automatically read by Java.

The jclass/integrations/VisualCafe/bwt directory contains files that
enable JClass BWT components to be used with Symantec's Visual Cafe 1.1.
Note that the EXE format of JClass BWT installs this integration 
automatically. Otherwise, follow the instructions in the index.html 
file to install it.

jclass/readme-bwt.txt (this file) is an ASCII text file containing 
information about the files contained in this release. The file
can be viewed through any text viewer (such as Notepad or WordPad) 
or a word processor.


Converting Programs Using BWT 1.0
-----------------------------------------------
This release uses JDK 1.1-style events. JDK 1.0 event handling is not
supported, and has been replaced by a series of callback-style event
listeners. See jclass/bwt/api/BWT-EventSummary.html for a complete listing
of all BWT events.

For example, previously the following code could be used to process a
JCButton press:

public boolean action(Event ev, Object what) {
        if (ev.target == myButton) {
                ...
        }
}

This has been replaced by registering a JCActionListener with the
button, and providing an actionPerformed method:

class myClass implements jclass.bwt.JCActionListener {
        JCButton myButton;
        public void actionPerformed(jclass.bwt.JCActionEvent ev) {
                if (ev.getSource() == myButton) {
                        ...
                }
        }
        ...
        myButton = new JCButton("hello");
        myButton.addActionListener(this);
}

Similarly, all BWT callbacks have been replaced by an equivalent listener.
For example, previously the following code could be used to process a
JCList selection:

public class fontChooser implements BWTCallback {
        JCList names;

        public boolean callback(Component caller, 
                                int reason, BWTCallbackInfo cb_info) {
                if (cb_info.getStage() != BWTCallbackInfo.END)
                        return false;

                JCListInfo info = (JCListInfo) cb_info;
                if (caller == names) {
                        font = new Font((String) names.getItem(info.getRow()),
                                                        font.getStyle(), font.getSize());
                }
                ...
                return true;
        }
        ...
        names = new JCList();
        names.setCallback(BWTCallback.LIST_SELECT, this);
}

This has been replaced by registering a JCListListener with the list:

public class fontChooser implements JCListListener {
        JCList names;

        public void itemStateChanged(JCItemEvent ev) {}
        public void listItemSelectBegin(JCListEvent ev) {}

        public void listItemSelectEnd(JCListEvent ev) {
                if (ev.getSource() == names) {
                        font = new Font((String) names.getItem(ev.getRow()),
                                                                font.getStyle(), font.getSize());
                }
        }
        ...
        names = new JCList();
        names.addItemListener(this);
}
 
