DemJava Traversal Studio is a visual editing tool for creating Demeter-Java traversals. The user provides a DemJava class dictionary file for editing. When finished, Traversal Studio exports a class behavior file describing the traversals.
Traversal studio will run as either an application or an applet. See the document source for an example of how to link Traversal Studio to your web page.
When run as an applet, input and output windows will appear within your web browser. Enter your class graph in the "input" window and select Import from the File menu to display your class dictionary (see the Accepted Input section). When finished creating traversals, select Export from the File menu to have your behavior file transfered to the "output" window.
When run as an application, use the Open selection from the File menu to load your class dictionary. When finished creating traversals, select Save from the File menu to have your traversals written to a destination file of your choice.
If an error occurs while parsing your class dictionary, you'll see a warning message. Once you've got your class dictionary displayed in the right pane, you're ready to begin traversing!
Creating a new visitor is easy. Just drag a node from the Class Dictionary (right) pane into the Visitor (left) pane. If the drag and drop succeeeds, you'll see a new visitor in the left window. You may continue to add new visitors at any time.
Once you've got at least one visitor declared, you'll want to make it visit some hosts.
To start a new traversal, drag-and-drop the visitor on the start-host. As you're dragging the visitor along, any hosts you pass over will change their color to match that of the visitor to show that they are willing to accept the visit.
Once you've created a started a new traversal, it automatically becomes the active traversal for the active visitor. Double-clicking on any node in the class graph automatically adds that node as a through node for the active traversal. Right clicking (and holding) any node in the class graph displays a menu for selecting additional traversal types, namely, bypassing, through, and end.
To start a new traversal, from the same visitor, or from a different one, repeat the drag-and-drop process again. The visitor that is active is displayed slighly raised. To change the active traversal for a visitor, simply right-click on the visitor and select it from the menu of available traversals.
DemJava Traversal Studio automatically names the traversals for you. The traversal name is {HostName}{HostTraversalNumber}.
Traversal studio currently only accepts very simple class dictionary files: Construction nodes without syntax. Unnamed parts are automatically named using the lowercase version of their classname.
An example of valid input:
X = .
Y = Z.
Z = .
A = B C D.
B = <part1> E <part2> F.
D = G H I.
C = .
D = .
E = .
F = .
G = .
H = .
I = .
DemJava Traversal studio provides a great famework for building upon with very little work:
I've noticed several small glitches in Netscape's IFC (Barium). Of course, it's their beta release so we have to expect some problems. For starters (and those of you trying to run Traversal Studio as a stand-alone application will discover this rather quickly), when entering an input name in the open file dialog, you'll get an error message that says, "filname.ext.*.* The above filename is invalid". The "*.*" is added by default and I haven't figured out how to fix it other than to just select the file using the mouse. There are also some screen-update bugs that don't repaint the screen properly during resize events. Making another resize fixes this display problem. On 12/11/96, the Barium IFC version 1.0 was released.
There is currently a conflict with the java files imported by DemJava's lexer.java and those imported in Traversal Studio's class dictionary file. I have been hand-hacking lexer.java to remove the conflict.
Traversal studio will only display the last reference to a class part. For example, in the CD { A = B. C = B. B =. }, B will only be drawn for C. This is because there is really only one B object that is referenced by the A and C objects. What we would really like is for A and C to contain different B objects so that they may both be displayed. One solution is to have A, B, and C implement the Cloneable interface. This would allow us to safely clone an object and all of its subparts for display purposes. In fact, it would be very nice if DemJava automatically implemented the Cloneable interface for us.
AppletIOView.java
DemClassView.java
DemFrame.java
DemScrollClassView.java
DemScrollVisitorView.java
DemTrav.java
DemVisitorView.java
Drawable.java
NetscapeApplet.java
Traversal.java
TravStudio.beh
TravStudio.cd
TreeEdge.java
TreeNode.java
Visitor.java
VisitorHost.java
Author - Andrew Miller amiller@xis.xerox.com
Icons - Maureen Denningroy denning@xis.xerox.com
Framework - Netscape IFC Beta (Barium) download
Barium