README for groupscheme/test
This directory contains the following files:
- GrewpEdit.html
a description of the architecture of the GrewpEdit system
- 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
- GrewpHelp.scm
This pops up a help window describing the GrewpEdit tool.
- 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.
- StartServer.scm
This provides a procedure (start-grewp-server port session-name)
which starts up a local grewp without using a GUI.
- GlobalChatPanel.scm
This creates a global chat panel where all grewp members can chat to each
other.
- 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...))
- DocumentPanel.scm
This creates a pane with three subpanes:
- a chat widget to discuss the current document (created in GroupChat.scm),
- a shared editor widget (created in GrewpTextAreaClient.scm), and
- a group awareness widget, that shows the members of the grewp viewing this document
- 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.
- 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.
- HighlightManager.scm
This handles highlighting text of individual users using different colors.
- KillRing.scm
This implements the kill ring for the GTAC
- Menu.scm
defines open, save, save-as operations and creates the File menu
- GroupChat.scm
This implements a simple group chat using a GroupClient
- ActionWrapper.java
This is a wrapper class for the key bindings
- Bindings.scm
This defines and applies emacs-like keybindings for the textarea.
- 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.
- 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.
- 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.
- Queue.scm
This implements a queue that incorporates .wait and .notify commands for
efficiently handling queued events in a separate thread.
- SendLine.scm
Allows one to send several lines to a host/port and
read a one line response.
- build-GrewpEdit.sh
A shell script to create a double-clickable jar file version of the GrewpEdit tool
- runGrewpEdit.manifest
The manifest for the double-clickable jar file version of GrewpEdit
- 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)