The Virtual Laboratory Browser

Quick contents

Browser provides the user with a two-dimensional view of the database (see figure below). Each object is represented by a folder symbol, object name, and an optional icon. Prototypes and extensions are connected by lines forming a tree structure. Objects with folder symbols of type 3 have extensions, while objects with folder symbols type 1 represent leaves of the tree. Folder symbols that contain the letter 'L' indicate symbolic links to different object databases (usually the object oriented file systems of other users). Whenever objects are created, copied, moved, or deleted, browser dynamically updates the displayed tree. If the tree of the object hierarchy does not fit into the window, the scrollbars can be used to adjust the view in both horizontal and vertical directions.

Start-up Information

Browser is usually invoked from the command line, using the following syntax:

    browser [-p password] [[[login@]hostname:]dirname]

Valid examples of invoking browser are:

    browser
    browser ~/vlab/oofs
    browser acs6.acs.ucalgary.ca:/scratch/vlab/oofs
    browser joe@cs2:/usr/u/vlab/oofs
    browser -p ecret678 joe@cs2:/usr/u/vlab/oofs

Browser assigns the following default values for unspecified parameters:

    password = NULL (unspecified)
    login = the current user name (whoami)
    hostname = localhost
    dirname = $(VLABROOT)/oofs

When browser is invoked on a remote database, the user is prompted to enter his login name and password (see figure below), unless both the login name and password are specified on the command line. If the authentication process with RAserver fails, the user is notified and prompted for the login information again.

Menu Bar

The menu bar provides an interface to most of the functionality available in browser. The File menu groups actions related to general operations of browser. The View menu contains operations used to change the view of the database. The Object menu groups actions for database management and object invocations. The Find button is used for searching through object databases. The Help menu contains operations for invoking browser's on-line documentation. A detailed description of the operations available through these menus follows:

New browser
Invokes a new browser window with the initial view of the same oofs database.

Open shell
Opens a UNIX shell window. The directory in this window is automatically set to be the directory of the selected object. This is a useful feature for users wishing direct access (command line) to the internals of objects. This menu is disabled when accessing remote databases.

Open file
Displays a file selection dialog, listing files in the directory of the selected object. If no object is selected, the files in the directory of the root object are listed. When a file is selected from the file selection dialog, browser invokes a text editor on this file. This menu is disabled when accessing remote databases.

Open console
Opens the system error log. This is useful for viewing debug information from the browser application as well as from any objects that have been opened

Import
Opens the Import dialog. This allows you to import an oofs, or a tree of oofs from a zip archive, .tar.gz archive or a full directory structure copied from another location or machine. The Import process is capable of reading files that contain either the windows newline characters or the mac/linux newline characters.

Export
Opens the Export dialog. This allows you to export an individual oofs or a tree of oofs from the browser into a user specified format. Supported output formats are ".zip", ".tar.gz" or uncompressed. When exporting you can also select whether to use the windows or mac/linux newline characters.

Update Database
Opens the dialog which allows you to update the object database.

Show extensions / Hide extensions
Toggles the display of immediate extensions of the selected object.

Show all extensions
Shows (recursively) all extensions for this object. Symbolic links to objects are not expanded except the selected object. This prevents browser from entering an infinite loop when owners of oofs databases have cyclical links to each other's databases.

Show icon / Hide icon
Toggles the display of the thumbnail icon for the selected object.

Hide all icons
Recursively hides all thumbnail icons of the selected object and all of its displayed extensions.

Show all icons
Recursively shows thumbnail icons for the highlighted object and all of its displayed extensions.

Centre object
Adjusts the view of the database so that the position of the selected object in the browser's window is as close to the center as possible.

Show hyperlink target
Locates the object which the currently selected hyperlink references and displays it centered in the browser window.

Begin tree here
Hides all ancestors of the selected object. After this operation is applied, only the tree starting at the selected object remains visible. This operation can be reversed by the following operations.

Begin tree from root
Shows the tree beginning at the root of the object hierarchy inde-pendently of the currently selected object.

Get
Invokes the object manager on the selected object.

Rename
Allows the user to rename the selected object. The user is prompted for a new name which has to be entered in a dialog window. If the selected object cannot be renamed as requested, the user is notified appropriately.

Cut
After a confirmation is obtained from the user, the selected object and all its extensions are recursively copied into a temporary space (clipboard) and then deleted from the original location. This entire tree can be later copied into any other location (including different databases) using the Paste function.

Copy node
Copies a single object (without its extensions) to the internal clipboard, from where it can be pasted.

Hypercopy node
Creates a hypercopy of the selected node (without its extensions) on the internal clipboard, from where it can be pasted.

Copy subtree
Copies the selected object and its entire subtree to the clipboard for a subsequent paste operation.

Hypercopy subtree
Creates a hypercopy of the selected node (with its extensions) on the internal clipboard, from where it can be pasted.

Paste
The object and its extensions, if any, stored in the clipboard become an extension to the selected object. The user is notified if the paste operation cannot be completed.

Delete
After a confirmation from the user, the selected object and all of its extensions are removed from the object oriented file system. If the delete operation cannot be completed, the user is notified.

Keep h-links / Move h-links
The state of this toggle button determines how the object IDs are affected when objects are copied. When the toggle button is set to 'Keep h-links', the IDs remain associated with the original objects and new IDs are created for the new copies. When the toggle button is set to 'Move h-links', the IDs are re-assigned to the copies, while new IDs are generated for the original objects.

Find
Makes it possible to search for an object in the object tree by specifying a substring of the name that is being looked for. When a match is found, the object is located in browser's window by expanding the appropriate branches of the database tree, and the user is given the option to either continue searching for the next match, or to abort the search completely. The choice of whether the find algorithm will expand symbolic links when searching for the object is selectable by the user:

VLab Browser Help
Invokes an on-line documentation.

About VLab Browser
Displays general information about the current version of browser.

About Qt
Displays general information about the version of Qt that VLab was built against.

Preferences
Opens a dialog window where the user can customize the visual appearance of browser, i.e. change the colors, font, etc.

Quit VLab Browser
Exits browser.

Mouse Operations

In addition to selecting menus from the menu bar, the mouse can also be used to perform a number of actions.

Left button
  • Clicking on an object's folder symbol, name or icon selects the object.
  • Double clicking on the object's folder symbol places the object on the lab table by invoking the object manager on the object.
  • Double clicking on the object's name shows or hides object extensions.
Middle button
  • Selects an object and makes it possible to copy it using the drag and drop operation. The user selects an object and drags it to a new location, where a new child is created. The view of the object hierarchy is automatically scrolled if the destination object is located outside the viewing area. Drag and drop operation only copies the object, not the object's extensions. Its functionally is equivalent to performing Copy node and Paste operation. Dropping an object on itself or releasing the mouse button with no object selected cancels the drag and drop operation.
Right Button
  • Clicking on the object's name or folder symbol shows or hides the object's thumbnail icon (toggle action).

Advanced Features

Multiple Browser Windows

In order to allow the user to simultaneously view different parts of a database, multiple copies of browser can be invoked and each browser can then display different parts of the database. Similarly, multiple copies of browsers can be invoked on different databases, allowing the user to easily transfer objects between databases through the use of drag/drop or cut/copy/paste functions. All instances of browser invoked by the same user can communicate using VLAB daemon. Changes made to a database in one browser are broadcasted to all other browsers to maintain consistency between the real and displayed information. It should be noted that if more than one user accesses the same database at the same time, changes made to this database by one user are not automatically reflected in browser invoked by the other users.


Importing and Exporting Objects

The import and export functions provide for easy transfer of objects between computers or operating systems by email or by using removable media.

Importing

The import function allows you to take an existing directory structure on your computer, or an archive (either .zip or .tar.gz) and import it into the OOFS filesystem. This is supported when you are running browser on a local directory and when browser is connected to raserver.

To begin the import process use the browser to select the node where you would like to place the imported object, then under the File menu select "Import".


First select the type of structure you are trying to import, whether it is a Directory, Zip archive or Tarred GZip. Then you can browse for the object and select it. The available file types within the filesystem browser window are dependent on the archive type selected so it is important to set this property first.

Once you have selected the object you should select whether the files within the object were created under Mac/Linux or under Windows. The newline characters and directory structures are different between the operating systems so it is important to set this field properly. You can also select whether to just import the base object itself, or recursively import all of its extensions.

The import function will create a new node with the same name as the archive you are trying to import, so if the filename of your archive is "01-lychnis.zip" then it will create a new node with the name "01-lychnis".

If there is already an object in the destination which shares the same name then a window is presented notifying you of the conflict. You can either cancel the import process or proceed and use the merge window to resolve the conflict.


The merge window shows you the directory and file structure of the object you are trying to import. It shows the structure complete with the intermediate "ext" directories, although the names of these should never be changed.


There are 3 colors used in this window to show the different status of each file. If a file or directory's name is red then it already exists in the destination. Existing directories will be merged together and existing files will be over-written. You can resolve these conflicts by doing one of the following:

The process can be aborted by selecting the "Cancel" button if you do not wish to manually resolve the conflict and would rather import the object to another location. Once you are ready to proceed select "Done" and the object will start being imported. If you are importing a large subtree to a remote server this process may take some time.

Exporting

The export process is similar to the import process. You select the node where you would like to start the export process, then select "Export" under the File menu. You will be presented with a dialog box which is very similar to the Import window, and from here you select the target file type, location and whether it is being exported in the Mac/Linux format or the Windows format as well as whether you would like to export only the object, or the entire subtree recursively.

There are a couple things to take note of that differ from the import process:

Customization

The look of the visualized object database can be customized by the user through a customization window. The customization window (see below), is invoked by selecting the Customize from the Filemenu. The user can choose various colors used in browser's display, change the format of the tree display, modify fonts and select icon size and icon zoom methods. Colors and fonts can be changed using color and font chooser (see below). Push-buttons are located in the bottom of the window for saving or loading the selected settings, and to apply or cancel the selections. By default, custom settings are saved in a file specified by $(VLABCONFIGDIR)/browser, although different file name can be specified. The appearance of the browser can be also changed by modifying its application resource file app-defaults/Browser.

Implementation Details

Browser was written in C, using Xt, Motif, OpenGL and SGI libraries.

References

E. Lowe - Extensions to the Virtual Laboratory. Master's thesis, University of Calgary, Calgary, Canada, 1995.

S. Moen, "Drawing Dynamic Trees", IEEE Software, July 1990, pp. 21-28.

Credits

P. Federl - design improvements and browser implementation

Selected routines for image manipulation copyright 1994 by John Bradley. Used with permission.

E. Lowe - design and implementation of the browser's prototype in Tcl/Tk and C

I. Hernadi, P. Federl, P. Prusinkiewicz - browser documentation

Bugs

1. There is no 'undo' command.

2. Placing an object on the lab table is sometimes slow, since the object's files need to be copied to a temporary location, and no user feedback is given during this process until the object's icon is displayed on the screen.
 


Last updated July 12th, 1999 by Pavol Federl