==================================================================

                          VisualAge for Java
                             Version 3.0

                      Visual Program Development

                            RELEASE NOTES

==================================================================

Table of Contents

1.0 Visual Composition
    1.1   Running main() for Version 1.0 Classes
    1.2   Morphing
    1.3   Delete main() on Copied/Moved/Renamed Classes
    1.4   Using and manipulating JApplet's
    1.5   Using a JTable in a GridBag layout
    1.6   Constructing Visuals from Source with Array properties
    1.7   Avoid altering the 'resizable' property of a Frame or Dialog (Linux only)
    1.8   Scroll bars for preview area in Quick Form wizard for AIX and Linux do not work
    1.9   General notes on migration
    1.10  Custom property editor dialogs may disappear (Java2 only)
    1.11  Class path information lost when exporting a bean to a directory or a Jar
    1.12  Jar/Zip files added to the Workspace class path are not applied immediately
    1.13  DO NOT exit VAJava with a VCE open that contains menus (Linux and AIX only)	
    1.14  JTabbed panes don't work correctly in AWT apps and custom property editors (Java2 only)


1.0 Visual Composition


1.1 Running main() for Version 1.0 Classes

The main(String[]) methods that were generated in VisualAge version
1.0 for classes that subclassed anything other than java.awt.Frame
attempted to construct a TestFrame class.  The name of the package in
which TestFrame is located has changed in version 2.0.  To update the
package name of this class: Delete the main(String[]) method from
your class.  Open the class in the Visual Composition page and select
Bean->Re-generate Code.  This will cause a new main (String[]) method
to be generated.

If you do not follow these steps and you elect to run your class from
main(), you will not be able to close the frame.  As a workaround,
you can open the debugger and terminate the thread for the class.


1.2 Morphing

When morphing beans, the order of connections from the bean may not
be maintained.  You can reorder the connections from the pop-up menu
of the morphed bean.


1.3 Delete main() on Copied/Moved/Renamed Classes

If you've copied, moved, or renamed a visually composed class, be
sure to delete main() and save the class.  By deleting main(), you
remove obsolete code that VisualAge would not otherwise overwrite.
Once the obsolete main() has been deleted, VisualAge recreates a
valid main() when you save the class.


1.4 Using and manipulating JApplet's

To add a JMenuBar to a JApplet you must first Drag its contentPane
to the freeform.  This will allow you to Drop the JMenuBar onto the JApplet
and not the JPanel that is the contentPane.

If you've subclassed a JApplet and want to change its size or
position on the Visual Composition page, you must make sure that you
select and manipulate the JApplet - not its contentPane.  Since the
JApplet's contentPane completely covers the JApplet, you should
select the JApplet using the Beans List and then manipulate the
selection handles and border.  This technique of using the Beans List
is useful in many situations where one or more of a containers
children completely cover the container.


1.5 Using a JTable in a GridBag layout

When a JTable is dropped into a JContainer that is using a GridBag
layout, its size will be very large.  This is because a GridBag
layout sizes components based on their preferredSizes.  The
preferredSize of a JTable is hardcoded by JavaSoft to be 450x400.  To
make the JTable smaller change its preferredScrollableViewportSize
property to be the size that you want.
***** Java2 (JDK1.2) only ******
For Java2 (JDK1.2), you can change the size by selecting it from the
Beans list and dragging one of the corners. This automatically sets
the 'autoResizeMode' and 'preferredSize' properties.
To reset the table so that it gets resized to whatever size the
ScrollPane is, simple reset the 'autoResizeMode' and 'preferredSize'
property settings from the property sheet for the JTable.


1.6 Constructing Visuals from Source with array properties

When reconstructing the visuals of beans that possess array type
properties, be sure that the leaf type has a registered property
editor.  Otherwise, VisualAge will not be able to generate the
correct initialization code for that property.  You will have to enter
your own codestreams into the array editor.


****** LINUX only ***************************
1.7 Avoid altering the 'resizable' property of a Frame or Dialog (Linux only)

Users should avoid altering the 'resizable' property of any Frame or
Dialog or their subclasses when used in the VCE.  Classes that have
setResizable() calls in the generated code for instances of Frame,
Dialog, or their subclasses will not reopen correctly on Linux.  Users
who wish to alter the resizable behavior at runtime may do so by
inserting the appropriate call into a user code section within the
initialize() member function.


******LINUX and AIX only*******************
1.8  Scroll bars for preview area in Quick Form wizard for AIX and Linux do not work

When using the Quick Form wizard on either AIX or LINUX, the scroll bars for the preview 
pane appearing on the second page do not work.  There is no work around at this time,
but it will be addressed in a future release / fixpack.

1.9 General notes on migration

Prior to migrating your classes, we recommend that you please read the online documentation.

If problems were detected during migration, an Error dialog will be displayed detailing the errors. 
Make a note of the errors and click OK to continue the migration for the other classes in the package 
or project. These errors are usually detected because the classes used by the bean that is being 
migrated have not yet been migrated and reflection or introspection reports missing features.
When these other classes are migrated, the problems will be corrected.

After you have migrated all the relevant classes, if problems still exist, open the class in the 
Visual Composition editor (VCE) and select Bean/Regenerate code to regenerate the code. 
Usually, this will fix those problems. Even if no problems were detected and the application runs
correctly, it is still a good idea to open the class in the VCE and regenerate code.

Note that migration does not guarantee that the migrated application or applet will run correctly.


******** Java2 (JDK1.2) only **************
1.10  Custom property editor dialogs may disappear (Java2 only)

Intermittently certain property editors (such as the Font property editor) may disappear.
It appears that the windows disappear if you bring up a custom property editor window multiple 
times from the Property sheet or from an Enumeration Prompter on the BeanInfo page.
Because the custom property editor is modal, it doesn't return control to the calling dialog.
To recover simply bring up another modal dialog such as the Window-->Options dialog.


1.11 Class path information lost when exporting a bean to a directory or a Jar.

If you export a bean to a directory or a Jar and then import it, the class path information 
stored with the bean is lost.  When you run the imported bean, you might get a 
NoClassDefFound exception.  Before running a class, go and set the classpath.


1.12 Jar/Zip files added to the Workspace class path are not applied immediately

When you add jar or zip files to the Workspace class path via the Window/Options... dialog, 
they do not get applied immediately.  Add or delete any project or package or restart the 
IDE for the changes to take effect.


******LINUX and AIX ONLY*******************
1.13  DO NOT exit VAJava with a VCE open that contains menus
This will cause EX02's and possible infinite loop problems.  Close the VCE before exiting VAJava.


******** Java2 (JDK1.2) only **************
1.14  JTabbed panes don't work correctly in AWT apps and custom property editors (Java2 only)

This appears to be a bug in JDK 1.2. I reproduced this problem by simply creating a Frame
with a JTabbedPane dropped into it... add another JPanel to the JTabbedPane so you
have 2 pages. Drop a JButton on the first page and a JCheckBox on the second page,
generate the code.
If you compile and run this under JDK 1.2 (outside the IDE), you will experience the same problem.

To work around this for now you can add an event-method connection from the JTabbedPane to itself.
The connection is JTabbedPane,stateChanged --> JTabbedPane,doLayout().
Note: the doLayout() method shows up in the list when you select "Show expert features".
