COMP242 Assignment v0.4 README                     Last Revised: 17 October 2009
================================================================================
  This represents the state of trunk at the time of tagging (10 October 2009).
  This release contains project files for NetBeans 6.0 which can be used to
  compile the code.

  Contents:
    /src       -- Source code
    /bin       -- Compiled JAR file
    /test      -- JUnit unit tests for LTS, LTSNode and LTSTransition classes.
    /doc       -- Various documentation
    /examples  -- Various example labeled transition systems. There are two
                  large ones provided - large.txt and huge.txt. Examples 1 to 4
                  were taken from the original specifications for versions 0.1
                  to 0.4.
    /nbproject -- The netbeans project directory

  Requirements:
    Sun Java 1.5 compatible runtime environment or better
    NetBeans 6.0 or better to compile the code automatically

  Platforms tested for this release:
    The program has been found to work correctly on the following platforms:
      - Microsoft Win32 compatible/Windows NT Workstation 5.1 [ Sun Java 1.6 ]
      - POSIX compatible/Kubuntu Linux 8.04 [ Sun Java 1.6 ]

  Using Composition (and parallel reach):
    1) Load the first LTS using either File>Open or the Open toolbar button.
    2) Select "Edit>Compose With..." or use the tool bar button
    3) Select the file to compose the current LTS with
    4) Enter the synchronization set (if any) as a comma-separated list of nodes

  Rendering the LTS:
    - View>Refresh (F5) renders the LTS. If it gets stuck while rendering (total
      kinetic energy does not approach 50) select refresh again to stop.
    - The tool bar button "Redraw" does the same as View>Refresh
    - "View>Sim Iterate" does one iteraton of the rendering loop allowing you to
      step through the rendering process.
    - The tool bar button "Iterate" does the same as "View>Sim Iterate"
    - "View>Reset Layout" (and the "Reset Layout" tool bar button) resets all
      node positions to random values allowing the LTS to be re-rendered. Use
      this if the renderer arrives at an unoptimal solution.
    - "View>Show colours" Switches modes to show the results of the node colouring
      algorithm

  Known Issues:
    - Anchor point may cause rendering of large LTS to become distorted

  Whats new in Version 0.4
    - A Most-Recently-Used file list is now present in the file menu.
    - Open and Save dialogs will now default to the last directory used
    - It is possible to force open and save dialogs to start at a specific
      directory every time
    - The node or transition labels (or both) can now be turned off from the
      view menu
    - Node names (and transition names) can be automatically created (as a
      UUID) - this prevents unlabeled nodes from being created.
    - Various bug fixes

ChangeLog:
----------------------------------------------------------------------------
Version 0.4:
  New Features:
    - Most-Recently-Used file list (#1)
    - File dialogs can now default to last used directory
    - File dialog start directory can be specified (overrides last used
      directory)
    - Node labels can be turned off from the view menu (#73)
    - Transition labels can be turned off from the view menu (#74)
    - Nodes (and transitions) can be auto-labeled to prevent creation of nameless
      nodes (#79)
  Minor Changes:
    - Help>About menu now shows some very basic information about
      the program (#38)
    - Help>Help now directs the user to the README file (#37)
    - Clicking on a message displayed in the window now closes it.
  Fixed Bugs:
    - Total kinetic energy is put in title bar instead of display area with
      single iteration menu option. (#75)
    - Transition loops (transitions with same node for both source and
      destination) always still showed their labels when labels when transition
      labels were set to hidden. (#78)

Version 0.3-3:
  Minor internal changes:
    - Status messages and logging are handled differently. This results in one
      or two messages that can be considered as errors or warnings being sent
      to stderr instead of stdout.

Version 0.3-2A:
  License Changes:
    - All source code now includs the GPL license header and copyright
      information. This applies to all older versions which lack the
      information too.

Version 0.3-2:
  Fixed Bugs:
    - Program now checks the input format of strings more closely when loading
      a file. This should stop it from loading invalid files (#5).

Version 0.3-1:
  New Features:
    - HP OpenVMS is now a supported platform. The software should work with all
      versions of OpenVMS that support Java 1.5 or later. DECwindows is
      required for operation.
  Fixed Bugs:
    - Fixed bug which prevented UI from redrawing on OpenVMS systems when no LTS
      was loaded.

Version 0.3:
  New Features:
    - Node coloring (#57)
    - Bisimulation Equality (#59)
    - Node colors can be shown graphically (#63)
    - loop-back transitions (eg, Node1/a/Node2) are now drawn (#43)
    - Deselect tool: Clears current selection
  Fixed Bugs:
    - Creating a new LTS does not properly reset the LTS renderer leaving
      bits of the previous node behind (#56)
    - Node selection now works properly
    - Loops in an LTS can cause a stack overflow in the renderer (#64)
    - Editing an LTS does not cause it to be recoloured (#66)
    - Line drawn in add transition mode is offset from start node (#67)
    - Canceling a new transition does not update the display leaving the line
      behind (#68)
    - After canceling a new transition the start node is left green (#69)
    - Start node in transition operation mode does not show as selected when
      node colours are shown (#70)

Version 0.2:
  New Features:
    - Parallel Reach has been implemented and is available under the edit
      menu. It is used in the same way as parallel composition. (#27)
    - Menus have been rearranged:
      - Compose and Reach are now under the Edit menu
      - A help menu has been created for future use
    - Initial work on graphical LTS editing is visible:
      - Create Node
      - Node move tool
      - Set start node tool
      - Remove node tool
      - Create Transition tool
      - Select node tool: if you can manage to grab a node with this while
        the layout algorithm is still running you can interact with the
        algorithm. The node will turn red when selected.
  Fixed Bugs:
    - Loop-back transition crash has been fixed (#24)
    - Correct file name is now displayed in the title-bar after composition
      and reach (#46)
    - Sync Set input dialog now allows node names that include a comma
      provided that the first character of the nodes name is a '(' and the
      last character is a ')' (#20). For example, the following would be
      valid input:
        a,b,(c,d,e),f,g
      where (c,d,e) would be interpreted as 1 node, not 3.
    - Cancel button for parallel compose now actually cancels the compose
      operation (it didnt before) (#39)
    - The file chooser is now reused - this means that if you wish to
      open a second file (eg, during composition) you will start at the
      same folder you opened the first file in. (#49)
    - Compile warnings fixed (#50)

Version 0.1:
  New Features:
    - Initial version
    - LTS classes implemented
    - Parallel Composition implemented
    - Force based layout algorithm implemented
    - GUI implemented
  Fixed Bugs:
    - none
================================================================================
                                                                   David Goodwin