A multiple-level undo/redo mechanism is provided in an operating system and is available to application programs run on the operating system. The dating system provides a mechanism for keeping a log of user commands and providing a cursor to a position within the log. Each command may be encapsulated into an object that supports an interface for performing undo/redo operations. Similarly, the log may be encapsulated into an object that supports operations that facilitate a multiple-level undo/redo. A user may perform a single undo/redo operation, multiple successive undo/redo operations or complete undo/redo operations.
|
5. In a computer system having a video display and running both an operating system and an application program, a method comprising the steps of:
providing a multiple level undo/redo facility in the operating system; displaying an activatable undo-all user interface element by the undo/redo facility in a window provided by the application program or on the video display and which is opened when accessing the interface element of the undo/redo facility; where a user has caused multiple commands of the application program to be executed undoing effects of executing the commands, in response to the user activating the undo-all user interface element, by the undo/redo facility calling code in the application program for undoing the commands.
7. In a computer system having a video display and running both an operating system and an application program, a method comprising the steps of:
providing a multiple level undo/redo facility in the operating system; with the undo/redo facility, displaying an activatable redo-all user interface for causing all commands of the application program, that have been undone to be again executed, in a window provided by the application program on the video display and which is opened when accessing the interface element of the undo/redo facility; and where a user has undone multiple commands, executing the undone commands in response to the user activating the redo-all user interface element, by the undo/redo facility calling code for performing the commands in the application program.
6. In a computer system having a video display and running both an operating system and an application program, a computer-readable storage medium holding instructions for performing a method comprising the steps of:
providing a multiple level undo/redo facility in the operating system; displaying an activatable undo-all user interface element by the undo/redo facility in a window provided by the application program on the video display and which is opened when accessing the interface element of the undo/redo facility; where a user has caused multiple commands of the application program to be executed, undoing effects of executing the commands in response to the uses activating the undo-all user interface element, by the undo/redo facility calling code in the application program for undoing the commands.
8. In a computer system having a video display and running both an operating system and an application program, a computer-readable storage medium holding instructions for performing a method comprising the steps of:
providing a multiple level undo/redo facility in the operating system; with the undo/redo facility, displaying an activatable redo-all user interface for causing all commands of the application program, that have been undone to be again executed, in a window provided by the application program on the video display and which is opened when accessing the interface element of the undo/redo facility; and where a user has undone multiple commands, executing the undone commands in response to the user activating the redo-all user interface element, by the undo/redo facility calling code for performing the commands in the application program.
0. 10. In a computer system that has a display and that runs an operating system and an application program, wherein the application program provides a command element object for each associated command that is executed in the application program and wherein the operating system provides a multiple level undo/redo facility, a method comprised of:
a step for creating in the application program a list of command element objects which are sequentially ordered corresponding to the order of the commands executed in the application program, each command element object in said list having associated with it a means for selectively activating the undo/redo facility in the operating system; a step for accessing the undo/redo facility in order to display an activatable undo/redo user interface element in a window on the display, wherein the window is provided by the application program; and a step for using said interface element to select any command element object in said list and in response to said selection, the undo/redo facility undoing or redoing as directed by a user either one or all the commands for all command element objects in said list, as selected.
4. In a computer system that has a video display and that runs an operating system and an application program, wherein the application program provides a command element object for each associated command that is executed in the application program and each command element object including a pointer to a v-table that has at least one entry that holds a pointer for undoing or redoing the command associated with the command element object and wherein the application program encapsulates a sequential list of the command element objects that are linked and ordered according to when the associated command were executed in a command log object, a computer-readable storage medium holding instructions for:
providing a multiple level undo/redo facility in the operating system; with the undo/redo facility, displaying an activatable undo/redo user interface element in a window on the video display, where the window is provided by the application program; and in response to a user activating the undo/redo user interface element, with the undo/redo facility calling the code that is pointed to by the entry in the v-table pointed to by a pointer in a selected one of command element objects in the sequential list to undo or redo the associated command.
0. 9. In a computer system that has a display and that runs an operating system and an application program, wherein the application program provides a command element object for each associated command that is executed in the application program and wherein the operating system provides a multiple level undo/redo facility, a computer-readable storage medium on which are stored computer-executable instructions for implementing within the application program a method which is comprised of:
a step for creating in the application program a list of command element objects which are sequentially ordered corresponding to the order of the commands executed in the application program, each command element object in said list having associated with it a means for selectively activating the undo/redo facility in the operating system; a step for accessing the undo/redo facility in order to display an activatable undo/redo user interface element in a window on the display, wherein the window is provided by the application program; and a step for using said interface element to select any command element object in said list and in response to said selection, the undo/redo facility undoing or redoing as directed by a user either one or all the commands for all command element objects in said list, as selected.
1. In a computer system having a video display and running an operating system and an application program, a method comprising the computer-implemented steps of:
providing a multiple level undo/redo facility in the operating system; creating a command element object by the application program for each associated command that is executed in the application program, each command element object including a pointer to a v-table that has at least one entry that holds a pointer to code for undoing or performing the command associated with the command element object; linking the command element objects together in a sequential list ordered according to when the associated commands were executed; encapsulating the sequential list of lined command element objects in a command log object that is provided by the application program; with the undo/redo facility, displaying an activatable undo/redo user interface element in a window on the video display, wherein the window is provided by the application program; and in response to a user activating the undo/redo facility, with the undo/redo facility calling the code that is pointed to by an entry in a v-table that is pointed to by a pointer in a selected one of command element objects in the sequential list to undo or redo the command associated with the selected command element.
0. 12. In a computer system that has a display and that runs an operating system and an application program, wherein the application program provides a command element object for each associated command that is executed in the application program and wherein the operating system provides a multiple level undo/redo facility, a method comprised of;
the step for creating in the application program a list of command element objects which are sequentially ordered corresponding to the order of the commands executed in the application program, each command element object in said list comprising a pointer to computer-executable code for selectively undoing or redoing the command associated with that command element object; the act of specifying a cursor position that corresponds to one of the command element objects so that any command element objects associated with commands executed in the application program prior to the time for the command associated with the specified cursor position are identified by virtue of the cursor position; based on the specified cursor position, the act of deleting from said list any command element objects that have already been undone at the time a new command is executed by the user in the application program, and thereafter performing the act of appending to the front of said list a new command element object for the newly executed command in the application program and moving the cursor position to that newly appended command element object; a step for accessing the undo/redo facility in order to display an activatable undo/redo user interface element in a window on the display, wherein the window is provided by the application program; and a step for using said interface element to select any command element object in said list and in response to said selection, the undo/redo facility undoing or redoing as directed by a user either one or all commands for all command element objects in said list, as selected.
0. 11. In a computer system that has a display and that runs an operating system and an application program, wherein the application program provides a command element object for each associated command that is executed in the application program and wherein the operating system provides a multiple level undo/redo facility, a computer-readable storage medium on which are stored computer-executable instructions for implementing within the application program a method which is comprised of:
the step for creating in the application program a list of command element objects which are sequentially ordered corresponding to the order of the commands executed in the application program, each command element object in said list comprising a pointer to computer-executable code for selectively undoing or redoing the command associated with that command element object; the act of specifying a cursor position that corresponds to one of the command element objects so that any command element objects associated with commands executed in the application program prior to the time for the command associated with the specified cursor position are identified by virtue of the cursor position; based on the specified cursor position, the act of deleting from said list any command element objects that have already been undone at the time a new command is executed by the user in the application program, and thereafter performing the act of appending to the front of said list a new command element object for the newly executed command in the application program, and moving the cursor position to that newly appended command element object; a step for accessing the undo/redo facility in order to display an activatable undo/redo user interface element in a window on the display, wherein the window is provided by the application program; and a step for using said interface element to select any command element object in said list and in response to said selection, the undo/redo facility undoing or redoing as directed by a user either one or all the commands for all command element objects in said list, as selected.
2. The method of
3. The method of
|
The present invention relates generally to data processing systems and, more particularly, to a mechanism for providing a multiple level undo/redo capability in operating systems and application programs.
A single-level undo mechanism is provided by software packages, such as the Microsoft Word, version 5.0, word processing package, which is sold by Microsoft Corporation of Redmond, Washington. The single level undo mechanism allows a user command to be undone (i.e., the effects of the sand are reversed) after the command has already been performed. The undo command is typically performed by selecting a menu item that lists the undo command as an option. The user is limited to a single level of undoing of commands and, thus, can only reverse the most recently executed command.
In accordance with a first aspect of the present invention, a method is practiced in a data processing system having memory means and at least one processor that is responsive to user commands. In this method, a log of user commands that were executed by the processor is stored in the memory means. A first user command stored in a log is undone so as to reverse the effect of the first user command. Subsequently, a next user command stored in the log is undone so as to reverse the effect of the next sequential user command.
In accordance with another aspect of the present invention, a log of at least two user commands is stored in the memory means. User commands stored in the log are undone so as to reverse the effects of at least two user commands. At least two of the undone user commands are then redone so as to again execute those commands.
In accordance with a further aspect of the present invention, a list of a plurality of user commands is stored in the memory means in a sequence ranging from a selected user command that has been executed by a processor to a most recently executed user command. The effects of all of the user commands stored in a sequence of the list are undone so as to return the processor to reverse the effects of the user commands in the sequence.
In accordance with still another aspect of the present invention, a list of a plurality of user commands is stored in the memory means. The list includes user commands that have been undone. The user commands that have been undone are again executed by the processor.
The preferred embodiment of the present invention provides a mechanism for performing multiple-level undo/redo operations in an application program. The mechanism keeps a log of user commands and maintains a current position in the log to monitor a current state of the application program. The log is used by the mechanism to facilitate multiple-level undo operations and multiple-level redo operations.
The preferred embodiment of the present invention is designed for use in an object-oriented programming environment. For purposes of the discussion below, it is assumed that the operating system 24 is an object-oriented operating system. Those skilled in the art will appreciate, however, that the present invention is not limited to use in an object-oriented operating system. Instead, it may also be implemented in other embodiments.
The object-oriented operating system 24 supports the use of "objects" in the data processing system 10. An object may be viewed as a combination of data members and, member functions. The data members are attributes that are stored in data structures, and the member functions are functions that act upon these attributes. The notion of an object is exploited in the multiple-level undo/redo mechanism of the preferred embodiment of the present invention in that certain aspects of this mechanism are implemented as objects.
An interface is a group of schematically-related functions that are organized into a named unit. Each interface may be uniquely identified by its identifier. Interfaces have no instantiation, that is an interface definition does not include code for implementing the functions that are specified in the interface. Interfaces specify a set of signatures for functions. An object may "support" an interface. When an object supports an interface, the object provides code for the function specified by the interface. The code supplied by the object, however, must comply with the signatures specified by the interface.
The multiple-level undo/redo mechanism of the preferred embodiment of the present invention supports the ability for an application program to maintain a command log of user commands. The data held in the command log and functions for maintaining the data are encapsulated into a command log object. The command log object includes a list 30 (see
Each command entered by a user during the course of execution of an application program 24 generates an associated command element object 40, like that shown in FIG. 2. The command element object 40 includes a field 44 that specifies the nature of the command and a V-pointer 42. The V-pointer 42 points to a V-table 46 (i.e., having a virtual table such as found in the C++ programming language) having entries for the operations that may be performed on the command element object 40. These operations include an undo operation, a redo operation and a merge operation, for which respective entries 48a, 48b and 48c are provided. Entries 48a, 48b and 48c point to sections of code 50a, 50b and 50c for implementing their associated operations. The undo operation undoes the command at the current cursor position. The redo operation performs the next operation on the list 30 (FIG. 4b). The merge operation merges command log element objects, if possible.
The command log object does not need to know about the implementation of the code 50a, 50b and 50c for implementing operations on the command element objects 40. The details of this code 50a, 50b and 50c are the concern of the command element objects 40. As such, the command log object can be implemented more easily since it does not need to concern itself with such details.
The command log object and the command element object 40 are created by the application program 22 (FIG. 1). The operating system 24 provides a multi-level undo/redo facility to support multiple undo/redo operations for the application program. Part of this mechanism is a user interface. The user interface displays buttons 51 and 53 (
The four operations provided by the multiple-level undo/redo mechanism of the preferred embodiment of the present invention are perhaps best explained by way of example. As such, examples will be provided below along with the steps performed by the preferred embodiment for each of the respective four operation types.
In the above-described fashion, the list 30 of command element objects is built. In terms of the object model described above, each time a user enters a command, an instance of a command element object 40 (
If in step 54 of
Once a user has built a list 30 of command element objects, such as described above, the user may execute an undo command.
A user may also request a single redo operation.
The user has the additional option of undoing all commands on the list 30 of command element objects.
A user may, likewise, request that the redo operation be perform "All the Way" to redo all of the commands on the list that are situated in front of the current cursor position.
While the present invention has been described with reference to a preferred embodiment thereof, those skilled in the art will, nevertheless, appreciate that various changes in form and detail may be made without departing from the present invention as defined by the appended claims.
Patent | Priority | Assignee | Title |
10187260, | May 29 2015 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Systems and methods for multilayer monitoring of network function virtualization architectures |
10200252, | Sep 18 2015 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Systems and methods for integrated modeling of monitored virtual desktop infrastructure systems |
10230601, | Jul 05 2016 | QUEST SOFTWARE INC | Systems and methods for integrated modeling and performance measurements of monitored virtual desktop infrastructure systems |
10291493, | Dec 05 2014 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | System and method for determining relevant computer performance events |
10333820, | Oct 23 2012 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | System for inferring dependencies among computing systems |
11005738, | Apr 09 2014 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | System and method for end-to-end response-time analysis |
7290002, | Jun 24 2003 | Microsoft Technology Licensing, LLC | System-wide selective action management |
7321372, | Sep 19 2005 | CHINA CITIC BANK CORPORATION LIMITED, GUANGZHOU BRANCH, AS COLLATERAL AGENT | Method for performing image editing |
7784027, | Nov 24 1999 | Dell Products L P | Systems and methods for monitoring a computing environment |
7979245, | May 17 2006 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Model-based systems and methods for monitoring computing resource performance |
8175862, | May 17 2006 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Model-based systems and methods for monitoring resources |
8175863, | Feb 13 2008 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Systems and methods for analyzing performance of virtual environments |
8181154, | Nov 24 1999 | Dell Products L P | Systems and methods for monitoring a computing environment |
8185598, | Nov 03 2006 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Systems and methods for monitoring messaging systems |
8364460, | Feb 13 2008 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Systems and methods for analyzing performance of virtual environments |
8555244, | Nov 24 1999 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Systems and methods for monitoring a computing environment |
8627268, | Nov 06 2006 | International Business Machines Corporation | System and method for a non-sequential undo mechanism |
8700996, | Aug 28 1998 | COREL SOFTWARE LLC | Real time preview |
8701084, | Dec 29 2006 | The MathWorks, Inc; MATHWORKS, INC , THE | Preview of auto-fix changes to software code |
8892415, | May 17 2006 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Model-based systems and methods for monitoring resources |
9092119, | Aug 28 1998 | COREL SOFTWARE LLC | Real time preview |
9215142, | Apr 20 2011 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Community analysis of computing performance |
9274758, | Jan 28 2015 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | System and method for creating customized performance-monitoring applications |
9275172, | Feb 13 2008 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Systems and methods for analyzing performance of virtual environments |
9479414, | May 30 2014 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | System and method for analyzing computing performance |
9557879, | Oct 23 2012 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | System for inferring dependencies among computing systems |
9996577, | Feb 11 2015 | QUEST SOFTWARE INC F K A DELL SOFTWARE INC ; Aventail LLC | Systems and methods for graphically filtering code call trees |
Patent | Priority | Assignee | Title |
4905181, | Apr 20 1987 | Intel Corporation | Interactive system with state manager subsystem |
5095421, | Aug 17 1989 | International Business Machines Corporation, | Transaction processing facility within an operating system environment |
5287501, | Jul 11 1991 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Multilevel transaction recovery in a database system which loss parent transaction undo operation upon commit of child transaction |
5481710, | Sep 16 1992 | International Business Machines Corporation | Method of and system for providing application programs with an undo/redo function |
5519862, | Feb 26 1993 | Apple Inc | Concurrent processing apparatus with incremental command objects |
5530864, | Dec 23 1992 | Apple Inc | Command object system for an object-oriented software platform |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 18 1999 | Microsoft Corporation | (assignment on the face of the patent) | / | |||
Oct 14 2014 | Microsoft Corporation | Microsoft Technology Licensing, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034766 | /0001 |
Date | Maintenance Fee Events |
Jan 26 2005 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jan 23 2009 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Apr 08 2009 | ASPN: Payor Number Assigned. |
Date | Maintenance Schedule |
Oct 07 2006 | 4 years fee payment window open |
Apr 07 2007 | 6 months grace period start (w surcharge) |
Oct 07 2007 | patent expiry (for year 4) |
Oct 07 2009 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 07 2010 | 8 years fee payment window open |
Apr 07 2011 | 6 months grace period start (w surcharge) |
Oct 07 2011 | patent expiry (for year 8) |
Oct 07 2013 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 07 2014 | 12 years fee payment window open |
Apr 07 2015 | 6 months grace period start (w surcharge) |
Oct 07 2015 | patent expiry (for year 12) |
Oct 07 2017 | 2 years to revive unintentionally abandoned end. (for year 12) |