(57)【特許請求の範囲】
【請求項１】
コンピュータおよびビデオディスプレイを有し、オペレーティングシステムおよびアプリケーションプログラムを実行するコンピュータシステムにおける方法であって、
前記コンピュータは、前記オペレーティングシステム中において、連続して入力されたコマンドを取消すと共に、取り消し後のコマンドを再実行する取り消し／再実行機能を提供するために、
コマンド要素オブジェクトを前記アプリケーションプログラムにより作成する機能であって、そこでは各関連のコマンドが前記アプリケーションプログラムで実行され、各コマンド要素オブジェクトはＶ−テーブルに対する第１のポインタを含み、該Ｖ−テーブルは少なくとも１つのエントリを有し、該エントリは取り消しするためのコードに対する第２のポインタを有する機能と、
関連のコマンドが実行された順に従って、シーケンスリストの中で、前記複数の前記コマンド要素オブジェクトをリンクさせる機能と、
前記アプリケーションプログラムにより与えられるコマンドログオブジェクトにおいてリンクのコマンド要素オブジェクトのシーケンスリストを保持する機能と、
前記ビデオディスプレイ上のウィンドウにおいてアクチベート可能な取り消し／再実行のユーザのアクチベートに応答して、前記Ｖ−テーブル中のエントリにより指定される前記コードを呼び出す機能であって、そこでは、前記シーケンスリスト中の複数のコマンド要素オブジェクトのうちで選択されたコマンド要素オブジェクトが有している前記第１のポインタにより示されるＶ−テーブルが含んでいる前記エントリが有している前記第２のポインタによってポイントされる前記コードを起動する機能と
をコンピュータが実行することを特徴とする方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はデータ処理装置、更に言えば、オペレーティングシステムおよびアプリケーションプログラムにおける多重レベル取消（undo) ／再実行 (redo) 機能を提供するメカニズムに関する。
【０００２】
【従来の技術】
単一レベルの取消メカニズムは、ワシントン、レッドモンドのMicrosoft Corporation が販売するMicrosoft Word、 5.0版、ワードプロセッシングパッケージのようなソフトウエアパッケージによって提供される。単一レベル取消メカニズムにより、コマンドがすでに実行されてしまった後にユーザコマンドを取り消すことができる（つまり、コマンドの効果が回復される）。取消コマンドは一般に、オプションとして取消コマンドをリストに掲げているようなメニュー項目を選択することによって実行される。ユーザは、単一レベルの取消コマンドに制限されるため、最も最近実行したコマンドだけしか回復することができない。
【０００３】
【発明の概要】
本発明の第１の特徴によれば、本発明の方法は、メモリ手段とユーザコマンドに応答可能な少なくとも１つのプロセッサを有したデータ処理システムで実行される。この方法では、プロセッサによって実行されるユーザコマンドのログがメモリ手段に記憶される。ログに記憶された第１のユーザコマンドを取り消して、第１のユーザコマンドの効果を回復する。続いて、ログに記憶された次のユーザコマンドが取り消され、次に続くユーザコマンドの効果を回復する。
本発明の他の特徴によれば、少なくとも２つのユーザコマンドのログがメモリ手段に記憶される。ログに記憶されたユーザコマンドを取り消して少なくとも２つのユーザコマンドの効果を回復する。それらのコマンドを再び実行するため、少なくとも２つの取消ユーザコマンドが再実行される。
本発明の他の特徴によれば、プロセッサによって実行されてしまった所定のユーザコマンドから最も最近されたユーザコマンドに及ぶシーケンスで、複数のユーザコマンドのリストがメモリ手段に記憶される。リストのシーケンスに記憶されたユーザコマンドの全ての効果を取り消して、シーケンスのユーザコマンドの効果を回復するためプロセッサをもとに戻す。
【０００４】
本発明の他の特徴によれば、複数のユーザコマンドのリストがメモリ手段に記憶される。このリストは取り消されたユーザコマンドを含む。取り消されたユーザコマンドはプロセッサによって再び実行される。
【０００５】
【実施例】
本発明のより好ましい実施例は、アプリケーションプログラムで多重レベルの取消／再実行動作を実行するメカニズムを提供する。このメカニズムはユーザコマンドのログを備え、アプリケーションプログラムの現状を監視するために現在の位置をログに保持する。ログはこのメカニズムによって使用され、多重レベルの取消動作と多重レベルの再実行動作を実行する。
図１は、本発明のより好ましい実施例を実施するのに適したデータ処理システム１０のブロック図である。データ処理システム１０は、中央処理装置（ＣＰＵ）１２とメモリ１４を備える。メモリ１４は、アプリケーションプログラム２２、オペレーティングシステム２４、更に他のアイテムを保持する。データ処理システム１０は、また、キーボード１６、マウス１８、ビデオディスプレイ２０を備える。図１に示されたデータ処理システム１０は従来の単一の処理システムである。それにもかかわらず、本発明は分散システム若しくは他の環境で実行し得ることに注意すべきである。
本発明のより好ましい実施例は、オブジェクト指向型のプログラミング環境で使用するために設計されている。以下の記述のため、オペレーティングシステム２４はオブジェクト指向型のオペレーティングシステムであると仮定する。しかしながら、当業者には明らかなように、本発明はオブジェクト指向型のオペレーティングシステムに限定されるものではなく、他の環境でも実行することが可能である。
【０００６】
オブジェクト指向型のオペレーティングシステム２４は、データ処理システム１０における「オジェクト」の使用をサポートする。オブジェクトは、データメンバ（data members) とメンバ機能 (menber functions) の組合せと見ることもできる。データメンバはデータ構造に記憶された属性であり、メンバ機能はこれらの属性で作用する機能である。本発明のより好ましい実施例の多重レベル取消／再実行メカニズムでは、オブジェクト概念が利用されており、ここでは、このメカニズムの所定の特徴がオブジェクトとして実行される。
インタフェースは、命名された単位に構成された意味的（semantically) に関連した機能の集合である。各インタフェースはその識別子によって唯一つに識別され得る。インタフェースは事例（instantiation)を持たない、つまり、インタフェース定義はインタフェースで指定された機能を実行するコードを含んでいない。インタフェースは機能のためのシグネチャの組を特定する。オブジェクトはインタフェースを「サポート」する。オブジェクトがインタフェースをサポートする場合、そのオブジェクトはそのインタフェースによって指定された機能のためにコードを提供する。しかしながら、オブジェクトによって与えられるコードは、インタフェースによって指定されたシグネチャに従わなければならない。
【０００７】
本発明の好ましい実施例の多重レベルの取消／再実行メカニズムは、ユーザコマンドのコマンドログを保持するため、アプリケーションプログラムに対する機能をサポートする。コマンドログに保持されたデータやデータを保持するための機能は、コマンドログオブジェクト中にカプセル化される。コマンドログオブジェクトは、コマンド要素オブジェクトとカーソル３２のリスト３０（図５）を含む。コマンド要素オブジェクトのリストは、ユーザコマンドを指定するコマンド要素オブジェクトの逐次リストである。カーソル３２は、コマンド要素オブジェクトのリスト３０上で最後に与えられた（つまり、最後に実行された）コマンドに対応する現在位置を指定する。
アプリケーションプログラム２４の実行中にユーザによってエンターされる各コマンドは、図２に示されているような関連するコマンド要素オブジェクト４０を発生する。コマンド要素オブジェクト４０は、Ｖ−ポインタ４２とコマンドの特性を指定する。Ｖ−ポインタ４２は、コマンド要素オブジェクト４０で実行され得る動作に対してのエントリーを備えた（つまり、Ｃ＋＋プログラミング言語で見られるような仮想テーブルを備えた）Ｖ−テーブル４６を指示する。これらの動作には、取消動作、再実行動作、およびマージ動作が含まれ、これらの動作のそれぞれに対して４８ａ、４８ｂ、４８ｃが提供される。エントリ４８ａ、４８ｂ、４８ｃは、それらの関連動作を実行するためコード５０ａ、５０ｂ、５０ｃの部分を指示する。取消動作は現在のカーソル位置にあるコマンドを取り消す。再実行動作はリスト３０の次の動作（図５）を実行する。マージ動作は、可能ならば、コマンドログ要素オブジェクトをマージする。
【０００８】
コマンドログオブジェクトは、コマンド要素オブジェクト４０で動作を実行するためにコード５０ａ、５０ｂ、５０ｃの実行について知る必要はない。このコード５０ａ、５０ｂ、５０ｃの詳細は、コマンド要素対象物４０に関係がある。このように、コマンドログオブジェクトは、それ自身はそのような詳細に関与する必要がないため、より容易に実行され得る。
コマンドログオブジェクトとコマンド要素オブジェクト４０は、アプリケーションプログラム２２（図１）によって生成される。オペレーティングシステム２４は、多重レベルの取消／再実行設備を提供し、多重取消／再実行動作をアプチケーションプログラムのためにサポートする。このメカニズムの一部はユーザインタフェースである。ユーザインタフェースは、取消、再実行コマンドのそれぞれを実行するよう動作し得るボタン５１、５３（図３の（ａ））を表示する。取消ボタン５１と再実行ボタン５３は、連続的に複数の取消若しくは再実行を実行するために複数回数動作し得る。ユーザは、最も最近のコマンドのみの取消に限定されず、また、最も最近取り消されたコマンドの再実行に制限されない。コンテキストメニュー５５は、動作中に取消ボタン５１（図３の（ｂ）参照）に提供される。同様のコンテキストメニュー５７（図３の（ｃ））が再実行ボタンに対して提供される。コンテキストメニュー５５（図３の（ｂ））と５７（図３の（ｂ）は２つのオプションを提供する。即ち、「ラストアプライ (最後に付与されたコマンド) 」と「オールザウェイ (全てのコマンド) 」である。これらのオプションは、最後に付与された単一のコマンドを取り消し／再実行するか、若しくは、複数のコマンドを取り消し／再実行する。
【０００９】
本発明のより好ましい実施例の多重レベルの取消／再実行メカニズムによって提供される４つの動作は、おそらく、例示するには最も好ましいものである。故に、本発明の好ましい実施例によって実行される段階とともに、４つの動作タイプのそれぞれについて以下に例示する。
図４は、ユーザが新たなコマンドにエンターしたときに、本発明の好ましい実施例によって実行される段階を示すフローチャートである。図４は、図５の表に関連して記述されている。図５は、コマンド要素オブジェクトのリスト３０の例を示す。最初にユーザはコマンドをエンターする（図４のステップ５２）。図５の例において、リスト３０は初期的には空である。ユーザがその後、コマンド「ａ」をエンターすると仮定する。好ましい実施例の多重レベル取消／再実行メカニズムは、カーソル３２の前のリスト上に何らかのコマンドが存在するかどうかチェックする（図４のステップ５４）。カーソル３２の前のリスト上にコマンドが存在しなければ、例えば図５に示す場合は、コマンドがリスト３０の前に付加され（図４のステップ５８）、リストの前を指示するようカーソルを移動する（ステップ６０）。この結果、図５に示すように、コマンド「ａ」がエンターされた後にエントリー６４（つまり、コマンド「ａ」に対するコマンド要素オブジェクトに対するエントリー）がリスト３０の前に付加され、カーソル３２はエントリー６４を指示するよう移動される。ユーザが他のコマンド「ｂ」をエンターすると仮定する（故に、図４のステップ５２を反復する）。図４のステップ５４、５８、６０がその後に反復され、エントリー６６（図５）が、コマンド「ａ」に対するエントリー６４の前のリスト３０の前部に付加される。カーソル３２は、コマンド「ｂ」に対するエントリー６６を指示するよう更新される。
【００１０】
上述の方法により、コマンド要素オブジェクトのリスト３０が構成される。上述のオブジェクトモデルにより、ユーザがコマンドをエンターする毎に、コマンド要素オブジェクト４０（図２）のインスタンスが生成され、新たなコマンド要素オブジェクト４０がリストの前部に付加され、カーソル位置が更新される。
図４のステップ５４で、カーソル３２の前に位置決めされたコマンドがリスト３０上に存在すると判断された場合には、カーソル前のリスト上の全てのコマンドが消去される（図４のステップ５６）。図６はこのような消去の例を示す。コマンドログ要素のリスト３０は初期的には、図６に示すように、コマンド「ａ」、「ｂ」、「ｃ」それぞれに対するエントリ６８、７０、７２を含む。カーソル３２はコマンド「ｂ」に対するエントリ７０を指示する。次に、ユーザはコマンド「ｄ」をエンターする。図４のステップ５４で、コマンド「ｃ」に対するエントリ７２がリスト３０でカーソルの前に位置付けされる。故にエントリ７２は、図４のステップ５６で消去される。更に、コマンド「ｄ」に対するエントリ７３が、リスト３０の前に付加され（図４のステップ５８を参照）、カーソル３２（図６）は、エントリ７３を指示するよう更新される（図４のステップ６０）。
【００１１】
一旦、ユーザがコマンド要素オブジェクトのリスト３０を構成すると、上述のように、ユーザは取消コマンドを実行することができる。図７は、取消コマンドがリクエストされた場合に実行されるステップのフローチャートである。図８は、複数の取消コマンドがリストで実行された後の、コマンド要素オブジェクトのリスト３０の状態を示す図である。図７のステップは、図８の図と共に記述されている。初めにユーザは、ユーザインタフェースに設けられた取消ボタン５１（図３の（ｂ））を作動させることによって取消動作をリクエストする。上で述べたように、コンテキストメニュー５５はボタン５１が作動された後に表示され、コンテキストメニューは、最も最近のコマンド（つまり、「最後に付与されたもの」オプション）だけを取り消すオプションをユーザに提供する。ユーザがコンテキストメニュー５５で「ラストアプライ」オプションを選択したと仮定する（図７のステップ７４）。カーソル３２によって指示されるコマンドは、そのコマンドを取り消すためのコマンド要素オブジェクト（ステップ７６）で与えられるコード５０ａ（図２）を実行することによって取り消される。更に、カーソル３２は、コマンド要素オブジェクトのリスト３０で次に続くエントリを指示するよう減分される。多重レベルの取消動作を実行するため、ユーザは取消ボタン５１を複数回数動作させ、上述のステップを反復する。
【００１２】
図８は連続する取消動作の例を示す。コマンド要素オブジェクトのリストが初期的にコマンド「ａ」、「ｂ」、「ｃ」それぞれに対するエントリ８０、８２、８４を含むと仮定する。ユーザが次に取消動作をリクエストした場合、コマンド「ｃ」が取り消され、カーソル３２はコマンド「ｂ」に対するエントリ８２を指示するよう移動される。ユーザが付加的な取消動作リクエストを行った場合、コマンド「ｂ」も取り消され、カーソルはコマンド「ａ」に対するエントリ８０を指示するよう移動される。
ユーザは単一の再実行動作をリクエストすることもできる。図９は、最も最近取り消されたコマンドの単一の再実行動作を実行するステップのフローチャートである。このプロセスは、最も最近取り消されたコマンドの再実行動作を要求しているユーザによって開始される。ユーザは、ユーザインタフェースからの再実行ボタン５３（図３の（ｃ））を作動させ、その後、「ラストアプライ」オプションをコンテキストメニュー５７から選択する（図９のステップ８６）。リスト３０での現在のカーソル位置のすぐ前のコマンドがその後実行され（ステップ８８）、カーソルが増分される（ステップ９０）。図２を参照して上に述べたオブジェクトモデルにより、再実行コード５０ｂが最も最近取り消されたコマンド要素オブジェクト４０で実行される。多重レベルの再実行動作を実行するため、ユーザは再実行ボタン５３を複数回数作動させ、図９のステップを反復させる。
【００１３】
図１０は、再実行コマンドの効果を例示する。初期的には、リスト３０はコマンド「ａ」、「ｂ」それぞれに対するエントリ９２，９４を含む。カーソル３２は、コマンド「ａ」に対するエントリ９２を指示する。ユーザが再実行コマンドをエンターした場合、コマンド「ｂ」が再び実行され、カーソル３２はコマンド「ｂ」に対するエントリ９４を指示するよう増分される。
ユーザはコマンド要素オブジェクトのリスト３０の全てのコマンドを取り消す付加的なオプションを有する。図１１は、「オールザウェイ」取消動作のために実行されるステップのフローチャートである。初めに、ユーザは、「オールザウェイ」取消動作が実行されるよう要求する（図１１のステップ９６）。ユーザは取消ボタン５１を作動し、次にコンテキストメニュー５５の「オールザウェイ」のオプションを選択することによってそのようなコマンドを要求する。コンテキストコマンドから初期コマンドまでの全てのユーザコマンドが回復される（図１１のステップ９８）。更に、カーソルはリスト３０の初期コマンドの前を指示するよう移動される（ステップ１００）。
図１２は、「オールザウェイ」取消動作の効果を例示する。初期的に、コマンド要素オブジェクト３０のリスト３０は、コマンド「ａ」、「ｂ」、「ｃ」それぞれに対するエントリ１０２、１０４、１０６を含む。カーソル３２はコマンド「ｃ」に対するエントリ１０６を指示する。ユーザが「オールザウェイ」取消動作を要求した後、コマンド「ｃ」、「ｂ」、「ａ」は順次取り消され、カーソル３２はリスト３０の第１のエントリの前を指示するよう増分させる。
【００１４】
同様に、ユーザは、現在のカーソル位置の前に位置決めされたリスト上の全てのコマンドを再実行するため、再実行動作を「オールザウェイ」で実行するよう要求することもできる。図１３はこのような動作を実行するステップのフローチャートである。最初に、ユーザは、「オールザウェイ」再実行動作を実行するよう要求する（図１３のステップ１０８）。他の動作と同様に、ユーザは、ユーザインタフェースを通じて動作を選択する。特に、ユーザは再実行ボタン５３を作動させ、その後、「オールザウェイ」オプションをコンテキストメニュー５７（図３の（ｃ））から選択する。選択がなされた後にリスト上のカーソル３２の前に位置づけられたコマンドが実行される（図１３のステップ１１０）。更に、カーソル位置が増分され、リストの前部を指示する（ステップ１１２）。
図１４は、「オールザウェイ」再実行動作の効果を例示する。初期的に、コマンド要素オブジェクトのリスト３０は、コマンド「ａ」、「ｂ」、「ｃ」それぞれに対するエントリ１１４、１１６、１１８を含む。カーソル３２は、コマンド「ａ」に対するエントリ１１４を指示する。「オールザウェイ」再実行動作が実行された後、コマンド「ｂ」、「ｃ」が続いて実行され、コマンド「ｃ」に対するエントリ１１８を指示するようカーソル位置が増分される。
【００１５】
本発明をより好ましい実施例を参照して記述してきたが、特許請求の範囲で定義された本発明から逸脱することなく、その形態および詳細について様々な変更をなし得ることは当業者には明らかであろう。
【図面の簡単な説明】
【図１】本発明のより好ましい実施例を実行するデータ処理システムのブロック図。
【図２】本発明の好ましい実施例で使用するコマンド要素オブジェクトを示すブロック図。
【図３】本発明のより好ましい実施例の多重取消／再実行メカニズムを実行するユーザインタフェース要素を示す図。
【図４】本発明のより好ましい実施例においてユーザがコマンドをエンターする際に実行するステップを示すフローチャート。
【図５】本発明のより好ましい実施例においてコマンドが付加された後のコマンド要素オブジェクトのリスト状態を示す図。
【図６】本発明のより好ましい実施例においてリスト上の要素の消去が実行されたときのコマンド要素オブジェクトのリストを示す図。
【図７】本発明のより好ましい実施例の取消動作で実行されるステップを示すフローチャート。
【図８】本発明のより好ましい実施例で実行される取消動作時のコマンド要素オブジェクトのリストを示す図。
【図９】本発明のより好ましい実施例で実行される再実行動作で実行されるステップを示すフローチャート。
【図１０】本発明のより好ましい実施例で実行される再実行動作時のコマンド要素オブジェクトのリストを示す図。
【図１１】本発明のより好ましい実施例で実行される「オールザウェイ」取消動作時のステップを示すフローチャート。
【図１２】本発明のより好ましい実施例で実行される「オールザウェイ」取消動作時のコマンド要素オブジェクトのリストを示す図。
【図１３】本発明のより好ましい実施例で実行される「オールザウェイ」再実行動作時に実行されるステップを示すフローチャート。
【図１４】本発明のより好ましい実施例で実行される「オールザウェイ」再実行動作時のコマンド要素オブジェクトのリストを示すフローチャート。
【図１】
0003723236.tif 000002
【図２】
0003723236.tif 000003
【図３】
0003723236.tif 000004
【図４】
0003723236.tif 000005
【図５】
0003723236.tif 000006
【図６】
0003723236.tif 000007
【図７】
0003723236.tif 000008
【図８】
0003723236.tif 000009
【図９】
0003723236.tif 000010
【図１０】
0003723236.tif 000011
【図１１】
0003723236.tif 000012
【図１２】
0003723236.tif 000013
【図１３】
0003723236.tif 000014
【図１４】
0003723236.tif 000015