Tooltip feedback for zoom using scroll wheel

Tooltip generation for zoom feedback is described. In response to the initiation of a zoom operation, a tooltip is generated. The tooltip shows an established potential zoom level that will be used to execute the zoom operation if no other zoom level is established or selected. Multiple potential zoom levels may be shown within the tooltip before the zoom operation is executed.

TECHNICAL FIELD

The present disclosure generally relates to zoom functionality for computing systems. More specifically, the present disclosure relates to user interface feedback associated with zoom functionality in computing applications.

BACKGROUND

Zoom operations allow users of computing applications to change the view of the display or a display region within the application. For example, users often “zoom-in” on a particular focal point within a display or display region, causing user interface elements within the display surrounding the focal point to become enlarged, to come into greater focus, or to increase the resolution or level of detail at which the elements are displayed. As used herein, the term user interface element includes any element that may be visible on a user interface. User interface elements that are further away from the focal point of the zoom operation may sometimes be removed from the viewable display area to make room for the enlarged area. Users may also “zoom-out” from a particular focal point, causing user interface elements to shrink or decrease the level of detail at which the elements are shown, sometimes bringing elements outside of the viewable display area into view. A zoom operation may change the scale of the entire display or some aspect of the display.

Zoom functionality has been integrated into a variety of computer-based applications. For example, project management and graphic design programs sometimes allow users to zoom-in or zoom-out to view or edit a graphic at various levels of detail. The level of detail or zoom desired may be selected, for example, using a drop-down list of different zoom levels, or by using some combination of user input device shortcuts.

During a zoom operation such as a zoom-in or zoom-out operation, the display area is often re-rendered in order to reveal or hide additional details about the objects in the display area that are visible or available at one zoom level, but not another. However, the ability to re-render the display area often depends on hardware or network-based resources, and when those resources are limited, re-rendering the display area may affect the user experience. This is particularly true when the user input device being used to select a zoom level is a scrolling mechanism, such as a scroll-wheel on a mouse, as the use of a scrolling mechanism to select a zoom level often results in the user “scrolling through” several zoom levels, causing the display for each intermediate zoom level to be re-rendered, as well as the finally selected zoom level.

Some user input devices are more problematic for performing zoom operations than others. For example, when the user input device includes a scroll wheel that provides no tactile feedback (e.g., a clicking sensation) while a user turns the scroll wheel, the user may accidentally scroll beyond the desired zoom level. Scroll wheels that provide tactile feedback, on the other hand, may help the user to determine an approximate zoom level based on the number of “clicks” the scroll wheel delivers in response to the input. By feeling the feedback from the scroll wheel the user may, over time, associate a certain number of clicks with a certain zoom level. However, many user input devices do not include a tactile feedback mechanism, resulting in the execution of zoom operations at unpredictable zoom levels.

DETAILED DESCRIPTION

General Overview

A tooltip feedback for zoom operations is described. A tooltip, sometimes referred to as an infotip, is a graphical user interface element that appears adjacent to or is otherwise associated with a cursor, such as a mouse pointer. For example, the tooltip may appear adjacent to the cursor in response to a user interface operation. In an embodiment, a tooltip appears in response to the invocation of a zoom operation. For example, a user may initiate a “zoom-in” operation or other zoom operation by holding the Ctrl key on a keyboard while simultaneously scrolling a scroll wheel on a mouse (i.e., turning the scroll wheel) in the forward direction. In response to the zoom operation, a tooltip may appear, displaying a potential zoom level established by the scrolling motion. As the user continues to scroll the mouse wheel, the tooltip is updated to reflect the currently established potential zoom level. When the user releases the Ctrl key or waits for a predetermined amount of time, the zoom-in operation completes the zoom operation by altering the display area to conform to the last-established potential zoom level.

User interface elements are displayed within a display area of a user interface in an embodiment. A user input associated with a zoom operation is received at a computing device. In response to receiving the user input, a potential zoom level for the one or more user interface elements is established. In an embodiment, all user interface elements in the display are affected by a zoom operation. In another embodiment, only selected elements of the display are affected. A tooltip that identifies the potential zoom level is generated and displayed within the display area. In an embodiment, the tooltip is displayed adjacent to a mouse cursor or another user interface element that is associated with the zoom operation.

In an embodiment, additional user input associated with the zoom operation is received. For example, the first input may include the scrolling of a scroll wheel on a mouse, while the additional user input may include additional scrolling of the scroll wheel. In response to receiving the additional user input, a new potential zoom level is established, and the tooltip is updated to identify the new potential zoom level.

In an embodiment, the zoom operation is not executed until a timer expires. This allows the user to select several potential zoom levels without executing the zoom operation at any one of those zoom levels, because the timer is reset each time a new potential zoom level is established. For example, if the time (i.e., amount of time to wait before performing a zoom operation) is set to 5 seconds, and a new potential zoom level is established 3 seconds after the first selection, then the timer is re-established at 5 seconds, causing the countdown to performing the zoom operation to restart. In an embodiment, the zoom operation is performed automatically when the timer expires. In an embodiment, the zoom operation is performed upon another user input event, such as the pressing of a key or the release of a key on a keyboard. Executing or performing the first zoom operation includes displaying at least one user interface element within the display area at the last-established potential zoom level, which may be the most recent potential zoom level shown in the tooltip in an embodiment.

Structural and Functional Overview

FIG. 1is a simplified block diagram illustrating a tooltip engine100on which an embodiment may be implemented. In the embodiment shown inFIG. 1, tooltip engine100is a collection of modules110,120,130,140, and150, each of which may be implemented in logic such as software logic, hardware logic, or any combination thereof. Tooltip engine100includes an input/output (I/O) interface110in an embodiment. In another embodiment, I/O interface110is not part of tooltip engine100, but is coupled to tooltip engine100. I/O interface110may be configured to couple tooltip engine100to a user input device such as a keyboard104, mouse102, trackball, touchpad, touch screen, joystick or any other user input device or pointing device. I/O interface110may also be configured to couple tooltip engine100to other devices or means of providing or interpreting signals or data such as an input110, including a network, display device, or transmission media device capable of transmitting or displaying an output114. In an embodiment, I/O interface110may represent multiple I/O interfaces.

Input112may include a input from a pointing device and input from a keyboard such as keyboard104. For example, input112may include a signal defining the movement of a scroll wheel on a mouse such as mouse102and/or signals from a keyboard that define which button(s) are being or have been pressed. When used in alone or conjunction with one another, the combination of a keyboard event and the scrolling of the scroll wheel may instruct tooltip engine100to present a tooltip associated with a zoom level indicated by input112in an embodiment. Output114may include display data, which may include a user interface element that can be displayed by a display device106. Output114may also include feedback to user input devices such as vibration signals, or other application data.

I/O logic120may also be configured to determine a function or a set of function that match a single input or a combination of inputs. For example, a user holding down the Ctrl key on the keyboard while scrolling the scroll wheel on the mouse may correspond to a zoom function. One or more input combinations may correspond to a particular function. I/O logic120receives both inputs keyboard and mouse inputs from I/O interface110, and may determine that the combination of inputs indicates the initiation of a zoom function or operation. In other embodiments, such operation matching may be performed by other elements of tooltip engine100, such as elements130,140, or150.

I/O logic120is communicatively coupled to I/O interface110, user interface logic130, a presentation logic140, and a tooltip generation logic150in the embodiment shown inFIG. 1. In other embodiments, additional elements of computer system100may be coupled to I/O logic120. In addition, elements not shown inFIG. 1may be added in other embodiments, and the configuration of elements of the computing system may differ from the configuration shown inFIG. 1. For example, I/O logic120may be incorporated into tooltip generation logic150or presentation logic140, and a database or other storage means may be remotely connected to tooltip engine100. Tooltip engine100may be coupled to a processor, which may comprise hardware logic in the form of one or more central processing units (CPUs) each having one or more cores.

In the embodiment ofFIG. 1, user interface logic130is communicatively coupled to I/O logic120for receiving user input, tooltip generation logic150, and presentation logic140. User interface logic130may also be coupled to a processor. In an embodiment, user interface logic130receives user input from I/O logic120and processes the input to determine whether a tooltip should be generated. In an embodiment, user interface logic instructs tooltip generation logic to generate a tooltip for display, and presentation logic140generates a user interface that includes the tooltip. In an embodiment, user interface logic130may also be communicatively coupled to other elements of tooltip engine100that are not shown. In an embodiment, presentation logic is combined with user interface logic130, which is configured to generate the user interface and user interface elements that may be displayed to a user. For example, referring toFIG. 2A, user interface logic130may generate one or more elements of user interface200in an embodiment. In an embodiment, a user interface is made up of user interface elements. Some user interface elements may be interactive, while others may not be interactive. User interface elements may be generated based on data in a database, graphics in a graphics repository, or other information that may be retrieved or dynamically generated by tooltip engine100. In an embodiment, presentation logic generates output114that includes the user interface and/or user interface elements.

Tooltip generation logic150is communicatively coupled to I/O logic120, user interface logic, and presentation logic140. Tooltip generation logic150generates tooltip user interface elements (tooltips) based on user input. In an embodiment, tooltip generation logic150generates tooltip user interface elements in response to input associated with certain operations, such as zoom operations. For example, a user may request a zoom-in operation or a zoom-out operation by providing input signals or a combination of input112signals to I/O interface110via one or more user input devices. In response to the input signals or data, included in input112, tooltip generation logic150may generate a particular tooltip to be displayed by presentation logic140. Tooltip generation logic150may provide the tooltip directly to presentation logic140, or may provide the tooltip to user interface logic130to be combined with other user interface and user interface elements before the tooltip is sent to presentation logic140. Presentation logic140then presents the tooltip to the user monitor106within output114. In another embodiment, presentation logic generates instructions for generating a tooltip to be displayed to the user and sends the instructions within output114. Output114may also include other elements of a display such as user interface200. The tooltip may be stored on a remote storage device or flash memory in an embodiment. The tooltip may be updated by tooltip generation logic150, and the updated tooltip may be displayed in an embodiment. For example, if a user selects a new zoom level by providing input or a combination of input112, then tooltip generation logic150may update the tooltip or generate a new tooltip to be displayed, and the updated tooltip or new tooltip may be displayed by presentation logic140.

Zoom Operations

A zoom operation is an operation that causes a portion of a display to be viewed in greater or less detail. For example, a user of a project management or graphic-design application may initiate a zoom operation to zoom-in on a particular area of an image that is being edited. A zoom operation may comprise a zoom-in operation or a zoom-out operation. By zooming in, that particular area is viewed in greater detail, which may require the enlargement of the area. The user may zoom-out, causing the area to be viewed in less detail. However, if the area, or a portion of the area, is reduced in size as a result of the zoom-out operation, then the display may be able to accommodate the viewing of a greater portion of the image, albeit at a lower resolution.

Zoom identifiers may be stored as a sequence of numbers, characters or identifiers. Each zoom identifier in the sequence represents a particular level of detail in an embodiment. When a zoom operation is initiated in response to receiving user input (e.g., from a scroll wheel on a mouse), user interface logic130determines the current zoom identifier. In an embodiment, user interface logic130first detects the current level of detail at which the user interface is being displayed and determines which zoom identifier is associated with that level of detail. In another embodiment, the current zoom level is retained in memory and retrieved without the detection of the current level of detail of the user interface.

A zoom level represents an amount of change to a user interface or user interface element. For example, a zoom level may represent a magnification percentage or a value with which the current resolution of the user interface is to be multiplied. The zoom level associated with the current level of detail is identified as being associated with the current zoom identifier. In an embodiment, when the scroll wheel is scrolled toward the front of the mouse, the next highest zoom identifier (representing the next-highest level of detail for presenting the user interface) is identified by user interface logic130as the selected zoom identifier. As the user continues to scroll forward, the zoom identifier is changed to represent each successive zoom identifier in the sequence of zoom identifiers. For example, if the current zoom identifier is “0,” scrolling the mouse wheel forward may cause the zoom identifier “1” to be selected. Further scrolling may cause the zoom identifier “3” and then “4” to be selected. Although zoom identifiers may be used to represent magnification or some other metric associated with zoom operations, this is not required because the zoom identifier can represent a zoom level by association. For example, the zoom level “4” may represent 14% magnification. A relationship for each zoom identifier may be defined in a zoom identifier association table.

Embodiments are not limited to those in which zoom operations increment. For example, if the current zoom identifier is “0,” scrolling the mouse wheel backward may cause the zoom identifier “−1” to be selected. Further scrolling may cause the zoom identifier “−2” and then “−3” to be selected, and so on. In addition, scrolling forward may cause the zoom identifier to decrement, while scrolling backward may cause the zoom identifier to increment in an embodiment. In addition, embodiments are not limited to scrolling operations performed using a scroll wheel on a mouse. For example, keys on a keyboard may be used to change the currently selected zoom identifier.

Zoom operations need not cause the size of the user interface to change, as long as a change in detail occurs. In an embodiment, only a portion of the interface is changed. For example, a Gantt chart may be displayed. A Gantt chart is a tool that graphically displays tasks or resources over time. Generally, in a Gantt chart, the time scale over which the tasks and resources are displayed is rendered horizontally across the top of the chart region. A project schedule is illustrated as a series of bars.FIG. 2Aillustrates one example of a Gantt chart. When performing a zoom operation on a Gantt chart, it may be unnecessary to increase or decrease the height of a bar, such as user interface element210. Changing the height of the bar may confuse the viewer, or make the chart difficult to read. The level of detail may instead be shown by increasing or decreasing the length of the bar. In other words, the change in detail may only be applied to the x-axis in an embodiment. In other embodiments, the change in detail may only be applied to the y-axis. A zoom-in operation on Gantt chart210may result in the magnification of the x-axis, while leaving the y-axis unchanged on embodiment. In other embodiments, the x-axis and y-axis may be changed disproportionately. For example, a 20% magnification of the x-axis may correspond to a 10% magnification of the y-axis.

It is common for a zoom level to be expressed in terms of percentages. The percentage may be related to an “actual,” “normal,” or “default” resolution or level of detail. For example, if the normal size of a graphic is 200 pixels by 200 pixels, a zoom operation may cause the image to be shown on the display as a 400 pixel by 400 pixel image. The zoom level may be expressed as 200%, indicating that the image is twice the actual size. However, other ways of expressing a zoom level may be appropriate, depending on the type of user interface element being subjected to a zoom operation. Zoom levels may be based on time, distance or any other quantifiable metric. For example, it may be preferable to express zoom levels in terms of days, weeks, months, quarters, and years or any combination of these for a Gantt chart that tracks a project timeline. Any expression of zoom levels may be used in an embodiment.FIG. 2Billustrates the use of time to represent zoom levels by an amount of time.FIG. 2Eshows the result of a zoom-out operation that set the zoom level to years, half years.

Tooltip Generation for Zoom Operations

A tooltip is a graphical user interface element that appears to be associated with a cursor, such as a mouse pointer. For example, a tooltip is typically used to identify the function of a button in a user interface when the user interface element includes no identifying text. A tooltip may include text, graphics, or other user interface elements, and may be generated under various conditions in an embodiment. For example, a tooltip may be generated in response to the cursor coming into contact with a tool button that is part of a user interface. Tool buttons often include icons that visually depict the function of the tool, but do not include text that describes what the tool's capabilities are. When the cursor is placed over the tool button, a tooltip that includes descriptive text may be generated and placed next to the cursor in order to better describe the tool's functions. For example, if a user places the cursor over a button with a backward-pointing arrow, a tooltip that includes the text “undo” may be generated and placed next to the cursor, indicating that pressing the button will undo the previous action performed by the user.

In an embodiment, a tooltip is generated in response to the initiation of a zoom operation. Upon initiation of the zoom operation, a tooltip may be generated and displayed before the zoom operation is actually executed. The displayed tooltip may indicate information related to the zoom operation such as the current zoom level prior to the execution of the zoom operation. For example, a user may use the scroll wheel of a mouse while holding the Ctrl key on a keyboard to initiate a zoom operation, meant to either zoom-in or zoom out on the point where the curser is pointing on the display. In response to the initiation of the zoom operation, but before the execution of the zoom operation, a tooltip may be generated by tooltip generation logic150and displayed by presentation logic140near the cursor. The tooltip may include text that indicates a potential zoom level, such as “125%”. This is called a “potential” zoom level because it is the currently established zoom level that is shown in the tooltip. It is not necessarily the current zoon level of the user interface. A potential zoom level may be used to perform the zoom operation if the user desires this, or another potential zoom level may be established by further scrolling through the available zoom levels.

In order to execute a zoom operation at the potential zoom level that is shown in the tooltip, the user may either wait for a timer to expire (a pre-determined amount of time such as 2 seconds) or perform another action (e.g., release the Ctrl button on the keyboard) to indicate a desire to execute (or complete) the zoom operation. For example, the user may release the Ctrl button on the keyboard, causing the zoom operation to execute. In response, the zoom operation will cause the display to zoom-in on the point associated with the curser at a zoom level of 125%.

Several potential zoom levels may be displayed in a tooltip before the execution of a zoom operation in an embodiment. For example, the user may use the scroll wheel of the mouse while holding the Ctrl key on the keyboard to initiate a zoom operation. In response to the initiation of the zoom operation, a tooltip is generated by tooltip generation logic150and displayed by presentation logic140near the cursor. The tooltip may include the text “125%”, indicating a potential zoom level of 125%. Without releasing the Ctrl button on the keyboard, the user may use the scroll wheel on the mouse to scroll even further in the same direction. In response to this additional input112, the tooltip is updated by tooltip generation logic150to reflect a new potential zoom level of 150%. Thus, even though no zoom operation has been executed and the display does not reflect a changed zoom level, two potential zoom levels have been “scrolled through” and shown in the tooltip. Any number of potential zoom levels may be established, and, in response, displayed in a tooltip, before the user finally indicates the desire to execute the zoom operation at the currently established potential zoom level. For example, the user may refrain from providing user input via the scroll wheel on the mouse until a timer expires (e.g., 2 seconds), and the zoom operation will execute in response to the expiration of that timer.

Additional tools for performing a zoom operation may exist independent of the features that employ the tooltip. For example, a zoom level drop-down list may be provided to the user as part of a toolbar. When the user selects a zoom level, a zoom operation is automatically executed, using the zoom level selected in the drop-down list. This feature is different than the feature that relies only on a combination of user input without pressing a button with associated functionality, because the drop-down list or other user interface element takes up space on a toolbar. User interface elements also deny the user the use of the pointing device as a mechanism for selecting the portion of the user interface the user wishes to be the focus of the zoom operation, because the pointing device must be used to select the zoom level from the drop-down list or other user interface element. In an embodiment, the tooltip is updated independently of the zoom level shown in the drop-down list. For example, the user may use the scroll wheel of the mouse while holding the Ctrl key on the keyboard to initiate another zoom operation. In response to the initiation of the zoom operation, a tooltip is generated by tooltip generation logic150and displayed by presentation logic140near the cursor. In an embodiment, the tooltip need not appear near the cursor. For example, the tooltip may appear within the display area, such as display area200. The tooltip may include the text “125%”, indicating a potential zoom level of 125%. The zoom level drop down list will continue to show the currently displayed zoom level as the tooltip is updated to reflect a potential zoom level. In response to the user indicating the desire to execute the zoom operation, the zoom operation is executed at the currently established potential zoom level, and the zoom level in the zoom level drop-down list is updated to reflect the new, actual, zoom level.

In an embodiment, a tooltip may be generated according to a potential zoom level established for a zoom operation on a Gantt chart. Referring toFIG. 2A, user interface200is generated by user interface logic130and displayed by presentation logic140in an embodiment. User interface200includes a display area220, which includes several user interface elements such as user interface element210. Cursor230is also shown within the boundaries of display area220.

FIG. 2Billustrates a view of user interface200that includes tooltip240, which is generated in response to the initiation of a zoom operation in an embodiment. The current zoom level forFIG. 2Bis (Months, Days), which means that the level of detail included in the Gantt chart reflects a level of detail that includes some months, and days within those months. Tooltip240indicates a currently established potential zoom level of (Quarters, Months), showing that input112indicated a zoom-out operation. In an embodiment, the user may use the scroll wheel on the mouse to scroll in the opposite direction to change the operation into a zoom-in operation. As the user continues to select different potential zoom levels, tooltip240is updated to reflect each new potential zoom level.

FIG. 2Cillustrates a view of user interface200that reflects an updated tooltip240. Even though the actual zoom level of display area220has not changed, the potential zoom level shown in tooltip240is (Half Years, Quarters).FIG. 2Dillustrates a view of user interface200that reflects another change to tooltip240. Again, the actual zoom level of display area220has not changed, but the potential zoom level shown in tooltip240is (Years, Half Years). After selecting the potential zoom level of (Years, Half Years), the user can use a predetermined mechanism for indicating the desire to execute the zoom operation at the currently established potential zoom level. For example, the user may wait for 2 seconds to cause the execution of the zoom operation in an embodiment. The expiration of a predetermined amount of time id detected by tooltip generation logic in an embodiment. In another embodiment where the zoom operation is initiated by holding the Ctrl button down on a keyboard while using the scroll button on a mouse to select the potential zoom level, the user may release the Ctrl button and/or wait for a predetermined amount of time to indicate the desire to execute the zoom operation.

FIG. 2Eillustrates a view of user interface200that reflects an updated display area220after the execution of the zoom operation. User interface element210is still within the view of display area220, but the size of user interface element210has changed only horizontally. In an embodiment, the size of user interface elements within a Gantt chart may be reduced vertically and/or horizontally.

FIG. 3illustrates a method for generating a tooltip for zoom operations in an embodiment. At step310, one or more user interface elements are displayed within a display area of a user interface. There user interface elements may be generated by user interface logic130and/or presentation logic140, and may be displayed by presentation logic140in an embodiment. At step320, user input112associated with a zoom operation is received. For example, the user may, while depressing the Ctrl button on a keyboard, scroll the scroll wheel on a mouse. At step330, in response to user input112, a potential zoom level is established by tooltip generation logic150. At step340, a tooltip that identifies the potential zoom level is generated by tooltip generation logic150and displayed by presentation logic140or by an application or device receiving instructions from presentation logic in the form of output114.

In an embodiment, additional user input112is received, and the zoom level displayed by the tooltip is updated to a second potential zoom level by tooltip generation logic150. If the additional user input is received by tooltip engine100before the zoom operation is performed, then the second potential zoom level becomes the selected level at which to perform the zoom operation.

FIG. 4illustrates a method for using a tooltip according to an embodiment. At step410, a tooltip is displayed. For example, presentation logic may provide a tooltip within output114to be displayed on display device106. At step420, the value displayed in the tooltip is changed in response to user input. For example, the value of the tooltip may be changed from a zoom level of “weeks, months” to a zoom level of “months, years” in response to user input from a scroll wheel on a mouse. At step430, a zoom level is selected and applied.

FIG. 5illustrates a method for displaying a tooltip according to an embodiment. At step510, user input is received. For example, a user may provide input by rotating the scroll wheel on an mouse. As step520, an attribute that is associated with a value to be displayed is determined. This attribute need not be a zoom level, but may be associated to a zoom level. For example, the attribute may be a zoom identifier. At step530, a value associated with the attribute determined in step520is determined. This value may be a zoom level or text associated with a zoom level. For example, 125% is a value that may be used to indicate a magnification of 125% in step530. At step540, a tooltip containing the attribute value is displayed. For example, a tooltip containing the text “125%” may be displayed in an embodiment.

FIG. 6illustrates a method for changing the value displayed in a tooltip according to an embodiment. At step610, input is received. In en embodiment, to change the value of an existing tooltip, the user input must be received before a timer expires. Examples of user input include input from a keyboard, mouse, or other user input device. At step620, the next value associated with the zoom level attribute is determined. For example, the next zoom identifier available based on the user input may indicate that the value of the tooltip should be changed to “150%” in an embodiment. At step630, the value of the tooltip is updated to reflect the next available zoom level.

FIG. 7illustrates a method for applying a value displayed in a tooltip to a zoom operation according to an embodiment. At step710, it is determined that a selection of a zoom level has been made. For example, the user may provide additional user input by pressing a key on a keyboard to indicate the selection of a zoom level in an embodiment. In another embodiment, the user may refrain from providing user input for a predetermined amount of time. Allowing this timer to expire is interpreted by tooltip engine100as a selection of the last zoom level displayed by or associated with the tooltip. At step720, the value associated with the tooltip when the selection occurred is determined. This determination may be made by reading a memory that stores the most recent value, identifier, and/or zoom level associated with the tooltip. At step730, the value is applied.

In an embodiment, a predetermined amount of time to wait before performing a zoom operation is established as a timer by tooltip generation logic150. In response to receiving the second user input before the timer expires, the timer reset. For example, a timer may be set for three seconds so that a zoom operation will execute using the zoom level shown in the tooltip if no changes to the tooltip are made within three seconds. In this case, if a first zoom level is selected for presentation in the tooltip, the zoom operation will execute within three seconds unless additional input is received. However, if additional input that is associated with a zoom operation is received within three seconds (e.g., with one second left), causing the zoom level shown in the tooltip to change, then the timer is reset. In the embodiment described heretofore, the timer would be reset to three seconds. In response to receiving no user input related to a zoom operation before the timer expires, the zoom operation is performed, causing at least one user interface element to be displayed at the last-established potential zoom level, or the last zoom level shown in the tooltip.

Hardware Overview

For example,FIG. 8is a block diagram that illustrates a computer system800upon which an embodiment of the invention may be implemented. Computer system800includes a bus802or other communication mechanism for communicating information, and a hardware processor804coupled with bus802for processing information. Hardware processor804may be, for example, a general purpose microprocessor.

Computer system800also includes a main memory806, such as a random access memory (RAM) or other dynamic storage device, coupled to bus802for storing information and instructions to be executed by processor804. Main memory806also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor804. Such instructions, when stored in storage media accessible to processor804, render computer system800into a special-purpose machine that is customized to perform the operations specified in the instructions.

Computer system800further includes a read only memory (ROM)808or other static storage device coupled to bus802for storing static information and instructions for processor804. A storage device810, such as a magnetic disk or optical disk, is provided and coupled to bus802for storing information and instructions.

FIG. 9is a simplified block diagram illustrating components of a system environment900that may be used in accordance with an embodiment of the present invention. As shown, system environment900includes one or more client computing devices904,906,908, and910which are configured to operate a client application such as web browser, proprietary client (e.g., Oracle Forms), and/or the like. In various embodiments, client computing devices904,906,908and910are used by tooltip engine100ofFIG. 1to interact with an enterprise application. For example, client computing devices904,906,908and910may be used to access user interfaces of the enterprise application to tooltip engine100as described herein. Additionally, client computing devices904,906,908and910may be used to execute an outsourced or in-house business function within the application, such as via user interface814ofFIG. 8.

Client computing devices904,906,908and910may be general purpose personal computers (including, merely by way of example, personal computers and/or laptop computers running various versions of Microsoft Windows and/or Apple Macintosh operating systems), cell phones or PDAs (running software such as Microsoft Windows Mobile and being Internet, e-mail, SMS, Blackberry, or other communication protocol enabled), and/or workstation computers running any of a variety of commercially-available UNIX or UNIX-like operating systems (including without limitation the variety of GNU/Linux operating systems). Alternatively, client computing devices904,906,908, and910may be any other electronic device, such as a thin-client computer, Internet-enabled gaming system, and/or personal messaging device, capable of communicating over a network (e.g., network914described below). Although exemplary system environment900is shown with four client computing devices, any number of client computing devices may be supported.

In embodiments, system environment900includes a network914. Network914may be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially-available protocols, including without limitation TCP/IP, SNA, IPX, AppleTalk, and the like. Merely by way of example, network910can be a local area network (LAN), such as an Ethernet network, a Token-Ring network and/or the like; a wide-area network; a virtual network, including without limitation a virtual private network (VPN); the Internet; an intranet; an extranet; a public switched telephone network (PSTN); an infra-red network; a wireless network (e.g., a network operating under any of the IEEE 802.11 suite of protocols, the Bluetooth protocol known in the art, and/or any other wireless protocol); and/or any combination of these and/or other networks.

System environment900also includes one or more server computers902which may be general purpose computers, specialized server computers (including, merely by way of example, PC servers, UNIX servers, mid-range servers, mainframe computers rack-mounted servers, etc.), server farms, server clusters, or any other appropriate arrangement and/or combination. In various embodiments, server1102may be adapted to run one or more services or software applications described in the foregoing disclosure. For example, as shown inFIG. 9, server902may act as an enterprise application server configured to execute an enterprise application or one or more other software applications performing the steps ofFIGS. 3-7.

Server902may run an operating system including any of those discussed above, as well as any commercially available server operating system. Server902may also run any of a variety of additional server applications and/or mid-tier applications, including web servers, FTP servers, CGI servers, Java servers, database servers, and the like. Exemplary database servers include without limitation those commercially available from Oracle, Microsoft, Sybase, IBM and the like.

System environment900may also include one or more databases912. For instance, databases1114may include an application database configured to store transactional data for an enterprise application, a security database configured to store security information pertaining to various business functions of the application, as well as any other type of database or data storage component described in this disclosure. Databases912may reside in a variety of locations. By way of example, one or more of databases912may reside on a storage medium local to (and/or resident in) one or more of the computers904,906,908and910. Alternatively, databases912may be remote from any or all of the computers904,906,908and910, and/or in communication (e.g., via network914) with one or more of these. In one set of embodiments, databases912may reside in a storage-area network (SAN) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers904,906,908and910may be stored locally on the respective computer and/or remotely, as appropriate. In one set of embodiments, databases912may include relational databases, such as Oracle 10g, that are adapted to store, update, and retrieve data in response to SQL-formatted commands.