The Virtual Laboratory Browser

Quick Contents
VLAB Home

Overview

Browser provides the user with a two-dimensional view of an object database (see figure 2 below). Each object is represented by a folder symbol, object name, and an icon. Prototypes and extensions are connected by lines forming a tree structure. Whenever objects are created, copied, moved, or deleted, browser dynamically updates the database and the displayed tree.

Browser works with objects and hyperobjects. An object is a model defined by a set datafiles. Objects can inherit datafiles from other objects and form subtrees in the database. A hyperobject is a link to an object in the database. Experiments on hyperobjects do not affect the original object, as temporary copies of the datafiles are used. This facilitates the presentation of a VLAB object in several different contexts, while keeping the main database intact. Objects and hyperobjects can be collected into a single database and are both visible in Browser. Versions of VLAB for other platforms have seperate Browser and Hyperbrowser applications (refer to New in vL1.0.)

Browser Execution

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 1 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.

Figure 1 - Browser login screen.

Display, Menu and Selection

Browser displays a 2-dimensional map of the objects in the database which can be navigated and modified. Each object is represented by a folder symbol, object name, and an optional icon (refer to table 1 for a legend of folder symbols). Clicking an object's folder symbol, name or icon with the left mouse selects the object. In figure 2 below, the hyperobject paintbrush is selected, and is highlighted in purple. The colours and fonts used in Browser can be customized (refer to Customization).

Figure 2 - A sample Browser screen.

Object Extension
Object
Hyperobject Extension
Hyperobject
Symbolic Link
Invalid Link

Table 1 - Legend of folder symbols.

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.

Right Button

  • Clicking on the object's name or folder symbol shows or hides the object's thumbnail icon (toggle action).

Table 2 - Browser Mouse Operations.

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. Following is a detailed description of the operations available through these menus.

Figure 3 - Browser File menu.

New browser Invokes a new browser window with the initial view of the same oofs database.
Open shell Opens a Linux 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.
Customize Opens a dialog window where the user can customize the visual appearance of browser, i.e. change the colors, font, etc.
Check database

Checks the database for errors and inconsistencies with .dbase file and opens report in message window.

Exit Exits browser.

Table 3 - Description of Browser File menu.

Figure 4 - Browser View menu.

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 shows thumbnail icons for the highlighted object and all of its displayed extensions.
Show all icons Recursively hides all thumbnail icons of the selected object and all of its displayed extensions.
Center 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.
Begin tree here / Show parent Hides all ancestors of the selected object. After this operation is applied, only the tree starting at the selected object remains visible.

If Begin tree here has been selected, the option Show parent replaces it.

The immediate parent of the selected object and all of the parents extensions are displayed.

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

Table 4 - Description of Browser View menu.

Figure 5 - Browser Object menu.

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 Copies the hypernode data of the selected object (without its extensions), which can be pasted to create a hyperobject.
Copy subtree Copies the selected object and its entire subtree to the clipboard for a subsequent paste operation.
Hypercopy subtree

Makes a hyper-copy of the subtree.

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.
New object Creates an empty object node. This can be used as a placeholder for subdirectories, or datafiles can be imported manually through the Linux file system.
New hyperobject Creates an empty hyperobject node. This can be used as a placeholder for subdirectories, or datafiles can be imported manually through the Linux file system.
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.

Table 5 - Description of Browser Object menu.

Figure 6 - Browser Search menu.

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.

Table 6 - Description of Browser Search menu.

Figure 7 - Browser Help menu.

About Displays general information about the current version of browser.
Online help Opens default browser with on-line documentation.

Table 7 - Description of Browser Help menu options.

Browsing an Object Database

Placing an Object or Hyperobject on the Lab Table

An object or hyperobject can be placed onto the lab table by double-clicking the left mouse button on the objects folder symbol. Alternatively, the user can select the object with the left mouse and select Get from the Object menu. When the object or hyperobject is placed onto the lab table, the Object Manager is invoked and various actions are available. Refer to Object Manager.

Copying and Hypercopying Nodes and Subtrees

Object and hyperobject nodes and subtrees can be copied and pasted within a database. Objects can be dragged and dropped into another database to make a copy.

To copy and paste a object or hyperobject node:

To copy and paste an object or hyperobject and it's subtree:

To hypercopy and paste an object node:

Note:

Drag and drop operation only copies the object, not the object's subtree.

Note:

If an Object is copied, all datafiles are copied and an identical object can be pasted.
If an Object is hypercopied, its id and location is stored, and a hyperobject link to this object can be pasted.
If a Hyperobject is copied, all hyperobject data is copied and an identical hyperobject can be pasted.
A Hyperobject cannot be hypercopied.

Deleting Nodes

An object or hyperobject node can be deleted by selecting the node, then selecting Delete from the Object menu or using the keyboard shortcut Ctrl+X. Subtrees are also deleted. A confirmation dialog is opened before a node and its extensions are deleted.

Renaming Objects and Hyperobjects

Objects and hyperobjects can be renamed by selecting the node with the left mouse, then selecting Rename from the Object menu. A dialog is opened in which to type the new name. The user can specify an empty name for a hyperobject, indicating that the hyperobject should inherit the name from an object it points to. The name chosen for a hyperobject does not affect the object in any way. You can think of that name as an alternative name for an object.

Invalid Hyperobjects

Invalid hyperobjects are hyperobjects which contain pointers to nonexisting objects. Invalid hyperobjects result as a consequence of deleting information from oofs databases. Unfortunately, there is currently no mechanism implemented in browser to warn the user when an operation on an oofs database results in making some of the hyperobjects invalid.

Advanced Features

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.

Note:

If more than one user access 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.

Customization

The look of the visualized object database can be customized by the user through a customization window. The customization window (see figure 8 below), is invoked by selecting the Customize from the File menu. 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. The VLAB HSV-RGB Colourpicker is used to select colours, and is invoked by clicking the left mouse on the buttons along the left side of the panel (Background, Line, etc.). Buttons are located in the bottom of the window for saving or loading the selected settings. By default, custom settings are saved in a file specified by $(VLABCONFIGDIR)/browser, although different file name can be specified.

Figure 8 - The Browser customization panel.

Figure 9 - The VLAB HSV-RGB Colour Picker.

Once the HSV-RGB Colour Picker is open, the colour's HSV or RGB values can be adjusted using the sliders on the left side of the dialog, or by entering the value in the edit boxes to the right of the sliders.

Note: The return key must be pressed after editing in the boxes.

The hue and saturation of the colour can be selected on the rainbow colour wheel with the mouse by pressing the left mouse button to select a colour, and moving the mouse to adjust the selection.  The hue line and saturation circle are drawn to aid in the selection.

The large box below the colour wheel shows the current selection.  The selection is automatically applied.

The smaller box below the colour value slider shows the original colour.  To revert to this colour, click the left mouse inside this box.

If the colour picker is closed, the colour remains as it appears on the customization panel.

Implementation Details

Browser was written in C++, using OpenGL and QT 2.3.0 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

Jin Xiao - Browser Implementation, vL1.0

P. Federl - Design Improvements

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

Joanne Penner - Documentation Update, VL1.0

Bugs

1. There is no 'undo' command.

2. Browser crashes if a node is Cut and then Pasted.

3. Hyperobject nodes in symbolic links in the database refer to nodes in the current database, and not the database symbolically linked to as should be.

New in vL1.0

A major difference between VLAB for Linux from other platforms is that Browser and Hyperbrowser are combined into one application. Now, databases can contain mixed objects and hyperobjects. OOFS databases should port easily to Linux, as all file formats are consisitent on all platforms. Hyperobjects may need to be re-created. HOFS hyperobject database is not necessary.

VLAB Home

Last updated December, 2001 by Joanne Penner