Abstract:
A method and apparatus for enhancing template manipulation and creation in a graphical user interface. The user can create numerous additional templates from an existing object, template, or &#34;generic&#34; template. The method includes the computer-implemented steps of positioning a copy of at least one object into a template area pane and creating at least one template in the template area pane from that copied object. The apparatus includes a processor, a display device, pointing device, a template area pane displayed on the display device, at least one object which is positioned into the template area pane. The template area pane creates at least one template from the object and displays that template in the template area pane.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to computer systems and, more particularly, to a method and apparatus for enhancing template manipulation and creation in a graphical user interface (GUI). 
     2. Background Information and Description of Related Art 
     Manufacturers, including IBM, have developed various types of GUI systems. These GUI systems reside in, for example, IBM&#39;s OS/2.sup.™, Apple&#39;s Macintosh System.sup.™, and Microsoft&#39;s Windows.sup.™  for IBM compatible machines. A user typically controls these GUI systems using a pointing device, such as a mouse. In turn, the mouse controls a software pointer (e.g. mouse cursor) that appears on a display of the computer system. The mouse cursor is used to manipulate various elements on the display, such as objects and templates. 
     An object is a software component of the GUI and can be manipulated as a single unit to perform a task. The object contains collections of procedures and data and can be grouped into classes. All objects of the same class are identical in form and behavior, but have different data associated therewith. The object may appear as text, an icon, or both on the display. Examples of the properties exhibited by a document object are its name, icon, font, selected printer, the particular application with which it is associated, and its text contents. 
     A conventional template is a specific type of object that is used to create instances of an object class, such as, for example, a storage device object, a printer object, or a user group object. In conventional template creation, the user must first create an instance of the object, then perform multiple steps to transform the object instance into a template. Because these steps are typically listed in a menu, the steps are not obvious to the user. Moreover, the user must first know that it is even possible to change an object into a template before searching for the specific steps in the GUI. Therefore, conventional template creation places an undue cognitive burden on the user and makes the GUI difficult to learn and use. 
     Accordingly, there is a great need for an enhanced GUI which simplifies the creation and duplication of objects and templates. 
     SUMMARY OF THE INVENTION 
     The present invention is a method and apparatus for enhancing template manipulation. In one embodiment, the method includes the steps of displaying a template area pane on a display, positioning a copy of at least one object into the template area pane, and creating a template from the copied object in the template pane. 
     In a second embodiment, the method includes the step of displaying a work area pane on a display, wherein the work area pane has at least one object positioned therein. The method also includes the steps of placing a copy of at least one template onto the object, creating an instance of the template, and storing that instance in the object. 
     The apparatus includes a processor, a display device, a pointing device, and means for controlling the processor to display a template area pane on the display device. The pointing device is used to position a copy of at least one object into the template area pane. The apparatus also includes means for controlling the processor to create a template in the template area pane from the copied object. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a schematic diagram of hardware for use with the present invention. 
     FIG. 2 is a pictorial view of a front-of-screen user interface according to the present invention. 
     FIG. 3 is a flowchart illustrating a technique for creating an object from a template according to the present invention. 
     FIG. 4 is a flowchart illustrating a technique for creating a template from an existing template according to the present invention. 
     FIG. 5 is a flowchart illustrating a technique for creating a template from an existing object according to the present invention. 
     FIG. 6 is a pictorial view of a front-of-screen user interface illustrating a create user pop-up window according to the present invention. 
     FIG. 7 is a pictorial view of a front-of-screen user interface illustrating a create user template pop-up window according to the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The following detailed description is of the best presently contemplated mode for carrying out the invention. This description is not to be viewed in a limiting sense, but is made merely for the purpose of illustrating the general principles of the invention, the scope of which is only defined by the appended claims. 
     The preferred embodiment is preferably practiced in any suitable hardware configuration, such as a laptop computer. However, FIG. 1 illustrates another suitable hardware configuration. Workstation 100 includes any suitable central processing unit 10, such as a conventional microprocessor, and a number of other units interconnected via system bus 12. Illustratively, workstation 100 includes random access memory (RAM) 14, cache 15, read only memory (ROM) 16, display adapter 36 for connecting system bus 12 to display device 38, and I/O adapter 18 for connecting peripheral devices (e.g. disk and tape drives 20) to system bus 12. 
     Workstation 100 further includes user interface adapter 22 for connecting keyboard 24, mouse 26, speaker 28, microphone 32, and/or other user interface devices, such as a touch screen device (not shown), to system bus 12. Communication adapter 34 connects workstation 100 to a data processing network. Any suitable operating system may direct the operation of workstation 100. However, in the preferred embodiment, the AIX.sup.™  operating system controls workstation 100. 
     The preferred embodiment includes a GUI which resides within a machine-readable media to direct the operation of workstation 100. Any suitable machine-readable media may retain the GUI, such as RAM 14,ROM 16, a magnetic diskette, magnetic tape, CD-ROM, or optical disk (the last four being located in disk and tape drives 20). The GUI controls and directs CPU 10 to create an object from a template, a template from an existing template, and a terplate from an existing object. For ease of explanation, the following specification describes the GUI as performing those tasks. In actuality, the GUI merely controls and directs CPU 10 to perform those tasks. 
     FIG. 2 is a pictorial view of a window on a display screen that was created by the GUI. For purposes of illustration, this window displays objects, represented as icons, that define various users and groups of users. However, it should be understood that any class of object, such as printers or storage units, could have been used. 
     Action objects in action object pane 230 perform various actions on any selected icon from user work area pane 210, group work area pane 220, or template area pane 200. The action objects in action object pane 230 include contextual help icon 232, &#34;show properties&#34; icon 234, enable icon 236, disable icon 238, set password icon 237, and change initial interface icon 238. The user interacts contextual help icon 232 and &#34;show properties&#34; icon 234 with any selected object from user work area pane 210, group work area pane 220, or template area pane 200 in one of two methods. 
     It is important to note that the user also interacts any selected object icon from user work area pane 210 and group work area pane 220 with template area pane 200 and, vice versa, using the following methods: 
     In the first method, the user positions the mouse cursor (i.e. pointer) on a desired object icon and clicks the left mouse button to select it. To select multiple objects, the user positions the mouse cursor to the left of one object and depresses the left mouse button. The user then moves the mouse cursor over the desired object(s) and releases the mouse button when the last object has been selected. Alternatively, the user can select multiple objects by continuing to press the keyboard shift key while selecting objects with the left mouse button until all desired objects have been selected. 
     At this point, the user has selected all desired objects. Next, the user positions the mouse cursor on the action icon and clicks the mouse button to display a dialog on the screen to complete the action. Alternatively, the action could be completed automatically without displaying the dialog. 
     In the second method, the user drags the action icon over the object icon and drops it on the desired object icon to display a dialog. Selecting, dragging and dropping icons on a display screen using a mouse cursor (i.e. pointer) is commonly known in the art and need not be further discussed. 
     In this example, change initial interface icon 239 displays a dialog (not shown) which allows the user to set the interface that is displayed when a particular user logs on, such as a command line interface or desktop interface. When activated, enable icon 236 and disable icon 238 each provide a dialog which allows a system administrator to enable or disable, respectively, users from the system. Set password icon 237 allows the user to set or change the password for any selected object. Contextual help icon 232 provides the user with more detailed information about a selected object such as, for example, all possible tasks associated with the object. 
     &#34;Show properties&#34; icon 234 enables the user to display and change the actual attributes of the object. For example, for a user object, the user may change the object name, user I.D., primary group, group set, home directory, initial program, and user information. For a group template object, the user may change the template name, group I.D., members of the group, whether the group is an administrative group, and the list of group administrators. 
     Information area pane 240 provides a brief definition of any selected object or screen area, how the user interacts with that object or screen area, and the possible states of the object. The user can point to task objects, task actions, screen areas, and screen objects that are under the cursor (i.e. the target). 
     The GUI displays individual user icons in work area pane 210. Work area pane 210 is a bordered panel which retains only user object icons. As such, the GUI will not display other types of objects within this pane. Object counter 211 displays the number of user icons in user work area pane 210. 
     The GUI also displays user group icons in group work area pane 220. Group work area pane 220 is a bordered panel which retains only user group icons. As such, the GUI will not display other types of objects within this pane. Object counter 221 displays the number of user group icons located in the group work area pane 220. In this example, it also displays the number of objects hidden from the user&#39;s view. The user can observe any of these objects by opening the object to view its contents. 
     Moreover, the GUI displays all template icons in a template area. The template area includes template area pane 200 and template area pane 201. Template area pane 200 is a bordered panel which retains only template icons. Template area pane 201 retains &#34;generic&#34; templates that are automatically provided by the GUI, such as &#34;generic&#34; templates 205 and 206. The number of &#34;generic&#34; templates provided by the GUI depends on the number of object types supported by the operating system. For example, if the operating system supports ten types of printers, then ten different &#34;generic&#34; templates could be provided by the GUI, one for each printer. 
     The GUI allows the user to open any object by positioning the mouse cursor over the object and double clicking the mouse button. In response, the GUI generates the same dialog that is displayed when &#34;show properties&#34; icon 234 is dropped on the object. 
     FIG. 3 is a flowchart of detailed logic for creating an object (e.g. instance) from an existing template in template area pane 200. However, it should be understood that, using the same steps, a copy of multiple templates may be concurrently dragged and dropped on an empty space or object within a valid work area pane to produce an instance for each of those copied templates. 
     Referring to FIGS. 2 and 3, at 310, the GUI determines if the mouse cursor is on an existing template icon, such as template icon 207. If not, control is directed to flowchart C (see FIG. 5, described herein). If so, at 320, the GUI determines if the middle mouse button is depressed. If not depressed, control is directed to 310. 
     If depressed, at 325, the GUI changes the mouse cursor to indicate an invalid drop site. Specifically, the GUI displays a shadowed image of the object within the template backdrop, overlayed with a dashed-circle icon to indicate an invalid drop site (not shown). Alternately, the mouse cursor could change to a variety of different shapes to indicate an invalid drop site. 
     Every object, including templates, has a category that defines the characteristics of that object. Those characteristics are stored in a database within the GUI and include, for example, valid actions for the object, valid drop sites for the object, and valid icons for the object. As such, while the middle mouse button continues to remain depressed, at 325, the GUI searches the database for the selected template&#39;s category and dynamically examines the valid drop sites for that template. 
     Next, the user may drag the template across the display screen using the mouse cursor. At 325, the GUI dynamically determines if the user has dragged the template icon over an empty space or existing object within an appropriate work area pane, such as user work area pane 210 or group work area pane 220. To do so, the GUI examines both the position of the mouse cursor on the screen and the information stored in the template&#39;s category concerning valid drop sites. As such, the GUI determines if the user has dragged the template from template area pane 200 to a valid empty space or object within a work area pane. 
     If not over a valid empty space or existing object within a work area, the GUI continues to display the mouse cursor that indicates an invalid drop site and directs control to the detailed logic in flowchart E (see FIG. 4, described herein). All objects remain in their original state. For example, if the user attempted to drag template icon 207 into action object pane 230, control would be directed to flowchart E. 
     If template icon 207 was dragged into an appropriate or valid work area pane at 335, the GUI changes the cursor to a solid black image of the object within the backdrop of the template icon. Once the template is dropped (i.e., mouse button released), at 340, the GUI displays create &lt;object&gt; pop-up window 600, which is illustrated in FIG. 6. At 350, the GUI waits for input from the user. 
     Referring to FIGS. 3 and 6, the new object has the same name, class, data, and properties of the template that was dragged and dropped. However, pop-up window 600 allows the user to rename the newly created object in the user name field 620 and to view any of the contents and properties of that newly created object by positioning and activating the cursor over &#34;Show optional fields&#34; 618. 
     When the user has completed modifications, if any, to the newly created object, he/she presses either OK button 610, apply button 612, reset button 614, cancel button 616, or the enter key on the keyboard. At 352, if cancel button 616 was depressed, the GUI directs control to exit 390 and does not create a new object. At 354, if either OK button 610 or the enter key of the keyboard (see FIG. 1) was depressed, control passes to 360. At 356, if apply button 612 was depressed, the GUI stores any modifications in a database that resides in the GUI for that object and returns controls to 350 for further modification. At 358, if reset button 614 was depressed, the GUI returns control to 340 and displays the original state of window 600. Otherwise, control returns to 350. 
     At 360, any changes made to the newly created object are stored in the database in the GUI. Next, at 370, the GUI displays the new object in the work area object pane. If the template was dropped on an existing object, the GUI displays the new object in the work area pane that contains the existing object. Further, at 380, the GUI increments the object counter, which displays the number of objects in the particular work area object pane. 
     Any work object or template object, including existing user icons and existing template icons, may be dragged and dropped into template area pane 200 (see FIG. 2) to create a new template. Once an object is dropped within template area pane 200, the GUI automatically transforms that object into a template having the same characteristics and name as the dropped object. 
     FIG. 4 is an extension to flowchart A of FIG. 3 and includes detailed logic for creating a new template from an existing template. However, it should be understood that, using the same steps, a copy of multiple templates may be concurrently dragged and dropped within a valid template area pane to produce another template from each of those copied templates. 
     From flowchart A, the GUI has determined that the mouse cursor is on an existing template within template area pane 200 and that the middle mouse button is depressed. At 430, the GUI determines if the mouse cursor is positioned on an empty space within template area pane 200. 
     If not properly positioned on an empty space within template area pane 200, control returns to D of FIG. 3 (previously described) and the GUI maintains the invalid drop site cursor shape. For example, if the user drags template icon 207 across another existing template within template area pane 200, the cursor maintains the dashed circle shape to indicate an invalid drop site. 
     If the template has been dragged into an empty space within template area pane 200, at 435, the GUI changes the cursor to the shape of the dragged template, but having a backdrop unique to template area pane 200. Once the template has been dropped into template area pane 200, the GUI displays create &lt;object&gt; template pop-up window 700, which is illustrated in FIG. 7. 
     Referring to FIGS. 4 and 7, window 700 allows the user to rename the newly created template and change the contents and properties of that newly created template, if desired, because the new template has the same name, class, data, and properties as the template that was dragged and dropped. 
     At 450, the GUI waits for input from the user. At 452, if cancel button 716 has been depressed, the GUI directs control to exit 490 and does not create a template. At 454, if either OK button 710 or the enter key of the keyboard (see FIG. 1) has been depressed, control passes to 460.At 456, if apply button 612 has been depressed, the GUI stores any modifications in a database that resides in the GUI at 460 and returns control to 450 for further modification. At 458, if reset button 714 has been depressed, the GUI returns control to 440 and displays the original state of window 700. Otherwise, control returns to 450. 
     At 460, the GUI stores any user modifications to the newly created template in the database in the GUI. Next, at 470, the GUI displays the new template in template area pane 200. Further, at 480, the GUI increments the template counter, which displays the number of templates in template area pane 200. 
     FIG. 5 is a flowchart illustrating detailed logic for creating a template from an existing object. However, it should be understood that, using the same steps, a copy of multiple objects may be concurrently dragged and dropped within a valid template area pane to produce a template from each of those copied objects. 
     At 510, the GUI determines if the mouse cursor is on an existing object within an appropriate work area pane (e.g. user work area 210 or group work area 220). If not, control returns to flowchart A (see FIG. 3). If so, at 520, the GUI determines if the middle mouse button is depressed. If not depressed, control returns to 510. If depressed, at 525, the GUI changes the cursor to indicate an improper drop site to the user. In the preferred embodiment, the cursor is a dark shadow of the object on top of the shadowed object. 
     At 530, the GUI then determines if the mouse cursor is positioned in an appropriate template area pane while the middle mouse button continues to be depressed. That is, the GUI determines if the user has dragged the object from the work area pane into template area pane 200. To do so, the GUI examines the position of the cursor on the screen and the information stored in the object&#39;s category concerning valid drop sites. As such, the GUI determines if the user has dragged the object from the work area pane into an appropriate or valid template area pane. 
     If not in an appropriate or valid template area pane, control returns to 525 and the GUI maintains the invalid drop site cursor to indicate an improper drop site to the user. 
     If the object was dragged and dropped into another improper work area pane, the GUI returns the shadowed icon to its original visual state and position. A &#34;rubberband&#34; effect causes dark lines to connect the shadowed object to the original icon and draw it quickly back to its origin. 
     If the object has been dragged into template area pane 200, at 535, the GUI changes the mouse cursor into a shadowed shape of the object. Once the object has been dropped (i.e., mouse button released), at 540, the GUI displays a create &lt;object&gt; template pop-up window 700, as illustrated in FIG. 7. Pop-up window 700 allows the user to rename the newly created template and change the contents and properties of that newly created template, if desired, because the new template has the same name, class, data, and properties as the object that was dragged and dropped. Therefore, the dragging and dropping of the object into template area pane 200 created a new template of the same class as the object. 
     At 550, the GUI waits for input from the user. At 552, if cancel button 716 has been depressed, the GUI directs control to exit 590 and does not create the template. At 554, if either OK button 710 or the enter key of the keyboard (see FIG. 1) has been depressed, control passes to 560. At 556, if apply button 712 has been depressed, the GUI stores any modifications in a database that resides in the GUI at 558 and returns control to 550 for further modification. At 558, if reset button 714 has been depressed, the GUI clears input areas and returns control to 540 to display the original state of window 700. Otherwise, control returns to 550. 
     At 560, any user modifications to the newly created template are stored in the GUI. Next, at 570, the GUI displays the new template in template area pane 200. Further, at 580, the GUI increments the object counter, which represents the number of templates in template area pane 200. 
     The following code illustrates the above description: 
     
         ______________________________________While cursor is on an existing template and middlemouse button is depressed;Change cursor shape to indicate an improperdrop site;Search for the template&#39;s category in adatabase;Monitor location of cursor;{If cursor moves to an empty space or validexisting object in a valid work areapane{change cursor to reflect appropriatework area pane drop site;in response to the template beingdropped in the work area pane,retrieve attributes of thedropped template from thedatabase and display in adisplay window;wait for input;make modifications, if any, to thoseattributes and store in databasefor a newly created object;display newly created object in thework area pane;increment object counter;}If cursor moves to an empty space in avalid template area pane;{change cursor to reflect appropriatetemplate area pane drop site;in response to the template beingdropped in the template areapane, retrieve attributes of thedropped template from thedatabase and display in adisplay window;wait for input;make modifications, if any, to thoseattributes and store in databasefor a newly created template;display the newly created template inthe template area pane;increment object counter;}Else maintain cursor shape to indicate animproper drop site;}}While cursor is on an existing object and middlebutton is depressed;{Change cursor shape to indicate improper dropsite;Search for the object&#39;s category in a database;Monitor the location of cursor;{If cursor is on an empty space in a validtemplate area pane{change cursor shape to reflectappropriate template area panedrop site;in response to the object beingdropped in the template areapane, retrieve attributes of thedropped object from the databaseand display in a display window;wait for input;make modifications, if any, to thoseattributes and store in databasefor a newly created template;display the newly created template inthe template area pane;increment object counter;}Else maintain cursor shape to indicateimproper drop site;}}______________________________________ 
    
     While the invention has been shown and described with reference to particular embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the invention.