Abstract:
Disclosed are various approaches for displaying graphical objects. In one approach, first and second graphical objects are displayed in a first state. In the first state a portion of the second graphical object that is overlapped by a portion of the first graphical object is completely obstructed from view by the portion of the first graphical object. When in a second state, the first and second graphical objects are displayed in a manner different from the first state. In the second state the portion of the second graphical object that is overlapped by the portion of the first graphical object is represented as being visible along with the portion of the first object and with muted visibility relative to a portion of the second graphical object that is not overlapped by a portion of the first graphical object.

Description:
RELATED PATENT DOCUMENTS 
     This patent document claims the benefit, under 35 U.S.C. §119(e), of U.S. Provisional Patent Application No. 60/873,392, filed Dec. 7, 2006 and entitled: “MECHANISM FOR VISUALIZING STACKING ORDER DURING A DRAG AND DROP OPERATION,” which is fully incorporated herein by reference. 
    
    
     TECHNICAL FIELD 
     The present invention relates to computer systems and more specifically to displaying visual clues of the stacking order and relative occlusion of graphical objects during a drag and drop operation. 
     BACKGROUND 
     Two-dimensional computer-aided design and graphic arts programs (“graphics applications”), such as VISIO® and MICROSOFT OFFICE® (WORD®, POWER POINT®), by Microsoft Corporation, of Redmond, Wash., and ADOBE ILLUSTRATOR®, by Adobe Systems Incorporated, of San Jose, Calif., generally allow users to organize their designs and artwork into layers, analogous to sheets of acetate bound together. Each object on a layer occupies a stacking order such that objects can be on top of one another. Similarly, layers are also stacked on top of one another to form the final work. The final work is rendered as a two dimensional design to be viewed on a video display, printed, etc. To the extent that one or more graphical objects are layered over other graphical objects, some graphical objects may be partially or fully occluded in the rendered two dimensional design. Programs conventionally provide a mechanism to reorder object layering (e.g. via menu controls to “bring to front”, “send to back”, etc.) Some programs also provide a “layers palette”—a taxonomical tree of the layer identifiers—allowing the user to select the layer on which to draw, reorder the layers by dragging and dropping them with the mouse, and move art from one layer to another. 
     Prior art exists to make the concept and application of a “layers palette” somewhat less burdensome. Specifically, prior art provide the user with a visual representation—a thumbnail—of each graphic object in the design next to the corresponding layer in a taxonomy tree. The user can readily see which object in the drawing corresponds to a particular layer or row in the layers palette by recognizing the appearance of the object in the document through a thumbnail image. The user can place and manage layers inside layers, which removes some of the burden on a user when organizing complex documents. 
     Graphics applications have evolved to provide many different kinds of options to developers. Graphics applications allow developers not only the ability to create graphical objects, such as a depiction of a person, a table, an animal, but also the ability to place them into scenes. As used herein, the term “graphical object” is an object in a graphics application that includes features that can be manipulated by the graphics application. Often, graphical objects are depicted as being part of a scene. Generally, a scene is a rendered object that includes a background and graphical objects in front of the background. 
     Drag and drop is an important feature in graphics arts programs. A “drag and drop” operation refers to an operation currently most often performed with a mouse button but which can be performed with other user input devices with similar controls. In a mouse-based drag and drop operation the user selects a screen object by using a mouse to position a mouse indicator to point at a screen object, depresses a button on the mouse (“mouse button”), uses the mouse to move the selected screen object to a destination and releases the mouse button to drop the screen object on the destination. Typically, after releasing the mouse button, the screen object appears to have moved from where it was first located to the destination. The term “screen objects” refers generally to any object displayed on a video display, including graphical objects. Visual effects during drag and drop operation are intended to make an impression that the source object is being “dragged” across the screen to the destination object. These visual effects can include an image located under the mouse pointer. 
     The prior art has several shortcomings, in that controls for manipulation of stacking order are less than intuitive and in that visual displays during drag-and-drop and other manipulations of layered objects do not convey to the user sufficient information about the layering. These shortcomings impact the productivity of expert users of graphics applications and can severely limit the ability of users with little or no computer knowledge to use such applications. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an example method and apparatus for displaying a temporary projection of a graphical object while it is being dragged in a graphics application; 
         FIG. 2  is a view of computer display device including three example graphical objects with two of the objects intersecting; 
         FIG. 3  shows an abstract view of a computer display device having displayed thereon three example intersecting graphical objects with each region of intersection identified in order to explain the visual mechanism for indicating the stacking layer of each graphical object during a drag operation; 
         FIG. 4  is a view of a computer display device including three example intersecting graphical objects; 
         FIG. 5  illustrates an example operating environment in which an embodiment of the present invention can function; 
         FIG. 6  is a view of a computer display device including three, intersecting graphical objects, and illustrating an aspect of an embodiment of the present invention; and 
         FIGS. 7   a - 7   f  illustrate certain aspects of an embodiment of the present invention;  FIGS. 8 and 9  illustrate prior art approaches. 
     
    
    
     DETAILED DESCRIPTION 
     The various embodiments of the present invention are now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It may be evident, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing embodiments of the invention. 
     As used in this description, the term “component” is intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server may be considered a computer component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. A “thread” is the entity within a process that the operating system kernel schedules for execution. As is well known in the art, each thread has an associated “context” which is the specific set of data subject to change and associated with the execution of the thread. A thread&#39;s context includes the contents of system registers and the virtual address belonging to the thread&#39;s process. Thus, the actual data comprising a thread&#39;s context varies as it executes. 
     The various embodiments of the invention allow the relative stacking layer and any resultant state of occlusion of a graphical object to be visible during a drag and drop operation in a computer software environment and for the stacking layer to be manipulated efficiently and expeditiously both by users skilled in modern computer use and by users with little or no computer knowledge. Graphical objects may include any software object, for example, desktop windows, web browser images, and user toolbars, that is presented visually to users on an output screen using at least one image. 
     Graphical user interfaces (GUIs), pointers, pointer selection, pointer-based dragging operations, and “drag-and-drop” operations are well known and understood by those skilled in the art. For the purpose of concise illustration, the embodiments of the invention are described in the context of a pointing device which is a mouse and the associated terminology of “mouse”, “mouse button”, “drag and drop”. It is to be understood the pointer is controlled by a user input device, for example, a mouse or other tactile device such as a touch pad, touch screen, track ball, eye tracking, brain wave monitoring, etc. The method of this invention may be activated by selecting a graphical object with such a pointing device, and for the remainder of this disclosure, such a user input device will be referred to as pointing device or simply as a mouse. 
     In an embodiment of the invention, the graphical object may be selected by clicking or clicking and dragging the mouse. Once selected by the mouse, the relative stacking layer and occlusion of the graphical object may be visually indicated by an appearance of transparency of other graphical objects occupying overlapping screen regions. When the selected object is behind another object, the selected object may appear to be faintly visible through the object located in front. When the selected object is in front of another object, the selected object may remain opaque in the overlapping screen region(s). In this way, visual clues may be given such that the stacking order of the selected object in relation to other objects and the graphical effects of the same are immediately apparent to the user. 
       FIG. 2  is a view of computer display device including three example graphical objects with two of the objects intersecting. In an embodiment of the invention, a projection onto a screen of desktop environment  200  is displayed containing a user input pointer  204  and three graphical objects: graphical object  201  (“circle”  201 ), graphical object  202  (“square”  202 ), and graphical object  203  (“star”  203 ). Graphical objects  201 ,  202 , and  203  are shown in a state in which none of the three graphical objects have been selected by mouse pointer  204 . 
       FIG. 3  depicts three example intersecting graphical objects  201 ,  202 , and  203  in a representation of their projection onto the screen of a graphical display  546  ( FIG. 5 ) as in environment  200 . One of the graphical objects, circle  201 , is currently selected by mouse pointer  204  and has been dragged horizontally along the x-axis of its layer to intersect with star  203  and square  202 .  FIG. 3  further identifies each intersecting region  301 - 306  in order to illustrate the behavior of each region during a drag operation. In this state, screen regions  301 - 306  behave as follows: 
     In screen region  300 , square  202  does not intersect with circle  201  or star  203 . Therefore, the portion of square  202  in screen region  300  may appear as in prior art as an opaque image on the graphical display  546  ( FIG. 5 ). 
     In screen region  301 , circle  201  intersects with square  202  but does not intersect with star  203 . Circle  201  has been selected and is being dragged in front of square  202 . In this state, the intersecting region  301  may be shown as an opaque region of circle  201 . This may enable the user to understand from the displayed visual clues, readily and in real-time, that circle  201  is being dragged in front of square  202 —in other words, this may enable the user to visualize the place in the stacking order of the selected graphical circle  201 . 
     In screen region  302 , circle  201  does not intersect with square  202  or star  203 . The section of circle  201  that occupies screen region  302  may be highlighted, altered in color, or otherwise modified visually in order to enable the user to readily identify that circle  201  is currently selected by the mouse  204  or that it is being dragged, etc. Circle  201  may be depicted as opaque and unaltered in Screen region  302 , as it conventionally is in the prior art. 
     In screen region  303 , circle  201 , square  202  and star  203  all intersect. Circle  201  has been selected and is being dragged behind star  203 , but in front of square  202 . In this state, the portion of star  203  contained in screen region  303  may appear partially transparent so that a faint view of the portion of the circle  201  in screen region  303  is visible. This representation may enable the user to understand from the displayed visual clues, readily and in real-time, that circle  201  is being dragged behind star  203  and in front of circle  202 . 
     In screen region  304 , circle  201  intersects with star  203  but does not intersect with square  202 . Circle  201  has been selected and is being dragged behind star  203 . In this state, the portion of star  203  contained in screen region  303  may appear partially transparent so that a faint view of the portion of the circle  201  in screen region  303  is visible. This representation may enable the user to understand from the displayed visual clues, readily and in real-time, that circle  201  is being dragged behind star  203 . 
     In screen region  305 , star  203  does not intersect with circle  201  or star  204 . Therefore, the portion of star  203  in screen region  305  may appear as an opaque image on the graphical display  546 . 
     In screen region  306 , square  202  intersects with star  203  but does not intersect with circle  201 . Since star  203  is in front of square  202  and since neither square  202  nor star  203  is selected or being dragged etc., the portion of star  203  contained in region  306  will appear opaque and the portion of square  202  contained in region  306  will not be visible. Such representations as are used in  FIG. 3  are further described in the context of an example in  FIGS. 7   a - 7   f  and the descriptive text below. 
       FIG. 4  depicts graphical objects  201 ,  202 , and  203  after a drag and drop operation has been performed on circle  201 . In  FIG. 4 , none of the three graphical objects are currently selected with the mouse  204 . As will be understood by those skilled in the art, the graphical objects  201 ,  202 , and  203  in  FIG. 4  display visual properties standard to a relative stacking order of layered graphical objects. Graphical object  203 , with a lower z-index than graphical objects  201  and  202 , has the visual appearance of being in front of them. Similarly, graphical object  201 , with a lower z-index than graphical object  202  but a higher z-index than graphical object  203 , has the visual appearance of being in front of graphical object  202  but behind graphical object  203 . 
     The foregoing descriptions of embodiments of the invention as applied to three graphical objects is sufficient in generality such that those skilled in the art will be able to apply the disclosed mechanisms to systems of arbitrarily many graphical objects. 
     To better illustrate a method by which graphical objects may be depicted in the manner displayed in  FIG. 3 ,  FIG. 1  is provided. In an embodiment of the invention, when graphical object  107  is selected, object-identical overlay  108  may be created and placed in layer 1 ( 101 ) above the graphical object and above one or more other graphical objects that occupy screen regions intersecting with graphical object  107 . In  FIG. 1 , overlay  108  is shown in layer 1 ( 101 ), above object  105  in layer 2 ( 102 ) and above object  107  in layer 3 ( 103 ). In an embodiment of the invention as annotated in  FIG. 1 , object-identical overlay  108  may be given a largely transparent opacity setting, e.g., of α=0.2, meaning that it is partially (20%) transparent. Selected graphical object  107  may also be given a partially transparent opacity setting, e.g., setting, e.g., of α=0.6, meaning that it is partially (60%) transparent. Other opacity settings may be applied to graphical object  107  and overlay  108  within the spirit of the present invention, including an opacity α=1.0 to graphical object  107  (making it fully opaque). Those skilled in the art will realize that because the overlay  108  may be partially transparent and placed on a layer with a lower z-index than graphical objects  105  and  107 , the details of these objects may be visible when the graphical objects  105 - 108  are projected onto two-dimensional screen  100  and rendered to graphical display device  546  ( FIG. 5 ). Similarly, because graphical object  107  may be transparent, the portions of graphical object  106  that intersect with objects  107  and  108  when displayed on a two-dimensional screen  100  may be visible through both objects  107  and  108 . Illustrations of some visual clues that may be made apparent by graphical objects such as overlay  108  are shown in  FIGS. 7   b - 7   d  and  FIG. 7   f  and described below. These figures present simplified screenshots that provide clarity by example of aspects of an embodiment of the present invention. 
     In an embodiment of the present invention, graphical overlay  108  may be of a form derived from the form of graphical object  107  but not identical to graphical object  107 . For example, graphical overlay  108  may be created by finding all pixels in a rendering of graphical object  107  that are on or near the boundary of the rendering of graphical object  107 , where “on the boundary” may be defined as pixels that are bordered both by pixels whose alpha channel transparency settings exceed some particular value and by pixels whose alpha channel transparency settings are less than some second particular value, and setting such pixels in the graphical overlay object  108  to a dark, non-transparent color and all other pixels to transparent. In this way, only the boundary of graphical object  107  would appear to be visible “through” graphical object  105 . Those skilled in the art will understand that many similarly derived overlays may be used to beneficial effect. Some but not all of such useful derived overlays include: one in which boundary lines (curves, etc.) of a rendering of graphical object  107  are found and replaced with dashed or dotted lines (an example being shown in  FIG. 6  with an overlay applied to object  201 , illustrating a dashed boundary  601  of one such form of overlay  108 ), one in which boundary lines are extended to include boundaries between automatically identifiable regions within a rendering of graphical object  107  (e.g., by such techniques commonly known in the art of computer vision such as image segmentation or edge detection), one in which fill regions within the boundary lines are filled with semi-transparent colors or patterns (e.g., cross-hashes), one in which such fill regions are filled with semi-transparent white pixels so as to give the appearance of a lightening of object  107  when overlay  108  is applied, one in which such fill regions are filled with semi-transparent black pixels so as to give the appearance of a darkening of object  107  when overlay  108  is applied, and one in which such fill regions are filled with partially-transparent colors derived from fill-colors of a rendering of graphical object  107  but with the derived colors having the same hue and intensity but increased saturation so as to give the appearance of a richening of colors when overlay  108  is applied. In an embodiment of the invention, such derivative graphical objects may be created for a library of graphical objects delivered with or by a software application (e.g., as clip-art) and a library of derivative graphical objects for overlaying delivered alongside the first said library of graphical objects. 
     Turning now to  FIGS. 7   a - 7   f ,  8  and  9 , some aspects of the forgoing and following descriptions of embodiments of the invention may be made clearer by the sequence of drawings presented in these figures. These figures present simplified drawings that are meant to be interpreted as views of a portion of a screen of a monitor  546  ( FIG. 5 ). Each of the figures may represent a partial view of the display of a graphical application, e.g., a portion of an application window in a windowing environment, such as will be well known to those skilled in the art. These figures are analogous to what are commonly called “screenshots” by those skilled in the art. In these figures, the simplified drawings use hatching and cross hatching to illustrate aspects of embodiments of the invention (e.g., the effect of semi-transparent overlays). These figures use hatching to represent contrast levels to facilitate electronic reproduction of the figures. Those skilled in the art will understand that more subtle visual effects and layering clues may be achieved by embodiments of the invention, beyond what is shown in these figures, and also through the use of colors. Each figure shows a display region  701   a - f ,  801 , and  901  that contains a graphical scene that is being modified in the context of a graphical user interface (GUI). For brevity, the display regions  701   a - f ,  801 , and  901  containing the graphical scenes are hereafter called scenes  701   a - f ,  801  and  901 . While the example scene chosen for illustration shows what might be called a “landscape rendering” with visual clues for perspective and “depth,” it will be understood by those skilled in the art that such particular choices have only been made for the purpose of clarity by example and in no way indicate that the utility of the invention is in any way limited to such scenarios or considerations. 
       FIGS. 7   a - 7   d  illustrate a sequence of display states that may follow from a sequence of user actions in an application that embodies one or more aspects of the invention.  FIG. 7   a  shows a scene  701   a  including such graphical objects as lizard  702 , boulder group  703  and boulder group  704 . Also shown is user input pointer  204 . These same graphical objects appear in  FIGS. 7   b - 7   f ,  8  and  9 , under various modifications of their state. In  FIG. 7   a , the position of user input pointer  204  outside the boundaries of graphical objects  702 - 704 , indicating a lack of selection of these objects by the user. 
     In  FIG. 7   b , an aspect of an embodiment of the present invention is illustrated. This figure may indicate a time evolution from  FIG. 7   a  in which the user has caused user input pointer  204  to move to a position contained within the visible boundary of lizard  702 . Such repositioning of pointer  204  may indicate the selection of lizard  702  by the user for manipulation. An embodiment of the invention may indicate such selection by adding an object overlay not individually shown in  FIG. 7   b  for clarity) which overlays lizard  702  from  FIG. 7   a  and results in the composite lizard  702 ′. In  FIG. 7   b , the visual rendering of composite lizard  702 ′ is slightly altered from that of lizard  702  in  FIG. 7   a , with the infill coloration of the composite  702 ′ lightened and the detail strokes pronounced. Such visual effects may provide clues to the user that lizard  702  has been selected by the repositioning of pointer  204 . 
     Various visual effects shown in  FIG. 7   b  may be caused by the insertion of a graphical overlay object that has the same boundary as lizard  702 , that has black detail strokes identical to those shown for lizard  702 , that has solid white infill coloration or patterning, and that has an opacity of 80% (i.e., 20% transparency) applied uniformly to the boundary and detail strokes and infill of the overlay. As will be understood by those skilled in the art, the effect of such an overlay will be to give the appearance of having “lightened” the infill coloration of lizard  702  while preserving the color value of the detail and boundary strokes, thereby making these strokes more pronounced in the composite rendering  702 ′. (In  FIG. 7   f  a “detail stroke” and a “boundary stroke” have been labeled to make clear the usage of this terminology, with detail stroke  709  representing the eye of composite lizard  702 ′ and boundary stroke  708  outlining part of the head of composite lizard  702 ′).  FIG. 7   b  also illustrates that the user selection of lizard  702  may additionally be indicated by other means, such as the appearance of resize instrumentality  705 . 
       FIG. 7   c  and  FIG. 7   d  show an evolution of scene  701   b  from the state shown in  FIG. 7   b  to scenes  701   c  and then  701   d . In this sequence, the user has commenced a drag operation, e.g., by depressing and holding depressed a mouse button and then moving the mouse, dragging composite lizard  702 ′ across scene  701   c  to the left. In this example, the underlying lizard  702  occupies an image stacking layer between those of boulder group  703  and boulder group  704 , and the overlay occupies the same x-y region as the underlying lizard but in a stacking layer that is above the underlying lizard  702  and the boulder groups  703  and  704 . In  FIG. 7   c  and  FIG. 7   d  lizard  702  becomes partially and increasingly occluded by boulder group  704 , and boulder group  703  becomes partially occluded by the lizard  702 . These figures illustrate that the composite lizard  702 ′ retains the original graphical object, underlying lizard  702 , in its proper stacking layer, with the overlay graphical object occupying x-y screen coordinates identical to lizard  702  but in a stacking layer that is above that of boulder group  704 . The overlay  706  therefore, becomes clearly visible at the points of screen overlap of lizard  702  and boulder group  704 . In other words, a portion of lizard  702  not viewable because it is in a lower layer than boulder group  704  but the overlay  706  is visible since it occupies a layer above the boulder group  704 . The composite lizard  702 ′ conveys that lizard is behind boulder group  704  but faintly visible through boulder group  704 . 
     In  FIG. 7   e , the user has dragged lizard  702  to the left, beyond the position shown in  FIG. 7   d  and then dropped lizard  702 , e.g., by releasing a formerly held mouse button. In this state, lizard  702  now almost entirely occludes boulder group  703 , is slightly occluded by boulder group  704 , and is to a large extent hidden outside of the boundaries of scene  701   e . In this state as illustrated, the overlay may have been deleted or hidden in accordance with an embodiment of the invention, indicating that lizard  702  is neither selected nor being dragged. Also illustrated in  FIG. 7   e  is a region around the exterior perimeter of scene  701  identified herein as mat  707 . The terminology “mat” has been chosen by analogy to the mat used in the framing of a piece of fine art, with the artwork underlying the mat, much as scene  701  and its graphical objects  702 - 704  may underlay mat  707  in their stacking order. In  FIG. 7   e , graphical object lizard  702  partially underlies graphical object mat  707  and the underlying portion of lizard  702  is therefore not rendered to the screen, mat  707  in the illustrated example being pure white and fully opaque. As illustrated in  FIG. 7   e , lizard  702  may thus be made difficult to identify, the face of lizard  702  being fully occluded and hidden from the user. 
       FIG. 7   f  shows an evolution of scene  701   e  from the state shown in  FIG. 7   e  to scene  701   f . In this sequence, the user has caused user input pointer  204  to move from a screen position outside of the region occupied by graphical object lizard  702  to a screen position inside that region. By doing so the user may have acted to select lizard  702 . In  FIG. 7   f , an embodiment of the invention has indicated the state of selection of lizard  702  by creating or remaking visible an overlay and thereby rendering composite lizard  702 ′. This may create a visual transition similar to that seen between  FIG. 7   a  and  FIG. 7   b  in the appearance of lizard  702  to composite lizard  702 ′ in  FIG. 7   b . Additionally, the appearance of the overlay component of the composite lizard  702 ′ above boulder group  704  and mat  707  conveys that lizard  702  is now faintly visible through these objects. Also, with the face of lizard including boundary stroke  708  and detail stroke  709  now presented to the user, the user may more easily identify the selected object  702  as being an image of a particular lizard. 
       FIG. 8  and  FIG. 9  illustrate a drag operation of lizard  702 , as might conventionally be done in one of two styles in the absence of the present invention. In  FIG. 8 , the graphical object being dragged (lizard  702 ) is maintained in its stacking order during the drag operation and is therefore occluded by boulder group  704  and mat  707 , making placement difficult. In  FIG. 9  the graphical object being dragged (lizard  702 ) is brought to the topmost stacking layer during the drag operation and then “snaps” back to its proper stacking layer upon drop (i.e., to a GUI state analogous to the one shown in  FIG. 8 ). 
     Those skilled in the art will understand that embodiments of the invention may also be usefully employed in operations during which the user is moving one or more objects from one or more layers to one or more other layers. Such operations may be accomplished through menu choices, layer palettes, or similar mechanisms. In an embodiment of the invention, transitions between layers may also be briefly animated in the event that the user selects a control that otherwise effects graphical object layering. 
     Those skilled in the art will also realize that while the appearance of transparency of intervening objects may be effected, as described in the foregoing text, by creating an object overlay (as per overlay  108 ) that occupies a layer above all intervening objects, other embodiments of the present invention may deliver similar effects by adjusting the opacity of all intervening objects, or similar manipulations. 
     Those skilled in the art will also realize that some of the visual effects and mechanisms to achieve the same that have been described in this disclosure may be used beneficially in graphics applications in contexts beyond those immediately related to stacking order, e.g., to indicate the selection of a single unstacked graphical object through the addition of a non-object-identical overlay. 
     In order to provide additional context for implementing various aspects of the present invention,  FIG. 5  and the following discussion is intended to provide a brief, general description of a suitable computing environment  500  in which the various aspects of the present invention may be implemented. While the invention has been described above in the general context of computer-executable instructions of a computer program that runs on a local computer and/or remote computer, those skilled in the art will recognize that the invention also may be implemented in combination with other program modules. Generally, program modules include routines, programs, components, data structures, etc., that perform particular tasks and/or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the inventive methods may be practiced with other computer system configurations, including single-processor or multi-processor computer systems, minicomputers, mainframe computers, as well as personal computers, hand-held computing devices, microprocessor-based and/or programmable consumer electronics, and the like, each of which may operatively communicate with one or more associated devices. The illustrated aspects of the invention may also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network. However, some, if not all, aspects of the invention may be practiced on stand-alone computers. In a distributed computing environment, program modules may be located in local and/or remote memory storage devices. 
     With reference to  FIG. 5 , an example system environment  500  for implementing the various aspects of the invention includes a conventional computer  502 , including a processing unit  504 , a system memory  506 , and a system bus  508  that couples various system components, including the system memory, to the processing unit  504 . The processing unit  504  may be any commercially available or proprietary processor. In addition, the processing unit may be implemented as multi-processor formed of more than one processor, such as may be connected in parallel. 
     The system bus  508  may be any of several types of bus structure including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of conventional bus architectures such as PCI, VESA, Microchannel, ISA, and EISA, to name a few. The system memory  506  includes read only memory (ROM)  510  and random access memory (RAM)  512 . A basic input/output system (BIOS)  514 , containing the basic routines that help to transfer information between elements within the computer  502 , such as during start-up, is stored in ROM  510 . 
     The computer  502  also may include, for example, a hard disk drive  516 , a magnetic disk drive  518 , e.g., to read from or write to a removable disk  520 , and an optical disk drive  522 , e.g., for reading from or writing to a CD-ROM disk  524  or other optical media. The hard disk drive  516 , magnetic disk drive  518 , and optical disk drive  522  are connected to the system bus  508  by a hard disk drive interface  526 , a magnetic disk drive interface  528 , and an optical drive interface  530 , respectively. The drives  516 - 522  and their associated computer-readable media provide nonvolatile storage of data, data structures, computer-executable instructions, etc. for the computer  502 . Although the description of computer-readable media above refers to a hard disk, a removable magnetic disk and a CD, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, and the like, can also be used in the exemplary operating environment  500 , and further that any such media may contain computer-executable instructions for performing the methods of the present invention. 
     A number of program modules may be stored in the drives  516 - 522  and RAM  512 , including an operating system  532 , one or more application programs  534 , other program modules  536 , and program data  538 . The operating system  532  may be any suitable operating system or combination of operating systems. By way of example, the application programs  534  and program modules  536  can include an information searching scheme in accordance with an aspect of the present invention. 
     A user can enter commands and information into the computer  502  through one or more user input devices, such as a keyboard  540  and a pointing device (e.g., a mouse  542 ). Other input devices (not shown) may include a microphone, a joystick, a game pad, a satellite dish, a wireless remote, a scanner, or the like. These and other input devices are often connected to the processing unit  504  through a serial port interface  544  that is coupled to the system bus  508 , but may be connected by other interfaces, such as a parallel port, a game port or a universal serial bus (USB). A monitor  546  or other type of display device is also connected to the system bus  508  via an interface, such as a video adapter  548 . In addition to the monitor  546 , the computer  502  may include other peripheral output devices (not shown), such as speakers, printers, etc. 
     It is to be appreciated that the computer  502  can operate in a networked environment using logical connections to one or more remote computers  560 . The remote computer  560  may be a workstation, a server computer, a router, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer  502 , although for purposes of brevity, only a memory storage device  562  is illustrated in  FIG. 5 . The logical connections depicted in  FIG. 5  can include a local area network (LAN)  564  and a wide area network (WAN)  566 . Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. When used in a LAN networking environment, for example, the computer  502  is connected to the local network  564  through a network interface or adapter  568 . When used in a WAN networking environment, the computer  502  typically includes a modem (e.g., telephone, DSL, cable, etc.)  570 , or is connected to a communications server on the LAN, or has other means for establishing communications over the WAN  566 , such as the Internet. The modem  570 , which can be internal or external relative to the computer  502 , is connected to the system bus  508  via the serial port interface  544 . In a networked environment, program modules (including application programs  534 ) and/or program data  538  can be stored in the remote memory storage device  562 . It will be appreciated that the network connections shown are exemplary and other means (e.g., wired or wireless) of establishing a communications link between the computers  502  and  560  can be used when carrying out an aspect of the present invention. 
     In accordance with the practices of persons skilled in the art of computer programming, the present invention has been described with reference to acts and symbolic representations of operations that are performed by a computer, such as the computer  502  or remote computer  560 , unless otherwise indicated. Such acts and operations are sometimes referred to as being computer-executed. It will be appreciated that the acts and symbolically represented operations include the manipulation by the processing unit  504  of electrical signals representing data bits which causes a resulting transformation or reduction of the electrical signal representation, and the maintenance of data bits at memory locations in the memory system (including the system memory  506 , hard drive  516 , floppy disks  520 , CD-ROM  524 , and remote memory  562 ) to thereby reconfigure or otherwise alter the computer system&#39;s operation, as well as other processing of signals. The memory locations where such data bits are maintained are physical locations that have particular electrical, magnetic, or optical properties corresponding to the data bits. 
     It will be appreciated by those skilled in the art that the inventive GUI methods described in this invention will be programmed in a software language such as C++, JAVA, ACTIONSCRIPT, JAVASCRIPT, VISUAL BASIC®, HTML or other languages. The GUIs will be able to be manipulated by a user of the software using an input device, such as a mouse, touch sensitive pad, or other mechanism. In addition to the example arrangement depicted in  FIG. 5 , the various embodiments of the invention may be implemented, in whole or in part on a server, a vehicle-mounted electronic device, or a hand-held electronic device, for example. 
     What has been described above includes examples of the present invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the present invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the present invention are possible. Accordingly, the present invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim. 
     While there have been shown and described and pointed out certain novel features of the present invention as applied to preferred embodiments thereof, it will be understood by those skilled in the art that various omissions and substitutions and changes in the methods and apparatus described herein, and in their operation, may be made by those skilled in the art without departing from the spirit and scope of the invention. It is expressly intended that all combinations of those elements and/or method steps which perform substantially the same function in substantially the same way to achieve the same results are within the scope of the invention. Substitutions of method steps and elements from one described embodiment to another are also fully intended and contemplated. It is the intention, therefore, to be limited only as indicated by the scope of the claims appended hereto.