Flexible JAMM User's
This document describes how to use Flexible JAMM.
Flexible JAMM must be installed before use (see Flexible
the Notepad Example
a Shared Component
View Before Sharing
An Arbitrary Swing Component
a Sample Shareable Application - Notepad
The rJAMM<version>/bin (<version> is the Flexible JAMM version
number. e.g., 0.6.1) directory contains scripts (batch files) for running
Flexible JAMM. The two Swing demonstration applications, Notepad
and Stylepad, can be run with the run_Notepad and run_Stylepad
scripts (batch files), respectively.
To run the Notepad example, from the rJAMM<version>/bin directory,
execute run_Notepad. Similarly for Stylepad, execute run_Stylepad.
Since Notepad uses fewer resources and starts more quickly than Stylepad,
you should start with it. Note to MS DOS users: if the application seems
to take too long to start up, try starting up your TCP/IP networking (e.g.,
via Dial-up Networking) and then restart Flexible JAMM.
Figure 1a. Participant Information. The first time you
run Flexible JAMM, you will need to enter some information unique to yourself:
your name and a color. These will be used to identify you during
collaboration. Your information is stored in a file called collaboration.properties.
The primary Flexible JAMM controls are contained in the window named Flexible
JAMM Collaboration Controls, as seen in Figure 1b.Figure
1b. Flexible JAMM Collaboration Controls window. The upper portion
contains two buttons. The Share Component button (disabled in this
view), initiates sharing of the component. The Change My Information
button allows the participant to change his or her name and color. The
lower portion of the window, labeled Input Control allows participants
to coordinate input control to the shared application (see Input
Control for more information). The
bottom of this window contains a list of the people participating in the
collaboration (new in Flexible JAMM version 1.0.1). Each collaborator's
name, color, current telepointer shape, and an information string is listed.
After you enter your participant information, your screen should look
View Before Sharing
Figure 2. The initial view of Notepad after executing run_Notepad.
So that we have something interesting to share, open a file by clicking
the open-folder icon (second from left). Select the file named
hamlet_actI_sceneI.txt . Your screen should look like the following:
Figure 3. Notepad with the file hamlet_actI_sceneI.txt
Now we can share Notepad. Press the "Share Component" button on the
Collaboration Control window. A dialog will ask for a host, port,
and session name. Accept the default values by pressing the "Connect"
button. If you are using Java versions 1.1 - 1.1.4 you will see a
please ignore this fixed
known bug in the Java AWT (fixed in 1.1.5+).
At this point Flexible JAMM will make a copy of the objects contained
by Notepad. A progress bar will display how much time is left until
the copy is sent. On the receiving end, a corresponding progress bar will
display how much time is left until the copy is fully received.
At the end of this process, your screen should look like the following:
Figure 4. Notepad being shared.
At this point, the Notepad component may be joined by other participants,
which is described next under Joining a Shared Component.
a Shared Component
Execute the script (batch file)
to join a previously shared component (such as the Notepad example above).
You may join the shared component from the same or a different machine
than it was started on. A "Connection Information" dialog will
ask for host, port and session name. Enter the host on which the
original shared component is hosted (the default is the local host).
If the component was assigned a different session name than the default
("rJAMM"), enter that session name in the 'Session name' field. Press
"Connect." Upon connection, the original application will send a
copy to the joining participant. A progress bar will display how
much of the estimated total transfer is complete.
Figure 5. A participant has joined the shared Notepad.
This participant has also scrolled the text up and is viewing a different
portion than the original.
To avoid conflicts, collaboration-transparency systems allow only one participant
at a time to generate input (mouse and key input). In Flexible JAMM,
control is implicitly granted to the first participant to press a mouse
button. That participant holds control until they releases the mouse button.
Control may also be taken by pressing the "Take Control" button.
Control can be taken away, unless you check the "Keep Control" check-box.
The new control holder is displayed in the Input Control panel.
Figure 6. The Collaboration Control window contains the
Input Control panel.
Flexible JAMM relaxes the input control constraint in one case. Multiple
users may simultaneously enter text in a text area. See Multiuser
Interface Components: Concurrent Editing for more information. Figure
7 illustrates two users simultaneously editing text in a shared Swing
Figure 7. Two users simultaneously
entering text. User A is editing text in the replica on the left and User
B is editing the replica on the right.
An Arbitrary Swing Component
Any 100% Swing component may be shared via Flexible JAMM (See Converting
an Application to Swing and Serialization for more information).
is the script to run components for later sharing. run_jammviewer
takes one parameter, the class name of the component you wish to share.
The class must have a no-parameter constructor in order for Flexible JAMM
to instantiate it. The syntax is:
There are two ways to allow Flexible JAMM to find the Java class of the
component you wish to share.
Class files in a JAR File - If your classes are in a jar file, put the
jar file in the rJAMM<version>/jars directory. For examples
of components in jar files, see Other
Class files in CLASSPATH - Simply set your CLASSPATH environment variable
to include the path to your class files.
A simple example, called ButtonTest, is included in Flexible JAMM
rJAMM<version>/samples/ButtonTest/. ButtonTest is
a simple Swing component that contains two buttons, "Button A" and "Button
B," which disable each other when pressed, as seen in Figure
8 (see ButtonTest.java for sample source
code). To share ButtonTest with Flexible JAMM, set your CLASSPATH environment
variable to CLASSPATH=rJAMM<version>/samples/ButtonTest
(this must be done by the initiator and all joiners of the shared session).
To initiate sharing, perform the following steps.
- Execute the following command
- When the application starts, press the Share button to initiate
- On the joining host, execute the following command
Figure 8. One collaborator's view of a simple Swing component,
shared via Flexible JAMM.
JAMM Multiuser Components
JAMM Telepointer Options
James "Bo" Begole