README for groupscheme/test

This directory contains the following files:
  1. GrewpEdit.html
    a description of the architecture of the GrewpEdit system
  2. GrewpEdit.scm
    the toplevel module which constructs the GrewpEdit window (mainwin), adds a JTabbedPane, and puts in the initial start-pane. The start-pane contains some menu-items (help/exit) and the network-panel for specifying a grewp to start or connect to. The help menuitem pops up a window defined in GrewpHelp.scm. The network-panel is defined in NetworkPanel.scm
  3. GrewpHelp.scm
    This pops up a help window describing the GrewpEdit tool.
  4. NetworkPanel.scm
    This creates a pane that allows the user to create a local grewp or to join a remote grewp. In either case, it creates a grewp-panel (constructed in GrewpPanel.scm). It also creates a global chat panel (in GlobalChatPanel.scm) where all grewp members can meet to chat. If the user creates a new Grewp, then a GroupServer is created (see GroupServer.scm) to facilitate the networking.
  5. StartServer.scm
    This provides a procedure (start-grewp-server port session-name) which starts up a local grewp without using a GUI.
  6. GlobalChatPanel.scm
    This creates a global chat panel where all grewp members can chat to each other.
  7. GrewpPanel.scm
    This creates a panel showing the current users and the active documents. There are also two buttons: new for creating a new document, and open for joining an already active document. In either case, a new pane is created with the document name (the pane is constructed in DocumentPanel.scm). If a new document is created, then the a GroupTextAreaServer (GTAS) is created (in GroupTextAreaServer.scm). The GTAS is run by the user who creates the document. When that user leaves, the document become uneditable. ((We may want to find a way to have another user take over the document...))
  8. DocumentPanel.scm
    This creates a pane with three subpanes:
  9. GroupTextAreaServer.scm
    This accepts insert/remove requests from GroupTextAreaClients (GTACs). It serializes them, transforms them so that conflicts are removed, and sends them back to the clients, who then implement them. This uses GroupClient.scm for networking.
  10. GroupTextAreaClient.scm
    This creates a GTAC that listens on a TextArea for user insert/remove commands (via keyboard input, mouse input, etc.) and sends the requests to the GTAS, which in turn handles conflicts and sends back the official command. Different users locations are specified using different highlights (see HighlightManager.scm). Also, every deletion is stored in a kill ring which can be reviewed by the user (see KillRing.scm) and the textarea has local save,save-as,open,close operaqtions defined in a menu (see Menu.scm). This uses GroupClient.scm for networking.
  11. HighlightManager.scm
    This handles highlighting text of individual users using different colors.
  12. KillRing.scm
    This implements the kill ring for the GTAC
  13. Menu.scm
    defines open, save, save-as operations and creates the File menu
  14. GroupChat.scm
    This implements a simple group chat using a GroupClient
  15. ActionWrapper.java
    This is a wrapper class for the key bindings
  16. Bindings.scm
    This defines and applies emacs-like keybindings for the textarea.
  17. GroupClient.scm
    This allows one to connect to a group-server and to send scheme terms to the server and add listeners for scheme-terms coming back from the listener.
  18. GroupServer.scm
    This creates an "echo server" that allows clients to join and then echo's every scheme term they send back to all members of the same group.
  19. PlainDocumentWrapper.java
    A wrapper class that allows one to add actions to the insertString and remove methods of a plain document, as well as providing insertStringNoSend and removeNoSend methods that just do the inserts directly.
  20. Queue.scm
    This implements a queue that incorporates .wait and .notify commands for efficiently handling queued events in a separate thread.
  21. SendLine.scm
    Allows one to send several lines to a host/port and read a one line response.
  22. build-GrewpEdit.sh
    A shell script to create a double-clickable jar file version of the GrewpEdit tool
  23. runGrewpEdit.manifest
    The manifest for the double-clickable jar file version of GrewpEdit
  24. runGrewpEdit.scm
    A small Scheme file that is compiled into a Java file whose main method loads and starts the GrewpEdit.scm code. This class is the main class in the runGrewpEdit.manifest file.
(unused -- Servent.scm, JSchemePanel.java)