US 6853391 B2
A user interface component and method of using the same graphically display linked records with node display elements representing individual records, and optional link display elements representing the links therebetween. The user interface component may be automatically and dynamically generated during navigation between linked records, such that whenever a new link is taken from a record represented by a node display element, a new node display element is generated. In addition, the user interface component may further be configured to graphically represent the particular location of a particular link within a record, as well as a scroll display element associated with selected node display elements such that specific data or locations within the records associated therewith may be accessed. Moreover, the user interface component may also be configured to incorporate a retrieve progress display element that indicates a current status of a retrieve operation for a record. Individual node display elements within a user interface component may also separately indicate status information for their associated records, e.g., displaying a cache status and/or a matching status that indicates whether associated records match a predetermined search criteria, among others. The user interface component may also be utilized to perform common operations such as printing, caching and loading, among others, on selected records in response to user selection of the nodes associated with the selected records.
1. A computer-implemented method of performing operations on a plurality of linked records, the method comprising:
(a) determining at least two selected records from an end user in response to user selection of at least two of a plurality of node display elements, wherein each node display element is associated with one of the plurality of linked records, and wherein at least a pair of node display elements are respectively associated with a pair of records that are linked to one another, the pair of node display elements graphically linked with one another; and
(b) performing a common operation on the selected records.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
(a) displaying a link display element graphically linked to a node display element for a first selected record to be retrieved; and
(b) displaying a retrieve progress indicator during retrieval of the first selected record, the retrieve progress indicator graphically linked to one of the link display element and the node display element associated with the first selected record.
8. The method of
9. The method of
10. The method of
11. The method of
12. A computer system configured to perform operations on a plurality of linked records, the computer system comprising:
(a) a computer display; and
(b) a processor configured to display on the computer display a plurality of node display elements, wherein each node display element is associated with one of the plurality of linked records, and wherein at least a pair of node display elements are respectively associated with a pair of records that are linked to one another, the pair of node display elements graphically linked with one another; to determine at least two selected records from an end user in response to user selection of at least two of the plurality of node display elements; and to perform a common operation on the selected records.
13. The computer system of
14. The computer system of
15. The computer system of
16. The computer system of
17. The computer system of
18. The computer system of
19. The computer system of
20. The computer system of
21. The computer system of
22. The computer system of
23. A program product comprising:
(a) a program configured to perform a method of performing operations on a plurality of linked records, the method comprising determining at least two selected records from an end user in response to user selection of at least two of a plurality of node display elements, wherein each node display element is associated with one of the plurality of linked records, and wherein at least a pair of node display elements are respectively associated with a pair of records that are linked to one another, the pair of node display elements graphically linked with one another; and performing a common operation on the selected records; and
(b) a signal bearing media bearing the program.
24. The program product of
This application is a divisional application of U.S. Ser. No. 09/510,719, filed on Feb. 22, 2000 now U.S. Pat No. 6,404,446 by Bates et. al., entitled “MULTI-NODE USER INTERFACE COMPONENT AND METHOD THEREOF FOR USE IN DISPLAYING VISUAL INDICATION OF SEARCH RESULTS”, which is a divisional application of U.S. Ser. No. 09/227,803, filed on Jan. 8, 1999 by Bates et al., entitled “MULTI-NODE USER INTERFACE COMPONENT AND METHOD THEREOF FOR USE IN ACCESSING A PLURALITY OF LINKED RECORDS” (now U.S. Pat. No. 6,072,490), which is a divisional application of U.S. Ser. No. 08/912,258, filed on Aug. 15, 1997 by Bates et al., entitled “MULTI-NODE USER INTERFACE COMPONENT AND METHOD THEREOF FOR USE IN ACCESSING A PLURALITY OF LINKED RECORDS” (now U.S. Pat. No. 5,877,766), which applications are incorporated by reference herein.
The invention is generally related to computers and computer software for use therewith, and more particularly, to user interface components for permitting user access to data stored in a computer.
As computers have become more complex and powerful, the manner in which end users or operators interface with computers has grown increasingly important. Early computers relied on switches, lights, and/or punch cards that required an end user to interact essentially in the computers' native binary languages. Eventually, video displays were developed that enabled end users to interact with computers through textual information and commands. Another significant step in this evolution was the development of graphical user interfaces (GUIs), which permitted end users to interact with computers through the more intuitive operations of “pointing and clicking” on graphical display elements with a pointer controlled by a mouse or other user interface device. For example, to print a file, an end user in a text-based system might be required to enter a command such as “print <filename>”. With a graphical user interface, a similar operation might be accomplished by merely moving a pointer with a mouse and clicking on an graphical icon showing a graphic representation of a printer.
Information is often presented to an end user in a graphical user interface component known as a window. A window may include any number of controls or handles that an end user can point and click on to perform different operations. For example, a title bar is often provided at the top of a window to identify the application the window is associated with. A window may also include resizing handles along its boundaries that a user can grab with the pointer to change the size of the window. A menu bar on a window may include multiple pull-down menus that a user can select to perform specific functions listed in the menus.
A window may be used to display a relatively large document with only a portion of the document shown at any given time. Scroll bars on the window may then be used to navigate through the document—that is, to scroll through the information in a document so that a different portion of the document is displayed in the window. A scroll bar itself has a number of controls. For example, an end user may control a slider (or puck) on a scroll bar by clicking and holding down a mouse button over the slider, and then moving the pointer to scroll to a specific location in the document. An end user may also click on arrow buttons found at each end of a scroll bar to scroll a document line-by-line. Also, an end user may click on regions in the scroll bar between the slider and the buttons to scroll the document page-by-page or screen-by-screen.
A principal use of windowing technology is in accessing data stored in a computer. For example, data may be organized into records or files that are linked together in a predetermined manner. Accessing such data in an efficient manner is often problematic.
Data is often stored in files that are stored within various directories organized into a hierarchical directory tree. A number of graphical user interfaces represent directories using folder icons that an end user can click on to view the files and/or sub-directories contained within a given directory.
A directory tree typically can be used to reach any directory and/or file available to a computer. When the directories and files are all stored locally (e.g., on a hard or floppy disk drive), a directory tree may be an efficient manner of accessing data. However, data may also be stored outside of a computer, e.g., on a private network such as a local area network (LAN) or wide area network (WAN), and/or on a public network such as the Internet. The amount of data stored on these additional sources is often too substantial for access with a conventional directory tree, as thousands of files and directories may be represented in a given tree. An end user may have to manually dig through several levels of directories to find a particular file. An end user may also be able to use a search engine to find possible directories for a file; however, several directories may nonetheless need to be viewed before the desired data is found.
Another manner of accessing data is through the use of embedded links. For example, on a segment of the Internet known as the World Wide Web, information is organized into hypertext documents having embedded hypertext links that an end user can click on to either jump to different documents, or to jump to different locations within the same document. A wide variety of information formats such as text, graphics, video, sound, and animation may be integrated into these hypertext documents. The World Wide Web has enjoyed such immense popularity that many private networks now also support hypertext documents, as do a number of existing computer operating systems and computer software applications.
A computer software application, often referred to as a browser, is typically used to navigate between and through hypertext documents. With a browser, an end user can point and click on links such as highlighted text, images or other user interface components (e.g., buttons) in documents to navigate to different documents and/or to different locations within the same document. With the vast amount of information available to an end user, however, it is quite easy to lose one's place after navigating through several links.
Unlike an end user's local files, hypertext documents often cannot be organized hierarchically into directories that descend from a common root. For example, a document may be linked to multiple documents that are completely unrelated to one another, and which may be stored on different computers that are located on the opposite side of the world from one another. Consequently, conventional directory trees are not well suited for maintaining one's place during browsing.
Many browsers maintain a history of navigated locations to enable an end user to backtrack through several links, e.g., by clicking on a “back” button. Revisiting backtracked links may be performed using a “forward” button. In addition, an end user may save favorite locations as “bookmarks”, which may themselves be organized into user-specified folders. An end user often can later access bookmarked locations merely by selecting a bookmark from a menu.
Nevertheless, neither history nor bookmark information typically provides a full picture or map of the various documents and locations that an end user has traversed while browsing. For example, when an end user navigates through several links from a particular document, backtracks to the original document using a back button, and then selects another link within that original document, the previous links navigated from the original document typically can no longer be retrieved using the “forward” button of the browser. Documents retrieved previously from the Internet or another network may be stored locally in a cache to speed repeat access, but once the history information for forward links is lost, the underlying documents are often only retrievable through manual searching of the computer cache.
Also, bookmarking locations is typically a manually-performed activity, whereby an end user specifically stores and organizes favorite sites as he or she sees fit. Bookmarking is therefore time consuming and fully dependent on end users. Unless an end user takes the extra time to bookmark every visited location, a complete map or history of navigated locations often cannot be maintained.
History and bookmark information are also not well suited to navigating within particular documents. While some documents may include internal hypertext links that point to different locations within the same documents, history and bookmark information permits navigation within such documents only to the particular locations specified by the internal hypertext links. Instead, separate mechanisms such as scroll bars must be used as the principal mechanisms for navigating to particular locations within documents. Consequently, an end user is often forced to consciously click on different objects in a graphical user interface depending upon whether the end user wishes to navigate between documents or to navigate within documents. As a result, navigation with this type of user interface is slow and burdensome for many end users.
Therefore, a significant need exists for a manner of organizing and enhancing access to hypertext documents and the like. Moreover, a significant need exists for a manner of enhancing navigation between and within such documents.
The invention addresses these and other problems associated with the prior art in providing a unique user display and method of using the same in which linked records are graphically displayed with node display elements representing individual records, and link display elements representing the links therebetween. One particular application deriving unique benefit from the invention is in that of navigating hypertext documents, whether stored locally, on a private network, and/or on the Internet or other public network. However, it should be appreciated that the invention may benefit other applications that utilize linked records consistent with the invention.
Consistent with one aspect of the invention, a user interface component may be configured to incorporate a scroll display element associated with a selected node display element to access specific data or locations within the record associated therewith. In this manner, navigation within records and navigation between records is integrated into a common user interface to speed as well as to simplify access to the data within the records.
Consistent with a further aspect of the invention, other control elements in addition to or in lieu of a scroll display element may be utilized on a selected node display element to facilitate navigation within the record associated therewith.
Consistent with another aspect of the invention, a user interface component may further be configured to graphically represent the particular location of a particular link within a record. This additional information enables an end user to quickly ascertain the relative location of a link within a record.
Consistent with yet another aspect of the invention, individual node display elements within a user interface component may separately indicate status information for their associated records. For example, a cache status may be indicated in individual node display elements to indicate whether the associated records are currently stored in a computer's memory.
Consistent with an additional aspect of the invention, a user interface component may also be configured to incorporate a retrieve progress display element that indicates a current status of a retrieve operation for a record. By graphically associating the retrieve progress display element with a node and/or link display element, the status of a retrieve operation may be easily and quickly ascertained.
Consistent with yet another aspect of the invention, other status information may be indicated within a user interface component. For example, a matching status may be indicated in individual node display elements to indicate whether the associated records match a predetermined search criteria.
Consistent with a further aspect of the invention, a user interface component may also be utilized to perform common operations on selected records in response to user selection of the nodes associated with the selected records. Customized groupings of records may therefore be jointly operated upon through a highly efficient user interface.
These and other advantages and features, which characterize the invention, are set forth in the claims annexed hereto and forming a further part hereof. However, for a better understanding of the invention, and of the advantages and objectives attained through its use, reference should be made to the Drawing, and to the accompanying descriptive matter, in which there is described exemplary embodiments of the invention.
The various embodiments of the invention principally provide a unique user interface component to graphically represent a data structure having a plurality of linked records. The user interface component, which is referred to below as a map display component, or simply a map display, utilizes a map data structure, or map, with a plurality of node display elements (NDE's) to represent individual records that are graphically linked to one another. In addition, a plurality of link display elements (LDE's) in the map data structure may be utilized to represent the links between such node display elements.
While the disclosure shall hereinafter describe the use of map displays for representing and/or navigating linked hypertext documents, it should be appreciated that the invention may have benefit in other applications to access (e.g., view, store, modify, etc.) linked records consistent with the invention. For example, map displays consistent with the invention may be utilized to represent private databases, menuing systems, etc.
When used in conjunction with navigating hypertext documents, a map display is typically generated dynamically, whereby node display elements are automatically added to the map display as new links are taken by an end user. Consequently, the map displays may be used to provide a history, or “bread crumb trail” for an end user as he or she navigates through various records. Given the practically endless amount of content on the Internet, for example, the history provided by a map display may be invaluable.
Another display element that may be included in a map display is a scroll display element, also known as a “slider” or “puck”, which enables node display elements to have additional functionality as scroll bars for navigating through the contents of their associated records. When a separate display such as a browser window is activated for displaying the contents of a given document, a slider disposed within a region of the associated node display element may be utilized to scroll the browser window through the contents of the document. Moreover, a slider may be utilized to navigate to different documents, e.g., by dragging the slider to another node display element, either by passing through adjacent elements (a “bounded” drag) or by dragging directly to the desired node display element (an “unbounded” drag). Through this arrangement, navigation within documents is integrated with navigation between documents, thereby greatly simplifying access thereto.
Furthermore, as will be discussed in greater detail below, each node display element may also be sized relative to other node display elements to indicate a relative size of its associated record. Moreover, link display elements may be positioned on node display elements at a relative location corresponding to the relative location of the link in the associated record, whereby the location of a link within a document may be readily ascertained.
Turning now to the Drawing, wherein like numbers denote like parts throughout the several views,
Additional features, functions, and operations may be utilized in conjunction with map displays consistent with the invention. However, a discussion of such features shall be deferred pending a discussion of exemplary hardware and software environments in which such map displays may be implemented.
A representative hardware environment suitable for use with the illustrated embodiments of the invention is illustrated in
Computer system 20, which may be similar to computer systems 12, 14, typically includes a processor such as a microprocessor 21; a number of peripheral components such as computer display 22 (e.g., a CRT, an LCD display or other display device); hard, floppy, and/or CD-ROM disk drives 23; a printer 24; and various input devices (e.g., a mouse 26 and keyboard 27); among others. Computer system 20 operates under the control of an operating system 28, which is represented in
In general, the routines executed to implement the illustrated embodiments of the invention, whether implemented as part of an operating system or a specific application, program, object, module or sequence of instructions will be referred to herein as “computer programs”. The computer programs typically comprise instructions which, when read and executed by one or more processors in the devices or systems in networked computer system 10, cause those devices or systems to perform the steps necessary to execute steps or elements embodying the various aspects of the present invention. Moreover, while the invention has and hereinafter will be described in the context of fully functioning computer systems, those skilled in the art will appreciate that the various embodiments of the invention are capable of being distributed as a program product in a variety of forms, and that the invention applies equally regardless of the particular type of signal bearing media used to actually carry out the distribution. Examples of signal bearing media include but are not limited to recordable type media such as volatile and non-volatile memory devices, floppy disks, hard disk drives, and CD-ROM's, and transmission type media such as digital and analog communications links.
Those skilled in the art will recognize that the exemplary environment illustrated in
A representative software embodiment suitable for use with the illustrated embodiments of the invention is illustrated in
Map displays are implemented in network system 10 utilizing a number of modules or objects. One or more map managers 30 handle overall management of the mapping function for one or more clients, that is, client computer systems such as individual workstations. Typically, each client (1 . . . p) in a groupware environment is assigned a map manager 30 to handle an active map display 60 for that client. The map display 60 displays the data within a given map data structure to an end user. In certain embodiments, however, an end user may have the ability to open multiple map displays to display multiple map data structures simultaneously.
Each map manager 30 also utilizes a map registry 34 that maintains operational information regarding the active map displays 60. A browser, or browser window, may be considered to include any display component suitable for “browsing” or viewing the contents of a linked record. For example, a suitable browser may be based upon the Navigator web browser from Netscape Communications, or the Internet Explorer web browser from Microsoft. In addition, each browser 36 may be a separate application, or may be a separate window of a single application, as is well known in the art. Generally, a browser 36 is open for each active slider 1 . . . m on the active map display 60 for the client. Each browser open for a particular map display may be referred to as a “user” of the map display.
As illustrated in
In a groupware environment, the functionality of modules 30, 34, 36 and 60 may be separated between client and server computers. For example, modules 30 and 34 may be executed on a server computer to enable other clients to access the map displays of a given client, with map display 60 and browsers 36 implemented locally on an end user's client computer, such as a workstation or desktop system. In a mainframe or network computer environment, even the functionality of map display 60 and/or browsers 36 may be implemented within a server if desired.
Map displays consistent with the invention may have numerous uses in a groupware environment. For example, multiple users may be permitted to share map data structures, and even receive indication of where other user's currently are or have previously been in a given map. Individual icons for each user may be displayed on an end user's map display, or in the event that the number of users is too great, an indicator of the number of users that are currently or have been previously visiting given node display elements may be obtained (e.g., through alphanumeric, icon, pattern, or color indications). IS personnel may also be able to view a map, e.g., to monitor where end users visit most frequently. In general, the sharing of data in a groupware environment is well known in the art, and accordingly, the sharing of map displays among multiple users would be well within the skill of the ordinary artisan.
Nonetheless it should also be appreciated that the principles of the invention also apply to other computer systems whether or not in a groupware environment. For example, map displays may be utilized in single-user systems, e.g., a single desktop or portable computer coupled to the Internet over a dial-up connection, whereby only a single end user would be able to access a given map data structure. In such applications, it is envisioned that all of the requisite modules may be incorporated into a single computer software application such as a web browser application. In general, a wide variety of hardware and/or software environments may be utilized to implement map displays consistent with the invention, and thus, the invention should not be limited to any particular environments discussed herein.
In this embodiment, link display elements 64 are represented by link markers implemented as circular pegs, located proximate to the relative location of the associated link in the parent node display element (the node display element for the document containing the link), from which a child node display element (the node display element for the document referred to by the link) extends. Further, linked node display elements are visually adjoining one another proximate to the associated link display element. It should be appreciated that link display elements 64 may take other forms than circles, e.g., squares, lines, rectangles, and other geometric shapes and/or icons. Moreover, in certain embodiments, separate link display elements may not be required, whereby the point of intersection or abutment between two node display elements provides the visual representation of the proximate location of a link.
It should also be appreciated that a child node display element may extend in practically any direction from the parent node display element, e.g., based upon aesthetic considerations, or alternatively, node display elements may be constrained to extend in only a few predetermined directions (e.g., 45 or 90 degree increments). Moreover, if the link in question specifies a particular location in the child node display element, the link display element may be disposed at that relative location in the child node display element. It should also be appreciated that links may be bi-directional, whereby each node display element coupled by a link may be considered both a parent and a child. For example, a “back” button on a browser may represent a return link to a previous document from which the link to the current document was taken. Links may also be internal to a hypertext document, e.g., to different headings or sections within the document, whereby such link display elements may not be linked to other node display elements.
Furthermore, additional link display elements, e.g., link display elements 66, may be displayed in map display 60 to represent links that have not yet been navigated. By selecting such links, e.g., via a mouse click, an end user may navigate to the document referenced by the associated link. In the alternate, only link display elements that have been navigated may be displayed, or display of non-navigated link display elements may be a user selectable option.
Node display elements are also illustrated having variable lengths representative of the relative sizes of their associated documents. It may be desirable to constrain the lengths of the node display elements between predetermined maximum and minimum lengths, or to utilize fixed-size elements in the alternative. Also, the relative lengths of the node display elements may be adjusted periodically based upon the addition of new node display elements to the map display during navigation. In the alternative, node display elements may have variable lengths to facilitate arrangement of the map display, and thus the lengths thereof may have no relation to the relative size of their associated records. Further, all node display elements may have the same length.
As shown in
In this alternate embodiment, the link display elements 84 may include both a link marker, such as a circular peg 84 a, that indicates the relative location of the link in the parent node display element, as well as a connector such as line segment 84 b extending therefrom and terminating at the child node display element. In some embodiments, however, the link marker 84 a may not be required. Generally a connector in each link display element 84 may terminate proximate a mid-point of the referenced, or child node display element 82 for aesthetic concerns. However, if a particular link references a particular location in the referenced node display element, the connector may instead terminate at this location.
In the embodiment shown in
It should also be understood that either of the representations shown in
Moreover, as illustrated by slider 68 c, the slider in a given node display element may move in tandem with, or “shadow” a slider 55 in the scroll bar 54 of the associated browser window 50 c. Manipulation of either slider 68 c or 55 scrolls through the contents of document 52 c, as well as moves the other slider accordingly. In addition, as disclosed in U.S. Pat. Ser. No. 08/820,798, filed on Mar. 19, 1997 by Cary L. Bates et al. (now U.S. Pat. No. 5,874,961), a browser may include a secondary slider that provides finer granularity for scrolling within regions of a document. It may be desirable to further move a map display slider in tandem with such a secondary slider.
In addition, each slider may be dimensioned to reflect the relative region of the document that is currently displayed in the associated browser (e.g., for slider 68 c, the relative size of the slider is set by the relative size of viewable region 53 of record 52 c, within which is illustrated text 57, image 58, hypertext link 56 a that corresponds to non-navigated link 66 a, and link 56 b that corresponds to non-navigated link 66 b), or alternatively may be a fixed dimension element that is independent of the relative magnification of the browser. Each slider may be identical in appearance, or alternatively, sliders may be graphically associated with their respective browsers, e.g., through color or pattern coordination, or through an icon or alphanumeric indicator on the slider. For example, each browser 50 a, 50 b, 50 c may have a different color header bar, with the colors used for the associated sliders 68 a, 68 b, 68 c. Consequently, even when multiple sliders and browsers are used, the slider for a particular browser is easily distinguished. Also, a slider may be disposed within the boundaries of a node display element, or may be graphically linked thereto in other manners, e.g., extending along an outer edge thereof.
Map Display Data Structure
A representative map display object or data structure, also referred to herein as a map display, generally includes a map data structure with a plurality of node display element objects and link display element objects. For each node display element object, at least the following data may be included:
Similarly, for each link display element object, at least the following data may be included:
Moreover, each slider may be represented as a scroll display element object, including at least the following data:
Other data and/or objects may be associated with a given map display consistent with the invention. Moreover, it should be appreciated that the data and objects within a map display may be maintained in one or more of map manager 30, map registry 34, browser 36 and map display 60, with relevant information either distributed to the various modules that utilize such information, or with all modules maintaining duplicate information that is updated via events, whether separate or incorporated into the events described hereinafter for operating and maintaining a map display. Furthermore, it should be appreciated that a map display may be integrated with its associated map data structure such that display information such as current magnification, etc. is stored in the map data structure. In the alternative, a map data structure may be a separate structure that is accessed by one or more map display structures.
The basic operation and utilization of a map display using the representative software environment of
For example, a browser is typically implemented in a window that typically receives events such as “minimize window”, “maximize window”, “resize window”, “close window”, and many others too numerous to mention. Other functions, such as routines to handle each menu choice, to select bookmarks, etc., are also typically present. These additional functions, however, are not relevant to a full understanding of the invention, and thus are not disclosed further herein.
As illustrated in
Map Display Initialization
A new map display is initialized typically in response to a user request to create a new map display, which may be initiated, for example, by any number of user interface components (e.g., a toolbar button, a menu bar selection, a pop-up menu selection, a keystroke, or an icon, among others). Referring first to
In block 104, a new map event is sent to the map registry 34 to determine. whether a new map display is needed. The event typically includes information regarding the name of the map to be displayed. A new map display is needed when no other browser on the client is using the map, but is not needed when a map display is already opened on the client for this map.
Referring again to
Referring back to
Referring now to
As shown in
Add user block 216 is illustrated in greater detail in FIG. 9. In this routine, a block 280 is executed to determine whether the map is empty—that is, whether any node display elements exist in the map data structure. If so, control passes to block 282 to add a root node display element for the map data structure that is associated with the document the browser is on. If not, the addition of a root node display element in block 282 is bypassed by block 280.
Next, a block 284 is executed to add a scroll display element for the user. The new scroll display element is initialized to point to the node display element associated with the document currently displayed in the browser. In addition, information related to the position, and optionally, the size, of the displayed contents in the browser relative to the overall document are also stored in the scroll display element, such that the element is displayed in the node display element tracks the browser.
Dynamic Node Addition
As discussed above, a map display is typically constructed dynamically based upon user navigation through linked records or documents. One suitable program flow for implementing this feature is initiated in browser 36 by an end user selecting a link to a target document in the currently-displayed document, or current document, for the browser. The user selection of a link is detected by browser 36 at block 116 of
As illustrated in
In addition, in some circumstances certain users may not be permitted to browse documents other than provided on a given map display, which may be useful in some intranet or extranet applications where users may be locked out of certain sensitive data. It should also be appreciated that different users may be granted different access capabilities for given map displays. In the alternative, for applications such as stand-alone environments where users are not sharing map displays, block 220 may be omitted.
As one example, a user may be required to first request permission through a suitable user interface in the browser to modify a given map display, e.g., as illustrated by block 120 in FIG. 5. In response to such a request, the browser may forward an authorize update event to the map manager in block 122, which is detected by the map manager at block 228 of FIG. 7. If a user is allowed to modify a map, one or more flags are set to authorize such activity, as represented in block 230.
Returning to block 220 of
First in the situation in which the target document is not associated with an existing node display element, control passes to block 316 to determine the relative size of the new target node display element based upon the relative size of its associated document to other documents represented in the map display. This determination may require that the other node display elements be resized, e.g., if the target node display element would be outside of a predetermined range fixed for the node display elements. In the alternative, if the node display elements are not dimensioned in accordance with the relative sizes of their associated documents, this block may be eliminated.
Next, in block 318, an initial placement for the target node display element is made. This block is illustrated in greater detail in FIG. 12. Depending upon whether the map display is an adjoining-type or non-adjoining-type map display, or, if selectable by an end user, the map display is in an adjoining-type or non-adjoining-type mode, control is passed from block 350 to either of blocks 352 or 354. In the case of a non-adjoining-type map display (or selected mode), block 352 merely places the target node display element for the target document directly below the current node display element, with a horizontal position set by the relative location of the link in the current document. The vertical position is typically a fixed distance from the current node display element such that all sibling node display elements are spaced along a horizontal axis.
In the case of an adjoining-type map display (or selected mode), block 354 fixes the starting end of the target node display element at the position of the current node display element corresponding to the relative location of the link in the current document. Next, in block 356, different permissible orientations of the target node display element (typically where the target node display element extends at one of a plurality of angles from its intersection point with the current node display element—and often constrained to a few angles, e.g., every 45 or 90 degrees) are tested. Among the various possible orientations, it is desirable to select that which either overlaps the fewest existing node display elements, and/or that which minimizes the span of the current node display element (discussed below). For example, priority may be given to orientations that minimize the number of overlaps, with the span information used to select between orientations with equal numbers of overlaps. Other selection criteria may be used in the alternative. After the target node display element is placed, routine 318 terminates.
If another display element is overlapped, however, block 320 passes control to block 322 to attempt to rearrange the map display and fit the target node display element within the map display.
The span of a node display element may be calculated, for example, using a recursive routine such as determine span (THIS) routine 380 of FIG. 16. In this routine, a pair of global variables, MIN and MAX, are maintained to determine the overall minimum and maximum extents of the node display element and its descendants. When the span is taken along a horizontal axis (as shown in
Routine 380 is initially called for the node display element to be analyzed (i.e., THIS=the node display element to be analyzed), where block 381 determines whether the minimum extent of the node display element in the predetermined direction (designated by the function min(THIS)) is less than (beyond) that set in MIN (which initially may be set to very large number so the minimum extent of the node display element to be analyzed is used). If so, block 382 is executed to set MIN to this value. Similarly, block 383 determines whether the maximum extent of the node display element in the predetermined direction (designated by the function max(THIS)) is beyond that set in MAX (which initially may be set to zero or a negative number so the maximum extent of the node display element to be analyzed is used). If so, block 384 is executed to set MAX to this value.
Next, in block 385, a CURR variable is set to the first node display element linked to THIS, and the determine span routine is recursively called for CURR, represented at block 386. Next, block 387 determines if there are any more links in THIS, and if so, CURR is set to the next NDE linked in THIS in block 388 and control is passed to block 386 to call the determine span routine for the next link. Once all links have been traversed, MIN and MAX will contain the minimum and maximum extents, or the span, of the node display element analyzed. Other routines may be used in the alternative.
Next, in block 374, the child and sibling node display elements are arranged such that their spans do not overlap. This may be performed in any number of manners, typically by modifying the location, orientation, size and/or shape of the child and sibling node display elements such that their minimum and maximum extents do not overlap.
For example, as shown in
Other arrangement techniques may also be used. For example, it may not be possible in a given circumstance to utilize translation or rotation of node display elements. Instead, the relative size of the target node display element, its siblings, or more typically, their parent, may be adjusted to provide the requisite separation. In such circumstances, it may not be possible to retain a correspondence between the size of the node display elements and their associated documents. Furthermore, as exhibited by node display elements 428 and 430, descendant node display elements need not extend from the same side of a given parent node display element. In such instances, the spans thereof may overlap without adverse effects, and block 320 of
It may also be possible to adjust the size of node display elements only along longitudinal portions thereof between link display elements. In such instances, movement of a slider may be non-linear across a given node display element, with movement in a stretched portion between two link display elements scrolling the associated document at a different rate than when in other portions of the node display element.
Furthermore, a recursive technique may be utilized to attempt to rearrange descendant node display elements and thereby adjust the span of sibling node display elements. With this technique, therefore, the spans of sub-maps are minimized from the bottom up, resulting in smaller overall arrangements. This technique may be utilized in conjunction with, or in lieu of, selecting orientations of node display elements during initial placement to minimize spans within a map display.
Now returning to
Now referring again to block 302, several optional functions may be implemented when a node display element associated with a target document is in the map display, but no link currently exists between the current and target documents. Each function may be implemented as the only manner of handling such situations, or alternatively, the handling of such situations may be controlled at an end user's option, e.g., using duplicate and back arc flags as illustrated in FIG. 11.
For example, it may be desirable to build duplicate node display elements for a given document, as represented by checking a duplicate flag in block 303 and passing control to block 316 for further processing when a set flag is encountered. Whenever a link to a document that is already represented elsewhere is taken, a new node display element is created without any reference to the other node display elements for the document. Duplicate node display elements may be distinguished via colors, icons, alphanumerics or other indications, e.g., to facilitate maintenance and “pruning” of a map display that later grows too unwieldy, and to alert an end user that he or she has previously visited this location.
As a further example, it may be desirable to jump back to an earlier node display element for the target document whenever the link between the current and target documents is selected. This is represented by finding neither a duplicate flag or a back arc flag set by an end user, whereby blocks 303 and 304 ultimately pass control to block 301 to set the current document to be the target document.
As another example, it may be desirable to build separate links between the node display elements for the current and target documents, as represented by detecting an add back arc flag in block 304. A back arc is an alternate graphic representation of a link, e.g., dashed line 65 illustrated in
Returning now to
As a result, each map display and browser is then updated to reflect that the link to the target document was taken. Continuing with the exemplary map display 90 shown in
Once a map display is constructed in the manner discussed above, an end user is able to utilize the map display in revisiting documents as he or she desires. Moreover, it may be desirable to maintain a list of favorite web sites in a map display so that some or all of the sites may be visited on a daily basis. Also, it may be desirable to maintain subject-specific or reference map displays that an end user constructs relating to a given subject (e.g., separate map displays might be constructed related to gardening, new music, object-oriented programming languages, etc.). The map displays illustrated herein have countless usages in browsing not only Internet documents, but internal corporate documents on an intranet, or other forms of linked records.
A number of navigational tools and features may be utilized for navigating through map displays consistent with the invention. For example, a “bounded drag” feature may be provided whereby an end user is able to drag a slider through one or more node display elements such that the browser associated with the slider is updated in real time to display the contents of the document associated with the current node display element, including the relative position thereof represented at the current position of the slider. In this manner, browsing between documents, and browsing within documents, is integrated into the same user input operation.
In an adjoining-type map display such as illustrated in
As illustrated in
One suitable program flow for routine 264 is illustrated in FIG. 19. First, the map display waits for an event at block 450 (this block may also be bypassed in the first pass through the routine). Next, if the event received is a drag event, block 451 passes control to block 452 to handle the event. Typically, multiple drag events will be passed to the map display as the end user continues to move the pointer with the mouse button held down.
Assuming that a slider is initially disposed in a current node display element, upon receipt of a drag event, block 452 determines first whether the slider currently pointed to belongs to the user. If it does not, e.g., when a slider displays the position of another user accessing the map, the event is discarded and control is returned to block 450.
If the slider does belong to the user, control is passed to block 453 to determine whether the new position of the pointer is a different node display element than the current. If not, control is diverted to block 456. If it is, the node display element at the new position of the pointer is set as the current node display element in block 454 prior to passing control to block 456. Moreover, as will be discussed below with reference to
At block 456, the slider is transversely centered in the current node display element. For an elongated node display element in which a slider generally moves along a longitudinal axis, transversely centering the slider involves maintaining the slider within the boundaries of the node display element along a direction perpendicular to the longitudinal axis thereof, whereby the movement of the slider is “bounded” within the current node display element. This has the effect of filtering out the transverse component of any user movement of the mouse.
Next, in block 458, a position update event is sent to the map manager, which as discussed above in relation to dynamic node addition, may be handled by routine 226 of FIG. 17. The position update routine in effect coordinates the changes to the map display with the browsers and any other modules that rely on such information. Control then passes back to block 450 to wait for the next event.
If the event received in block 450 is an end drag event (e.g., as the result of the end user releasing the mouse button), routine 264 is terminated, and control returns to routine 250 of FIG. 8. If the event received in block 450 is neither a drag event or end drag event, the event is temporarily stored in block 462 prior to passing control back to block 450 to process the next event.
It should be appreciated that routine 264 operates to assume control of the map display so long as a drag event is in progress. In the alternative, the receipt of an event other than a drag event or end drag event may prematurely terminate the routine so that the event may be handled immediately.
Another useful navigational tool is an “unbounded” drag operation where an end user is able to drag a slider directly to a node display element of interest without traversing through each intervening node display element in the map display. Such an operation may be initiated using a similar mouse input to the bounded drag operation, e.g., if a specific unbounded mode is selected through a toolbar button, keyboard shortcut, pop-up menu or the like. An unbounded drag operation may also be initiated, for example, if an end user moves the mouse pointer beyond a predetermined distance from the boundaries of the current node display element.
If the slider does belong to the user, control is passed to block 468 to reposition the slider at the drag position, prior to returning control to block 464. Typically, multiple drag events will be passed to the map display as the end user continues to move the pointer with the mouse button held down, whereby the slider will move in conjunction with the movement of the mouse.
Upon receipt of an end drag event, block 470 passes control to block 472 to transversely center the slider in the closest node display element to the current position of the slider, as well as at the closest position within that node display element. In certain embodiments, it may also be desirable to prevent movement of the slider to a new node display element if the slider is not at least partially overlapping or within a predetermined distance from any node display element. Next, in block 474, a position update event is sent to the map manager, which may be handled by routine 226 of
Returning to block 470, if another event is received, this event is temporarily saved for later handling in block 476, and control is returned to block 464. Similar to routine 264, routine 268 operates to assume control of the map display so long as a drag event is in progress. In the alternative, the receipt of an event other than a drag event or end drag event may prematurely terminate the routine so that the event may be handled immediately.
It should be appreciated that the bounded and unbounded drag routines, as well as any other user-responsive routines disclosed herein, need not be responsive solely to mouse input. Instead, such routines may be responsive to other user input devices such as keyboards, touchpads, trackballs, etc., either in addition to or in lieu of a mouse. Moreover, such routines may involve different user actuation sequences, e.g., through setting a specific mode through a button, menu selection, etc., holding down a button, opening a pop-up menu, and other manners too numerous to mention. Furthermore, it should be appreciated that all conventional navigational features provided with browsers and the like may also be used in navigation, with the map display dynamically updated as the end user navigates in this manner.
In addition, it should also be appreciated that the node display elements may incorporate other control elements in addition to or in lieu of a scroll display element. For example, one or more arrow buttons may be provided at each end of a node display element to move a slider a predetermined amount (e.g., to scroll line-by-line through a document). Also, the area of the node display element outside of the slider may be utilized by an end user to scroll by a larger amount (e.g., to scroll screen-by-screen or page-by-page through a document).
It may also be desirable to permit an end user to click on a link display element or other button on the node display element to perform the operation of taking the associated link and bringing up the linked document in the browser. Such an operation may also be performed on a non-navigated link display element if display of such elements is enabled, whereby the processing thereof would occur in the manner disclosed above in process link routine 222 of FIG. 11.
Another useful feature is adding a new slider to a map display and opening a new browser associated therewith. Such an operation may be initiated in a number of manners, including but not limited to dragging and dropping a slider onto a node display element from a slider icon, selecting from a pop-up menu, double-clicking on a node display element, or opening a new browser window. For example,
One manner of implementing the addition of a new slider is to execute the program flow described above for handling the “create map” event (see blocks 104-114 of
It should also be appreciated that a suitable routine for removing a slider upon termination of a browser window may also be provided. Typically such an operation would be initiated by the browser during its termination flow, e.g., by passing an event to the map manager indicating that the browser is terminating. The map manager then discards the user of the map data structure for the browser and passes an event to all map displays associated with the map data structure. Each associated map display then removes the slider (user). In addition, if any associated map display has no more users, the map display itself may be terminated as well.
A number of additional features may be provided to assist an end user in identifying node display elements, which may be particularly useful for larger map displays. For example, as shown in
It may also be desirable to provide a map display search function so that an end user may be permitted to locate specific node display elements matching a predetermined search criteria, e.g., address, location, description, title, etc. In addition, it may be desirable in groupware environments to be able to search for other users of a map display.
Moreover, it may be desirable to provide additional visual indications within a map display to convey additional information relating thereto. For example, sliders and their associated browsers may be visually linked, e.g., through a common color or pattern or icon assignment so that an end user is able to identify which slider is associated with which browser. Other visual indications, e.g., through colors, patterns, icons, etc., may also be used to distinguish different node or link display elements, e.g., to identify more desirable paths, to indicate the frequency of “hits” to a node, etc. An end user may also be able to modify such visual indications manually as the end user desires.
In addition, as discussed above, it may be desirable to provide an end user with the option of selectively viewing a map display in an adjoining-type or non-adjoining-type representation, since each representation may have advantages over the other in the performance of different tasks. For example, an adjoining-type representation is generally more compact, thereby enabling an end user to view a greater portion of a map display. On the other hand, when it is desired to determine descendant relationships between various node display elements, the non-adjoining-type representation is generally more hierarchical and organized in nature.
Other navigational functions and user display features conventionally used in GUI systems may also be utilized in map displays consistent with the invention. For example, scroll bars, such as scroll bar 72 in
It should be appreciated that a number of the above features are implemented in a similar manner to similar user interface components and features found in various conventional systems, and thus the implementation thereof in this context is well within the abilities of one skilled in the art. Moreover, it should be appreciated that a number of the above features are typically handled in responsive to events passed to the particular map display receiving the user input, similar to the bounded and unbounded drag events discussed above. Such features may also be handled at the level of a given display element in certain circumstances.
A number of other features may be desired to facilitate the usage of map displays consistent with the invention. For example, it may be desirable to enable map displays to be named and stored for later retrieval and use by the end user or by others. The later retrieval may be performed by selecting a given map display from a list of such displays provided to an end user, e.g., storing map displays as data files in one or more organized folders or directories and using an open dialog box to retrieve a given map display. Also, shortcuts to favorite map displays may be provided in a drop-down bookmark menu to permit an end user to retrieve a map display via the menu.
A number of editing functions may also be utilized to modify the visual appearance of a map display, particularly when a large number of node display elements have been added to the map display. For example, conventional clipboard-type operations may be utilized to cut, copy and paste node display elements with or without their descendants to and from a clipboard.
A “grafting”-type function may be utilized to permit an end user to change a link to a different point in the map display, typically either through a drag-and-drop operation or a clipboard-type cut-and-paste operation. Grafting permits an end user to shape or organize a map display as he or she sees fit, and may help in maintaining symmetry and/or maintaining the map display within the smallest region possible.
Grafting may also be utilized to add “virtual links” between node display elements whose underlying documents are not actually linked, so that an end user may navigate between the related documents even though no actual link exists therebetween. As one example, may permit some subject-specific map displays to be organized in a more useful and coherent manner. In the alternative, virtual links may not be permitted, whereby an error message or audio alert may be signaled to an end user indicating rejection of the graft attempt by the system.
Also, as illustrated by icon 76 of
An end user may also be permitted to delete selected node display elements, typically along with all of their descendants. Consequently, unused or infrequently used node display elements may be removed to reduce the overall size of the map display.
An end user may also be permitted to create a new map display with an existing node display element used as the root node display element of the new map display. Moreover, any descendant node display elements may or may not be incorporated into the new map display. For example, as shown in
Various map display rearranging features may also be provided to permit an end user to modify the arrangement of node display elements in a map display. For example, in the adjoining-type representation of
Other maintenance functions may be implemented in map displays consistent with the invention. It should also be appreciated that many of the above maintenance and editing functions may be adapted from various conventional file and database management processes. Moreover, implementation of these functions through mouse or other user input may be adapted from related conventional GUI techniques. Consequently, the implementation of such functions is well within the abilities of one skilled in the art.
A number of additional enhancements to the aforementioned map displays are disclosed in greater detail below. It should be appreciated, however, that each of these enhancements may be utilized alone or in conjunction with other enhancements and variations disclosed herein.
It should be understood that in applications such as browsing hypertext documents on the Internet and the like, previously visited documents may get cached-out, or removed, as new documents are retrieved. In particular, many web browsers for example maintain a memory and/or hard disk cache of documents so that when an end user returns to a cached document, the document is retrieved from the cache rather than from its original source. The cache typically is a fixed size, or may be allowed to use a variable amount of storage space up to a maximum allocated size. Regardless, it is not uncommon for least recently used documents to get cached out (removed) to make space for new documents. The use of a cache can significantly increase performance since the access time for a memory or a local storage device may be several orders of magnitude shorter than an external network, often due to bandwidth limitations and/or network traffic. However, in some instances a cached copy of a document may not be used, e.g., if the document has been updated since the last cached copy was obtained.
When an end user is accessing linked records such as hypertext documents, it may be beneficial for an end user to know which documents are or are not cached. For example, an end user may not have a lot of time to browse for information, and thus may wish to avoid retrieving any documents from an external source. Thus, map displays consistent with the invention may also include a cache status indicator that indicates a cache status for each node display element therein.
It is anticipated that each node display element may have associated therewith a cache status variable or flag that is selectively set or reset by the processes handling the retrieval and caching out of documents. Display of the cache status of each node may be accomplished during a refresh of the map display, e.g., during the program flow represented by blocks 258-260 of FIG. 8. Refresh may be performed only in response to updates to the map display, or alternatively, may be periodically initiated when no activity has occurred for a predetermined time so that the cache status of each node display element may be updated. Alternatively, a refresh may be initiated whenever documents are cached in or out.
In addition, in groupware-type environments, it should be appreciated that documents may be cached for some end users but not for others. Accordingly, in such environments, block 259 of
Other manners of distinguishing cached and non-cached documents may also be utilized. For example, different colors, patterns, shades, borders, etc. may be used as cache status indicators to distinguish the node display elements for cached and non-cached documents. Also, separate display elements such as icons or alphanumeric indicators may be used to identify such documents. Moreover, a cache status indicator may be persistent, or may be selectively displayed, e.g., when the pointer passes over a node. Other variations will be apparent to one skilled in the art.
The provision of a cache status indication for selected node display elements also provides a mechanism by which an end user can selectively retrieve and/or cache out selected documents. Selective retrieval and/or caching out may be performed either on documents associated with individual node display elements, or on documents associated with the sub-maps formed by individual node display elements and all of their descendants. Caching out operations on sub-maps or individual node display elements may be useful for controlling which documents are stored in the cache. For example, it may be desirable to cache out infrequently used documents to free up room in the cache so that more desirable documents are less like to get cached out during browsing. Also, a retrieval operation on a sub-map (which may be the same as the entire map display) may be useful as an off-line browsing tool, where an end user can initiate a retrieval of multiple documents at once, then perform other tasks until all documents have been cached.
Any number of user interface mechanisms may be utilized to perform retrieval and caching out. For example, suitable pop-up menu selections may be provided when an end user clicks on a node display element, or documents associated with particular node display elements may be retrieved or cached out in response to double or single mouse clicks thereon (typically when a distinct cache mode is selected). As with other user actuated functions disclosed herein, the mouse clicks may be performed in conjunction with other activities, e.g., holding down a shift or control key.
It may also be desirable to select multiple node display elements and perform a multi-node retrieval or cache out operation on all of the documents associated therewith. The general process of selecting multiple node display elements for the performance of a multi-node operation is discussed below in relation to
When multiple node display elements are selected, either as a sub-map or as a multi-node group, caching out, or more importantly, retrieval of the documents associated therewith may occur serially or in parallel (e.g., via multiplexing). Moreover, these alternate modes may be selectable by an end user. For a sub-map, the order may proceed in a top-down fashion. For a multi-node group, the order in which documents are retrieved or cached out may be top-down, or may be based upon the order in which the associated node display elements are selected. Other variations will be apparent to one of ordinary skill in the art.
It should be appreciated that maintenance of a document cache and the operations associated therewith are conventional in nature, and thus, incorporation of such functions into map displays to operate in response to the user input mechanisms disclosed herein is within the abilities of one skilled in the art.
In conjunction with the retrieval and caching out of documents, it may be desirable to provide an end user with status information regarding the progress of such operations. Retrieval operations in particular may take from a few seconds to several minutes, depending upon factors such as the size of the document(s) being retrieved, the bandwidth of the retrieval path, and network traffic, if any. Conventional browsers and the like may include progress indicators that indicate the progress of such operations, typically in the form of conventional progress bar or slider display elements that move from left to right as an operation proceeds, and/or an alphanumeric indicator such as the percentage of an operation that has been completed.
Map displays consistent with the invention may provide similar retrieve progress display elements that are associated directly with display elements in the map displays such that the progress may be visually tied to the associated node display elements being retrieved. For example, as illustrated by non-adjoining-type map display 540 of
To implement a retrieve progress display element in the illustrated embodiment, the map display typically must receive periodic updates from the associated browser so that a current indication of the progress of retrieval may be maintained. As shown in
A wide variety of alternate retrieve progress display elements may be used in the alternative. For example, an alternate non-adjoining-type map display 550 is illustrated in
As another example,
Typically, a retrieve progress display element provides an animation that moves in the direction that a link is taken or that a subsequent retrieval operation is occurring. Consequently, when a reverse link is taken, e.g., when a “back” button is pressed on a browser, the animation of the retrieve progress display element may move in the opposite direction to that shown in
The movement of a retrieve progress display element in the direction in which retrieval is occurring or a link is taken also provides an interesting visual effect to the end user when multiple documents, e.g., from an entire sub-map, are being retrieved, since multiple retrieve progress display elements may be used concurrently. As documents are retrieved serially or in parallel, the retrieve progress display elements appear to spread out across a map display as more and more documents are retrieved. From such an effect an end user may also be able to determine which documents receive priority and which take the longest to retrieve. This information may be used, for example, to prioritize the retrieval of multiple documents to provide the most efficient usage of a map display.
Also, the use of separate retrieve progress display elements for individual documents being retrieved enables an end user to identify specific retrieval operations that have stalled or that are taking too long to complete. Through user selection of a node, e.g., through a mouse click or pop-up menu, an end user may be able to terminate a retrieval of a specific node, rather than terminating multiple retrievals at once.
With all of the above examples, the retrieve progress display elements typically move in a linear fashion. However, as illustrated by adjoining-type map display 570 in
Other retrieve progress display element designs may be used in the alternative. Moreover, it should be appreciated that retrieve progress display elements consistent with the invention may be implemented using conventional progress display elements utilized in many GUI environments, and thus such implementation is within the abilities of one skilled in the art.
An additional useful feature that may be implemented with user interface components consistent with the invention is that of automatic map display generation based upon a search criteria selected by an end user. With this feature, an end user may select a search criteria from which a new map display, or part of an existing map display, is generated showing documents that meet the search criteria. For example, if an end user is currently visiting a “garden” site on the Internet that has many links to suppliers of flowers, the end user may be able to select “purple cone” as the flower for which to build a map display. Upon generation of a map display, all sites that refer to “purple cone” flowers may be found.
With this feature, node display elements associated with searched documents are typically generated dynamically to build a map display therefrom. In the alternative, documents associated with existing node display elements may be searched in lieu of or in addition to documents that are not currently represented in the map display.
An important aspect of this feature is that intermediate documents located between matching documents that match the search criteria are nonetheless retrieved and added to a map display to illustrate the navigation path to matching documents. These intermediate documents, however, are differentiated from matching documents through a visual or graphical representation.
Another important aspect of this feature is that the depth from which to perform a search, i.e., the number of links to take from a given root node. This may enable more focused searching to be performed as desired. For example, an end user may select a depth of only 2-4 levels, then based upon the results, perform additional searching starting at matching documents found in the prior searching.
Moreover, it should be appreciated that, once a map display is created, it may be maintained, e.g., via rearrangement, deletion of node display elements, etc. as desired.
Generation of a map display based upon a search criteria is typically initiated by an end user within a map display, as illustrated by receipt of an auto-build event at block 270 of FIG. 8. Initiation may occur, for example, through a menu bar, pop-up menu, toolbar button, etc. Initiation may also occur through a browser window using similar user actions, whereby the auto-build event is generated by a browser. Upon receipt of such an event, control passes to handle the event with a search based map display generation routine illustrated at 600.
Routine 600 is illustrated in greater detail in FIG. 27. First, as illustrated by optional block 602, a new map display may be created with the current node display element as the root of the new map display. In the alternative, added node display elements may descend from the current node display element in an existing map display. Execution of this block may be selectable by an end user, e.g., by selecting a given mode for the map display. It should be appreciated that, if a new map display is created, a program flow similar to that initiated by block 102 of
Next, in block 604, a search criteria is retrieved from an end user, e.g., through a dialog box or similar user input. It should be appreciated that various searching algorithms, including filtering, keyword searching, field searching, boolean searching, natural language searching, etc. may be used to obtain a suitable search criteria. Examples of the type of information that may be searched includes document contents, document title, document description, document size, document address or location, date last updated, and/or date created, among others. In general, a wide variety of known searching algorithms may be utilized consistent with the invention.
Next, in blocks 606-610, each link in the current document is processed to locate matching documents for the given search criteria. As long as additional un-traversed links exist in the current document, block 606 passes control to block 608 to retrieve the target document for the next un-traversed link, then an add NDE routine 610 is executed to determine whether to add a node display element for the target document. Once all links in the current document are traversed, block 606 terminates the execution of routine 600.
The add NDE routine 610 is illustrated in greater detail in FIG. 28. This routine is passed from its calling routine the contents of, or a pointer to, a current document. For example, when called from routine 600, the next un-traversed target document is passed to routine 610. This routine is also passed a depth variable, representing the number of “levels”, or sequential links from the root node display element, that the current document is from the root node display element. As mentioned above, an end user may wish to optionally limit the depth of a search. Moreover, regardless of whether an end user limits the depth, a system depth limit is typically set so that the search eventually terminates. Initially, when called from routine 600, the depth is set to one.
First, block 611 determines whether the current document has been visited in this search, typically performed by maintaining a list of visited documents. If so, routine 610 is terminated for this document.
If not, the current document is searched in block 612 to determine whether it meets the search criteria. If so, control passes to block 614 to set a match flag for the current document. Next, in block 616, a link taken event is sent to the map manager so that the map manager dynamically adds a node display element to the map display for the current document, e.g., using the program flow initiated at block 218 of FIG. 7. In addition, the map manager is passed the contents of the match flag so that the map manager can indicate on the new node display element the matching status of the current document.
The matching status of a document may be indicated in a number of manners on the node display element associated therewith, typically using a matching status indicator associated with the node display element. For example, a matching status indicator may include a color indicator, a pattern indicator, a border indicator, an icon indicator, an alphanumeric indicator, or combinations thereof. Also, a matching status indicator may be applied to node display elements for non-matching documents in lieu of or in addition to, matching node display elements, e.g., by displaying non-matching node display elements with a faded color or “grayed out” appearance, replacing non-matching node display elements with icons or representing them as link display elements, etc.
Next, in block 617, the depth variable is compared to the depth limit. If the depth variable is greater than or equal to the depth limit, no further searching in descendant documents is necessary, and routine 610 is terminated. If, however, the depth variable is less than the depth limit, a while loop is initiated in block 618 to process each link in the current document. In block 620, the target document for the next un-traversed link is retrieved. Next, the add NDE routine 610 is recursively called, passing the target document, as well as the depth variable incremented by one. Once all links are traversed, routine 610 terminates. In this manner, each document within the number of sequential links permitted by the depth limit is searched.
Returning to block 612, even if the current document does not match the search criteria, additional searching is performed to determine if any descendant documents therefrom match the search criteria. Control is this instance is passed to block 621 to clear the match flag and thereby indicate that the current document is a non-matching document.
Next, an any children match search criteria? routine 622 is executed to analyze the descendant documents to the current document. Routine 622 is illustrated in greater detail in
First, in block 624, if the depth exceeds the depth limit, a “no” result is returned to block 610. If not, control passes to block 626 to initiate a while loop that analyzes each link in the current document. For each un-traversed link, the target document therefor is retrieved in block 628 and compared to the search criteria. If the target document matches the search criteria, a “yes” result is returned. If not, routine 622 is recursively called with the target document as the new current document, and with the depth variable incremented by one. A “no” result is returned if no target documents match the search criteria. In this manner, each descendant document from the current document that is still within the depth limit is searched.
As an example of the operation of the routines discussed above,
Alternate manners of representing matching and/or non-matching node display elements may be used in the alternative.
As discussed above, it may be desirable to perform common operations on the documents associated with multiple node display elements using a graphical selection mechanism. For example,
Each selection event operates on a selection list that includes one or more selected node display elements. In addition to which node display elements are included in a selection list, additional information, such as the order in which the node display elements were selected, or the relative hierarchical level of the selected node display elements, may also be stored.
For example, as illustrated by block 650, a multiple select event may be received and handled at block 652 to add the selected node display element or elements to the selection list. Next, in block 654, the selected node display elements in the list are highlighted in the map display, typically by setting a selected status flag for such node display elements and executing a display event to redraw the map display. A selected status may be indicated by any number of visual representations, such as a selected status indicator related to the node display element and including a color indicator, a pattern indicator, a border indicator, an icon indicator, an alphanumeric indicator, or a combination of one or more of the same.
Multiple selections may occur, for example, through an area select operation whereby the mouse is clicked when pointing to an open area, then a box is dragged across a desired area to select all node display elements within the boundaries of the box once the mouse button is released. An additional manner of performing multiple selections is to click a mouse button on a node display element while holding down a key (e.g., shift or control). In a Windows-type environment, for example, a shift-mouse click selects each element between a current element and the clicked element, while a control-mouse click selects the clicked element. Other GUI environments typically have similar mechanisms that may be actuated through other mouse-keyboard combinations. Multiple selections may also be performed by setting a specific mode such that each mouse click adds the clicked element to the list. In addition, multiple selections may be performed through dragging an icon or marker onto each selected node display element. Other manners of selecting multiple elements and/or extending a selection may also be used.
Another selection event is a sub-map select event, detected at block 656 and handled by a recursive select sub-map routine 660. The sub-map select event is typically initiated in response to selection of a root node display element from which an end user wishes to select that node display element and all of its descendants. For example, an end user may select a sub-map through a pop-up menu, menu bar selection, a toolbar button, or through a special mode selection.
Routine 660 is illustrated in greater detail in
If not, the THIS node display element is added to the selection list in block 662. Then, in blocks 664 and 666, a while loop is executed to retrieve each child node display element relative to THIS. For each such element, select sub-map routine 660 is recursively called with the element passed as a parameter. In this manner, the entire sub-map relative to a selected node is added to the selected list.
A clear selection list event is detected at block 674 and is handled at block 676 to clear the selection list. This may occur, for example, in response to an end user clicking on an area or other element than a node display element. The event may also be initiated in response to another selection event that is not a selection extending type of event.
The above-described selection mechanisms are not the exclusive manner of generating a selection list for a map display. Any number of additional conventional selection mechanisms may also be used consistent with the invention.
The general manner of handling a common operation is shown in
Routine 680 is illustrated in greater detail in FIG. 33. First, in block 682, the correct action function is established based upon the type of event received. Next, in block 684, a while loop is executed for each node display element in the selection list. Each element is sequentially obtained from the list in block 686, and the established action function is applied to this node display element in block 688.
Selection of the next node display element in a list may be based on a number of criteria. For example, selection may be based upon the order in which the node display elements were selected by an end user. In the alternative, selection may be based on hierarchical concerns, whereby parent node display elements are operated upon prior to their descendants. In addition, it should be appreciated that each node display element may be processed sequentially, e.g., by the same execution thread. In the alternative, “concurrent” processing may be performed, whereby the node display elements are operated upon as a group within the same execution thread, or are operated upon in separate execution threads that execute in parallel with one another.
Next, if the action specifies that acted-upon node display elements be cleared from the selection list, block 690 passes control to blocks 692 and 694 to remove the node display element from the selection list and un-highlight the node display element, prior to acting upon the next node display element in the selection list. Otherwise, if the list is not to be cleared, control is passed from block 690 back to block 684 to handle other node display elements in the list.
Examples of actions that may require clearing of a list include deleting node display elements and retrieving documents, among others. Actions in which it may be useful to maintain the selection list include printing documents, as it may be desirable to maintain a selection after printing is complete.
While the above-described selection mechanism and action handling routines may be used for any of the above common operations, not to mention other operations not specifically mentioned herein, two specific operations, that of retrieving documents and printing documents, are described in greater detail herein.
Retrieving multiple documents is discussed above with reference to indicating a cache status for node display elements. The order in which documents are retrieved may be selected by an end user through the order in which node display elements are selected, or through a hierarchical process. Moreover, retrieval may occur in sequence or in parallel. Furthermore, cache status indicators and/or retrieval progress display elements may be used to enhance the visual effect of the retrieval progress of the selected documents. Other alternatives will be apparent to one skilled in the art.
The above-described multi-node selection and operation routines have particularly beneficial usage in printing multiple documents referenced in a map display. In general, the chaining together of multiple documents and generation of a single print file is known in the art. However, the flexibility by which multiple documents may be selected, ordered, and printed through the map display user interface component provides substantial benefits to an end user.
For example, as shown by
In addition, as illustrated by indicator 707 a, it may be possible for an end user to specify the number of copies of each document to print (here, five copies of the document associated with node display element 707). Selection of multiple copies may be made through clicking multiple times on a node display element, through a menu bar selection or pop-up menu, or in other known manners.
It may also be desirable to be able to name and save a print map, that is, to save the selection status, selection order, and/or number of copies, so that a print map may be stored and/or distributed to others in much the same manner as a map display. This would permit, for example, an end user to distribute a print map to other participants of a project or meeting such that the participants can print out the documents suggested by the end user, rather than having the end user distribute copies of each document. This also would permit, for example, an end user to store different print views of the same map display, e.g., print overview, print all, or print selected chapters.
Furthermore, it may be desirable to permit an end user to save soft copies of the selected documents and store such documents with the print map, e.g., in HTML. Consequently, an end user would then be able to distribute both the documents themselves, and the desired organization thereof, to others, without requiring others to retrieve the documents referenced by the selected node display elements in the print map.
Other uses and modifications will be apparent to one skilled in the art.
An additional feature that may be implemented with user interface components consistent with the invention is that of providing an elastic boundary that facilitates navigation with one or more scroll bar display elements. In particular, when navigating between node display elements, or in general within or between any individual scroll bars, an end user typically drags a slider with a mouse (e.g., during a bounded drag). However, an end user may occasionally inadvertently navigate between elements (i.e., traverse a link) when the end user actually desires to remain within the same element, principally due to difficulties in accurately dragging a display object with a mouse. An inadvertent traversal may significantly impact an end user's efficiency, as the end user typically must wait for the element to be retrieved, and then must traverse back to the original element and essentially end up where the end user initially desired to be. This problem is exasperated when retrieval of an element entails downloading a document from an external source such as the Internet. For example, it may take several seconds or even a few minutes to download a hypertext document from the Internet over a conventional dial-up connection.
For example, as shown in
A boundary 818 exists between node display elements 812, 814. However, when an end user is dragging a slider such as slider 826 within node display element 812 using a mouse (represented by mouse pointer 828), the end user may inadvertently traverse the link to node display element 814 when the end user actually desires to continue dragging to the end of node display element 812. This may occur, for example, if the mouse pointer's movement has a greater degree of horizontal movement than the movement of the slider, since the slider is constrained to move within the node display element during a bounded drag. Once the boundary is hit, a computer system may consider the additional horizontal movement to represent a desire to traverse the link, and therefore navigate to node display element 814.
User interface components consistent with the invention may therefore incorporate elastic boundaries between multiple display elements that require an end user to “punch through” the boundaries before the boundaries are crossed. Typically, elastic boundaries are implemented by requiring an end user to manipulate a user control such as a slider display element at least a predetermined distance beyond a boundary coupled to a scroll bar display element before the boundary may be crossed. Predetermined distances may be set for one or both sides of a boundary, and may be different for each side. Moreover, the predetermined distances may be modified by an end user to suit their individual tastes. This may be performed for example, in a Windows-type environment, by setting the distance in a properties dialog box for the active mouse driver.
In addition, predetermined distances may vary depending upon the magnification of the map display, since when the node display elements are represented at higher magnifications, an end user typically has greater relative control over the mouse. Other manners of customizing the predetermined distances, particularly on other platforms, may be used in the alternative.
One manner of implementing elastic boundaries is illustrated by an alternate perform bounded drag routine 750 in FIG. 36. In this routine, blocks 752, 754, 762, 776 and 778 operate in a similar manner to blocks 450, 451, 458, 460 and 462 of routine 264 in
Routine 750 differs from routine 264, however, in the manner in which the drag event is handled. First, block 755 determines whether the slider belongs to the user. If not, the drag event is disregarded and control returns to block 752.
However, if the slider does belong to the user, block 756 determines whether the new position of a slider is in a different node display element than the current node display element. If not, an accumulated position variable, ACC is cleared in block 758, the slider is transversely centered in the current node display element at block 760, before passing control to block 762 to update the map display.
If, however, the slider is in a different node display element, control is passed to block 764 to determine whether the previous position of the slider was adjusted from the same node display element as that of the new position of the slider—that is, whether the end user is still trying to cross a boundary into the same node display element as the last drag event. If not, the end user has abandoned the attempt to cross the boundary, so control passes to blocks 758-762 to clear the ACC variable, center the slider in the current node display element, and update the map display.
If, however, the end user is still attempting to cross the boundary into the same node display element, block 764 passes control to block 766 to determine if the ACC variable has exceeded the threshold, which is the predetermined distance that must be exceeded to cross the elastic boundary in the given direction. If so, control passes to block 772 to clear the accumulator. Next, in block 774, the slider is transversely centered in the new node display element, and control is passed to block 762 to update the map display. It should be appreciated that, when the display is updated, the link to the new node display element is traversed by the map manager by virtue of the slider being disposed within the new node display element at the completion of the drag event handler in the map display.
Returning to block 766, if the threshold has not yet been exceeded, control passes to block 768 to accumulate in the ACC variable the incremental change in position of the slider since the last drag event. It should be appreciated that the change in position may be taken along different axes depending upon the boundary between display elements. For example, for adjoining-type displays, the change in position may be taken as the movement of the slider in a direction along the longitudinal axis of target node display element. For internal links within a given node display element or scroll bar display element, the change in position is also generally the direction along the longitudinal axis of the display element. For non-adjoining-type map displays (discussed below with reference to FIG. 38), the change in position may be in the direction along the longitudinal axis of a connector for a link display element.
Next, in block 770, the slider is transversely centered in the previous node display element to provide a “snap” effect—whereby the slider is visually frozen in the previous node display element and does not fully track the mouse pointer. Upon crossing the elastic boundary, the slider snaps from the previous node display element to the new node display element. In the alternative, no snap effect may be provided, whereby the slider follows the mouse pointer but does not traverse the link until the boundary is crossed. Also, as another alternative, a “ghost” slider, e.g., a grayed out slider or outline of a slider, may be utilized to illustrate the end user's progression across an elastic boundary, while maintaining the actual slider in the previous node display element. Other visual effects may also be provided in the alternative.
Next, control is passed to block 762 to update the map display. It should be appreciated that, as the slider is adjusted back into the previous node display element, the map manager does not yet traverse the link.
As discussed above, elastic boundaries may be implemented in any number of user interface components including at least one scroll bar display element and a boundary, whether internal or external, coupled thereto. For example,
When the elastic boundary is crossed, slider 838 may be controlled to instantly snap onto the new node display element in this embodiment, or alternately, the slider may be animated to move along connector 836 b to represent the traversal. In the alternative, the elastic boundary may be selected to be proximate the midpoint of connector 836 b, with predetermined distances defined on either side thereof, whereby the end user actually drags the slider across connector 836 b to traverse a link.
As shown in
For example, a word processing application may define page breaks between pages, and represent such breaks as internal links on scroll bar display element 850. It should be appreciated that, particularly in a page view, it oftentimes can be difficult to scroll to a given position proximate the beginning or end of a page since the unused white space beyond the top and bottom margins is displayed. By providing elastic boundaries between page breaks, navigation between pages is greatly simplified.
As shown in
An internal link 855 is represented at boundary 856. Predetermined distances in each direction of the boundary are defined by lines 856 a and 856 b. As slider 852 is dragged toward boundary 856 by mouse pointer 860, the slider tracks the pointer until such time as the slider hits boundary 856, as illustrated in FIG. 39B. As shown in
A number of modifications and additional features may also be implemented in conjunction with the elastic boundaries consistent with the invention. For example, as shown in
An end user may select the zoom option, e.g., through clicking on a node with the mouse or in combination with depressing a control key, or through enabling a zoom mode that is continuously displayed. In the alternative, a zoom option may be enabled by virtue of a node display element having focus (i.e., where the slider is disposed in the node display element) for a predetermined period of time. The magnification may also be increased in conjunction as the focus time increases, and decreased as the slider moves onto a different node display element.
Other routines may be utilized to implement elastic boundaries consistent with the invention. Moreover additional modifications may be utilized in conjunction with the elastic boundaries.
Therefore, it should be appreciated that the invention provides significant advantages over conventional user interface mechanisms. Moreover, it should be appreciated that various additional modifications may be made to the embodiments described herein without departing from the spirit and scope of the invention. Accordingly, the invention lies solely in the claims hereinafter appended.