*************************************************************************
*  Copyright (C) 1996-1997 by NEURON DATA Inc.                          *
*  All Rights Reserved.                                                 *
*                                                                       *
# @(#)README.txt	2.9 97/04/16
*************************************************************************


                     Microline Component Toolkit 3.1 Lite Version

Overview

    This package contains the Microline Component Toolkit 3.1 Lite Version
    for Java.  It provides 4 new user-interface objects for Java and also 
    contains various utility objects and functions. 
    The MCT 3.1 has a time bomb
    pre-installed that will disable the software within a three month
    period. Please contact Neuron Data (www.neurondata.com) to purchase the
    professional version of the Microline Component Toolkit that disable the 
    time bomb and enables the full functionality of the Grid and Tree
    components. 

    ** For the detail of changes from previous releases, please refer **
    ** "Changes" section in this document (located below).            **

    Java Beans support has been added since 3.0e release, and it is
    fully available in this release.  It allows you to write
    code using Java Beans or use the interface objects in builders
    which support the Beans introspection mechanism with the JDK 1.1.
    The Beans introspection mechanism helps a builder determine what
    Properties/Events/Methods a Java class supports.

    Please consult the BEANS.txt for more information on supporting Java Beans.
    
    This version of the toolkit was built against the 1.1 JDK using
    Sun's Solaris 2.5 JDK 1.1 Java compiler with optimization turned on.
    And it does NOT work with JDK1.02 based appletviewers or browsers.
    Also, if you are using previous version of MCT, some Event handling
    code might need modifications for this release.

    It provides a Grid which contains cells with text, images and/or
    components in rows and columns.  The Grid allows single, browse-row,
    multiple row and cell selection and supports heading, content
    and footer rows and columns.  It also provides support for a
    variety of appearances through margin, border and color specification
    for rows, columns and cells.  It's perfect for creating high
    performance tables and multi-column lists.

    It also provides a TabPanel component displaying tabs along the top,
    bottom, left or right of a panel with a page area in the center.
    Tabs may contain images and/or text.

    It also provides a Tree component which can be used to display a
    hierarchy.  The Tree is a subclass of the Grid and supports multiple
    columns, various selection policies, automatic collapse and expansion
    of rows as well as all the features supported by the Grid.

    Also provided is a Progress component. This component supports a
    few different display styles and allows formatting of shading and
    colors.  It also supports display of elapsed and estimated time
    to completion.

    Utilities include functions to draw clipped strings and an icon maker
    object which eases creation of simple icons.


Changes

    This release was tested under Windows 95, Windows NT 4.0 and
    UNIX.  Testing was performed under Sun Solaris 2.5 for UNIX.  
    Previous releases were tested by others under
    SunOS, HP, DEC, AIX, the Apple Macintosh and Windows 3.1.

    Testing was also performed under Hotjava1.0 Beta on Solaris2.5.

    Also, this release was tested on JDK1.1.1 on Windows 95, 
    Windows NT 4.0 and Solaris 2.5. 

    The MCT 3.1 release is based on the MCT 3.0f.  The 3.0f release was a
    bug-fix release and adds supports for the JDK 1.1 (while providing
    compatibility with the JDK 1.02).

    This release includes the following changes:

    - In this release (3.1), all the MCT defined events such as 
      MlGridEvent, MlTreeEvent and MlTabPanelEvent are changed to
      be subclass of JDK1.1 defined AWTEvent.
      So, above events cannot be handled by handleEvents() method or
      action() method any more.
      Instead these should be handled through  "listeners" or by
      overriding processEvent() or processMlXXXEvent().
      "examples" directory includes several examples how to handle
      these events.

    - There is a new MlIconMaker method - setColor(Color)

    - The page increment is now set correctly on the Scrollbars in
      the Grid and Tree.  Note, however, that the JDK 1.1 AWT
      Scrollbars under Windows have quite a few problems (the
      ones contained in Sun's JDK 1.1 SDK for Windows).

    - The highlightColor in the TabPanel now works.

    - The resize cursor no longer 'sticks'.  In previous releases, there
      were cases where the resize cursor would not be reset to normal
      after leaving the Grid or Tree.  JDK 1.1 support for cursors on
      a per-component basis fixed this problem.

    - Upon completing an edit in the Grid under Solaris and SunOS (and
      some other UNIX platforms) by using an arrow key, in previous releases
      the focus would sometimes move two cells over.  This has been fixed.

    - Button events with a click count > 2 are now ignored by the Grid.
      There were a number of cases where the AWT would generate fake button
      press events (when double clicking on a Panel and bringing up a Frame
     for instance).  This works around the cases where it occurs.

    - A userObject was added to the MlTreeRowDefinition, which allows you
      to add rows containing a rowUserObject reference in a single call.

    - A Grid method addRowsWithObjects() was added to allow you to add
      a number of rows to the Grid, each containing a rowUserObject reference
      in a single call.

    The 3.0e and 3.0f releases contained the following changes from
    previous releases:

    - There is no multi-threading in the toolkit, all processing
      is done in a single thread.

    - changed the MlArray class to hold arbitrary Objects, no longer
      requiring the items to be a subclass of MlArrayItem.  Maintained
      backwards compatibility by creating an empty MlArrayItem class.
      Since the MlArrayItem class is no longer needed, a warning is printed
      out by the constructor of the class, telling you to no longer use it.
      It's likely this class will go away in the near future.  You can
      remove any 'extends MlArrayItem' in your code and change any methods
      like:
          public int compare(MlArrayItem item1, MlArrayItem item2)
      to
          public int compare(Object item1, Object item2)
      and the warning message will go away.

    - set and get methods are provided for all global resources (Properties)
      for Java Beans.

    - listener based event models were added to the components following
      the Java Beans specification

    - the double buffering mechanism was rewritten allowing any of the
      objects in the toolkit to be double buffered.

    - the mct.3d performed a requestFocus() after posting a select event.
      the code was changed to perform the requestFocus() before posting the
      select since if you popped up a Frame or Dialog from a select or
      activate, the grid would requestFocus() after you popped up your
      Frame or Dialog, causing the window containing the Grid to pop to
      the front.  This should no longer happen.

    - removed the MlCanvas class.  This was only used by the Progress
      component which now derives from the MlPanel class (which has
      all the functionality the MlCanvas class had)

Bugs

    - the TabPanel can no longer share a single page between tabs without
      special code.  This is required because the CardLayout in the JDK 1.1
      has additional restrictions on it over the one contained in the
      JDK 1.02.

    - the sizing of Panel widgets with some of the geometry managers in the
      JDK 1.1 appears to have a couple bugs under Solaris which causes
      a couple pages in the demo example to truncate.

    - the JDK 1.1 Scrollbar under Windows and WindowsNT is almost entirely
      broken.  We have been told it will be fixed in the JDK 1.1.

    - the JDK 1.1 has a number of repaint problems (especially under
      Windows).  We have worked around a number of these, where possible.

Legalities

    Please see the accompanying license agreement for information about
    using and distributing this package.

    This version of the toolkit allows a maximum of 105 rows
    in the Grid or Tree without special key code from Neuron Data.
    Please see the information on our web site or contact one of our
    sales persons about obtaining this key software if you require
    the additional functionality.

Installation

    Example programs are contained in the examples subdirectory.

    Documentation in HTML format is contained in the doc subdirectory.

    There are two ways to use/distribute the classes which comprise
    the toolkit.

    The first is to install the zip file containing the classes onto
    all machines which will use applets or applications containing
    components in the toolkit.  If you build applets using the zip
    file, only machines which have the zip file installed locally will
    be able to run the applets you create.  This is the most efficient
    way of using the toolkit since machines which use your applets will
    not need to download the entire toolkit to run an applet since
    the toolkit must be installed locally. Installation of this type is
    described in the "Installation of Zip File Locally" section below.

    The second way is to install the classes with your applet classes
    on a server. This allows a user which does not have the
    toolkit installed to dynamically download the classes in the toolkit.
    This is inefficient since it requires the user to download all the
    classes in the toolkit to use your application. If there are
    multiple applets on different servers using the toolkit, the client
    machine will end up with multiple copies of the toolkit cached on their
    machine. It does, however, allow a user to use your applet without
    installing anything on their machine. Installation of this type
    is described in the "Installation of Classes on a Server" section.

Installation of Zip File Locally

    A zip class file "mct3_1.zip" is located in the lib subdirectory
    of this package.

    You can copy the zip file anywhere on the target machine.
    After installing the zip file on the target machine, you must
    set the CLASSPATH environment variable to include the zip file.
    
    For example, if you have installed the mct3_1.zip file in \mct
    on a Win95 PC and you had installed the JDK1.1 (Java Development
    Kit), you would need to set your CLASSPATH to include the zip file
    in the JDK as well as the zip file in the Microline Component Toolkit:

    set CLASSPATH=.;\java\lib\classes.zip;\mct\mct3_1.zip

    Under UNIX, you need to perform basically the same thing.  If you
    are using the JDK you should set your CLASSPATH to include the JDK
    classes.zip and mct3_1.zip:

    setenv CLASSPATH "$(JAVAHOME)/lib/classes.zip:/mct/mct3_1.zip"

    Note that under UNIX, you should use colons to separate entries and
    under Windows, you should use semi-colons to separate entries.

    You can install the example programs and run them after setting your
    CLASSPATH to include the mct3_1.zip file as follows:

       > cd examples
       > javac grid1.java
       > appletviewer grid1.html

    If this demo program compiles and runs for you, everything is installed
    correctly.

Installation of Classes on a Server

    The classes in the toolkit are contained in the mct3_1.zip file.
    To install these classes on a server, you should unzip this file
    with a program such as WinZip95 (for Win95) or unzip for UNIX.

    The classes in the toolkit are written entirely in Java and so
    they can be placed on a server as any other pure Java packaged
    toolkit can.

    To include the classes with an applet on a server, you could unzip
    the classes so the hierarchy looks like the following:

    classes/
       MyApp.class
       mlsoft/
          mct/
             MlGrid.class
             MlTree.class
             ....

    If you have a key class from our development kit (included in the
    professional development package), place the key class in the top
    level directory:

    classes/
       Ml31Key.class
       MyApp.class
       mlsoft/
          mct/
             ...

    If you are using the key class in classes in your own package, you
    will need to include "import Ml31Key;" at the top of the java
    program using the key class so the loader knows to look in the
    codebase directory for the key class.

    In your .html file for the applet you could have something similar to:

        <applet
        code="MyApp.class"
        codebase="http://www.mydomain.com/classes"
        width=400
        height=400
        alt="you need a Java browser to view this">
        </applet>

    to place the applet on a HTML page.

Bugs

    Please report any bugs you find to mlsupport@neurondata.com, include the
    platform and reproduction information if possible.
