Abstract:
Methods and systems, including computer program products, for playing tutorials. The techniques include receiving a tutorial for a computer program, playing the tutorial using a first player, the first player allowing interaction with the computer program while playing the tutorial, and executing a second player from the first player, the second player simulating operation of the computer program while playing the tutorial. The first player plays the tutorial in a tutorial window that overlaps the application window and that remains on top of the application window.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application claims priority to U.S. Provisional Application No. 60/504,154, which was filed on Sep. 19, 2003. 
    
    
     TECHNICAL FIELD 
     This patent application relates generally to data processing via a digital computer and, more particularly, to managing display of an electronic tutorial. 
     BACKGROUND 
     Generally speaking, an electronic tutorial (“tutorial”) includes information and associated software that provides a user with guidance on how to complete a task in a computer program (“program”) or outside of a computer program. Typically, a tutorial will provide step-by-step instructions for performing the task. For example, a tutorial for use with a program, such as Microsoft® Word®, might cover the task of saving an existing document to a new location. Such a tutorial might instruct the user, e.g., to go to a “File” pull-down menu of an open document, select a “Save As” menu item, and, in a resulting dialog box, specify where the document is to be saved and a new name (if desired) for the document. Another example of a task that can be covered by a tutorial is changing an ink cartridge in an ink jet printer. 
     Software may be used to run the tutorial. This software, called a tutorial player (or simply “player”) formats and displays information from the tutorial on-screen so that a user can view the information in context. 
     SUMMARY 
     In one aspect, the invention is directed to a computer program product, tangibly embodied in an information carrier, for playing tutorials. The computer program product is operable to cause a data processing apparatus to perform operations that include receiving a tutorial for a computer program, playing the tutorial using a first player, and executing a second player from the first player. The first player allows interaction with the computer program while playing the tutorial. The second player simulates operation of the computer program while playing the tutorial. By providing first and second players that operate differently, the invention allows the user to choose how best to learn via the tutorial. This flexibility is enhanced by allowing users to switch from the second player to the first player and vice versa. 
     The foregoing aspect may include one or more of the following features. 
     The computer program may run in an application window. Playing the tutorial using the first player may include running the tutorial in a tutorial window that is smaller than the application window, and/or running the tutorial in a tutorial window that overlaps the application window and that remains on top of the application window. The tutorial may include a screen image associated with the computer program. Playing the tutorial using the first player may include displaying a cropped version of the screen image; running the tutorial on a client computer without installing the tutorial on the client computer; and/or displaying a context indicator that indicates which portion of the tutorial is currently being played. 
     The first player may run in a Web browser on a client computer, and the second player may be installed locally on the client computer. Executing the second player from the first player may include accessing the second player from the first player through a browser plug-in installed in the Web browser. Executing the second player from the first player may include displaying a link to the second player in the first player, and receiving input selecting the link. 
     In general, in another aspect, the invention is directed to a method for playing tutorials. The method includes receiving a tutorial for a process, playing the tutorial using a first player, the first player allowing interaction with the process while playing the tutorial, and playing the tutorial using a second player, the second player simulating operation of the process while playing the tutorial. The second player is executed via the first player, or the first player is executed via the second player. This aspect may include one or more of the following features. 
     The process may be implemented via a computer program that runs in an application window. Playing the tutorial using the first player may include running the tutorial in a tutorial window that is smaller than the application window, and/or running the tutorial in a tutorial window that overlaps the application window and that remains on top of the application window. The tutorial may include a screen image associated with the process. Playing the tutorial using the first player may include displaying a cropped version of the screen image; running the tutorial on a client computer without installing the tutorial on the client computer; and/or displaying a context indicator that indicates a portion of the tutorial is currently being played. 
     The first player may run in a Web browser on a client computer, and the second player may be installed locally on the client computer. Executing the second player from the first player may include accessing the second player from the first player through a browser plug-in installed in the Web browser. Executing the second player from the first player may include displaying a link to the second player in the first player, and receiving input selecting the link. 
     In general, in another aspect, the invention is directed to a system that includes a server to host a Web page providing access to a first player. The first player runs a tutorial program for a process concurrently with the process. The system may also include a client computer to access the Web page and to run the first player. The client computer stores a second player that simulates the process while running the tutorial program. The first player is accessible via the second player and/or the second player is accessible via the first player. 
     In the foregoing aspects, the process may include a mechanical component. Also, accessing the second player from the first player may include accessing the second player from the first player through a browser plug-in installed in the Web browser 
     Other feature and advantages are illustrated below in the detailed description and the drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of an electronic tutorial containing a player and tutorial file(s). 
         FIG. 2  is an example of a player window associated with the electronic tutorial and an application window associated with the tutored program. 
         FIG. 3A  is an example of a screen image associated with the electronic tutorial. 
         FIG. 3B  is an example of cropped screen images associated with the electronic tutorial. 
         FIG. 4A  is an example of the player running in a graphical mode. 
         FIG. 4B  is an example of the player running in textual mode. 
         FIG. 5  is a block diagram of an implementation of the electronic tutorial of  FIG. 1 . 
         FIG. 6  is an example of an editor associated with the electronic tutorial. 
         FIG. 7  is a block diagram of an implementation of the electronic tutorial of  FIG. 1 . 
     
    
    
     Like reference numbers in different figures indicate like elements. 
     DETAILED DESCRIPTION 
     As shown in  FIG. 1 , a tutorial  100  includes a player  110  for making tutorial contents (i.e., instructions provided via the tutorial) available to a user, and one or more tutorial file(s)  120  for storing the tutorial contents in a format that is executable by player  110 . Tutorial  100  may be stored on any type of device that is capable of performing the functions described herein. Examples of such devices include, but are not limited to, a general or special-purpose computer, a personal computer (“PC”), a workstation, a server, a laptop, a Web-enabled telephone, a Web-enabled personal digital assistant (“PDA”), a Web server, and an interactive television set. Such devices may incorporate any number of components, and/or peripherals, such as processors, memory/storage devices, input devices, output devices, and/or interfaces. 
     Tutorial file(s)  120 , as noted above, may include one or more files; however, will be referred to in the plural. Tutorial files  120  include graphics that display screen images of the computer program for which the tutorial is being run. (The computer program for which the tutorial is being run will henceforth be referred to as the “tutored program”.) These screen images may comprise screens displayed by the tutored program during its operation. Specifically, the screen images may depict visual states of the tutored program during the execution of one or more steps in the tutored program. Some of these steps may comprise user interaction with one or more program controls (e.g., text input fields, radio buttons, pull-down menus, and tables) displayed in an application window of the tutored program. The screen images can be used to provide a user with visual guidance as to what action(s) the user should perform in a given circumstance. 
     Tutorial files  120  also may include instruction text. The instruction text provides guidance in a textual format. The text may instruct a user how to perform a given task, such as how to operate pull-down menus in a windowing operating system. The instruction text may, or may not, be associated with corresponding graphics. 
     Player  110  is software that uses the contents of tutorial files  120  to play a tutorial for the tutored program. Player  110  plays the tutorial in a manner that allows a user of the tutored program to work in the tutored program and to view the tutorial at the same time. Player  110  is operable in either a graphical mode or a textual mode. In the graphical mode, player  110  retrieves appropriate graphics from tutorial files  120  and displays such graphics at an appropriate time. In a textual mode, player  110  retrieves appropriate text from tutorial files  120  and displays such text at an appropriate time. In alternative embodiments, player  110  may play both text and graphics at the same time or may alternate between the two. 
     The text and graphics stored in tutorial files  120  may be stored in a specific sequence that corresponds, e.g., to a particular process being taught by the tutorial. Player  110  therefore may retrieve appropriate graphics and/or text for a process in the sequence specified by tutorial files  120 . In other embodiments, retrieval may be more interactive. For example, the user may be prompted for input regarding text and/or graphics to be retrieved. 
     Referring to  FIG. 2 , player  110  plays the tutorial in a relatively small player window  210 , while the tutored program runs concurrently (e.g., in parallel) in a separate application window  220 . This type of display enables both the player window and the application window to be viewed at the same time with little or no overlap of the two windows. To the extent that the windows do overlap, as is the case in  FIG. 2 , player  110  can keep player window  210  in the foreground, even when focus is on the application window. 
     Rather than playing a full version of the tutorial, player  110  can play a truncated version of the tutorial, which generally is smaller than the full version and thus requires less space to display. For example, rather than displaying a full screen image from tutorial files  120 , player  110  can crop the full screen image to produce one or more cropped images, and display the resulting cropped image(s) (instead of the full image). The amount of cropping may be set to roughly match a size of player window  210 . In some embodiments, the amount of cropping may be set manually (e.g., by a user) or automatically (e.g., by detecting the size of player window  210  and setting the amount of cropping accordingly). 
     Referring to  FIG. 3A , player  110  can perform image cropping using information in a tutorial file  120  that identifies one or more interaction areas  310  on a screen image  300 . Interaction areas  310  correspond to areas of an application window that are affected by user interaction Examples of interaction areas include, but are not limited to, areas of the application window where the user clicks on a button or enters data. As shown in  FIG. 3B , by default, each cropped image  320  surrounds an interaction area. Areas that do not constitute interaction areas do not include cropped images. In one embodiment, cropping positions can be changed using authoring tools, which are described below. 
     Player  110  may display cropped images in temporal sequence. For example, each displayed image may illustrate a step in a sequence of steps (e.g., a process) being taught through the tutorial. To help orient the user, player  110  may also display context information that identifies a current step and its position relative to an entire sequence of steps being taught in the tutorial. This is illustrated by the representative user interface  400  shown in  FIG. 4A . User interface  400  includes a display window  410 , a context indicator  420 , navigation buttons  430 , and a toggle button  440 . Display window  410  displays cropped image(s) corresponding to a current step being taught by the tutorial. Context indicator  420  provides the name of the current step and a numerical identifier identifying the position of the current step relative to the entire sequence of steps. Alternatively, the context indicator can display a list of all steps in the sequence, with the current step marked (e.g., highlighted). Navigation buttons  430  can be used to advance forward or backward through the sequence of steps taught by the tutorial. When a new step is selected, the contents of display window  410  changes accordingly. Toggle button  440  can be used to switch between different display modes, including the graphical mode shown in  FIG. 4A  and a textual mode shown in  FIG. 4B . In the textual mode, the display window displays instruction text rather than a screen image. 
     Authoring Tools 
     Referring to  FIG. 5 , in one embodiment  500 , tutorial software  500  includes one or more authoring tools  510 . Authoring tools  510  comprise software that is used to create and edit tutorial files  120 . In this embodiment, authoring tools  510  can create a tutorial file for any 32-bit Microsoft Windows® application; however, the invention is not limited as such. Authoring tools  510  may include, but are not limited to, a recorder  520  and an editor  530 . 
     Recorder  520  may be used to create a tutorial for the tutored program. The process employed by recorder  520  to create the tutorial involves recording user interaction with (e.g., manipulation of) program controls during execution of a tutored program. These user interactions with the program controls constitute steps that are taught by the tutorial. By way of example, recorded user interactions can include, but are not limited to, right/left click, double-click, data entry, and click-and-drag actions performed by the user. Recorder  520  may record the user interactions graphically, textually, or both graphically and textually. 
     In this regard, recorder  520  may record one or more screen images that depict visual state(s) of application windows of the tutored program during user interaction with the tutored program. Ideally, each visual state/screen image corresponds to a step in a process to be taught by the tutorial. Recorder  520  marks the interaction areas of the recorded images accordingly. Recorder  520  also associates instruction text with each step. The instruction text provides users with a textual explanation of user action(s) required for the recorded step. The instruction text is generated based on templates in combination with user input. Recorder  520  stores the recorded screen images, interaction area positions, and instruction text in tutorial files  120 . 
     Following its creation (e.g., via recorder  520 ), a tutorial file can be played directly or it can be edited before being played. Editor  530  ( FIG. 5 ) may be used to edit the contents of a tutorial file. For example, editor  530  may be used to modify the content or the size of screen images and/or to revise instruction text in the tutorial file. Other types of editing not specifically described herein may also be performed via editor  530 . 
     As shown in  FIG. 6 , authors can view the contents of a tutorial file via an editor screen  600 . Editor screen  600  displays a list of the steps  610  for performing a process associated with a tutored program, along with a corresponding screen image  620  and instruction text  630  for a given step. A cropping frame  640  for the interaction area associated with a given step is superimposed on top of the displayed screen image  620 . By default, the cropping frame is positioned to surround the interaction area. This default position can be repositioned by dragging and dropping the cropping frame to a new position. 
     Multiple Players 
     In one embodiment  700 , which is shown in  FIG. 7 , the tutorial system includes two (or more) players  710 ,  720 . Both players use the same tutorial files  730 , but play the tutorial differently and for different purposes. First player  710  may be accessed via a Web server and run in a Web browser on a client computer. Second player  720  may be installed locally, i.e., on the client computer, and run locally without requiring access to the Web server. The tutorial files may be stored locally on the client computer, on the Web server, or in both locations. 
     The first  710  of the two players may be used primarily as a performance support tool and, therefore, may run in parallel with the tutored program. Thus, the first player plays the tutorial in the manner described above with respect to player  110 . 
     The second  720  of the two players may be used primarily as a training tool and, therefore, may run independently of the tutored program. That is, the second player may be run without concurrently running the tutored program. The second player may use the tutorial files to provide a simulated environment in which users can perform steps associated with the tutored program directly in the player as if the player were the tutored program. Thus, users can click on various interaction areas of screen images, and see the screen images change to reflect the results of their interaction. To implement these features, the tutorial files may include code that simulates operation of the tutored program, including receiving user inputs and responding thereto. This code may be “stand-alone” code in the tutorial files or it may include “calls” to the actual computer program, which can be run to assist in the simulation. 
     In one embodiment, first player  710  is an application (i.e., a computer program) that runs in a Web browser on a client computer and the tutorial files  120  are stored on a Web server. For example, the first player can be implemented as a Java applet. When a Web page (not shown) from the Web server containing the first player is loaded into the Web browser, first player  710  may appear as a button in the Web page. The user can start the first player by clicking on the button. To play a tutorial, first player  710  may create a player window, download the tutorial file from the Web server, for example, by making an HTTP (Hypertext Transfer Protocol) request for the file, and run the tutorial using the tutorial file. 
     The Web page that hosts first player  710  can also cause a browser plug-in (e.g., a Netscape® plug-in or a Microsoft® ActiveX control) to be installed. Once installed, the browser plug-in allows first player  710  to perform certain functions, such as functions that allow the player window to stay on top of the application window. The browser plug-in also allows the first player to communicate with second player  720 , which can be installed as a local program on the client computer. As shown in  FIG. 7 , first player  710  may display a button or link  740  which, when selected, starts execution of second player  720 . Similarly, the second player may display a button or link  750  for starting the first player. 
     To start the second player  720  from first player  710 , first player  710  may use Java code (JSObject class code) in the browser that allows JavaScript code to be executed in the browser. Via this technique, first player  710  can communicate with second player  720  using the browser plug-in noted above. 
     The ability of first player  710  to access second player  720  enables a user of the tutored program to switch between two different forms of instruction, i.e., instruction while running the tutored program described above with respect to the first player, or instruction while simulating the tutored program described above with respect to the second player. For example, suppose a user of the tutored program needs instruction regarding some aspect of the tutored program. In this case, the user can run the first player to play a condensed version of the tutorial. In this way, the first player acts as an on-line help tool for the tutored program. If, during use of the first player, the user desires more comprehensive instruction, the user can execute the second player directly from the first player. The second player then begins playing a full version of the tutorial that is interactive and simulates operation of the tutored program. Once the user is comfortable working with the simulated program, the user can then resume working with the “live” tutored program. Switching from second player  720  to first player  710  is implemented, and performed, in the same manner as switching from first player  710  to second player  720 . 
     It is noted that second player  720  can be accessed first, i.e., second player  720  need not be accessed via first player  710 . 
     Hardware And Software 
     The tutorial players described herein can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The tutorial players can be implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. 
     Method steps of the tutorial players can be performed by one or more programmable processors executing a computer program to perform specific functions by operating on input data and generating output. Method steps can also be performed by, and apparatus for implementing the tutorial players can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). 
     Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry. 
     To provide for interaction with a user, the tutorial players can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. 
     The tutorial players can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the tutorial players, or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet. 
     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. 
     The tutorial players have been described in terms of particular embodiments. Other embodiments are within the scope of the following claims. For example, steps described herein can be performed in a different order to achieve desirable results. Furthermore, the tutorial players have been described in the context of a computer program (e.g., a computer-implemented process); however, as noted above, their use extends beyond the data processing realm. That is, the tutorial player can be used to instruct a user on how to perform a mechanical process or a process that involves both mechanics and computer interactions.