JP2005018774A - アンドゥインフラストラクチャ - Google Patents

アンドゥインフラストラクチャ Download PDF

Info

Publication number
JP2005018774A
JP2005018774A JP2004185644A JP2004185644A JP2005018774A JP 2005018774 A JP2005018774 A JP 2005018774A JP 2004185644 A JP2004185644 A JP 2004185644A JP 2004185644 A JP2004185644 A JP 2004185644A JP 2005018774 A JP2005018774 A JP 2005018774A
Authority
JP
Japan
Prior art keywords
user interface
undo
interface object
changes
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004185644A
Other languages
English (en)
Inventor
Shawn Patrick Burke
パトリック バーク ショーン
Brian Keith Pepin
キース ペピン ブライアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005018774A publication Critical patent/JP2005018774A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Processing Or Creating Images (AREA)
  • Retry When Errors Occur (AREA)

Abstract

【課題】 ユーザインターフェースオブジェクトの開発者が、アンドゥ情報の生成および追跡に責任をもたなくてよいように、アンドゥ情報を自動的に生成し追跡する方法、システム、およびコンピュータプログラム製品を提供すること。
【解決手段】 ビジュアルユーザインターフェース設計ツールにおける、オブジェクトへの変更に対する変更通知が処理される。変更前のオブジェクトの初期状態を表すデータ、および変更後のオブジェクトの事後状態を表すデータが維持される。オブジェクトへの変更を取り消すために、維持されたデータからアンドゥユニットが準備される。アンドゥユニットは、オブジェクトに対して行われた複数の変更のトランザクションを含むことができる。各アンドゥユニットは、対応するルーチンを識別することができ、アンドゥユニットに含まれる動作の取り消しとやり直しをする。アンドゥユニットは、アンドゥ/リドゥ通知を受けるまで格納することができ、次いで、アンドゥユニットによって表される変更のアンドゥ/リドゥに用いることができる。
【選択図】 図1

Description

本発明は、アンドゥ(undo)インフラストラクチャに関する。より詳細には、本発明は、ユーザインターフェースオブジェクトの開発者が、アンドゥ情報の生成および追跡に責任をもたなくてよいように、アンドゥ情報を自動的に生成し追跡する方法、システム、およびコンピュータプログラム製品に関する。
アンドゥは、多くのアプリケーションの、よく知られている機能である。たとえば、一般に、表計算およびワードプロセッサでは、新しいデータの追加などのデータ入力、既存データの削除、カットアンドペースト操作、およびデータのフォーマット化を取り消すことが可能である。リドゥ(redo)は、アンドゥに相対するものであり、多くの状況において、アンドゥ動作を取り消すことに概念的に等しい。いくつかの実装において、リドゥは、最後の動作が繰り返されることを可能にする。この適用範囲では、アンドゥは、アンドゥ動作およびリドゥ動作両方を包含する総称的な用語として用いることができる。
ビジュアルユーザインターフェース設計ツール(visual user interface designer)は、開発者が、ユーザインターフェースを視覚的に表し、視覚表現から、対応するソースコードの少なくともいくつかを自動的に生成することを可能にするソフトウェアである。ビジュアルユーザインターフェース設計ツールにおいてアンドゥを実装すると、いくつかの独自の障害が生じる。たとえば、ビジュアルユーザインターフェース設計ツールでは、多くの異なるタイプのオブジェクトを使用することができるので、アンドゥの実装は一般に、各オブジェクトの開発者の責任である。多くのアンドゥの実装形態は、同じように動作し、アンドゥ可能な作業の一単位を表すのに「アンドゥユニット」を用いる。アンドゥユニットは、作成されるとスタックに追加され、ユーザは、スタックの中を移動して、対応するアンドゥユニットによって表される動作を取り消すことができる。
しばしば、アンドゥユニットは、トグルとして設計される。つまり、アンドゥを2度呼び出すと、1度目の呼出しの前の最初の状態に戻る。アンドゥの複雑さのため、アプリケーションは一般に、一から完全にアンドゥをサポートするように書く必要がある。たとえば、コントロールのテキストプロパティを、テーブルIに示す擬似コードで示すように設定する場合を検討する。
テーブルI
Figure 2005018774
この動作をアンドゥ可能にするために、動作は、テーブルIIに示す擬似コードで示すオブジェクトなどのオブジェクト中にカプセル化される。
テーブルII
Figure 2005018774
従来、開発者は次いで、テーブルIIIに示す擬似コードで示すように、このクラスを使用する。
テーブルIII
Figure 2005018774
テーブルIIおよびIIIに示す実装が働く間、開発者は、容易に中断を行うことができる。TextPropUndoActionは脆弱であり、このオブジェクトが動作を正しく取り消そうとしている場合、コントロールの状態は一貫していなければならないことに留意されたい。たとえば、コントロールテキストプロパティを直接(すなわち、テーブルIIIではなく、テーブルIに示すように単純に)変更したコードの一部がどこかにある場合、TextPropUndoActionは中断する。これは実際、おそらく経験の浅いプログラマが、ある特定の変更がどのようにアンドゥに影響を与えるか考慮しなかったとき、実に頻繁に起こる。問題をさらに複雑にすることに、アンドゥ動作が何らかの理由で失敗すると、各クラスに正しい失敗セマンティクスを実装することが困難な作業になり得る。従来のアンドゥの実装形態は、たとえば、テーブルIIに示すアンドゥを実装していないサードパーティのオブジェクトのためのアンドゥのサポートを提供することもできない。
したがって、ユーザインターフェースオブジェクトの開発者が、アンドゥ情報の生成および追跡に責任をもたなくてよいように、アンドゥ情報を自動的に生成し追跡する方法、システム、およびコンピュータプログラム製品が望まれる。
本発明は、ユーザインターフェースオブジェクトの開発者が、アンドゥ情報の生成および追跡に責任をもたなくてよいように、アンドゥ情報を自動的に生成し追跡する方法、システム、およびコンピュータプログラム製品に関する。本発明の実装形態例によると、ビジュアルユーザインターフェース設計ツールにおける、ユーザインターフェースオブジェクトへの1つまたは複数の変更に対する1つまたは複数の変更通知は処理される。たとえば、変更通知は、追加中または追加済み通知、除去中または除去済み通知、変更中または変更済み通知、名称変更通知などを含むことができる。1つまたは複数の変更の前のユーザインターフェースオブジェクトの初期状態を表すデータ、および1つまたは複数の変更の後のユーザインターフェースオブジェクトの事後状態を表すデータの両方は、維持される。維持されたデータからアンドゥユニットが準備され、ユーザインターフェースオブジェクトへの1つまたは複数の変更を取り消す。対照的に、従来のアンドゥの実装の場合、開発者は、アンドゥユニットを手作業で作成し、オブジェクトに対して行われ得るすべての変更のために、アンドゥユニットを忘れずに作成し格納しなければならない。
アンドゥユニットは、ユーザインターフェースオブジェクトに対して行われた複数の変更に対するトランザクションを含むことができる。各アンドゥユニットは、対応するルーチンを識別し、アンドゥユニットに含まれる動作を取り消し(undoing)、やり直す(redoing)ことができる。アンドゥユニットは、アンドゥ通知またはリドゥ通知を受けるまで、たとえばスタックに格納することができ、次いで、アンドゥユニットによって表される変更を取り消しまたはやり直すのに用いることができる。アンドゥユニットは、使われた後は、たとえばスタックから除去することによって削除される。削除されたアンドゥユニットは、リドゥユニットとして格納することができ、除去されたリドゥユニットは、アンドゥユニットとして格納することができる。
本発明の追加の特徴および利点を、以下の説明で述べるが、その一部は、以下の説明から明らかになり、または本発明の実施によって理解できよう。本発明の特徴および利点は、添付の特許請求の範囲において具体的に指摘される機器および組合せによって実現し達成することができる。本発明のこうしたおよび他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになり、または以下に述べる本発明の実施によって理解できよう。
本発明の、上述したこと、および他の利点と特徴を達成することができる方法を説明するために、上で簡潔に述べた本発明のより具体的な説明を、添付の図面に示す本発明の具体的な実施形態を参照して行う。こうした図面は本発明の典型的な実施形態を示すに過ぎず、したがって、本発明の範囲を限定するものとみなすべきではないことを理解した上で、本発明を、添付の図面を用いてさらに具体的かつ詳細に説明する。
本発明は、ユーザインターフェースオブジェクトの開発者が、アンドゥ情報の生成および追跡に責任をもたなくてよいように、アンドゥ情報を自動的に生成し追跡する方法、システム、および対応するコンピュータプログラム製品に及ぶ。本発明の実施形態は、以下で詳細に説明するように、様々なコンピュータハードウェアを含む1つもしくは複数の専用コンピュータおよび/または1つもしくは複数の汎用コンピュータを含むことができる。
図1は、本発明の例示的な実施形態を示す。開発者が、開発者のオブジェクト用のアンドゥ情報を生成し追跡することが必要な従来のアンドゥの実装形態とは異なり、アンドゥエンジン140が、ビジュアルユーザインターフェース設計ツールの設計面110において起こる状態変更用のアンドゥユニットを組み立てる。したがって、設計面110を使用する開発者は、アンドゥ情報の生成および追跡に責任をもたなくてよい。
アンドゥエンジン140は、設計面110において実行中のオブジェクトの以下の特性を利用する。第1に、対象オブジェクトは、設計ツールのシリアライザ(serializer)によって、何らかの形式に維持することができる。言い換えると、設計面110の設計ツールローダ(loader)は、オブジェクトを読み出し、それをディスクに書き込むので、オブジェクトを何らかの形式に維持することができる。第2に、設計面110にあるオブジェクトは、プロパティが変更されると、プロパティ変更通知を起こす。(たとえば、以下の設計ツールホストの説明を参照されたい。)第3に、トランザクションは、より細かい複数の動作およびそれに関連するプロパティ変更通知に及ぶアンドゥユニットを組み立てるのに用いることができる。こうした特性を用いて、アンドゥエンジン140は、必要とするどのアンドゥユニットも自動的に組み立てることができる。
アンドゥエンジン140は、変更通知124を聞いて、アンドゥユニットを作成する。図1に示す一例である実装形態の場合、設計面110においてオブジェクトに変更が加えられるとアンドゥエンジン140に対して通知を行う変更通知サービスによって、変更通知が生成される。アンドゥユニット自体、たとえばアンドゥユニット150は、シリアル化エンジン(serialization engine)130によって作成された、シリアル化されたオブジェクト状態を含む。シリアル化エンジン130は、構成要素に変更が加えられる前と後の両方のプロパティの値およびオブジェクトの値を保存するのに用いられる、シリアル化サービス全体の一部である。設計ツールホストは、トランザクションを追跡するのに用いられる。(たとえば、設計面110にあるオブジェクトは、開発されている間は必ずしも活動中のオブジェクトでなくてよいので、設計ツールホストがオブジェクトを取り囲んで、オブジェクトを対象としたユーザ入力を受け取り処理する。)その結果、コードはアンドゥエンジンと相互作用しなくてよく、したがって、コントロールのテキストプロパティに対するアンドゥ可能な変更を作成するための開発者コードは、テーブルIに示す擬似コードと同一である、テーブルIVに示す擬似ケースで示すことができる。
テーブルIV
Figure 2005018774
アンドゥエンジン140は、他のすべてのものを処理する。
より複雑な相互作用も、同様に実施することができる。たとえば、コントロールをセンタリングするためのアルゴリズムを検討する。コントロールを配置するためにXおよびY位置を計算した後、レイアウトアルゴリズムは、テーブルVに示す擬似コードで示すように、両方のプロパティ設定をただ1度のアンドゥ動作において組み合わせることができる。
テーブルV
Figure 2005018774
センタリング処理全体は、以下のように進む。コントロールをセンタリングする選択肢が設計面110において選択されると、トランザクション開始通知122がトランザクションを開始させ、オブジェクトの状態が間もなく変更されることを示す変更中通知124が受け取られる。トランザクション122に応答して、アンドゥエンジン140が、アンドゥユニット150を作成し、変更中通知124に応答して、シリアル化エンジン130を用いてオブジェクトの変更されていない状態のシリアル化132を行う。アンドゥエンジン140は、シリアル化されたオブジェクトの状態を、アンドゥユニット150に格納する(たとえば、アンドゥユニット152および154中のoldXおよびoldY)。アルゴリズムが終了すると、変更済通知124が、オブジェクトの状態が変化したことを示し、トランザクション終了通知122が、トランザクションの終了を示す。変更済通知124に応答して、アンドゥエンジン140は、シリアル化エンジン130を用いて、オブジェクトの変更された状態のシリアル化132を行い、シリアル化されたオブジェクトの状態をアンドゥユニット150に格納する(たとえば、アンドゥユニット152および154中のXおよびY)。トランザクション終了通知122に応答して、アンドゥエンジン140は、アンドゥユニット150をアンドゥスタック160に格納する。
アンドゥエンジン140は、アンドゥユニット150を、アンドゥ状態とリドゥ状態の間のトグルとして扱う。アンドゥを選択すると、センタリングアルゴリズムを選択する前のオブジェクトの位置にオブジェクトが復元され、アンドゥユニットがアンドゥスタック160から削除される。アンドゥユニット150は、センタリング動作をやり直すのに十分な情報を含むので、リドゥスタックの上に置くことができる。リドゥを選択すると、センタリング操作が再度実施され、アンドゥユニット(リドゥスタックの上にあったので、現時点ではリドゥユニットである)がリドゥスタックから削除される。
シリアル化エンジン130は、2つのタイプのシリアル化を実施することができる。追加動作および除去動作の場合、シリアル化エンジン130は、予想通りに新しい構成要素を作成する。しかし、プロパティ変更の場合、シリアル化エンジン130は、変更を表すのに必要な変更を単にシリアル化する。可能な場合は新しい構成要素の作成を避けることによって、構成要素の完全な作成によるオーバーヘッドを排除して、アンドゥエンジンの性能を向上させることができる。
アンドゥエンジン140の一例である実装形態のための様々なクラスおよび方法の擬似コードの記述を、テーブルVIおよびVIIに示す。テーブルVIに示すアンドゥエンジンクラスは抽象クラスであり、その結果、アンドゥスタックなどのアンドゥの格納の実装、シリアル化エンジンの実装、およびビジュアルユーザインターフェース設計ツールなどのユーザインターフェースと結びつけることができる。
テーブルVI
Figure 2005018774
アンドゥエンジンクラスの例である方法およびプロパティを、テーブルVIIに示す擬似コードで示す。
テーブルVII
Figure 2005018774
Figure 2005018774
テーブルVIIIに示すUndoUnitクラスは、UndoEngineの中にある入れ子式のクラスであり、アンドゥ可能な動作をカプセル化する。デフォルトのUndoUnitの実装では、変更通知を聞き、各変更にイベントの一覧を構築する。この実装では、こうしたイベントを、上述したシリアル化エンジン130およびシリアル化サービスを用いて保存する。UndoUnitは、変更についてのイベント通知を、いくつかの周知である仮想的な方法によってアンドゥエンジンから直接受け取る。こうした方法を公開することによって、開発者は、UndoUnitから派生を行うことができ、必要とするどの追加論理も実施することができる。そうすることが望まれる場合、開発者は、UndoUnitの実装を完全に回避することができる。
テーブルVIII
Figure 2005018774
Figure 2005018774
UndoUnitクラスのための例である方法およびプロパティを、テーブルIXに示す擬似コードで示す。
テーブルIX
Figure 2005018774
Figure 2005018774
Figure 2005018774
図2Aおよび2Bは、設計面210における、一例であるユーザインターフェースオブジェクト212に対するサイズ変更操作の一例であるトランザクション、およびそれに対応するアンドゥユニット250をそれぞれ示す。ユーザインターフェースオブジェクト212の左上の角においてマウスダウンイベントが起こると、トランザクション開始通知が設計面210からアンドゥエンジンに送られ、続いて変更中通知が送られる。トランザクション開始通知は、アンドゥエンジンに、一連の変更を単一のアンドゥユニットに取り込むべきであることを知らせる。変更通知は、アンドゥエンジンに、オブジェクト212が間もなく変更されるので、オブジェクトの現在のプロパティを維持するよう知らせる。
最初に、ユーザインターフェースオブジェクト212は、アンドゥユニット250の変更前の部分270において場所272(30、30)およびサイズ274(40、40)として反映される位置214に位置する。設計面210において、ユーザインターフェースオブジェクト212の左上の角が、位置216をすぎて位置218に動かされる。マウスアップイベントが起こると、変更済通知、続いてトランザクション終了通知がアンドゥエンジンに送られる。変更済通知は、アンドゥエンジンに、オブジェクト212の変更済みプロパティを維持するよう知らせ、トランザクション終了通知は、トランザクションをクローズする。オブジェクト212の左上の角を動かすと、オブジェクトの位置およびサイズの両方が変わることに留意されたい。したがって、場所282(10、10)およびサイズ284(60、60)が、変更ユニット250の変更後の部分280に格納される。場所(30、30)から場所(10、10)への移動、およびサイズ(40、40)からサイズ(60、60)へのサイズ変更の両方をグループ化することによって、アンドゥおよびリドゥは、両方の動作を同時に実施する。これは、開発者の視点からは一度の動作しか実施されないので、開発者が最も期待することである。
アンドゥユニット250は、付加情報も含み、これには、オブジェクト名251、オブジェクトタイプ252、および他の情報253が含まれる。この付加情報は、変更ユニットに対応するオブジェクトの識別に有用である。たとえば、動作が実施されるオブジェクトが設計面から削除され、次いで、アンドゥによって再度追加されると、付加情報は、アンドゥ動作またはリドゥ動作を適切なオブジェクトに向ける。オブジェクトが追加される場合を検討すると、そのテキストプロパティが修正されて2つの別個のアンドゥ動作が生成され、次いで、両方の動作が取り消される。最初のリドゥによってオブジェクトが再度作成された後でテキストプロパティの変更をやり直すためには、アンドゥユニットは、元のオブジェクトが削除動作によって破棄されていたとしても、適切なオブジェクトを突き止めることができなければならない。
図3Aおよび3Bは、設計面310における、サードパーティのダイアログユーザインターフェースオブジェクト312の一例であるトランザクション、およびそれに対応するアンドゥユニット350をそれぞれ示す。ダイアログユーザインターフェースオブジェクト312は、年齢フィールド313、性別フィールド315、OKボタン317、およびキャンセルボタン319を含む。性別フィールド315を選択すると、トランザクション開始通知が設計面310からアンドゥエンジンに送られ、続いて変更中通知が送られる。図2A〜2Bに示すように、トランザクション開始通知は、一連の変更を単一のアンドゥユニットに取り込むべきであることをアンドゥエンジンに知らせる。変更通知は、オブジェクト312の現在のプロパティが間もなく変更されるので、現在のプロパティを維持するよう、アンドゥエンジンに知らせる。
最初に、性別フィールド315が「M」を含み、これは、アンドゥユニット350の変更前の部分370に「M」を含む性別フィールド372として反映される。ダイアログユーザインターフェースオブジェクト312の性別フィールド315からフォーカスが離れると、オブジェクト312の変更された性別プロパティを維持するよう、アンドゥエンジンに知らせるために変更済通知が送られる。変更された性別プロパティは、アンドゥユニット350の変更後の部分380に「F」を含む性別フィールド382として反映される。年齢フィールド313を選択すると、年齢プロパティが間もなく変更されるので、このプロパティを維持するようアンドゥエンジンに知らせるための変更中通知が、設計面310からアンドゥエンジンに送られる。最初に年齢フィールド374は「30」を含み、これは、アンドゥユニット350の変更前の部分370に「30」を含む年齢フィールド374として反映される。年齢フィールド313からフォーカスが離れると、オブジェクト312の変更された年齢プロパティを維持するようアンドゥエンジンに知らせるために変更済通知が送られる。変更された年齢プロパティは、アンドゥユニット350の変更後の部分に「−5」を含む年齢フィールド384として反映される。
フィールドの妥当性検査は一般に、フィールドが最初に新しい値を受け取ることを必要とするので、「−5」がアンドゥユニット350に格納される。ただし、フィールド妥当性検査は、OKボタンを選択することができる前、および/または年齢フィールドからフォーカスが離れることができる前に年齢フィールドが訂正されることを必要とする可能性がある。したがって、別の変更中通知をアンドゥエンジンに送ることができ、アンドゥエンジンは、変更ユニット350の変更前の部分370の年齢フィールド376に「30」を記録する。(妥当性検査コードは、妥当性検査処理の一部として、値を「30」に変更している場合がある。)年齢フィールド313を正当な値である「5」に変更すると、アンドゥエンジンに、新しい値を維持するよう知らせるための変更済通知が生成され、新しい値は、アンドゥユニット350の変更後の部分において値「5」を有する年齢フィールド386として反映される。図2Bと同様、アンドゥユニット350は付加情報も含み、付加情報には、オブジェクト名351、オブジェクトタイプ352、および他の情報353が含まれることに留意されたい。
ダイアログユーザインターフェースオブジェクト312がOKボタン317およびキャンセルボタン319両方を含むので、オープントランザクションは、完了することができない。キャンセルボタン319が選択されると、オープントランザクションは単にロールバックし、ロールバックの後に取り消すものがないのでアンドゥユニット350は格納されない。OKボタン317が選択されると、トランザクション終了がアンドゥエンジンに送られて、トランザクションをクローズし、アンドゥユニット350が格納され、その結果、ダイアログユーザインターフェースオブジェクト312における変更のアンドゥ/リドゥが可能になる。ダイアログがクローズされると、すべての変更が全体として単一のトランザクションとして扱われる。というのは、ほとんどのユーザが、ダイアログへの変更をただ1度の動作と考えるからである。当然ながら、ダイアログがオープンしている間、個々の変更は、別個のアンドゥユニットとして格納することができ、そうすることによって、一変更ずつ取り消し、またはやり直しをすることができる。ユーザインターフェースオブジェクトの複雑さに応じて、トランザクションは、適切に入れ子式にすることができる場合がある。この高度なアンドゥ機能は、オブジェクトの開発者がアンドゥ機能およびリドゥ機能を実装する必要なく、サードパーティのダイアログユーザインターフェースオブジェクト312に対して利用可能であることに留意されたい。
本発明は、機能ステップおよび/または非機能的動作を含む方法に従って説明することもできる。以下は、本発明の実施において行うことができる動作およびステップの説明である。一般に、機能ステップは、達成される結果によって本発明を説明し、非機能的動作は、ある特定の結果を得るためのより具体的な動作を説明する。機能ステップおよび非機能的動作は、ある特定の順序で説明することも主張することもできるが、本発明は、動作および/またはステップのどの特定の順序にも組合せにも必ずしも限定されない。
図4A〜4Cは、本発明による、アンドゥ情報を生成し追跡する方法の例である動作およびステップを示す。ビジュアルユーザインターフェース設計ツールにおける、ユーザインターフェースオブジェクトに対する1つまたは複数の変更についての1つまたは複数の変更通知を処理するステップ(414)は、ユーザインターフェースオブジェクトに対する1つまたは複数の変更に応答して生成される、1つまたは複数の変更通知を受け取る動作(412)を含むことができる。1つまたは複数の変更の前のユーザインターフェースオブジェクトの初期状態を表す初期データ、および1つまたは複数の変更の後のユーザインターフェースオブジェクトの事後状態を表す事後データを維持するステップ(418)は、1つまたは複数の変更を表すのに適したシリアル化された形式に、ユーザインターフェースオブジェクトの少なくとも一部をシリアル化するためのシリアル化エンジンを呼び出す動作(416)を含むことができる。
ユーザインターフェースオブジェクトに対する1つまたは複数の変更を取り消すためのアンドゥユニットを、初期データおよび事後データから準備するステップ(424)は、ユーザインターフェースオブジェクトに対する1つまたは複数の変更をシリアル化した形から、アンドゥユニットを作成する動作(422)を含むことができる。動作がダイアログに対して実施される場合、本方法は、キャンセルボタンが選択された(判断ブロック432のキャンセル分岐434)という通知を受け取る動作(436)、およびトランザクションをキャンセルする動作(438)を含むことができる。本方法は、OKボタンが選択された(判断ブロック432のOK分岐442)という通知を受け取る動作(444)も含むことができる。
アンドゥユニット(ダイアログ、またはダイアログ以外のユーザインターフェースオブジェクトについて選択されたOKボタン)を格納するステップ(454)は、アンドゥユニットをアンドゥスタックに追加する動作(452)を含むことができる。アンドゥユニットにおける1つまたは複数の変更を取り消すための通知を聞くステップ(458)は、1つまたは複数の変更を取り消すための通知を受け取る動作(456)を含むことができる。アンドゥユニットを削除するステップ(464)は、アンドゥユニットをアンドゥスタックから除去する動作(462)を含むことができる。アンドゥユニットおよび1つまたは複数のアンドゥルーチンを使用して、ユーザインターフェースオブジェクトに対して行われた1つまたは複数の変更を取り消すステップ(468)は、1つまたは複数の変更を取り消す1つまたは複数のルーチンを呼び出す動作(466)を含むことができる。
アンドゥユニットをリドゥユニットとして格納するステップ(474)は、アンドゥユニットを、リドゥユニットとしてリドゥスタックに追加する動作(472)を含むことができる。リドゥユニット中の1つまたは複数の変更をやり直すための通知を聞くステップ(478)は、リドゥユニット中の1つまたは複数の変更をやり直すための通知を受け取る動作(476)を含むことができる。リドゥユニットを削除する動作(484)は、リドゥスタックからリドゥユニットを除去する動作(482)を含むことができる。リドゥユニットおよび1つまたは複数のリドゥルーチンを使用して、ユーザインターフェースオブジェクトに対して行われた1つまたは複数の変更をやり直すステップ(488)は、ユーザインターフェースオブジェクトに対して行われた1つまたは複数の変更をやり直す1つまたは複数のルーチンを呼び出す動作(486)を含むことができる。
本発明の範囲内の実施形態は、コンピュータ実行可能な命令を運びまたはそれを有するコンピュータ読み取り可能な媒体、あるいはそこに格納されたデータ構造も含む。このようなコンピュータ読み取り可能な媒体は、汎用コンピュータまたは専用コンピュータによってアクセスすることができる、利用可能などの媒体でもよい。限定ではなく例示のために、このようなコンピュータ読み取り可能な媒体は、RAM、ROM、EEPROM、CD−ROM、もしくは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶装置、あるいは所望のプログラムコード手段をコンピュータ実行可能な命令またはデータ構造の形で運びまたは格納するのに用いることができるとともに、汎用コンピュータまたは専用コンピュータによってアクセスすることができる、他のどの媒体も含むことができる。ネットワークあるいは別の通信接続(有線、無線、または有線もしくは無線の組合せのいずれか)を介して情報がコンピュータに転送されまたは提供されると、コンピュータは、その接続をコンピュータ読み取り可能な媒体として正しく認識する。したがって、このようなどの接続も、コンピュータ読み取り可能な媒体と呼ばれるのが適切である。上記の組合せも、コンピュータ読み取り可能な媒体の範囲に含めるべきである。コンピュータ実行可能な命令は、たとえば、汎用コンピュータ、専用コンピュータ、または専用処理装置に、ある特定の機能または一群の機能を実施させる命令およびデータを含む。
図5および以下の説明では、本発明を実装することができる適切なコンピューティング環境の、簡潔で一般的な説明を提供することを意図している。そうすることが必要なわけではないが、ネットワーク環境におけるコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能な命令という一般的な状況において、本発明を説明する。全般的には、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み、それらは特定のタスクを実施しまたは特定の抽象データタイプを実装する。コンピュータ実行可能な命令、関連データ構造、およびプログラムモジュールは、本明細書で開示した方法のステップを実行するプログラムコード手段の例を表す。このような、具体的な一連の実行可能な命令または関連するデータ構造は、このようなステップにおいて説明した機能の実装に対応する動作の例を表す。
本発明は、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境において実施できることが、当業者には理解されよう。こうしたコンピュータシステム構成には、パーソナルコンピュータ、可搬型装置、マルチプロセッサシステム、マイクロプロセッサベースの家電製品またはプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどがある。本発明は、分散型コンピューティング環境においても実施することができ、通信ネットワークを介して(有線リンク、無線リンク、または有線リンクもしくは無線リンクに組合せのいずれかによって)リンクされる、ローカルおよびリモート処理装置によって特定のタスクが実施される。分散型コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートメモリ記憶装置両方に置くことができる。
図5を参照すると、本発明を実装する例示的なシステムは、汎用計算装置を、従来のコンピュータ520の形で含み、このコンピュータは、処理装置521、システムメモリ522、およびシステムバス523を含む。システムバス523は、システムメモリ522を含む様々なシステム構成要素を処理装置521に結合する。システムバス523は、様々なバスアーキテクチャのどれをも使用するメモリバスまたはメモリコントローラ、周辺機器バス、およびローカルバスなどを含む、いくつかのタイプのバス構造のいずれでもよい。システムメモリは、読出し専用メモリ(ROM)524およびランダムアクセスメモリ(RAM)525を含む。基本入出力システム(BIOS)526は、たとえば起動中にコンピュータ520内部の要素間の情報の転送を助ける基本ルーチンを含み、ROM524に格納することができる。
コンピュータ520は、磁気ハードディスク539からの読出しまたはそこへの書込みを行う磁気ハードディスクドライブ527、取外し可能磁気ディスク529からの読出しまたはそこへの書込みを行う磁気ディスクドライブ528、および、たとえばCD−ROMまたは他の光学媒体などの取外し可能光ディスク531からの読出しまたはそこへの書込みを行う光ディスクドライブ530も含む。磁気ハードディスクドライブ527、磁気ディスクドライブ528、および光ディスクドライブ530は、それぞれハードディスクドライブインターフェース532、磁気ディスクドライブインターフェース533、および光ドライブインターフェース534によって、システムバス523に接続される。ドライブおよびそれに関連するコンピュータ読み取り可能な媒体は、コンピュータ実行可能な命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を、コンピュータ520に提供する。本明細書で説明する例示的な環境では、磁気ハードディスク539、取外し可能磁気ディスク529、および取外し可能光ディスク531を使用したが、データを格納する他のタイプのコンピュータ読み取り可能な媒体、たとえば磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、RAM、ROMなども使うことができる。
オペレーティングシステム535、1つまたは複数のアプリケーションプログラム536、他のプログラムモジュール537、およびプログラムデータ538など、1つまたは複数のプログラムモジュールを含むプログラムコード手段を、ハードディスク539、磁気ディスク529、光ディスク531、ROM524、またはRAM525に格納することができる。ユーザは、キーボード540、ポインティングデバイス542、または他の入力装置(図示せず)、たとえばマイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどを介して、コマンドおよび情報をコンピュータ520に入力することができる。こうしたおよび他の入力装置はしばしば、システムバス523に結合されるシリアルポートインターフェース546を介して処理装置521に接続される。あるいは、入力装置は、他のインターフェース、たとえば並列ポート、ゲームポート、またはユニバーサルシリアルバス(USB)によって接続することもできる。モニタ547または別の表示装置も、ビデオアダプタ548などのインターフェースを介してシステムバス523に接続される。モニタに加えて、パーソナルコンピュータは通常、他の周辺出力装置(図示せず)、たとえばスピーカおよびプリンタを含む。
コンピュータ520は、リモートコンピュータ549aおよび549bなど、1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境において動作することができる。リモートコンピュータ549aおよび549bは、それぞれ別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共通ネットワークノードでよく、通常、コンピュータ520に関連して上述した要素の多くまたはすべてを含むが、メモリ記憶装置550aおよび550b、ならびにそれに関連するアプリケーションプログラム536aおよび536bのみを図5に示した。図5に示す論理接続は、限定ではなく例示のために本明細書に示すローカルエリアネットワーク(LAN)551およびワイドエリアネットワーク(WAN)552を含む。このようなネットワーク環境は、会社規模または企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいてよく見られる。
LANネットワーク環境において使われる場合、コンピュータ520は、ネットワークインターフェースまたはアダプタ553を介してローカルネットワーク551に接続される。WANネットワーク環境において使われる場合、コンピュータ520は、モデム554、無線リンク、または、たとえばインターネットなどのワイドエリアネットワーク552を介した通信を確立する他の手段を含むことができる。モデム554は、内部にあっても外部にあってもよく、シリアルポートインターフェース546を介してシステムバス523に接続される。ネットワーク接続された環境では、コンピュータ520に関連して図示したプログラムモジュールまたはその一部は、リモートメモリ記憶装置に格納することができる。図示したネットワーク接続は例示的なものであり、ワイドエリアネットワーク552を介した通信を確立する他の手段も使うことができることが理解されよう。
本発明は、本発明の精神からも本質的な特性からも逸脱することなく、他の具体的な形で実施することもできる。説明した実施形態は、あらゆる点において例示に過ぎず、制限ではないと理解されたい。本発明の範囲は、したがって、上記の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の等価物の意義および範囲内であるすべての変更は、特許請求の範囲に含まれる。
本発明の一例である実施形態を示す図である。 一例であるユーザインターフェースオブジェクトに対する変更の、一例であるトランザクションおよび対応するアンドゥユニットを示す図である。 一例であるユーザインターフェースオブジェクトに対する変更の、一例であるトランザクションおよび対応するアンドゥユニットを示す図である。 ダイアログユーザインターフェースオブジェクトに対する、一例であるトランザクションおよび対応するアンドゥユニットを示す図である。 ダイアログユーザインターフェースオブジェクトに対する、一例であるトランザクションおよび対応するアンドゥユニットを示す図である。 本発明による、アンドゥ情報を生成し追跡する方法の例である動作およびステップを示す図である。 本発明による、アンドゥ情報を生成し追跡する方法の例である動作およびステップを示す図である。 本発明による、アンドゥ情報を生成し追跡する方法の例である動作およびステップを示す図である。 本発明に適した動作環境を提供する、一例であるシステムを示す図である。
符号の説明
110 設計面
122 トランザクション通知、トランザクション
124 変更通知、変更中通知、変更済通知
130 シリアル化エンジン
132 シリアル化
140 アンドゥエンジン
150 アンドゥユニット
152 アンドゥユニット
154 アンドゥユニット
160 アンドゥスタック
210 設計面
212 ユーザインターフェースオブジェクト、オブジェクト
214 位置
216 位置
218 位置
250 アンドゥユニット
251 オブジェクト名
252 オブジェクトタイプ
253 他の情報
270 変更前の部分
272 場所
274 サイズ
280 変更後の部分
282 場所
284 サイズ
310 設計面
312 ダイアログユーザインターフェースオブジェクト、オブジェクト
313 年齢フィールド
315 性別フィールド
317 OKボタン
319 キャンセルボタン
350 アンドゥユニット、変更ユニット
351 オブジェクト名
352 オブジェクトタイプ
353 他の情報
370 変更前の部分
372 性別フィールド
374 年齢フィールド
376 年齢フィールド
380 変更後の部分
382 性別フィールド
384 年齢フィールド
386 年齢フィールド
520 コンピュータ
521 処理装置
522 システムメモリ
523 システムバス
524 読出し専用メモリ(ROM)
525 ランダムアクセスメモリ(RAM)
526 基本入出力システム(BIOS)
527 磁気ハードディスクドライブ
528 磁気ディスクドライブ
529 取外し可能磁気ディスク、磁気ディスク
530 光ディスクドライブ
531 取外し可能光ディスク、光ディスク
532 ハードディスクドライブインターフェース
533 磁気ディスクドライブインターフェース
534 光ドライブインターフェース
535 オペレーティングシステム
536 アプリケーションプログラム
536a アプリケーションプログラム
536b アプリケーションプログラム
537 他のプログラムモジュール
538 プログラムデータ
539 磁気ハードディスク、ハードディスク
540 キーボード
542 ポインティングデバイス
546 シリアルポートインターフェース
547 モニタ
548 ビデオアダプタ
549a リモートコンピュータ
549b リモートコンピュータ
550a メモリ記憶装置
550b メモリ記憶装置
551 ローカルエリアネットワーク(LAN)、ローカルネットワーク
552 ワイドエリアネットワーク(WAN)
553 ネットワークインターフェース、ネットワークアダプタ
554 モデム

Claims (41)

  1. ビジュアルユーザインターフェース設計ツールと、前記ビジュアルユーザインターフェース設計ツールにおいて作成されたユーザインターフェースオブジェクトの状態を保存することができるシリアル化エンジンとをサポートするコンピュータシステムにおいて、ユーザインターフェースオブジェクトの開発者がアンドゥ情報の生成および追跡に責任をもたなくてよいように、前記ビジュアルユーザインターフェース設計ツールにおいて前記ユーザインターフェースオブジェクトに対して行われた変更のためのアンドゥ情報を自動的に生成し追跡する方法であって、
    前記ビジュアルユーザインターフェース設計ツールにおける前記ユーザインターフェースオブジェクトへの1つまたは複数の変更に応答して生成された、1つまたは複数の変更通知を受け取る動作と、
    前記ユーザインターフェースオブジェクトの少なくとも一部分を、前記1つまたは複数の変更を表すのに適したシリアル化された形式にシリアル化するために、前記シリアル化エンジンを呼び出す動作と、
    前記ユーザインターフェースオブジェクトへの前記1つまたは複数の変更の前記シリアル化された形式から、アンドゥユニットを作成する動作と、
    前記アンドゥユニットをアンドゥスタックに追加する動作とを含むことを特徴とする方法。
  2. 前記ユーザインターフェースオブジェクトは、前記ビジュアルユーザインターフェース設計ツールにおいて使用するための、サードパーティのユーザインターフェースオブジェクトを含むことを特徴とする請求項1に記載の方法。
  3. 前記1つまたは複数の変更通知は、追加中通知および追加済み通知の少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  4. 前記アンドゥユニットは、前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更を取り消すための1つまたは複数のルーチンを識別することを特徴とする請求項1に記載の方法。
  5. 前記アンドゥユニット中の前記1つまたは複数の変更を取り消すための通知を受け取る動作と、
    前記アンドゥユニットを前記アンドゥスタックから除去する動作と、
    前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更を取り消すための前記1つまたは複数のルーチンを呼び出す動作とをさらに含むことを特徴とする請求項4に記載の方法。
  6. 前記アンドゥユニットを、リドゥユニットとしてリドゥスタックに追加する動作をさらに含むことを特徴とする請求項5に記載の方法。
  7. 前記アンドゥユニットは、前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更をやり直すための1つまたは複数のルーチンを識別し、
    前記リドゥユニット中の前記1つまたは複数の変更をやり直すための通知を受け取る動作と、
    前記リドゥユニットを前記リドゥスタックから除去する動作と、
    前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更をやり直すための前記1つまたは複数のルーチンを呼び出す動作とをさらに含むことを特徴とする請求項6に記載の方法。
  8. 前記アンドゥユニットは、前記ユーザインターフェースオブジェクトの名前、前記ユーザインターフェースオブジェクトのタイプ、および前記1つまたは複数の変更の前の前記ユーザインターフェースオブジェクトの1つまたは複数の事前状態を含むことを特徴とする請求項1に記載の方法。
  9. ビジュアルユーザインターフェース設計ツールと、前記ビジュアルユーザインターフェース設計ツールにおいて作成されたユーザインターフェースオブジェクトの状態を保存することができるシリアル化エンジンとをサポートするコンピュータシステムのためのコンピュータプログラムであり、ユーザインターフェースオブジェクトの開発者がアンドゥ情報の生成および追跡に責任をもたなくてよいように、前記ビジュアルユーザインターフェース設計ツールにおいて前記ユーザインターフェースオブジェクトに対して行われた変更のためのアンドゥ情報を自動的に生成し追跡する方法を前記コンピュータシステムに実行させるコンピュータプログラムであって、前記方法は、
    アンドゥエンジンが、前記ビジュアルユーザインターフェース設計ツールにおける前記ユーザインターフェースオブジェクトへの1つまたは複数の変更に応答して生成された1つまたは複数の変更通知を受け取る動作と、
    前記アンドゥエンジンが、前記ユーザインターフェースオブジェクトの少なくとも一部を、前記1つまたは複数の変更を表すのに適したシリアル化された形式にシリアル化するために、前記シリアル化エンジンを呼び出す動作と、
    前記アンドゥエンジンが、前記ユーザインターフェースオブジェクトへの前記1つまたは複数の変更の前記シリアル化された形式から、アンドゥユニットを作成する動作とを含むことを特徴とするコンピュータプログラム。
  10. 前記1つまたは複数の変更通知の少なくとも1つは、前記ユーザインターフェースオブジェクトに対して行われる複数の変更に対するトランザクションを開始することを特徴とする請求項9に記載のコンピュータプログラム。
  11. 前記1つまたは複数の変更通知は、変更中通知および変更済み通知のうち少なくとも1つを含むことを特徴とする請求項9に記載のコンピュータプログラム。
  12. 前記ユーザインターフェースオブジェクトは、前記ダイアログにおいて行われたどの変更も受け入れるためのOKボタン、および前記ダイアログにおいて行われたどの変更も拒否するためのキャンセルボタンを有するダイアログを含むことを特徴とする請求項9に記載のコンピュータプログラム。
  13. 前記1つまたは複数の変更通知の少なくとも1つは、前記ダイアログに対して行われる変更のためのトランザクションを開始することを特徴とする請求項12に記載のコンピュータプログラム。
  14. 前記方法は、
    前記キャンセルボタンが選択されたという通知を受け取る動作と、
    前記トランザクションをキャンセルする動作とをさらに含むことを特徴とする請求項13に記載のコンピュータプログラム。
  15. 前記方法は、
    前記OKボタンが選択されたという通知を受け取る動作と、
    前記トランザクションを含む前記アンドゥユニットを、アンドゥなスタックに追加する動作とをさらに含むことを特徴とする請求項13に記載のコンピュータプログラム。
  16. 前記アンドゥユニットは、前記ユーザインターフェースオブジェクトの名前、前記ユーザインターフェースオブジェクトのタイプ、および前記1つまたは複数の変更の後の前記ユーザインターフェースオブジェクトの1つまたは複数の事後状態を含むことを特徴とする請求項9に記載の方法。
  17. 前記ユーザインターフェースオブジェクトは、前記ユーザインターフェースオブジェクトの1つまたは複数のプロパティに対するアンドゥを実施しないことを特徴とする請求項9に記載のコンピュータプログラム。
  18. ビジュアルユーザインターフェース設計ツールと、前記ビジュアルユーザインターフェース設計ツールにおいて作成されたユーザインターフェースオブジェクトの状態を保存することができるシリアル化エンジンとをサポートするコンピュータシステムにおいて、ユーザインターフェースオブジェクトの開発者がアンドゥ情報の生成および追跡に責任をもたなくてよいように、前記ビジュアルユーザインターフェース設計ツールにおいて前記ユーザインターフェースオブジェクトに対して行われた変更のためのアンドゥ情報を自動的に生成し追跡する方法であって、
    アンドゥエンジンが、前記ビジュアルユーザインターフェース設計ツールにおける前記ユーザインターフェースオブジェクトへの1つまたは複数の変更についての1つまたは複数の変更通知を処理するステップと、
    前記アンドゥエンジンが、前記1つまたは複数の変更の前の、前記ユーザインターフェースオブジェクトの初期状態を表す初期データを維持するステップと、
    前記アンドゥエンジンが、前記1つまたは複数の変更の後の、前記ユーザインターフェースオブジェクトの事後状態を表す事後データを維持するステップと、
    前記アンドゥエンジンが、前記ユーザインターフェースオブジェクトへの前記1つまたは複数の変更を取り消すためのアンドゥユニットを、前記初期データおよび事後データから準備するステップとを含むことを特徴とする方法。
  19. 前記1つまたは複数の変更通知は、除去中通知および除去済み通知のうち少なくとも1つを含むことを特徴とする請求項18に記載の方法。
  20. 前記アンドゥユニットは、前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更を取り消すための、1つまたは複数のルーチンを識別することを特徴とする請求項18に記載の方法。
  21. 前記アンドゥユニットを格納するステップと、
    前記アンドゥユニット中の前記1つまたは複数の変更を取り消すための通知を聞くステップと、
    前記アンドゥユニットおよび前記1つまたは複数のアンドゥルーチンを用いて、前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更を取り消すステップと、
    前記アンドゥユニットを削除するステップとをさらに含むことを特徴とする請求項20に記載の方法。
  22. 前記アンドゥユニットを、リドゥユニットとして格納するステップをさらに含むことを特徴とする請求項21に記載の方法。
  23. 前記リドゥユニットは、前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更をやり直すための1つまたは複数のルーチンを含み、
    前記リドゥユニット中の前記1つまたは複数の変更をやり直すための通知を聞くステップと、
    前記リドゥユニットおよび前記1つまたは複数のリドゥルーチンを用いて、前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更をやり直すステップと、
    前記リドゥユニットを削除するステップとをさらに含むことを特徴とする請求項22に記載の方法。
  24. 前記ユーザインターフェースオブジェクトは、リドゥを実施しないことを特徴とする請求項23に記載の方法。
  25. 前記アンドゥエンジンが初期データを維持し、事後データを維持する前記ステップは、前記ユーザインターフェースオブジェクトの少なくとも一部を、前記1つまたは複数の変更を表すのに適したシリアル化された形式にシリアル化するために、前記シリアル化エンジンを呼び出す動作を含むことを特徴とする請求項23に記載の方法。
  26. ビジュアルユーザインターフェース設計ツールと、前記ビジュアルユーザインターフェース設計ツールにおいて作成されたユーザインターフェースオブジェクトの状態を保存することができるシリアル化エンジンとをサポートするコンピュータシステムのためのコンピュータプログラムであり、ユーザインターフェースオブジェクトの開発者がアンドゥ情報の生成および追跡に責任をもたなくてよいように、前記ビジュアルユーザインターフェース設計ツールにおいて前記ユーザインターフェースオブジェクトに対して行われた変更のためのアンドゥ情報を自動的に生成し追跡する方法を前記コンピュータシステムに実行させるコンピュータプログラムであって、前記方法は、
    前記ビジュアルユーザインターフェース設計ツールにおける前記ユーザインターフェースオブジェクトへの1つまたは複数の変更についての1つまたは複数の変更通知を処理するステップと、
    前記1つまたは複数の変更の前の、前記ユーザインターフェースオブジェクトの初期状態を表す初期データを維持するステップと、
    前記1つまたは複数の変更の後の、前記ユーザインターフェースオブジェクトの事後状態を表す事後データを維持するステップと、
    前記ユーザインターフェースオブジェクトへの前記1つまたは複数の変更を取り消すためのアンドゥユニットを、前記初期データおよび事後データから準備するステップとを含むことを特徴とするコンピュータプログラム。
  27. 前記アンドゥユニットは、前記ユーザインターフェースオブジェクトに対して行われた複数の変更のためのトランザクションを含むことを特徴とする請求項26に記載のコンピュータプログラム。
  28. 前記1つまたは複数の変更通知は、名前変更通知を含むことを特徴とする請求項26に記載のコンピュータプログラム。
  29. 前記ユーザインターフェースオブジェクトは、前記ダイアログにおいて行われたどの変更も受け入れるためのOKボタン、および前記ダイアログにおいて行われたどの変更も拒否するためのキャンセルボタンを有するダイアログを含むことを特徴とする請求項26に記載のコンピュータプログラム。
  30. 前記1つまたは複数の変更通知の少なくとも1つは、前記ダイアログに対して行われる変更のためのトランザクションを開始することを特徴とする請求項29に記載のコンピュータプログラム。
  31. 前記方法は、
    前記キャンセルボタンが選択されたという通知を受け取る動作と、
    前記トランザクションをキャンセルする動作とをさらに含むことを特徴とする請求項30に記載のコンピュータプログラム。
  32. 前記方法は、
    前記OKボタンが選択されたという通知を受け取る動作と、
    前記トランザクションを含む前記アンドゥユニットを、アンドゥなスタックに追加する動作とをさらに含むことを特徴とする請求項30に記載のコンピュータプログラム。
  33. 前記ユーザインターフェースオブジェクトは、前記ビジュアルユーザインターフェース設計ツールにおいて使用するための、サードパーティのユーザインターフェースオブジェクトであることを特徴とする請求項26に記載のコンピュータプログラム。
  34. 前記アンドゥユニットは、前記ユーザインターフェースオブジェクトの名前、前記ユーザインターフェースオブジェクトのタイプ、前記1つまたは複数の変更の前の、前記ユーザインターフェースオブジェクトの1つまたは複数の事前状態、および前記1つまたは複数の変更の後の、前記ユーザインターフェースオブジェクトの1つまたは複数の事後状態を含むことを特徴とする請求項26に記載のコンピュータプログラム。
  35. ユーザインターフェースオブジェクトの開発者がアンドゥ情報を生成し追跡しなくてよいように、ビジュアルユーザインターフェース設計ツールにおいて前記ユーザインターフェースオブジェクトに対して行われた変更のためのアンドゥ情報を自動的に生成し追跡するアンドゥエンジンをコンピュータに実現させるコンピュータプログラムであって、前記コンピュータプログラムは、
    前記ビジュアルユーザインターフェース設計ツールにおける前記ユーザインターフェースオブジェクトに対して行われた変更に応答して自動的に生成される変更通知を取り込む1つまたは複数のルーチンと、
    前記ユーザインターフェースオブジェクトへの1つまたは複数の変更を表すのに使われる、ユーザインターフェースオブジェクトの状態データを要求する1つまたは複数のルーチンと、
    前記ユーザインターフェースオブジェクトに対応する前記状態データから、アンドゥユニットを準備する1つまたは複数のルーチンと、
    前記アンドゥユニットの格納を要求する1つまたは複数のルーチンとを含むことを特徴とするコンピュータプログラム。
  36. 前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更を取り消すための、1つまたは複数のルーチンをさらに含むことを特徴とする請求項35に記載のコンピュータプログラム。
  37. 前記ユーザインターフェースオブジェクトに対して行われた前記1つまたは複数の変更をやり直すための、1つまたは複数のルーチンをさらに含むことを特徴とする請求項35に記載のコンピュータプログラム。
  38. 前記アンドゥユニットを格納する1つまたは複数のルーチンをさらに含むことを特徴とする請求項35に記載のコンピュータプログラム。
  39. 前記ユーザインターフェースオブジェクトの前記状態データを生成する1つまたは複数のルーチンをさらに含むことを特徴とする請求項35に記載のコンピュータプログラム。
  40. 前記ユーザインターフェースオブジェクトの状態データを要求する前記1つまたは複数のルーチンは、異なる複数の状態データ実装形態と相互作用することができることを特徴とする請求項35に記載のコンピュータプログラム。
  41. 前記アンドゥユニットの格納を要求する前記1つまたは複数のルーチンは、異なる複数の格納実装形態と相互作用することができることを特徴とする請求項35に記載のコンピュータプログラム。
JP2004185644A 2003-06-23 2004-06-23 アンドゥインフラストラクチャ Pending JP2005018774A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/602,435 US7207034B2 (en) 2003-06-23 2003-06-23 Undo infrastructure

Publications (1)

Publication Number Publication Date
JP2005018774A true JP2005018774A (ja) 2005-01-20

Family

ID=33418629

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004185644A Pending JP2005018774A (ja) 2003-06-23 2004-06-23 アンドゥインフラストラクチャ

Country Status (5)

Country Link
US (1) US7207034B2 (ja)
EP (1) EP1491997A3 (ja)
JP (1) JP2005018774A (ja)
KR (1) KR101087364B1 (ja)
CN (1) CN1573691B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011509489A (ja) * 2008-01-08 2011-03-24 マイクロソフト コーポレーション ジャバスクリプトグリッドにおける非同期マルチレベル・アンドゥのサポート

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003695B2 (en) * 2002-10-03 2006-02-21 Seiko Epson Corporation Undo/redo algorithm for a computer program
US7818718B2 (en) * 2003-09-30 2010-10-19 Sap Ag Undoing user actions in a client program
US20070277095A1 (en) * 2004-11-12 2007-11-29 Kazunori Ukigawa Data Processing Device And Data Processing Method
CA2560179A1 (en) * 2006-09-20 2008-03-20 Ibm Canada Limited - Ibm Canada Limitee Temporal model exploring
US8127278B2 (en) * 2006-09-28 2012-02-28 Sap Ag System and method for extending legacy applications with undo/redo functionality
US7958490B2 (en) * 2006-12-29 2011-06-07 The Mathworks, Inc. System for automating the definition of application objects supporting undoing, redoing compressing and logging operations
US9229920B1 (en) * 2007-04-30 2016-01-05 Oracle America Inc. Compound undo/redo manager for mixed model edits
US8849872B2 (en) * 2007-08-31 2014-09-30 Red Hat, Inc. Providing a model-view-controller relationship
JP5385545B2 (ja) * 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US20110106776A1 (en) * 2009-11-03 2011-05-05 Schlumberger Technology Corporation Incremental implementation of undo/redo support in legacy applications
US20110107246A1 (en) * 2009-11-03 2011-05-05 Schlumberger Technology Corporation Undo/redo operations for multi-object data
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
CN102419703A (zh) * 2010-09-25 2012-04-18 上海无戒空间信息技术有限公司 堆栈数据可视化方法及系统
US8732575B2 (en) * 2011-03-22 2014-05-20 Mark E. Nusbaum Word processing system and method with automatic undo operation monitoring and analysis
US8533595B2 (en) * 2011-04-19 2013-09-10 Autodesk, Inc Hierarchical display and navigation of document revision histories
US8533593B2 (en) * 2011-04-19 2013-09-10 Autodesk, Inc Hierarchical display and navigation of document revision histories
US8874525B2 (en) 2011-04-19 2014-10-28 Autodesk, Inc. Hierarchical display and navigation of document revision histories
US8533594B2 (en) * 2011-04-19 2013-09-10 Autodesk, Inc. Hierarchical display and navigation of document revision histories
US10733151B2 (en) 2011-10-27 2020-08-04 Microsoft Technology Licensing, Llc Techniques to share media files
US9053079B2 (en) * 2011-12-12 2015-06-09 Microsoft Technology Licensing, Llc Techniques to manage collaborative documents
US9311623B2 (en) 2012-02-09 2016-04-12 International Business Machines Corporation System to view and manipulate artifacts at a temporal reference point
CN102819429B (zh) * 2012-06-29 2015-04-29 广东威创视讯科技股份有限公司 三维场景设计中撤销操作的实现方法及其装置
US9129416B2 (en) 2012-11-14 2015-09-08 Microsoft Technology Licensing, Llc Digital art undo and redo
CN104238865A (zh) * 2013-06-08 2014-12-24 深圳联友科技有限公司 一种在电子设备中撤消和重做界面操作的方法及系统
US10491695B2 (en) 2014-08-22 2019-11-26 Oracle International Corporation Autosave with across user session undo support
US9858312B2 (en) * 2014-10-14 2018-01-02 Red Hat, Inc. Transaction compensation for single phase resources
US10261756B2 (en) * 2015-06-01 2019-04-16 Brigham Young University Method for preventing reference invalidation when reversing operations in synchronous collaborative applications
US10423671B2 (en) * 2016-06-10 2019-09-24 Apple Inc. Selection behavior history and transformation
US10664557B2 (en) 2016-06-30 2020-05-26 Microsoft Technology Licensing, Llc Dial control for addition and reversal operations
US12073210B2 (en) * 2020-06-24 2024-08-27 UiPath Inc. Context-aware undo-redo service of an application development platform
US11308272B1 (en) 2020-11-12 2022-04-19 Microsoft Technology Licensing, Llc Controlling a productivity application to integrate a revision stream and an undo stack to perform out of order undo operations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481710A (en) * 1992-09-16 1996-01-02 International Business Machines Corporation Method of and system for providing application programs with an undo/redo function
US6225998B1 (en) * 1997-12-02 2001-05-01 Aspect Communications Visual design of workflows for transaction processing
US20020083078A1 (en) * 2000-11-02 2002-06-27 Guy Pardon Decentralized, distributed internet data management

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0622729A3 (en) 1993-04-29 1995-02-01 Ibm User interface generator for a user interface server.
US6108668A (en) 1997-04-18 2000-08-22 International Business Machines Corporation Method and system for undoing edits within selected portion of electronic documents
US6118622A (en) * 1997-05-13 2000-09-12 International Business Machines Corporation Technique for robust resetting of spin valve head
US5990906A (en) * 1997-06-25 1999-11-23 National Instruments Corporation Undo feature for a graphical programming system
US6496202B1 (en) * 1997-06-30 2002-12-17 Sun Microsystems, Inc. Method and apparatus for generating a graphical user interface
US6185591B1 (en) * 1997-07-29 2001-02-06 International Business Machines Corp. Text edit system with enhanced undo user interface
US6192378B1 (en) 1998-05-13 2001-02-20 International Business Machines Corporation Method and apparatus for combining undo and redo contexts in a distributed access environment
JP3759676B2 (ja) 1998-06-24 2006-03-29 ドリームテクノロジーズ株式会社 作業のリドウ・アンドウ機能及び自動保存機能を備えたアプリケーション装置及び方法
US6141010A (en) * 1998-07-17 2000-10-31 B. E. Technology, Llc Computer interface method and apparatus with targeted advertising
US6523134B2 (en) * 1998-09-18 2003-02-18 International Business Machines Corporation Selective undo
US6111575A (en) * 1998-09-24 2000-08-29 International Business Machines Corporation Graphical undo/redo manager and method
US6490661B1 (en) * 1998-12-21 2002-12-03 Advanced Micro Devices, Inc. Maintaining cache coherency during a memory read operation in a multiprocessing computer system
US6167492A (en) * 1998-12-23 2000-12-26 Advanced Micro Devices, Inc. Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
US20040225998A1 (en) * 2003-05-06 2004-11-11 Sun Microsystems, Inc. Undo/Redo technique with computed of line information in a token-oriented representation of program code
US7325226B2 (en) * 2003-06-19 2008-01-29 Microsoft Corporation Modular object serialization architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481710A (en) * 1992-09-16 1996-01-02 International Business Machines Corporation Method of and system for providing application programs with an undo/redo function
US6225998B1 (en) * 1997-12-02 2001-05-01 Aspect Communications Visual design of workflows for transaction processing
US20020083078A1 (en) * 2000-11-02 2002-06-27 Guy Pardon Decentralized, distributed internet data management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011509489A (ja) * 2008-01-08 2011-03-24 マイクロソフト コーポレーション ジャバスクリプトグリッドにおける非同期マルチレベル・アンドゥのサポート

Also Published As

Publication number Publication date
US7207034B2 (en) 2007-04-17
KR20050000330A (ko) 2005-01-03
EP1491997A3 (en) 2007-06-06
US20040268187A1 (en) 2004-12-30
CN1573691A (zh) 2005-02-02
CN1573691B (zh) 2010-05-26
KR101087364B1 (ko) 2011-11-25
EP1491997A2 (en) 2004-12-29

Similar Documents

Publication Publication Date Title
JP2005018774A (ja) アンドゥインフラストラクチャ
US6888542B1 (en) Error recovery in a computer aided design environment
JP5108760B2 (ja) 変更がデータストレージシステムのリレーショナルデータになされたかどうかを判定するコンピュータが実行する方法
JP2006107483A (ja) デマンドイベントのためのオブジェクトクローン作成
JP2004362595A (ja) データベースオブジェクトスクリプト生成方法およびシステム
US7721276B2 (en) Computer-implemented method, system and program product for comparing application program interfaces (APIs) between JAVA byte code releases
CN110659256A (zh) 多机房同步方法、计算设备及计算机存储介质
JP2005529384A5 (ja)
EP2802985A1 (en) Declarative dynamic control flow in continuation-based runtime
US11379465B2 (en) Autonomous self-healing application data validation using database configurations
CN102289367B (zh) 根据模式的命令行外壳命令生成
CN113535141A (zh) 数据库操作代码的生成方法及装置
JP2023553220A (ja) マルチインスタンスプロセスのためのプロセスマイニング
US20040003383A1 (en) Stripping of unnecessary information from source code
JP2014123249A (ja) 情報処理装置、プログラム、及び情報処理方法
CN116523052A (zh) 一种快速推理方法、装置及设备
US9442698B2 (en) Migration between model elements of different types in a modeling environment
JP2009524877A (ja) コンパイル時の解釈可能コードエラー検出
CN115185639B (zh) 一种虚拟化api的实现方法及系统
CN117453151B (zh) Nor-flash驱动开发方法、装置与计算机设备
US9058339B2 (en) Source control inheritance locking
US20190073201A1 (en) Annotation-driven framework for generating state machine updates
JP3137075B2 (ja) マルチタスクプロセスにおけるプロセス生成方法及びプロセス生成装置
US20130066621A1 (en) Automated Discovery of Resource Definitions and Relationships in a Scripting Environment
JP2024115128A (ja) ソフトウェアロボットの共同編集装置、共同編集方法、および共同編集装置のためのコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101018

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101207