The present invention relates to computers, and deals more particularly with enabling end users to add their own hover help to extend hover help that is provided in a user interface (“UI”) of a software application.
Hover help is sometimes referred to as an “info pop”, and refers to a technique whereby a small window pops up, responsive to an end user pausing a cursor (such as a mouse cursor or other pointing device cursor) temporarily over an icon or other element which is rendered on a user interface and for which hover help has previously been created. This pop-up window displays the previously-created help information pertaining to the icon or element.
The present invention is directed to appending hover help for a user interface. In one embodiment, this comprises: accepting, from a first executable program, a hover help append for each of at least one element of a user interface of a second executable program; storing each accepted hover help append; and responding to a request for rendering hover help for a selected element of the user interface by rendering any hover help provided by the second executable program for the selected element if no hover help append has been stored for the selected element, and otherwise by concurrently rendering any hover help provided by the second executable program for the selected element and the stored hover help append for the selected element. The request may comprise an event requesting the rendering of the hover help, and this event may identify the selected element for which the rendering of the hover help is requested. Alternatively, the request may be triggered by a cursor moving into a specified range of a location on the user interface, by input from a user, and so forth.
The concurrent rendering may comprise rendering the stored hover help append for the selected element over top of the hover help provided by the second executable program for the selected element. The storing may comprise storing the hover help append on a server accessible to an invocation of an executable program that performs the responding, or perhaps storing the hover help append on local storage of a workstation of a user of the first and second executable programs. The storing may comprise storing the hover help append in a data structure such as a markup language document that is associated with the user interface and that is updatable by the first executable program, in which case the concurrent rendering uses the stored hover help append for the selected element upon retrieval thereof from the markup language document. As an alternative, the storing may comprise storing a reference to a file location of the hover help append and storing the hover help append at the referenced file location, in which case the concurrent rendering uses the stored hover help append for the selected element from the referenced file location, upon retrieval of the reference to the file location.
Embodiments of the present invention may be provided as method, systems, and/or computer program products. It should be noted that the foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined by the appended claims, will become apparent in the non-limiting detailed description set forth below.
The present invention will be described with reference to the following drawings, in which like reference numbers denote the same element throughout.
Embodiments of the present invention are directed toward enabling end users to append their own hover help to the hover help that is provided for an application's user interface, without having access to the code of the application (which is also referred to herein as the “underlying application”). Typically, the hover help to which the user's hover help is to be appended is originally provided by the software developer for the application. Accordingly, the original hover help is referred to herein (by way of illustration but not of limitation) as “application-provided hover help”. Using techniques disclosed herein, an end user can extend the application-provided hover help information to make it more helpful or tailored to his own needs, even though the application does not provide a mechanism for enabling the user to edit or replace the application-provided hover help.
A user interface rendered by an application program may contain a substantial amount of information, and/or information that is complex or confusing, especially for novice users. Some end users may find that the hover help provided with the application, or perhaps some portion of the hover help, is not particularly helpful to them or does not align with their personal or enterprise-specific interpretation of the rendered data. Or, there may be scenarios where the user prefers using his own separately-stored reference information instead of the application-provided hover help. For example, an end user might create his own separate help documents, procedures, or “cheat sheets” containing reminders or explanations of enterprise-specific conventions, procedures, and practices pertaining to data rendered in an application interface. Such information might explain, for example, how to use particular fields in the user interface when performing enterprise-specific tasks or might remind the user of enterprise-specific settings to be used with tasks pertaining to a particular element of the user interface.
A drawback of this existing approach is that the user's separately-stored information is not rendered with the application-provided hover help. It may therefore be cumbersome for the user to locate his preferred, separately-stored information when it is needed, and he may in some cases forego using his preferred separately-stored information as a result, which in turn may lead to a less-productive or less-accurate interaction with the rendered UI.
The present invention is directed to enabling end users to append their own hover help to the application-provided hover help or, more generally, to append their own hover help to hover help that is provided in a UI of a software application. An embodiment of the present invention provides a mechanism that is external to the application providing the user interface, and allows an end user to specify information to be appended to hover help for user interface elements. This user-provided information is rendered in addition to the original application-provided hover help. Or, by specifying that the information provided by the user is to be displayed in the same location as the application-provided hover help, the user's information can be rendered such that the application-provided hover help is at least partially obscured. In either case, the information provided by the user for the hover help append, which is also referred to herein as “user-provided hover help”, is stored for subsequent use in the application interface.
Using an embodiment of the present invention, the user can enter his own help to be appended to the application-provided hover help for a displayed element (including, if desired by the user, an explicit reference to where the user has previously stored separate help information pertaining to this displayed element). Preferably, an append dialog is provided by the external hover help mechanism disclosed herein, such as a dialog window in which the user-provided hover help may be entered by the user. In one aspect, after the user provides this hover help, an embodiment of the present invention prompts the user to indicate a location where the hover help should pop up at run time. This may comprise enabling the user to move the append dialog window by dragging and dropping on the user interface, and the user may select a location related to the particular field of the currently-rendered panel and/or a location related to existing hover help that will be rendered for that field.
See
As can be seen by comparing the hover help 120 of
In
The user may activate entry of user-provided hover help (i.e., user input of hover help to be appended to, or perhaps displayed over, the already-existing hover help) in various ways without deviating from the scope of the present invention. In one approach, the user activates an executable program that accepts and stores hover help input (which may be referred to as the “hover help entry program”, for ease of reference), as disclosed herein, by clicking on a corresponding icon rendered on a desktop view of the user's workstation. In another approach, the user selects such an executable from a list of available applications presented in the Start menu (or similar menu of applications) provided by the workstation operating system. In yet another approach, the user activates an executable program by pressing a key or key sequence configured to invoke this program (and such key or key sequence may be configurable by the end user). In still another approach, the user types the name of such an executable program on a command line to thereby invoke the program.
At run time, the hover help provided by the user is retrieved and made available for rendering. Preferably, this is facilitated by activating an executable program that runs in a background mode, separate from the underlying application. This executable program (which may be referred to as the “run-time hover help retrieving program”, for ease of reference) may be the same executable program used to enter the user-provided hover help (in which case additional user-provided hover help may be entered at run time of the underlying application for which hover help is provided, if desired), or it may be a different executable program, without deviating from the scope of the present invention. In one approach, the run-time hover help retrieving program is explicitly invoked by the user (e.g., by clicking on an icon; selecting a choice from a menu; pressing a key or key sequence, which may be configurable; or typing the program name into a command line). In another approach, the run-time hover help retrieving program is automatically invoked (e.g., when the user's workstation is booted, responsive to invoking the underlying application program, etc.).
The manner in which one embodiment accepts user-provided hover help using the hover help entry program will now be described in more detail with reference to an example illustrated in
Referring first to
Responsive to identifying a new application using
In the sample panel 600, the underlying application is identified at 610 and a particular panel of that application is identified at 620. An identifier of each field of this panel 620 may be presented, as shown generally at 630. As one alternative, the entries at 630 may be provided only for those fields for which the user has previously created and stored a hover help append. The user may click one of the entries at 630 to display the previously-stored hover help append in edit mode, and may then revise that hover help append if desired. Or, the user may hover the mouse cursor over an entry from 630 to display the associated hover help append in a hover window. When editing a hover help append, an edit window may provide functions such as delete, edit, save and close, close without saving, and so forth.
In preferred embodiments, the user-provided hover help appends created with the hover help entry program are stored separately from any application-provided hover help. In one approach, user-provided hover help appends are stored as one or more Extensible Markup Language (“XML”) documents that are external to the underlying application. Accordingly, the allowable hover help syntax may adhere to a schema for XML documents. As one alternative, a document or documents encoded in another markup language may be used for storing the user's hover help appends. The user-provided hover help may be stored in product-related data files, according to one embodiment of the present invention. For example, a configuration file associated with a software product may identify a file path or other storage structure to be used for data files associated with applications within that software product. In another embodiment, the user-provided hover help is stored within a user data section of the application directory structure. In yet another embodiment, the user-provided hover help is stored at a location designated by the end user in a preferences file, configuration file, policy file, or other similar mechanism (which may identify, for example a path name or directory structure in which append files created by this user are to be stored).
More generally, the user-provided hover help appends may be stored at a location for which the user has read/write access. In one approach, the user-provided appends are stored in local storage on the user's workstation. In another approach, such appends are stored on a server for which this user has read/write access and that is accessible to an invocation of the hover help entry program and the hover help retrieving program. An administrator may create user-provided appends that are then retrievable for multiple end users of an enterprise, if desired. In this latter approach, the administrator-provided appends to hover help may be stored as user-provided hover help appends on a server from which a plurality of end users then retrieves those files.
The user may enter hover help appends as unformatted text. Optionally, a formatting command or commands may be supported. In one embodiment, a user is allowed to enter a “<p>” (i.e., paragraph) command in the hover help append to indicate that a paragraph break should be provided when the text of the user-provided hover help is rendered. A “<b>” command may also be supported, if desired, thereby allowing the user to indicate that some portion of the user-provided hover help should be rendered in bold face. In addition or instead, an embodiment may support user entry of graphics, such as allowing a user to provide a file path or Uniform Resource Locator (“URL”) that identifies a location of an image file to be rendered within the user-provided hover help for a particular field.
In one approach, the syntax that is allowable for appends to hover help depends on the capabilities of the rendering device, and any valid formatting or highlighting markup syntax or tags may be specified by the user when creating a hover help append. In this approach, any user-provided markup that is not supported by the rendering device is preferably ignored during rendering. Notably, the allowable syntax for hover help appends is independent of the hover help capabilities provided in the underlying application.
In one approach, the user specifies (x, y) coordinates for each hover help append. At run-time, the hover help retrieving application runs in a background mode and detects when the user moves the cursor within a particular range of the (x, y) coordinates specified for any of the fields on a particular panel. Suppose, for example, that the particular range is 5 for both the x- and y-coordinates. If the cursor is within 5 units of the x-coordinate identified at 732 and also within 5 units of the y-coordinate identified at 733, then the hover help append identified at 731 is to be rendered (e.g., by popping up a window containing the user's append). The hover help append may be rendered at those same (x, y) coordinates. Or, an offset may be used such that the hover help append is displaced from the area of the panel that triggered the rendering of the hover help append. As yet another option, the user may specify another set of (x, y) coordinates (e.g., as another child element of element 730) to be used as the location for displaying the hover help append. As still another option, the (x, y) coordinates illustrated at 732, 733 may be interpreted as the location for displaying the hover help append identified at 731, and the rendering thereof may be triggered when the user moves the cursor within a particular range of the field that corresponds to this “<panel—1_field—1>” entry in file 700. Or, the rendering thereof may be triggered by displaying a list of all existing hover help appends for a particular rendered panel, and allowing the user to explicitly request rendering of a hover help append selected using this list. In this case, the list may be structured as illustrated by panel 600 of
In the general case, (x, y) coordinates used by an embodiment of the present invention are preferably specified relative to the upper left corner of the application panel. In one approach, when a range is used in combination with (x, y) coordinates for determining when the display of a hover help append is triggered, this range is configurable. In another approach, this range may be statically specified (e.g., by the hover help retrieving program).
In another approach, the hover help retrieving program does not receive information about the cursor's current location. In this approach, the user may render hover help for fields of the panel through user interaction. For example, the user may press a key or key sequence, or select a choice from a menu, to thereby request display of a list or other rendering of the hover help appends which are available for this panel, as mentioned above. (It may also be necessary, in some implementations, for the user to first identify the current application and/or panel to the hover help retrieving program. This may be facilitated, for example, by displaying panels such as those illustrated in
The approach shown in
Document 800 also illustrates identification of an event that triggers the rendering of the hover help for a particular field. See reference number 831, where an event identifier may be specified. Location information may also be specified, as indicated at reference number 832, as a field counter, number of tab stops, or other location information that is derived from the application. Document 800 may also specify (x, y) coordinates, as illustrated at 834, 835, to indicate a position on the application panel where the hover help append identified at 833 should be rendered. If the location information at 832 is x and y location coordinates of the field, the data is parsed programmatically into x and y coordinates and a default offset is added to each coordinate for use in positioning the x and y coordinates for the help specified at 834 and 835. If the field location information is not provided in the event data or consumable from the application, the user can position the help to generate the x and y coordinates. (Note that the hover help append value specified as the value of syntax element 833 of
When a hover help append is rendered at run time, it is preferably rendered using a separate window that is opened on top of the application window of the underlying application. This separate window may open over top of the application-provided hover help to effectively obscure that application-provided hover help, or the window may open such that the application-provided hover help is concurrently visible, as mentioned earlier. In one approach, an embodiment of the present invention does not automatically close the window in which the hover help append is rendered; instead, the user manually closes the window (preferably using an existing approach such as clicking on a graphic such as an “X” icon or a “Close” button).
Note that an embodiment of the present invention may provide, and render, hover help for a field for which application-provided hover help does not exist.
Turning now to
An embodiment of the present invention may ask the user to explicitly identify where files such as document 700 of
In either case, processing reaches Block 930, which tests whether the underlying application publishes event data pertaining to its user interface. If not, then processing continues at Block 935; otherwise, processing continues at Block 950. Note that the decision reflected in Block 930 is not necessarily made programmatically. As one alternative, a software developer of an embodiment of the present invention determines whether the underlying application(s) with which the implementation of the present invention will be used will provide event data. If not, then this implementation may implement the functions represented by Blocks 935-945 and may omit the functions represented by Blocks 950-980. Conversely, if it is known that the underlying application(s) will provide event data, then an implementation of the present invention may implement the functions represented by Blocks 950-980 and may omit the functions represented by Blocks 935-945.
Referring now to Block 935, as indicated therein, the user provides hover help appends for each panel and field of an application for which such appends are desired, and chooses where to display such appends. The location for displaying each append may be specified relative to the upper left corner of the panel, as noted earlier.
When hover help appends are provided using a hover help entry program that is separate from a run-time hover help retrieving program, the processing of
Referring now to Block 950, a hover help append is created by the user to extend an application-provided hover help that has a corresponding hover help event. When hover help appends are provided using a hover help entry program that is separate from a run-time hover help retrieving program, the processing of
In either approach, Block 955 indicates that a hover help event is received. After receiving this event, Block 960 tests, in one approach, whether the user will explicitly decide where to place a previously-created hover help append that is associated with that event (e.g., through an entry such as that illustrated at 831 of
When the test in Block 960 has a negative result, then the hover help append is to be placed on the user interface at a programmatically-determined location. Accordingly, in Block 970, a test is made to determine whether the hover help append is to be placed on top of the application-provided hover help. (This test may consult previously-created user preferences, a configuration file, and so forth). If this test has a positive result, then at Block 975, the user-provided hover help append is positioned on top of the application-provided hover help for the element to which the received event pertains; otherwise, at Block 980, the user-provided hover help append is positioned such that it is displayed concurrently with the application-provided hover help. In this latter case, the hover help append may be positioned below the application-provided hover help.
Following any of Blocks 965, 975, or 980, processing in
As one alternative to using a document such as document 700 of
As will be appreciated by one of skill in the art, embodiments of the present invention may be provided as (for example) methods, systems, and/or computer program products. The invention can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes (but is not limited to) firmware, resident software, microcode, etc. Furthermore, the present invention may take the form of a computer program product which is embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and so forth) having computer-usable program code embodied therein, where this computer program product may be used by or in connection with a computer or any instruction execution system. For purposes of this description, a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (“RAM”), a read-only memory (“ROM”), a rigid magnetic disk, and an optical disk. Current examples of optical disks include compact disk read-only memory (“CD-ROM”), compact disk read/write (“CD-R/W”), and DVD.
Referring now to
Input/output (“I/O”) devices (including but not limited to keyboards 618, displays 624, pointing devices 620, other interface devices 622, etc.) can be coupled to the system either directly or through intervening I/O controllers or adapters (616, 626).
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks (as shown generally at 632). Modems, cable modem attachments, wireless adapters, and Ethernet cards are just a few of the currently-available types of network adapters.
Still referring to
The gateway computer 746 may also be coupled 749 to a storage device (such as data repository 748).
Those skilled in the art will appreciate that the gateway computer 746 may be located a great geographic distance from the network 742, and similarly, the wireless devices 710 and/or workstations 711 may be located some distance from the networks 742 and 744, respectively. For example, the network 742 may be located in California, while the gateway 746 may be located in Texas, and one or more of the workstations 711 may be located in Florida. The wireless devices 710 may connect to the wireless network 742 using a networking protocol such as the Transmission Control Protocol/Internet Protocol (“TCP/IP”) over a number of alternative connection media, such as cellular phone, radio frequency networks, satellite networks, etc. The wireless network 742 preferably connects to the gateway 746 using a network connection 750a such as TCP or User Datagram Protocol (“UDP”) over IP, X.25, Frame Relay, Integrated Services Digital Network (“ISDN”), Public Switched Telephone Network (“PSTN”), etc. The workstations 711 may connect directly to the gateway 746 using dial connections 750b or 750c. Further, the wireless network 742 and network 744 may connect to one or more other networks (not shown), in an analogous manner to that depicted in
The present invention has been described with reference to flow diagrams and/or block diagrams according to embodiments of the invention. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flow diagram flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flow diagram flow or flows and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flow diagram flow or flows and/or block diagram block or blocks.
While embodiments of the present invention have been described, additional variations and modifications in those embodiments may occur to those skilled in the art once they learn of the basic inventive concepts. Therefore, it is intended that the appended claims shall be construed to include the described embodiments and all such variations and modifications as fall within the spirit and scope of the invention. Furthermore, while the discussion herein may refer to “an embodiment” or “one embodiment” of the present invention, such references are not necessarily discussing the same embodiment.
Commonly-assigned U.S. patent application Ser. No. ______, which is titled “Modifying Hover Help for a User Interface” and which was filed concurrently herewith.