Focus-n viewers are software components that are responsible for rendering a plurality of user objects in a particular manner. FIG 19 shows an example of a Focus-n panel 1900 for viewing user objects contained in a set or subset. The content of the panel 1910 is enclosed within a margin. Every viewing panel presents a Title bar 1920 for describing the set or subset that is currently viewed. The title bar always shows the selected project icon 1922, the type of the objects as a set icon 1924, and the name of the selected set or subset with a text label 1926.

 FIG. 19

Beneath the title bar, each specific viewer renders the information in a particular manner. The viewer of the example shows a textual list of the objects, with a header row 1930 specifying the meaning of the columns, and the content rows 1940, one for each object. In this case, the list corresponds to objects contained in the universal set of documents, and the rendered columns show a row index 1941, the name of the object 1942, the number of references to the object 1943 (number of insertions into other objects), the size in bytes 1944, the last modification date 1945, the author 1946 and the access permissions 1947 for the current user to each object. If the list is too long to fit within the viewing height, a vertical scrollbar 1950 will allow the user to access all rows. There is not a horizontal scrollbar because the inventive system automatically adjusts the viewing scale to show all the content width (zoomable interface). Moreover, the viewer may allow the user to choose which columns are to be shown and in which order, as well as the criteria for sorting the rows.

FIG. 20 

FIG. 20 shows the Viewer structure 2000, which is a particular instance of a system object, containing an Object_ID 2010 that indicates the unique identifier of the viewer, a Type_ID 2011 equals to 50 (the type identifier for viewer objects), a Lang_ID 2012 that indicates the language of the Name 2013 and Description 2014 of the viewer, and other fields composed by the Ref_Type_ID 2020, which is the identifier of the type of the objects to be processed by the viewer, the {list of required fields} 2030, that indicates which kinds of fields must have the objects to be viewed, and the Computer code (reference) 2040, which provides a means for locating the computer code of a Java class (typically, a “.jar” file) for executing the viewer processes.

When showing the content of a set or subset, the inventive system will allow the user to choose among the available viewers that can manage the referenced type of objects. This can be performed because of the field 2020, which indicates that the viewer can show the objects of the specified type or any type derived from that one. If the viewer is intended to show all user types, this field will be equal to 1000, since it is the identifier of the basic type for user objects (all other user types derive from this one). However, it may be necessary to perform a second check of the suitability of the viewer for the current type of objects, which is done through the list of required fields 2030, because the viewer may need some specific data or metadata that may not be present in referenced types. For example, a viewer that exposes the objects in a map requires a field of global position (e.g. GPS coordinates or country/state/city/address). Thereby, it may be possible that the objects of the type referred in 2020 do not present this kind of information intrinsically, but the viewer is prepared to show objects of its derived (successor) types.

Any Java class implementing a viewer must provide a zero-parameters constructor and the following public methods:

result setArea(area);

result setSet(set);

result updateSet();

For initiate the viewing process, the inventive system instantiates the setArea() method with the parameter area to indicate the available drawing area, and the setSet() method with the parameter set to indicate which set or subset contains the objects to be viewed. If the content of the set changes, because one object is added, removed or updated, the system will instantiate the updateSet() method, in order to make the viewer update the drawing of the objects. All methods returns as the result an error code to indicate whether that method could be performed and eventually the reason for failure.