JPH0749759A - コンピュータ駐在ソフトウエアシステムに対するユーザインタフェースとしての電子的ドキュメント - Google Patents
コンピュータ駐在ソフトウエアシステムに対するユーザインタフェースとしての電子的ドキュメントInfo
- Publication number
- JPH0749759A JPH0749759A JP3208271A JP20827191A JPH0749759A JP H0749759 A JPH0749759 A JP H0749759A JP 3208271 A JP3208271 A JP 3208271A JP 20827191 A JP20827191 A JP 20827191A JP H0749759 A JPH0749759 A JP H0749759A
- Authority
- JP
- Japan
- Prior art keywords
- button
- document
- editor
- user
- buttons
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Digital Computer Display Output (AREA)
- User Interface Of Digital Computer (AREA)
- Document Processing Apparatus (AREA)
Abstract
トを生成させる能力のために特別なプログラミング操作
を不要とする。 【構成】 隠された持続性のあるキャラクタストリング
属性を、電子的ドキュメントについての人手による解釈
が可能な通常の要素に対して関連させることにより、そ
のような要素に対して、様々なタイプのボタンの態様を
付与することがユーザに対して許容するためのソフトウ
エアアーキテクチュアである。このアーキテクチュアに
よってこのようなボタンに許容されることは、エディッ
ト操作およびサーチ操作が、標準的なドキュメントエデ
ィタによって通常に提供されるエディットルーチンおよ
びサーチルーチンの使用を通してなされることである。
Description
アシステムに対するカスタム化可能なユーザインタフェ
ースに関するものであり、より詳細には、プログラマは
もとより、非プログラマであっても、彼等のコンピュー
ティング資源(例えば、パーソナルコンピュータ、ワー
クステーション等)についての、ユーザインタフェース
のオーダに合わせることができるソフトウエアアーキテ
クチュアに関するものであって、これにより、彼等の個
別の要求および選択に緊密に合致させるようなインタフ
ェースを生成させることが許容される。これを更に詳細
にいえば、この発明のソフトウエアアーキテクチュアに
よれば、ドキュメント(テキスト、グラフィックス、表
および等式のようなもの)における通常のテキストエレ
メントおよび/またはグラフィックスエレメントについ
ての、隠された持続性のあるキャラクタストリング属性
として、構築された電子的ドキュメント内にアクティブ
ボタンを埋め込むことがユーザに対して許容されるよう
に、また、このようなボタンの動作特性を指定すること
がユーザに対して許容されるように、テキストエディタ
およびグラフィックスエディタ(以下、集合的に“ドキ
ュメントエディタ”として参照される)の能力を伸長さ
せることができる。
スタマの要求に対するコンピュータによる解決策のため
の、世界的な商業上の要請のために、ソフトウエアの生
産は成長産業になってきている。コンピュータユーザの
ある者は相当なプログラミング上の技能を備えているけ
れども、ツールとなっているコンピュータは、広範なコ
ンピュータプログラミングに係わる技能および/または
モチベーションが欠如したユーザによって使用されるこ
とが多い。かかる理由があることから、ユーザの意図す
るタスクに対するコンピュータの適用に焦点を合わせる
ことが、当該ユーザに対して許容されるようなユーザイ
ンタフェースを開発するために、ソフトウエアサプライ
ヤは相当な努力および費用を投じてきている。グラフィ
ックスに対するユーザインタフェースおよびウインドウ
パッケージは、ソフトウエアシステムにおける注目すべ
き例であって、現状では、非技術的なユーザから極めて
熟練したコンピュータの専門家までの者によるコンピュ
ータの使用を容易にすることが提案されている。しかし
ながら、当該システムのレベルでのソフトウエアは、そ
れ自体では、様々なインタフェースでの要求と異なるユ
ーザの選択との間での、実質的な特殊化が許容されてい
ない。
エアユーザインタフェースの特徴は、他のユーザのディ
スプレイスクリーン上でのスペースを無用に占有する可
能性があることである。同様にして、ユーザのある者に
とって必要な特徴は、アプリケーションプログラマによ
っては含まれなかったことである。この結果として、ソ
フトウエアパッケージのあるものは、カスタム化可能な
ユーザインタフェースを有することになる。例えば、予
め定められた多様なオプションを提供するパッケージが
あり、このために、他の者を除外するように該オプショ
ンのあるものを選択的に起動することにより、ユーザは
自己のインタフェースをカスタム化することができる。
この発明に更に直接的に関係することとして、ここでの
ソフトウエアパッケージには、ユーザがアクティブボタ
ンを生成させることができるツール、および、ユーザの
個別の要求および選択の直接的な支持において機能を果
たすことをコンピュータにさせるためのメニューが含ま
れている。
ログラムにより、ユーザは、個人的なボタン、フォーム
およびレイアウトを生成させることができる。ユーザに
よるこのようなボタンのプログラムが許容されるよう
に、いわゆるHyperTalk言語が維持されてい
る。D.グッドマン( D.Goodman)著の完全HyperC
ardハンドブック(The Complete HyperCard Handbo
ok), バンタムブックス(Bantam Books), 1987を参照さ
れたい。同様にして、Xerox ViewPoint
なる製品は、ドキュメントに挿入できるボタンのプログ
ラミングをするための、CUSPと呼ばれる言語によっ
て維持されている。これについては、VPシリーズ参考
書集、VP CUSPボタン参考書、バージョン2.
0、ゼロックスViewPoint、ゼロックスコーポ
レイション(VP CUSP Buttons Reference, VP Series R
eference Library, Version 2.0, Xerox ViewPoint, Xe
rox Corporation), 1988を参照されたい。これらのCU
SPボタンは、アイコンおよびウインドウを移動させる
ようにプログラムできるとともに、ファイルのプリン
ト、書式用紙への書き込み、電子的ファイルフォルダに
対する情報の組成、および、他のタスクを実行するとき
の支援をすることができる。ユーザが実行を所望する計
算実行のための等式において、ユーザによるプログラミ
ング操作が通常は許容されていることから、スプレッド
シートプログラムについてもある程度の関心がもたれ
る。
タは、現状における更に別の関心がある例であるが、そ
の理由は、電子メールを介して送信されるために、ま
た、このようなメールメッセージの受信者によって使用
されるために、ボタンをドキュメントに含ませることが
許容されることにある。これについては、J.H.モー
リス(J.H. Morris) らの“アンドリュー:分散化バーソ
ナルコンピューティング環境 (Andrew: A Distribute
d Personal Computing Environment,) ”ACMの通
信(Communications of the ACM), Vol.29, No.3) 1986
年3月 184〜201頁を参照されたい。更に、ゼロックス
のInterlisp環境には、“Rooms”と呼ば
れるウインドウマネージャが備えられており、アプリケ
ーションプログラムの始動をするために、プログラム状
態を記録して、後でそれをリストアするために、また、
ユーザが自動化を所望できる他の機能を実行するため
に、“room−to−room”(即ち、ある一人の
ユーザが組成したファイルコレクションおよび処理実行
ツールから他者の方へ、または、換言すれば、ある1個
の“デスクトップ”から他の方へ)からスイッチするた
めのボタンのユーザによる生成が許容されている。これ
については、A.マクリーン(A. MacLean)らの、“ユー
ザが仕立て可能なシステム:ボタンで刊行物を発行する
(User TailorableSystems:Pressing the Issues with B
uttons ”,コンピューティングシステムにおける人的
要因(Human Factors in Computing Systems), '90CH
I会報,1990年4月, 175〜182 ページを参照された
い。Roomsで維持されているボタンは、電子メール
を介して、ゼロックスのInterlisp環境を用い
ている他のユーザに対して転送されることが可能であ
り、また、ある一人のユーザのデスクトップに取り込ま
れて、当該ユーザのワークステーション環境におけるパ
ーマネントパーツになることができる。更に、それらが
具体化するLISPプログラミング言語をエディットす
ることにより、または、それらの位置および/または外
見を変化させるメニューコマンドを用いることにより、
これらのボタンをカスタム化することができる。
カスタム化のために先行技術で提供されたボタンは、様
々な異なるアプリケーションで共有できるツールという
よりも、あるアプリケーションに特定のものであった。
このことは重大な不利益事項であるが、その理由は、異
なるアプリケーションの間で前後にスイッチすることに
なるファンクションをユーザが実行することができるに
しても、任意の時点においてユーザが自発的に割り当て
るディスプレイスクリーンのスペースは、大方のユーザ
にとってみれば限られた大きさでしかないことが見出さ
れていることにある。更に、このようなボタンがその中
に埋め込まれることが許容されないファンクションをユ
ーザが使用しているときには、ユーザが採用を所望でき
るカスタムボタンは、ユーザのディスプレイスクリーン
上において、アプリケーションからは空間的に分離して
いなければならず、これによってディスプレイスクリー
ンのスペース上での負担が加わるとともに、アプリケー
ションスペースとボタンスペースとの間で、ユーザによ
る注意を前後にシフトさせねばならない。
めにボタンを使用することに対する従来の提案について
の更に別の不利益点は、このようなボタンがアプリケー
ション内に埋め込まれたときに、この埋め込まれたボタ
ンが“特別な”オブジェクトとして扱われることであ
る。従って、テキストドキュメント内に駐在するボタン
が、それ自体でテキストのストリングであるとしても、
ボタンのエディット操作で要求されることは、該当のボ
タンが駐在するテキストのエディット操作のために用い
られるとは別の操作について使用されることである。更
に、テキストストリングがサーチパターンと合致してい
るとしても、ボタンがドキュメントにおけるテキストの
構成部としては認識されていないために、通常のテキス
トのサーチ操作においてこのようなボタンを見出すこと
はない。
テクチュアによれば、隠された持続性のあるキャラクタ
ストリング属性を後記のような要素に対して関連させる
ことにより、電子的ドキュメントについての人手による
解釈が可能な通常の要素に対して、様々なタイプのボタ
ンの態様を付与することがユーザに対して許容される。
このアーキテクチュアによってこのようなボタンに許容
されることは、エディット操作およびサーチ操作が、標
準的なドキュメントエディタによって通常に提供される
エディットルーチンおよびサーチルーチンの使用を通し
てなされることである。
照することで、この発明についての更なる欠陥や利点が
明かにされよう:図1は本発明のソフトウエアアーキテ
クチャの説明図であり、図2A〜2Cは本発明によるボ
タンの生成における順次ステップを示す。図3Aおよび
3Bはポップアップボタンのメニューを示す。図4A及
び4Bはそれら自身の形式プロパティを選択されたグラ
フィックオブジェクトに変換することによってグラフィ
ック形式マクロスを達成するためのボタンの使用を示
す。図5A〜5Cはマルチステートボタンからのユーザ
フィードバックを示す。図6はグラフィックラジオボタ
ンの組からのユーザフィードバックを示す。図7Aおよ
び7Bはグラフィックエディタに埋め込まれた関連ラジ
オボタンの対からのユーザフィードバックを示す。図8
は本発明のソフトウエアアーキテクチャおよび標準的な
コンピュータシステムのアーキテクチャによって提供さ
れる通信経路を示す。図9Aおよび9Bはそれぞれ本発
明によって構築された制御パネルおよびそのコンパクト
表現を示す。そして図10Aおよび10Bはマルチステ
ートボタンとして機能する円から構成されたグラフィッ
クドキュメントを示す。
式のドキュメントエディタにおいて見出されるものであ
る。 (1) 任意なテキストの属性をドキュメントの要素と
関連付けさせる能力。 (2) ドキュメントエディタ自体よりも、アプリケー
ションに対して直接的な入力アクションをする能力。お
よび、 (3) 人手によるユーザよりも、ソフトウエアプログ
ラムによって特定されるエディット操作のアクションを
実行するための、エディット操作用言語を解釈する能
力。 従って、これらの特徴を具体化するエディタについて
は、これから簡略に説明される。更に、公開的に利用可
能な参照物の同定がなされるが、このために、ここでの
このような参照物は、この発明に対する適当な環境をよ
り十分に規定するための参照物として取り込まれる。
リング属性 ゼロックスのBravoテキストエディタ(“Brav
oマニュアル,”Altoユーザーハンドブック,ゼロ
ックス・パロアルト・リサーチセンタ,1979,31〜62を
参照),Andrewエディタ (J. モリス (J. Morri
s)らのsupraを参照),ゼロックスのStar
(J.ジョンソン (J. Johnson) ら“The Xerox Star:A
Retrospective, ”コンピュータ誌(Computer),Vol.22,
No.9,9月 1989, 11〜29ページ) ,および,Grif
エディタ(R.フルタら“相互作用的エディテングで構
築されたドキュメント(Interactively Editing Stru
cturedDocuments,”電子出版 (Electronic Publishin
g) ,Vol.1, No.1, 4月, 1988, 19〜44ページを参照)
は、(タイプフェース、カラーおよびアルファベットの
ような)隠された持続性のある属性を、ドキュメントに
ついての通常のキャラクタ要素またはグラフィックス要
素と関連付けさせることが、ユーザに対して許容される
ドキュメントエディタの例である。これらの属性に“持
続性”がある理由は、磁気ディスクまたはテープのよう
な長期間メモリ、安定的な半導体メモリ、または、他の
持続性のあるメモリ資源内に、それらの属性がドキュメ
ントとともに蓄積されているためである。更に、これら
の属性は、ユーザからユーザへ、または、コンピュータ
からコンピュータへと転送可能なものである。これに加
えて、そのテキスト的な記述(例えば、“red”また
は“Timesroman”)が、ドキュメントがビュ
ーされたりプリントされたりするときには、属性が埋め
込まれているこのようなドキュメントの構成部分とは表
現されないために、該属性が“隠される”ことになる。
代替的に、この表現プロセスにおいては、それらの属性
を関連のあるドキュメント要素に対して適用して、これ
により、それらの要素を例えばredで表現させたり、
または、Timesromanのタイプフェースをもっ
て表現させたりする。Tiogaエディタ(R.ビーチ
(R. Beach) の“形式をもつテーブルおよびイラストの
設定 (Setting Tables and Illustrations with S
tyle)," 1985年、カナダ、ウオータールーのウオーター
ルー大学,Ph.D.理論を参照。−−ゼロックスPA
RCテクニカルレポートCSL−85−3としても利用
可能)のような、幾つかの実在するエディタにおいて
は、隠された持続性のある属性の概念を拡張して、ユー
ザの選択にかかる任意のキャラクタストリングが、テキ
ストのキャラクタおよびグラフィックスの形状のよう
な、通常のドキュメント要素の隠された持続性のある属
性として含まれることを許容している。このことは、異
なるハードウエアおよびソフトウエアの環境にあるユー
ザ間でのドキュメントの交換のためには重要な特徴であ
ると考えられる。そして、このために、将来のドキュメ
ントエディタに対して更に普遍性のある特性になるもの
と期待される。
リケーションプログラムに対して、入力の方向変換アク
ションをすることができる。例えば、シンボリック表現
マネジャー(Symbolic Presentation Manager) (S.
マッケイ (S. McKay) ら“応用意義学に基づく表現マネ
ジャ (A Presentation Manager Based on Application
Semantics), 1989年11月,ユーザインタフェースソフト
ウエア及び技術に関するACM SIGGRAPHシン
ポジウム会報 (Proceedings of the ACM SIGGRAPH Symp
osium on User Interface Software and Technology) 1
41〜148 頁) で許容されるコマンドによれば、エディタ
から分離したアプリケーションプログラムへと方向変換
するように、ある所定のテキスト要素をカーソルで指定
しているときに、“マウス”ボタンを起動することによ
ってユーザが介入することができる。同様にして、マウ
スボタンを起動することにより、ユーザがHyperT
alkプログラムを実行できるようにして、Hyper
Cardによる入力の方向変換がなされる。
作言語 エディット操作言語のランタイムを解読することができ
るドキュメントエディタも知られている。例えばEMA
CSテキストエディタによれば、テキストのエディット
操作を支持するLISPプログラミング言語の方言が解
読される。同様にして、前述されたTiogaエディタ
によれば、解読される言語で表現されるべき全てのエデ
ィット操作のアクションが許容され、これにより、人手
によるユーザまたはコンピュータプログラムのいずれか
のコントロールの下に、交換可能に実行されるべきエデ
ィット操作が許容される。
は、既知のドキュメントエディタについての上述された
特徴(即ち、隠された持続性のあるキャラクタストリン
グ属性、入力の方向変換、および、ランタイムが解読さ
れるエディット操作言語)の利点が得られ、電子的ドキ
ュメントの生成可能な(renderable)部位の
任意のテキスト要素またはグラフィックス要素(例え
ば、このようなドキュメントの構造およびレイアウトを
規定するマシンで解読可能な要素に対抗するような、テ
キスト、グラフィックス、表および等式)に対するボタ
ンの態様を付加するオプションがユーザに与えられて、
正常なエディット操作およびサーチ操作の下ではボタン
が特別に扱われることがないようにされる。これをより
詳細にいえば、図1に示されているような、1個または
複数個のドキュメントエディタ11の各々に含まれてい
る入力方向転換ソフトウエアスイッチは、ユーザによっ
て、入力方向転換を不可能にする“ボタンオフ”状態、
または、入力方向転換を可能にする“ボタンオン”状態
にセットすることができる。ある特定のドキュメントを
管理しているエディタ11の入力方向転換ソフトウエア
スイッチが“ボタンオン”状態にセットされたときに
は、該当のエディタは、それが受け入れた全ての入力コ
マンドを実行して、その正常なエディット操作をするよ
うにされる。しかしながら、エディタ11の入力方向転
換スイッチが“ボタンオフ”状態にセットされたとすれ
ば、マウスによってコントロールされるカーソルが、埋
め込みボタンを有するある1個のドキュメント要素にお
けるポイントに対して位置しているときの、マウスボタ
ンのクリック操作のようなある予め選択された入力コマ
ンドが、“埋め込みボタンカーネル”と呼ばれる集中ソ
フトウエアモジュール12に対して回送される。
ド”(即ち、その入力方向転換スイッチが“ボタンオ
ン”状態にセットされている)で動作しているとすれ
ば、ドキュメント要素が選択されたときに、このような
要素がボタン属性を有しているかどうかを決定するため
に、該エディタ11によって試験される。そして、これ
が肯定であったときには、ある予め規定されたユーザ入
力アクションが埋め込みボタンカーネル12へと方向転
換するようにされる。このような方向転換入力コマンド
を受け入れたときには、埋め込みボタンカーネル12
は、選択されたドキュメント要素についてのボタン属性
を規定するキャラクタストリングを、ボタンクラスマネ
ージャ13内のクラスを特定するボタンハンドラへと中
継する。より十分に後述されるように、このボタンハン
ドラは、これに次いで、選択されたドキュメント要素の
ボタン属性を読み取って、取るべきアクションの決定を
行う。そして、それらのアクションを実行するために必
要なコマンドハンドラルーチン14を呼び出し、エディ
タに対するエディタ入力言語ストリングを伝送して、所
望のフィードバックをユーザに対して提供する。これか
ら認められるように、コマンドハンドラ14にはドキュ
メントエディタ11の任意のもの、および、付加的なア
プリケーションプログラムを含ませることができる。
タ11は、全ての属性がキャラクタストリングによって
規定されるという知識を除いて、このようなボタン属性
の任意のものについての内部的な形式または内容に関す
るいかなる知識も有する必要はない。これらのストリン
グはエディタのデータ構造において見出された属性とは
区別されるものであることから、このようなドキュメン
トを能動的に管理しているエディタについての正常なエ
ディット操作およびサーチ操作は、能動的なエディタの
入力方向転換スイッチが“ボタンオフ”状態(そして、
多くのエディット操作機能は、たとえ“ボタンオン”状
態にあっても、その作業を続行する)にセットされてい
るときには、該ドキュメントに埋め込まれたボタンのエ
ディット操作およびサーチ操作のために用いることがで
きる。これに対して、能動的なエディタ11の入力方向
転換スイッチが“ボタンオン”状態にセットされている
ときには、ユーザによってトリガされる任意のボタンの
ボタン属性を規定するキャラクタストリングが集中型の
埋め込みボタンカーネル12に対して渡されて分析さ
れ、これにより、ボタンクラス13内のボタンハンドラ
の一つが、該当のボタンが実行を意図されている機能を
果たすことが必要とされているアプリケーションプログ
ラム14に対して渡される。
て、いずれのドキュメントエディタでもストレートにプ
ログラミングされて、内部にロードされたドキュメント
の要素をボタンとして扱うようにされる。更に、ボタン
が埋め込まれているドキュメントまたはドキュメント要
素のタイプに拘らず、任意の与えられたクラスにおける
全てのボタンは矛盾のない態様でのふるまいをする。こ
の理由は、それらのふるまいがソフトウエアの共通本体
によって支配されていることにある。
によって提供されるボタン属性のアーキテクチュアによ
れば、ユーザが電子的ドキュメントエディタを用いるこ
とが可能にされ、ドキュメントの要素をカーソルで指定
することにより、そして、これに次いで適当な入力デバ
イス(マウス上のボタン、ペンのチップ上のコンタクト
デテクタ、または、キーボード上のキーのようなもの)
を起動することによって予め選択されたアプリケーショ
ンルーチンをユーザが起動できるように、能動的なボタ
ンの態様が電子的ドキュメントの要素と関連される。こ
の発明の代表的な実施の例示をするために、比較的スト
レートになされるファイルオープン操作のタスクに適用
されているものとして、詳細な紹介例が以下に開示され
る。この例で示されることは、正常なドキュメント要素
としてまだエディット操作され、サーチされることが可
能なボタンに対して、テキストキャラクタの任意のスト
リングをユーザが向けていくやり方である。ただし、紹
介例に入っていくのに先だって次のことが注意される。
即ち、ここで開示されるシステムにおいては種々の異な
るタイプのボタンを支持することが可能である。なお、
ここでのボタンに含まれているものは、トリガされたと
きにアプリケーション機能を実行する“ポップアップボ
タン”、トリガされたときにある値の記憶や変更をする
“マルチ状態ボタン”と呼ばれるボタン、および、“オ
ン”または“オフ”のいずれかにあって、任意の与えら
れた時点においてそれらのグループの中のある1個のボ
タンだけが“オン”にされる、“ラジオボタン”と呼ば
れるボタンである。その完全を期するために、後続の説
明文においては、それら3タイプのボタンおよびそれら
の特性や使用の例示がなされる。
るボタン この例示についての目的のために、UNIXオペレーテ
ィングシステムのユーザが所望することは、該ユーザが
日報的に注記をしている“〜/writings/di
ary”なる名称のファイルのエディット操作が極めて
容易にされることであると仮定される。更に仮定される
ことは、このユーザは、書き込みがなされるときにはい
つでも、自己のコンピュータのディスプレイスクリーン
上に表示される、“AlwaysOpen”なるファイ
ルを有していることであり、これによって、該ユーザは
該当のファイルに対して、テキストストリング“〜/w
ritings/diary”を付加することになる。
この点において、該ファイル“AlwaysOpen”
は代表的には図2Aのようにみえる。これに次いで、マ
ウスのような適当なカーソルコントローラを用いること
により、ユーザはストリング“〜/writings/
diary”を選択し、そして、自己のウインドウシス
テムにおけるツールのセットから利用可能なボタンを起
動して、選択されたテキストストリングの周辺のボック
ス20を取り出す。そして、このボックスを、ファイル
“〜/writings/diary”上のテキストエ
ディタウインドウを始動させるコマンドを含んでいるテ
キストストリングと関連させる。ここで、“Alway
sOpen”は図2Bのようにみえる。その後で、生成
された新規なボタンについての厳密な試験をするため
に、ユーザはボックスで囲まれた“〜/writing
s/diary”のテキストストリングの選択をする。
これの選択は、スクリーンカーソルの位置決めをするマ
ウス(21で示されている中心でのブラックドットを有
するブラックサークルは、マウスでコントロールされる
カーソルを表している)を用いるようなことによってな
される。次にユーザはマウス上の物理的なボタンの一つ
を押して、ファイル“〜/writings/diar
y”を含んでいる新規なテキストエディタウインドウの
オープン操作をさせる。
ング“〜/writings/diary”がボタンと
して作用するのは、“AlwaysOpen”ファイル
を管理しているテキストエディタが“ボタンオンモー
ド”にある間(即ち、その方向転換スイッチが“ボタン
オン”状態にある間)だけということである。この結果
として、ユーザがボタンモードをオフしたときには、該
当するエディタの標準的なテキストのエディット操作お
よびサーチ操作の特徴を用いて、“AlwaysOpe
n”ファイルのテキストのエディット操作およびサーチ
操作をすることが可能にされる。例えば、日報(dia
ry)のファイル名を入力する際にエラーが生じたとす
ると、誤りのあるファイル名上にボタンが生成された後
であっても、ユーザは正常なエディット操作を用いるこ
とができて、該当のファイルが“AlwaysOpe
n”ファイル内でリストにされている名称を訂正するよ
うにされる。
更に基本的なタイプの、3種のボタンについて説明され
る。即ち、ポップアップボタン、マルチ状態ボタン、お
よび、ラジオボタンについての説明であって、異なる種
類のドキュメントにおいてそれらのボタンが使用される
やり方の例示が含まれている。その他のボタンタイプの
ものを付加できるのは勿論であるから、ここで説明され
るタイプのものは代表例として意図されるだけのもので
ある。
クト上を、ユーザがマウスボタン等で押えると、カーソ
ル上に集中したそのエントリの一つとともに、ポップア
ップメニューが現れてくる。有利になされることは、カ
ーソル上に集中しているメニューエントリは、押されて
いるマウスボタンに依存するものであり、また、例え
ば、これも押されているCTRLおよび/またはSHI
FTキーボードキーのいずれか一方または双方に依存す
るものである。これに加えて、ユーザがマウスボタンを
早くクリックしたときには、ポップアップメニューのデ
ィスプレイが抑制されて、CTRL,SHIFT,およ
びユーザが用いているマウスボタンの組み合せによって
決定されるような、ユーザのメニュー選択の適用を直接
的に告知するようにされる。このポップアップメニュー
の働きについては、能動的なドキュメントに対するその
使用ではないけれども、先に説明されている。K.ピア
(K. Pier) らの“水落し口への導入:会話式作図ツール
(An Introduction to Gargoyle: An Interactive Illu
stration Tool)”ドキュメント操作と印刷術 (Document
Manipulation and Typography) 、'88 EP会報、ケン
ブリッジ大学出版部、1988年、 223〜238 ページ、が参
照される。ゼロックスPARCテクニカルEDL−89
−1としても利用可能なものである。
に含まれている4個のポップアップボタンの各々は、ボ
ックスで囲まれて示されている。各ボタンによって、1
個または複数個のテキストエディタマクロが実行され
る。各ボタンに続いているものは、その機能についての
記述である。図3Bにおいては、テキストストリング
“Alphabet”の上でユーザがマウスを押し下げ
ており、これによりポップアップメニューが現れて、い
ずれかの他のドキュメント(図示されない)において現
に選択されているテキストストリングのアルファベット
を変更することを、ユーザに対して許容するようにされ
ている。メニュー上で重ね合わされているピクトリアル
プロンプト25により、3個のマウスボタンのいずれが
将来のボタンプレスに対するアクセル体として使用でき
るかの指示がなされている。更に、方形26によってデ
ィスプレイされるものは、現に選択されているメニュー
エントリを記述するフィードバックであり、また、図3
Bにおける白抜きワード“Latin”上で一部可視の
矢印27はカーソル(このカーソルは、ポップアップメ
ニューが能動的であるときに矢印の形状をなすものとさ
れる)である。
プアップボタンであって、そのダッシュパターンまたは
ライン幅を、選択されたグラフィックオブジェクトに転
換するものである。ここで、これらのボタンは、図4B
に示されているマルチセグメントの形状のダッシュパタ
ーンに変更するために用いられている。前述されたGa
rgoyleエディタのような既知のグラフィックスエ
ディタは、これらのラインのようにエリアの殆どないボ
タンの選択を可能にするために、 "即引き”重力 ("sna
p-dragging"gravity) が用いられている。これについて
は、E.ビヤ (E. Bier)らの“即引き”コンピュータグ
ラフィック(Computer Graphics), Vol.20, 1986年 8月,
233 〜240 ページが参照される。
入力するコマンドに応答して、このクラスの各ボタンに
存在する区別された変数、要求されたValueの内容
を修正するようにされる。このValue変数のサイク
ルは、ユーザによって規定されるストリングのセットを
通してなされる。例えば、ストリングが“オン”および
“オフ”であるときには、ボタンは、トリガされたとき
に、“オン”と“オフ”との間でスイッチされる。スト
リングが“アップル”、“バナナ”および“グレープフ
ルーツ”であるときには、ボタンはそれらの名称を通し
てサイクルされる。
は、各状態がどのように表示されるべきかを決定するこ
とができる。図5A−図5Cに示される幾つかのボタン
の各々は、オンおよびオフの2個の状態を有している。
これらのボタンの現在の状態は、フォントを変更する
(図5A)ことにより、テキストと背景とのビデオコン
トラストを反転させる(図5B)ことにより、または、
ボタンのテキスト内容を変更する(図5C)ことにより
指示される。実際に、このような強調を達成させるため
に、任意の適当なドキュメントエディタ操作を使用でき
ることは明白であろう。
ションをコントロールするために用いられるときには、
最も有用なものである。より詳細に後述されるように、
ボタンの名称、および、該ボタンが埋め込みボタンシス
テムに対して配置されているときの仮想メモリアドレス
を与えることにより、アプリケーションはボタンの値を
読み取ることができる。そして、与えられた名称のボタ
ンが与えられたドキュメント内で見出されたときには、
該システムはその値をアプリケーションに戻すことにな
る。ボタンがドキュメント内のどこに配置されている
か、または、該ボタンのクラスが何であるかさえも、ア
プリケーションは知る必要がない。ある与えられた名称
のボタンが状態を変更しようとしているときをアプリケ
ーションが識別することができ、これによって、該アプ
リケーションによるこのような状態変更のコントロール
が可能になる。従って、能動的なドキュメントにおける
トリガボタンによって開始されるアクションは、アプリ
ケーションプログラムの他のアクションによって同期を
とることができる。
度に“オン”になるのはその中の1個だけである。かく
して、このようなボタンをトリガすることにより、代表
的には、当該ボタンを“オン”にする間に、そのグルー
プにおける他の全てのボタンを“オフ”にする。マルチ
状態ボタンと同様に、ユーザ/カスタムインタフェース
デザイナは、このようなボタンがその状態を反映する外
見を変更するやり方を決定することができる。この例に
おいては、ラジオボタンはドキュメントの存在箇所より
もそれらのグループの名称を参照するようにされてお
り、このために、それらは互いに近接して配置される必
要がない。
ある。ここで示されるように、ある1個の矢印をクリッ
クしてそれをブラックにすると、他の全ての矢印はホワ
イトにされる。
レビュー この発明のボタン属性アーキテクチュアによれば、通常
のテキストドキュメント要素およびグラフィックスドキ
ュメント要素がボタンとして作用できるように、ドキュ
メントエディタの修正および構築をするやり方が提供さ
れる。この文節においては、アーキテクチュアおよびそ
の新規な局面が詳細に説明され、また、このアーキテク
チュアが現在のエディタ技術についていかなる利点があ
るかが、より十分に指摘される。
キテクチュアは5個の主要部を有している: 1.ボタン属性。“ボタン属性”と呼ばれるキャラクタ
ストリングは、ボタンの態様をもたせるような、“E”
と呼ばれる任意のドキュメント要素にリンクされる。こ
のキャラクタストリングは、所望されるボタンの態様の
タイプを記述するものである。 2.エディタ特性。この発明を実施するために用いられ
るべきいずれのドキュメントエディタであっても、ボタ
ン属性を有するそれらのドキュメント要素を見出して列
挙することが可能でなければならず、また、当該属性を
有するドキュメント要素上またはその近傍で生じる、あ
る所定のユーザの入力によるアクション(例えば、マウ
スアクション)の(埋め込みボタンカーネルに対する)
行程を変更できるものでなければならない。 3.埋め込みボタンカーネル。埋め込みボタンカーネル
で分析されるボタン属性は、ボタンを含んでいるドキュ
メントを管理するエディタ、該ボタン属性において特定
されるボタンクラスに適当なボタンハンドラ、および、
ある与えられたボタン属性によって特定されるアクショ
ンを実行するために要求される、“コマンドハンドラ”
と呼ばれるアプリケーションパッケージの間での通信を
達成させるものである。ここで付与される通信は、ボタ
ンアクションと関連する任意のフィードバックを実行す
るためにボタンが埋め込まれている、エディタを求める
ボタンハンドラをも可能にするものである。更に、ボタ
ンを含んでいるドキュメントがアプリケーションコント
ロールパネルとして用いられるときには、カーネルがこ
れに応答して、特定のドキュメントを特定のアプリケー
ションウインドウにリンクさせることを要求し、また、
ボタンに関連する入力アクションを適切なウインドウに
向けるようにする。 4.ボタンクラス。ボタンクラスはボタンハンドラのセ
ットであって、埋め込まれたボタンの異なるクラスにつ
いての特定の機能を規定するものである。新規なクラス
を登録するカーネル内のルーチンを呼ぶことにより、新
規なボタンクラスをランタイムでのシステムに付加する
ことができる。かくして、新規なボタンクラスに対する
ボタンハンドラソフトウエアは、システムの他の部分を
再配置することなしにデバッグすることができる。 5.コマンドハンドラ。コマンドハンドラは、ユーザが
それらを参照する埋め込みボタンの使用を開始するのに
先立つある所定の時点において(例えば、ユーザがログ
インをする時点において、または、埋め込みボタンソフ
トウエアがロードされる時点において)、埋め込みボタ
ンカーネルとともに自身を登録するためのアプリケーシ
ョンである。埋め込みボタンがトリガされたときには、
ボタンが属しており、該当のボタンにおいて記述されて
いるアクションを実行するクラスのために、適切なコマ
ンドハンドラがボタンハンドラによって呼ばれる。同様
なボタンクラスに、カーネルとともに登録されることに
よって新規なコマンドハンドラが動的に付加され、これ
により、システムの残りを再ロードすることなく、それ
らを容易にデバッグするようにされる。
を変更しようとするのであれば、第6のアーキテクチュ
ア上の特徴が必要とされる。 6.エディタ入力言語。Eが埋め込まれるドキュメント
エディタは、該ドキュメント上で実行できるエディット
操作アクションを記述する(テキストストリングからな
る)入力言語を付与せねばならない。このようなエディ
タで解読可能な入力ストリングをボタン属性に含ませる
ことにより、ボタンがトリガされたときにボタン(また
は任意の他のドキュメント要素)の外見について所望の
変化をもたらすようなエディタアクションを、ボタン自
体の中に記述することができる。
より、次のような幾つかのボタン機能が支持される。 a.ユーザが埋め込みボタンをトリガしたときに応答す
ること、 b.アプリケーションプログラムの要求により1個また
は複数個のボタンの値の更新または点検をすること、お
よび c.アプリケーションウインドウ(ドキュメントにおけ
るボタンのサブセットに対するコマンドハンドラとして
作用するもの)にドキュメントをリンクして、ボタンア
クションを該リンクしたウインドウに転送すること。
みボタンアーキテクチュアによって設けられるものであ
る。ここで示されているように、カーネル12はスイッ
チボードとして作用して、他の構成部との間でのメッセ
ージの転送をする。このアーキテクチュアにより、新規
エディタ11、ボタンクラス13またはコマンドハンド
ラ14が、動的に容易に付加される。それらはカーネル
に関する名称およびルーチンの登録をしてあり、登録さ
れた名称からくる任意のメッセージについて、その後で
の転送をするようにされる。
−−ボタン属性、エディタ特性、埋め込みボタンカーネ
ル、ボタンクラス、コマンドハンドラおよびエディタ入
力言語−−については、更に詳細に後述される。その説
明の過程においては、該アーキテクチュアによる3個の
主要な機能を遂行するやり方が示される。即ち、ユーザ
の入力コマンド(例えば、ボタンクリック)に対する応
答、値の更新および点検、および、アプリケーションに
対するドキュメントのリンクという3個の主要な機能を
遂行するやり方が示されることになる。
ィタは、“ボタン属性”と呼ばれるストリングに値が付
与される属性を、任意の与えられたドキュメント要素
(例えば、テキストキャラクタ、パラグラフ、グラフィ
ックス形状等)と関連させることが可能でなければなら
ない。ドキュメントが磁気ディスクまたは他の持続性が
あるメディアに蓄積されるときには、このストリングが
該ドキュメントとともに蓄積されねばならない。その動
作においては、ドキュメントがメモリに読み込まれると
きに、このボタン属性ストリングが埋め込みボタンカー
ネルにより読み取られて、急速アクセスのためのデータ
構造内に転送される。ドキュメントエディタが、このよ
うなボタン属性のデータ構造をドキュメント要素(ボタ
ン属性ストリングに代えて)と関連させることができる
ときには、ボタンがトリガされる度に埋め込みボタンカ
ーネルによるストリングの再読み取りを必要としないこ
とから、その実行能力が改善される。
ングは、名称フィールドをテキストストリング値と結合
させる、“Poppy”と呼ばれる簡単な言語によって
書かれている。この言語はCUE Forms言語によ
って示唆されたものである。これについては、T.カッ
ツマレック (T. Kaczmarek),“CUE Forms表
現”サザンカリフォルニア大学の内部技術レポート (In
ternal Technical Report of University of Southern
California), 情報科学研究所 (Information Science
s Laboratory) ,1984年 7月25日, が参照される。ボタ
ンの態様を変更するために、ユーザは手動でPoppy
ストリングのエディット操作をすることができるが、こ
のボタンの態様を変更するための他のやり方がある。例
えば、新規のボタンを生成させるためにユーザができる
ことは、ボタンになるべきドキュメント要素の選択をし
て、“ボタナイザ(buttonizer)”と呼ばれ
る実在のボタンを起動させることであるが、その目的が
新規のボタンを生成させることである。以下に認められ
るように、代表的なボタナイザボタンについて、より十
分に後述される。
アップボタンのPoppy言語による記述によって、こ
こに、選択されたオブジェクトのカラーの変更がなされ
る。このポップアップボタンはここに示されている。 Poppy1 Class:PopUpButton CommandHandler:Colorizer Menu:( ((SetColor Red) "Red" "Makes selected objects red") ((SetColor Green) "Green" "Makes selected objects green") ((SetColor Blue) "Blue" "Makes selected objects blue") ) Feedback: ( Enter: <SetCursor bullseye> Down: (BeginButton MakeBold EndButton) Exit, EndActivity: (BeginButton MakeItalic EndButton) )
y1”の意味することは、次のプログラムはPoppy
言語によるバージョン1のものということである。ここ
で認められるように、これには次の4個のボタンデータ
フィールドが付随している。即ち、Class,Com
mandHandler,MenuおよびFeedba
ckなるボタンデータフィールドが付随している。
ドのいずれのボディ(即ち、ボタンハンドラ)がボタン
に対するユーザの入力を扱うのかということであるか
ら、全てのボタンはClassフィールドを持たねばな
らない。ここでの場合におけるClass は“Pop
UpButton”である。
で同定されるコマンドハンドラアプリケーション14
(図1)は、該当のアプリケーションがカーネル12で
登録されているしたでの名称を用いることによって、こ
のボタンのポップメニューにおいて選択されたコマンド
を受け入れるものである。上記のボタンに対するコマン
ドハンドラは“Colorizer”アプリケーション
であって、選択されたオブジェクトのカラーを、ボタン
のメニューにおける名称のカラーに変更するものであ
る。
は、ポップアップボタンのクラスハンドラで理解される
LISPと同様なシンタクスによってポップアップメニ
ューが記述されている。このメニューは、“Red”、
“Green”および“Blue”なるラベルが付され
た3個のエントリを備えている。これらのエントリレベ
ルに追従するテキストストリングは、カーソルが該当の
エントリの上にあるときにディスプレイされるドキュメ
ンテーションストリングである。各エントリ名の前の括
弧付きの表現は、アプリケーションに対して伝送される
テキストストリングを表している。
ルドにおいては、種々のボタンイベントが生じたときに
とられるべきアクションが決定される。“Enter”
サブフィールドにおいては、このボタンに入ったとき
に、カーソルをしてブルザイの形状に変化させる。“S
etCursor bullseye”の周囲の角括弧
は、ボタンを管理するエディタに対してそれを渡すより
も、Poppy に対してこの表現自体の解読をするよ
うに指示している。“Down”サブフィールドに含ま
れているものは、前述されたTiogaテキストエディ
タの入力言語における表現のストリングであって、該エ
ディタをして、このボタンのテキストに対してボールド
体フォントを適用させるものである。同様にして、“E
xit,End Activity”フィールドにおい
ては、ボタンのアプリケーションでその演算を仕上げた
とき、または、クリックの完了に先だってボタンのカー
ソルアウトを移動させることによって、ユーザがその操
作を中止したときには、ボタンをプレーン体フォントに
回復させる。
の値は、ホワイトスペースによって限定される単一の英
数字ストリング、または、引用マーク“”,丸括
弧(),角括弧<>のような標準的な境界符号間のスト
リング(ホワイトスペースを含むことができる)のいず
れかである。エディタがボタンを含むファイルをディス
クから読み取ったときには、埋め込みボタンカーネルを
して、各ボタンのボタン属性を分析させる。カーネルで
は、ボタン属性ストリングを分析して、(フィールド
名)/(フィールド値)対のセットにする。ここで、各
フィールド値は未解読のストリングであって、ボタンク
ラスに対する適当なボタンハンドラにそれらの対を渡す
ようにされる。そして、これにより、クラスを特定する
ボタンハンドラをして、ボタンを表すランタイムのデー
タ構造を構築させる。
2個の付加的なデータフィールド−Name(名称)お
よびVariables(変数)−を持っており、これ
らは例えばPoppyで表現されている。 Name:Fruit Variables: (Value:{orange, apple, banan
a } = orange)
nge,apple,またはbananaなる値を有す
る変数であって、その現在の値は“orange”であ
る。その読み取りまたは書き込みの目的のために、ボタ
ン名“Fruit”を用いて、アプリケーションではこ
の値を参照する。複数のボタンが同一の名称を有してい
るときには、このボタン名の値はあいまいになる。従っ
て、この問題の代表的な解決は次のようにしてなされ
る。即ち、同一の名称を有する全てのボタンに対して同
一の値を強制的に持たせておき、それらの中のどの1個
の値が変更しても、他の全てを変更することによって解
決される。しかしながら、代替的なこととしては、階層
的な構造にされたドキュメントのある特定のサブパート
において、ある与えられた変数名についての値を調べる
ことができる。例えば、ボタンAが変数名Nなる値を参
照したとすると、システムにおいては、まず第1にAが
生じたパラグラフにおける変数Nの値を調べること、こ
れに次いでAが生じたサブセクションにおいて調べるこ
と、これに続けてそのセクションにおいて調べること、
等々のことがなされる。このようなやり方において、名
称のあいまいさをなくすために、ドキュメントの階層的
な構造を用いることができる。
るために、幾つかの簡単なやり方で修正されることが必
要である。特に、それらは次のようなルーチンを持つべ
きである。 a.ボタン属性を有するドキュメントにおいて全ての要
素を列挙すること。 b.ある与えられたドキュメント要素のボタン属性(お
よびその他の属性)を記述すること。 c.エディタで特定されるコマンド言語によって付与さ
れたエディット操作コマンドに従ってドキュメントのエ
ディット操作をすること(オプション)。 d.ある与えられたカーソル位置が、ある与えられたド
キュメント要素の内外いずれの側にあるかを報告するこ
と。 これに加えて、改善された実行能力のためには、エディ
タは次のようなルーチンを付加的に具体化することがで
きる。 e.あるドキュメント要素についての任意のデータ構造
に対してポインタを関連させること。 また、ボタンの中には次のようなことをエディタに求め
るものもある。 f.ボタンの内容をテキストストリングとして記述する
こと。 この最後に述べた特徴は、ボタンがテキストドキュメン
トに埋め込まれているときには、最も意味のあるもので
ある。
は、任意の与えられた時点においてカーソルの下にある
ドキュメント要素がボタン属性を有しているか否かの決
定がなされるまで、エディタは選択アクションの処理
(例えば、マウスによりまたはカーソルキーを用いるこ
とにより指示すること)を遅らせることができねばなら
ない。このような属性が見出されたときには、エディタ
はエディット操作アクションを行わない。これに代え
て、マウスボタンが押されており、ユーザが埋め込みボ
タンを指示しているという情報を、埋め込みボタンカー
ネルに対して渡すようにされる。これに対して、このよ
うな属性が存在しないときにエディタで実行されること
は、マウスボタンが与えられたドキュメント要素上で押
されているときに、正常に実行される任意のエディット
操作アクションである。
はその実施が容易なものである。マウスに基づく全ての
ドキュメントエディタには、ユーザが指示するドキュメ
ント要素を決定するためのコードが既に含まれている。
更に、大方のこのようなエディタが有しているコード
は、各入力イベントを扱うのに適当なルーチンに対して
伝えるためのものであり、また、全てのWYSIWYG
(What You See Is WhatYou Get) エディタが有してい
るコードは、ドキュメント要素の属性をアクセスするた
めのものである。従って、ボタン属性が存在するか否か
を決定するための、適当なときに埋め込みボタンカーネ
ルに対して伝えるための、これらの属性を修正するため
の、そして、特定の属性を有するドキュメント要素をサ
ーチするためのコードを含ませるように、それらは容易
に拡張される。
ンが提供される。 (1) 新規なコマンドハンドラ、ボタンクラスおよび
アプリケーションウインドウがシステムに知覚されるこ
とを許容するための登録手順。 (2) ユーザおよびソフトウエアルーチンによるボタ
ンの使用に寄与するアクションルーチン。 それらのタイプの各々の基礎的なルーチンについては、
このセクションにおいて記述される。
より、埋め込みボタンカーネルをもって好適に自己登録
される。 RegisterMessageHandler: PROCEDURE [name: String, n
otifyProc:RegisteredNotify:Proc]; ここに、“String”はASCIIのテキストストリング
であり、また、“RegisteredNotifyProc”は手順のタイ
プである。 RegisteredNotifyProc: TYPE = PROCEDURE [action: St
ring, button Button] RETURNS[success: BOOLEAN]
“button”で記述していることは、アクションを
トリガするために押された埋め込みボタン、および、ブ
ール代数値(BOOLEAN)が真/偽の値であること
である。この結果として、登録名を有するコマンドハン
ドラに対してアクションが伝えられるべきことを要求す
るボタン属性をカーネルが読み取ったときには、該カー
ネルは関連のRegisteredNotifyProcを呼び、これによっ
て、該当のアクションリクエストを、パラメータとして
コマンドハンドラに渡す。
ことにより、埋め込みボタンカーネルをもって自己登録
される。 Register ButtonClass: PROCEDURE [button Class Nam
e: String,buttonClass:ButtonClass]; ここに、ButtonClassによって、次のような
手順を実行するためのルーチンが提供される。 (1) 例示する。そのボタン属性から、ある特定され
たクラスの与えられたボタンに対するランタイムのデー
タ構造を生成させる。 (2) ファイルアウトする。ボタンのホストドキュメ
ントがディスクに書き込まれたときには、そのランタイ
ムのデータ構造から、該与えられたボタンに対して修正
されたボタン属性(例えば、生成されてからのその値を
変更したときのような)を生成させる。 (3) トリガ操作を扱う。与えられたボタンをトリガ
操作するアクションに応答する。このルーチンで決定さ
れることは、フィードバックが実行されるべき事項、お
よび、コマンドハンドラが告知されるべき時点である。 (4) 値を取得する。カーネルからの質問があったと
きに、与えられたボタンの現在の値を報告する。 (5) 値をセットする。ある与えられたボタンの値を
変更するための要求に応答する。例えば、それらのラン
タイムのデータ構造を変更することにより、および、適
当な人的に可視のフィードバックを生成させることによ
り、ボタンにおける応答が可能である。 (6) 態様を履行しない。そのための特定のコマンド
ハンドラがないときには、該与えられたボタンが呈示す
べき態様の実行をする。例えば、コマンドハンドラが特
定されていないときには、状態を有するボタンが次に続
く状態へと変化することが多い。
リケーションウインドウにリンクさせることがアプリケ
ーションで所望されるときには、次のような呼びがなさ
れる。 LinkDocToApplication: PROCEDURE [doc: ActiveDoc, h
andlerName:String, window: Window, applicationDat
a: POINTER, notifyProc:NotifyProc]; ここに、“ActiveDoc”で表されることは、ボ
タンを含んでいるリンクされるべきドキュメントの仮想
メモリアドレスである。上記のルーチンが一旦呼ばれる
と、カーネルはこれに続けて“ActiveDoc”に
おける任意のボタンに対するトリガ操作をすることが可
能にされる。この“ActiveDoc”のコマンドハ
ンドラフィールドには同じ“handlerName”
が含まれており、“notifyProc”を呼ぶこと
により、そして、アーギュメントである“windo
w”および“applicationData”にそれ
を渡して、ボタンのアクションを実行するようにされ
る。当該イベントにおいて、“window”に記述さ
れている特定アプリケーションウインドウの内容は、与
えられたボタンをトリガすることによって影響されるべ
きものであり、また、“applicationDat
a”は、意図されるボタンアクションを実行するために
アプリケーションで要求される、任意の他の情報に対す
るポインタである。この目的のために、“notify
Proc”は次のようなタイプの手順にされている。 NotifyProc: TYPE = PROCEDURE [button: Button, acti
on: String,window: Window, applicationData: POINTE
R] RETURNS [success:BOOLEAN];
otifyProc”のサクセスリターン値は、(ボタ
ンアクションが完了したことの、ユーザに可視のフィー
ドバックを提供するときに)要求されたアクションの成
否のいかんをユーザに指示するかどうかの決定をするた
めのものである。
よって、ドキュメントをコントロールパネルとして用い
るアプリケーションプログラムによって、そして、この
ようなエディタおよびアプリケーションプログラムによ
ってなされるカーネルを支援するためのボタンクラスに
よって、カーネルのアクションルーチンが呼ばれる。特
に、カーネルによって提供される3個のルーチン(即
ち、HandlePress, DataStructureFromAttribute, Attri
buteFromDataStructure)は、ボタンを含んでいるドキュ
メントのエディタによって呼ばれるものである。更に、
カーネルによって提供される2個の基礎的なルーチン
(即ち、GetValue, SetValue)は、アプリケーションに
よって呼ばれるものである。最後に、カーネルによって
提供される6個の基礎的なルーチン(即ち、PassEventT
oCommandHandler, GetField, SetField, GetAttribute,
SetAttribute, RegisterNameValuePair)は、ボタンク
ラスによって呼ばれるものである。これらのルーチンお
よびその機能については、このセクションにおいて規定
されている。
ルーチン HandlePress: PROCEDURE [press: InputAction, butto
n: Button, doc:ActiveDoc]; なる更に基礎的なルーチンは、埋め込みボタンアーキテ
クチュアにおけるものの中の一つである。(マウスボタ
ンをクリックすること、キーボードキーを押すこと、ま
たは、所定の他の手段により)ユーザがボタン上でカー
ソルを動かして、該ボタンをトリガさせたことが発見さ
れたときには、このルーチンがエディタによって呼ばれ
る。“press”なるアーギュメントは、ボタンをト
リガするためにユーザによって用いられる方法を表すも
のである。ある種のボタン(例えば、ポップアップボタ
ン)は、それをトリガするために押される1個または複
数個のキーに依存して、異なる態様を呈示するものであ
り、そのための情報が“press”なるアーギュメン
トに含まれている。“button”なるアーギュメン
トはいずれのボタンがトリガされるかを記述するもので
あり、また、“doc”なるアーギュメントはこのボタ
ンが配置されるドキュメントを記述するものである。
“HandleClick”が呼ばれると、ボタン属性
がカーネルで分析されて、どのボタンクラスがこのクリ
ックを扱うべきかが発見され、そして、更に続く処理の
ために該当のボタンクラスに対してアクションが渡され
る。
は次の通りである。 DataStructureFromAttribute: PROCEDURE [attribute:
String,button: Button, doc: ActiveDoc] RETURNS [da
taStructure:POINTER]; HandlePressルーチンを成功させるために
は、カーネルはボタン属性を分析せねばならない。ボタ
ンがトリガされる度にこの分析をすることができるけれ
ども、これは実行能力に悪い影響をおよぼすことがあ
る。代替的に、ドキュメントがロードされた時点におい
て、各ボタンに対して一度だけ、エディタは DataStruc
tureFromAttribute ルーチンを呼ぶことができる。この
ルーチンによれば、ボタン属性が分析され、ボタンを表
すためのデータ構造が構築され、そして、このデータ構
造がエディタに戻される。そして、ボタン属性のランタ
イム値としてのボタン属性ストリングに代るデータ構造
を、エディタが蓄積することができる。注:特別の強化
策として、始めてボタンが押されたときに分析をするこ
とが可能であり、このために、ドキュメントが全てのボ
タンに対してロードされる時点においてコストを支払う
必要がなくなる。このスキームによれば、使用されるボ
タンに対してのみ、コストが支払われることになる。
ならないときには、次の AttributeFromDataStructure
ルーチンを用いて、ボタン属性のデータ構造をストリン
グに戻すことができる。 AttributeFromDataStructure: PROCEDURE [dataStructu
re:POINTER] RETURNS [attribute: String]; ここで認められるように、このルーチンは上述された D
ataStructureFromAttribute ルーチンによって生成され
た形式のデータ構造をとるものであって、それを人によ
る読み取りが可能なPoppy言語のテキストストリン
グに戻すようにされる。ドキュメントがディスクに書き
込まれているときに、エディタがこのルーチンに呼びを
出して、それらがテキストストリングとしてのボタン属
性を外部に表すことができるようにされる。ある特定の
ボタンに対して注意されることは、このルーチンによっ
て戻されるテキストストリングは、アーギュメントとし
ての DataStructureFromAttribute に渡されるテキスト
ストリングとは等しくない可能性があるということであ
る。例えば、ボタンがマルチ状態ボタンであるときに
は、その値がTRUEからFALSEへと変化できるよ
うにされて、この新規な状態が修正されたボタン属性の
ストリングに反映されることになる。
クションルーチン GetValue: PROCEDURE [name: String, doc: ActiveDoc]
RETURNS[value: String] なるルーチンは、そのボタン属性の“Name:”フィ
ールドにおける与えられたテキストストリング“nam
e”を有するドキュメント“doc”の、1個または複
数個のボタンに現れるときのValueなる名称の変数
の値を戻すものである。幾つかのボタンがこの名称をも
ってこのドキュメント内に存在するときには、このルー
チンによって、第1に遭遇したこのようなボタンの値が
戻される。その実行能力を改善するために、GetVa
lueルーチンにおいて、“name”がハッシュテー
ブル内の RegisterNameValuePair(下記を参照)によっ
て登録されているかどうかを認めるためのチェックがな
される。もしそうであるときには、関連の値が極めて迅
速に見出されて、それを戻すようにされる。そうでない
ときには、Section D.2.ルーチンにおいて
記述された EnumerateButtons ルーチンの助けをもっ
て、ドキュメント内の全てのボタンを通してその名称を
求めるサーチがなされ、該当の名称が見出されたときに
は値を戻すようにされる。このような名称のあるボタン
が見出されなかったときには、空きのストリングを戻す
ようにされる。
ue: String, doc: ActiveDoc]; この手順においては、与えられた名称を有するドキュメ
ント“doc”内の全てのボタンにおける変数 Val
ueの値が変更される。RegisterNameValuePair(下記
を参照)に対するボタン名、値およびdoc(ドキュメ
ント)も渡されて、GetValueに対する将来の呼
びにより、正しい値を迅速に生成するようにされる。
ョンルーチン PassEventToCommandHandler: PROCEDURE [event: Strin
g, button:Button, application: String]; はボタンクラスによって呼ばれて、“event”と呼
ばれるテキストストリングを名称が付されたボタンのコ
マンドハンドラに渡す時点であることを、カーネルに対
して告知するようにされる。ボタンと、登録されたコマ
ンドハンドラおよびリンクしたドキュメント(上述の L
inkDocToWindow ルーチンを参照)についてのカーネル
における現在のテーブルとから、該当のコマンドハンド
ラに告知するために呼ぶ手順がカーネルにより決定され
て、該イベントを該当の手順に対して渡され、最終的に
は戻すようにされる。
g, button: Button]RETURNS [field: String]; なるルーチンは、ある与えられたボタンについてのボタ
ン属性のある特定のフィールドの値を戻すためのもので
ある。例えば、GetField ["CommandHandler"が、上述さ
れたColorizerアプリケーションに対するマル
チ状態ボタンに適用されたときには、該当のストリング
“Colorizer”を戻すようにされる。
ld: String, button: Button]; なる手順は、ボタン属性の特定のフィールドに対して新
規な値を割り当てるためのものである。変更されたフィ
ールド上での後続のGetField操作によって、新
規な値を戻すようにされる。
n: Button] RETURNS [pointer:POINTER]; ボタン属性(キーを“ButtonAttribut
e”とすることで同定される)は、埋め込みボタンアー
キテクチュアに必須であるドキュメント要素の属性だけ
であるが、ある所定のボタンクラスにおいては、他の属
性の値を取得することが所望される。例えば、ここで説
明されるButtonizerボタンでは、第2の属性
(キーを“ButtonAttributeLiter
al”とすることで同定される)が用いられる。このG
etAttributeの手順においては、これらの属
性の全てがボタンクラスに対して有用にされる。このル
ーチンでは、任意のデータ構造に対してポインタが戻さ
れる。このために、ボタンクラスにおいては、このデー
タ構造がテキストストリングであるか、または、その利
用のためのある種の他のデータ構造であるかを知らねば
ならない。
pointer: POINTER, button:Button, edited: BOOLEAN]; によれば、“button”アーギュメントによって記
述されたドキュメント要素についての任意の属性の変更
が、ボタンクラスに対して許容される。
ing, value: String, doc:ActiveDoc]; なるルーチンは、“name”をキーとして用いて、ハ
ッシュテーブルにおける対(名称、値)を蓄積するため
のものである。ここで想起されるように、GetVal
ueルーチンではこのテーブルが用いられ、それらの名
称が付されたボタンの値が迅速に見出されて、それらの
名称および値をこのテーブルに蓄積するようにされる。
含んでいるドキュメントについてのユーザの観点から、
少なくとも3個の異なるボタンクラスが支持されるが、
これらのクラスで提供される3個の基礎的なビルディン
グブロックは、ドキュメントから作成されるインタフェ
ースのためのものである。また、セクションD.3.a
において記述されているように、ボタンクラスのセット
は、登録手順を呼ぶことにより(ランタイムにおいてさ
えも)拡張することができる。更に想起されることは、
これもセクションD.3.aにおいて記述されているよ
うに、各ボタンクラスが6個の手順によって規定され
る。これに加えて、ある与えられたボタンクラスにおけ
るボタンは、その活動性を支持するボタン属性内におい
て異なるフィールドを有している。このセクションに
は、上述された3個のボタンクラス全てについてのボタ
ン属性の例が含まれており、また、各クラスでのその6
個のルーチンの実施のやり方が説明されている。
アップボタンがトリガされたときには、それらによるポ
ップアップメニューのディスプレイが可能にされ、そし
て、ユーザが選択するメニューアイテムに基づくアクシ
ョンを実行するようにされる。例えば、図2Cにおける
ような、ボタン自体についてテキスト内で名称が付され
ているファイルをオープンする、ポップアップボタンに
対するボタン属性(このボタン属性は、このアクション
を意味のあるものにするためのテキストドキュメント要
素と関連していなければならない)は、次の通りであ
る。 Poppy1 Class: PopUpButton Menu: ( ((<Contact "Open" <ButtonText>>) "Open""Opens the file represented by this button") ) CommandHandler: CommandTool Feedback: ( (Mouse Moved <SetCursor bullseye>) )
enu”なるフィールドが必要とされる。Class,
CommandHandler,Feedbackなる
フィールドは、全てのボタンに対する埋め込みボタンカ
ーネルによって支持される。
の基礎的なルーチンは次のように実施される。 例示。このルーチンでは、Menuフィールドを読み取
って、ポップアップメニューのグラフィックな外見を表
すデータ構造を生成する。ファイルアウト。このボタン
属性は値を有していないから、その使用の間に変化を生
じることはない。このファイルアウトルーチンでは、オ
リジナルなボタン属性を返すだけである。 ボタンプレス。まず、埋め込みボタンカーネル12(図
1)は、押されているボタンとFeedbackフィー
ルドにおいて関連する、任意のフィードバックを実行す
るように要求される。次に、(ディスプレイを保証する
のに十分なだけ、ユーザがマウスボタンを押えていると
きには)ポップアップメニューがユーザのディスプレイ
スクリーン上で描かれ、これに次いで、ユーザによるメ
ニューの選択が許容される。ユーザがある選択をしたと
きには、この選択の評価がなされる。例えば、上記の例
において<Contact“Open”<Button
Text>>なる表現が評価されると、これにより、ボ
タンのテキストにおいて挙げられたファイル名が見出さ
れて、“Open”なるストリングがそれに対するもの
のようにされる。例えば、ボタンが“〜/writin
gs/diary”なるテキストストリングであったと
きには、その連続として、“Open〜/writin
gs/diary”なるストリングが生成されることに
なる。最後に、カーネル12はこのストリングをコマン
ドハンドラ(この例では“CommandTool”)
に渡す。次いで、コマンドハンドラ14はそのアクショ
ンを実行する(例えば、該当の名称が付されたファイル
をスクリーン上にディスプレイさせる)。最後に、カー
ネル12は、エディタに求めて、ボタンコマンドが終了
したことを示すために付与されるような任意のフィード
バックを実行させる。 値取得(Get Value) 。値がないために、この手順では何
もされない。 値セット(Set Value) 。値がないために、この手順では
何もされない。 不履行の態様(Default Behavior)。コマンドハンドラが
ないときには、ポップアップボタンはユーザによる読み
取りのためにそれらのコマンドをスクリーン上にディス
プレイさせるだけである。このクラスのボタンをデバッ
グするためには、これは有用なことである。
は、TRUEまたはFALSEなる値をもつことができ
る。その値がTRUEであるときには、そのテキストの
外見はブラック上のホワイト(白抜き文字のこと)であ
る。これに対して、FALSEであるときには、そのテ
キストの外見はホワイト上のブラックである。そのボタ
ン属性は次の通りである。 Poppy1 Class: MultiStateButton Name: GridOn Variables: (Value: BOOL = TRUE) UpClickMessage: (Toggle Grid) CommandHandler: Picture Region Feedbask: ( (Down (BeginButton ClearLooks LookItalic End Button)) ((Value TRUE) (BeginButton ClearLooks LooksWhiteOnBlack End Button)) ((Value FALSE) (BeginButton ClearLooks EndButton)) )
“Variables”フィールドがそれらのボタン属
性に現れること、および、“Value”と呼ばれる変
数が規定されることである。これに加えて注意されるべ
きことは、上記の例において“UpClickMess
age”と呼ばれるフィールドには、ユーザがこのボタ
ン上でのクリック操作を終了したときにコマンドハンド
ラに対して伝送するメッセージが記述されているという
ことである。“Name”なるフィールドは埋め込みボ
タンカーネルによって支持されている。これはカーネル
に対してこのボタンの値を参照するやり方を付与するも
のである。他のフィールドとしてのClass,Com
mandHandler,および Feedback
は、全てのボタンクラスに対する埋め込みボタンカーネ
ルによって支持されている。
な6クラスの特定ルーチンが実施される。 例示。このルーチンではVariablesフィールド
の読み取りがなされて、各名称を付された変数とその値
とを表すデータ構造が生成される。これで確実にされる
ことは、Valueの現在値に関連するフィードバック
を実行することにより、ボタンが初期的に正しい外見を
有することである。例えば、この例においては、ボタン
によってテキストエディタに伝送されるストリングは
“BeginButton Clearlooks LookWhiteOnBlack EndButto
n ”であるが、これによって(ClearLooksコ
マンドの結果として)ボタンのテキストが正常に見える
ようにされる。ただし、(LookWhiteOnBl
ackの結果として)ブラック上のホワイトにされてい
る。この例におけるBeginButtonコマンドお
よびEndButtonコマンドによってテキストエデ
ィタに指示されることは、ドキュメントの他の部分に対
してではなく、このボタンのテキストに対して他のコマ
ンドを適用することである。 ファイルアウト。自体をテキスト的に記述するために、
オリジナルのボタン属性において述べた各変数の名称お
よび現在の値を書き出すことにより、マルチ状態ボタン
はVariablesフィールドのための新規な値を構
築せねばならない。この例における書き出しには、変数
Valueの現在の値に依存して、ストリング“TRU
E”または“FALSE”が含まれる。ボタン属性の他
のフィールドは変化を生じることはなく、それらが読み
込まれたように書き出されることになる。 ボタンプレス。まず、カーネルが、押されているボタン
とFeedbackフィールドで関連している任意のフ
ィードバックをすることが要求される。上記の例におい
て、“Down”で始まるフィードバックラインで特定
されることは、ユーザがその上でクリックダウンしてい
るときに、ボタンがイタリックでディスプレイされるべ
きということである。ユーザがマウスボタンをリリース
したとき(または、選択がなされている旨の他の指示が
なされたとき)には、“Toggle Grid”なる
メッセージがコマンドハンドラに伝送される。この表現
を含む手順が(ポップアップボタンの例における<Bu
tton Text>または<Contact>のよう
な)呼びを出すときには、このような手順はこの時点に
おいて呼ばれることになる。 値取得。このルーチンでは、変数Valueの値が戻さ
れる。 値セット。ここでは変数Valueに対する新規な値が
指定されて、この新規な値に関連するフィードバックが
実行される。例えば、先の例においてValueがFA
LSEにセットされたときには、エディット命令“Be
ginButton ClearLooks EndB
utton”がテキストエディタに伝送され、これによ
って、ボタンがホワイト上でブラックのテキストになる
ようにされる。 不履行の態様。コマンドハンドラがなく、ユーザがこの
ボタンの選択を完了するときには、UpClickMe
ssageフィールドが無視される。これに代えて、V
alueが次に可能性のある値までサイクルされる。例
えば我々の例においては、各クリックによって、この値
がTRUEからFALSEに、または、FALSEから
TRUEに変化する。
ンは、グラフィックエディタに埋め込むことができるも
のである。ここで認められるように、円形(図7B)は
方形(図7A)よりもボールドにされていて、円形ボタ
ンは“オン”であり、これに対して方形ボタンは“オ
フ”であることが示されている。これら2個のボタンに
対する方形ボタン属性はほぼ同等のものである。これを
より詳細にいえば、方形ボタンに対する属性は次の通り
である。 Poppy1 Class: RadioButton CommandHandler: DrawShapes Name: Shape RadioButtonValue:Rectangle Variables: (State: BOOL =FALSE) UpClickMessage: (RectangleMode) Feedback: ( ((State TRUE) ((BeginButton) (LineWidth 5.0) (DashesOff) (End Button))) ((State FALSE) ((BeginButton) (LineWidth 2.0) (DashesOff) (End Button))) (Down ((BeginButton) (Dashed) (End Button))) (UP ((BeginButton) (DashesOff) (EndButton))
は、上記の例におけるボールドのワードである“Rec
tangle”は“Circle”で置換され、また、
ボールドのワードである“FALSE”は“TRUE”
で置換されることになる。
ttonのクラスで支持されるフィールドは、Radi
oButton Value,Variables,お
よびUpclickMessageである。Radio
Button Valueのフィールドで記述されてい
る変数Valueの一つの可能性がある値は、そのボタ
ン属性では明白には述べられていないけれども、同じ名
称を有する全てのラジオボタンによって実質的に規定さ
れている。例えば先の例においては、Valueは{R
ectangle,Circle}のセットを取り込む
ことができる。これに対して、Variablesおよ
びUpClickMessageの有する機能は、マル
チ状態ボタンに対するそれらの機能と類似のものであ
る。しかしながら、ラジオボタンに対しては、変数St
ateが規定されねばならず、また、BOOLEAN
(TRUE/FALSE)の値でなければならない。更
に、このStateの値は、ラジオボタンのセットの中
の一つのボタンだけに対してTRUEであることができ
る。一グループ内の全てのラジオボタンは同じName
フィールドを有している。他のフィールドであるCla
ss,CommandHandler,Name,およ
びFeedbackは、全てのボタンクラスに対する埋
め込みボタンカーネルによって支持されている。
が次のように実施される。 例示。このルーチンでは Variablesフィール
ドの読み取りがなされて、各名称を付された変数および
その値を表すデータ構造が生成される。ここで保証され
ることは、Stateの現在値に関連したフィードバッ
クを実行することにより、ボタンが初期的には正しい外
見を有していることである。例えば上記の例において、
方形のボタンは、グラフィックスエディタに対して、エ
ディタで解読可能なストリング“(BeginButt
on)(Line Width2.0)(Dashes
Off)(EndButton)”を伝送するが、これ
により方形が肉細にされ、アンダッシュにされる。同様
にして、円形のボタンは、エディタに対して解読可能な
ストリング“(BeginButton)(Line
Width 5.0)(DashesOff)(End
Button)”を伝送するが、これにより、エディタ
をして、ボールドにされ、アンダッシュにされた円形を
ディスプレイさせる。 ファイルアウト。マルチ状態ボタンと全く同様に、ラジ
オボタンでは、そのVariablesフィールドを表
すための新規なストリングを生成させねばならない。他
のフィールドは変化することがなく、読み込まれたと同
じストリングが書き出されることになる。 ボタンプレス。先の場合と同様に、まず、カーネルが、
押されているボタンとFeedbackフィールドで関
連している任意のフィードバックをすることが要求され
る。上記の例において、“Down”で始まるフィード
バックラインで特定されることは、ユーザがその上でク
リックダウンしているときに、選択されたボタンがダッ
シュ形状にされるべきということである。ユーザがマウ
スボタンをリリースしたとき(または、選択がなされて
いる旨の他の指示がなされたとき)には、“Recta
ngleMode”なるメッセージがコマンドハンドラ
に伝送される。この表現を含む手順が(ポップアップボ
タンの例における<Button Text>または<
Contact>のような)呼びを出すときには、この
ような手順はこの時点において呼ばれることになる。 値取得。ラジオボタンに対するGet Valueルー
チンが関係している。ラジオボタンに関連したグループ
の値は、そのState変数がTRUEであるグループ
の一つのボタンについてのRadioButtonVa
lueの値である。このために、上記の例においては、
Get Valueは“Circle”に戻ることにな
る。 値セット。Set Valueも関係のあるものであ
る。特定されたValueは、グループにおけるボタン
の一つのRadioButtonValueフィールド
の値でなければならない。このボタンのState変数
はTRUEにセットされ、また、グループにおける全て
の他のボタンのState変数はFALSEにセットさ
れる。各変数では、その新規な状態に対して適切なフィ
ードバックが実行される(状態の変化がなかったボタン
は、いかなるフィードバックアクションでも実行する必
要はない)。 不履行の態様。コマンドハンドラがなく、ユーザがこの
ボタンの選択を完了するときには、UpClickMe
ssageフィールドが無視される。これに代えて、選
択されたボタンのState値がTRUEにセットさ
れ、そのグループにおける、State変数を有する全
ての他のボタンはFALSEにセットされる。Set
Valueのルーチンについて説明されたように、フィ
ードバックの実行がなされる。
果たすために、コマンドハンドラアプリケーション14
(図1)に対してコマンドが伝送される。各ボタンで記
述されることは、コマンドの一部として該当のハンドラ
の名称を付することにより、または、ボタン属性の“C
ommandHandler”フィールドにおいて、い
ずれのコマンドハンドラ14が各コマンドを受け入れる
かということである。実際に、それらの名称をComm
andHandlerフィールドにおいてリストにする
ことにより、幾つかのコマンドハンドラに対してコマン
ドを伝送することができる。
システム(on−the−fly.1(?))に付加す
ることができる。埋め込みボタンカーネル12(図1)
をもってコマンドハンドラ名およびコールバックの手順
を登録するために、いずれのプログラムであっても、R
egisterCommandHandlerの手順を
呼ぶことができる。この後で、カーネル12は、その登
録されたコールバックの手順を呼ぶことにより、登録さ
れたコマンドハンドラ名に指向される全てのコマンドを
取り扱うようにされる。このコールバックの手順は2個
のアーギュメントを交互に取り込む。即ち、コマンドお
よび押されているボタンについての記述を交互に取り込
む。更に、コマンドが成功したか否かの指示に戻り、こ
れによって、コマンドが失敗したときには、異なるフィ
ードバックをユーザに提供することが許容される。
ハンドラ14(これらのハンドラによれば、広範なボタ
ンの態様に対する支持が与えられる)の少なくとも以下
のような基礎的セットが含まれている。
ドラ ユーザによって例えばCedarコマンドシェルでタイ
プされたものであっても、CommandToolコマ
ンドハンドラはそのコマンドアーギュメントを解読す
る。コマンドシェルからの任意の出力が全ての埋め込み
ボタンによって共有される特定のタイプスクリプトに書
かれることから、このCedarコマンドシェルは、U
NIXにおけるコマンドシェルと酷似した作業をするも
のである。
ラ Buttonizerコマンドハンドラは、ユーザが選
択したドキュメント要素に対してボタン属性の適用をす
る。これをより詳細にいえば、適用されるボタン属性が
取り出されるのは、いわゆるButtonizerボタ
ンの“ButtonAttributeLitera
l”と呼ばれる、ある特定の他では使用されない属性で
ある。ここで認められるように、双方の態様がButt
onizerボタンの属性をエディット操作することに
よって変更できるために、Buttonizerボタン
自体の態様をエディット操作することに関して、このア
プローチは、Buttonizerボタンのようなもの
の使用を通して生成されるボタンについてのボタン属性
の変更が極めて容易にされる。例えば、ここに示された
Buttonizerボタンの属性は、ポップアップボ
タンを生成させるためのものである。 ButtonAttribute: Poppy1 Class: PopUpButton Menu: ( ((Selected) "Buttonize""Applies the ButtonAttributeLiteral property of this button to the selected text") ) CommandHandler: Buttonizer ButtonAttributeLiteral: Poppy1 Class: PopUpButton Menu: ( ((Event1)"FirstItem""Sends Event1 to application") ((Event2)"SecondItem""Sends Event2 to application") ) CommandHandler: Meesage Window
れば、このボタン自体の態様が記述される。これに対し
て、ButtonAttributeLiteral属
性によれば、新規に生成されたボタンのButtonA
ttributeになるようにされる。従って、この特
定の場合においては、この新規のボタンは2個の要素を
備えたポップアップメニューを有することになる。更
に、このポップアップボタンによれば、そのコマンドが
“Message Window”と呼ばれるコマンド
ハンドラに伝送される。
ラ メッセージウインドウコマンドハンドラは、ユーザが読
み取れるように、フィードバックのために保留されてい
るディスプレイスクリーンの特定の領域において、コマ
ンドをプリントアウトするだけのものである。このコマ
ンドハンドラは、新規のボタンをデバッグするためには
特に有用なものである。
ラ ドキュメントエディタコマンドハンドラは、ボタンのコ
マンドストリングを、前述されたTiogaエディタの
ような適当なドキュメントエディタに対して伝送する。
このテキストストリングにおけるコマンドが一般的に使
用されるのは、ボタンが現れているドキュメントまたは
現にユーザが選択したドキュメント要素を含んでいるド
キュメントのエディット操作のためであるが、任意のド
キュメントをエディット操作するために用いることがで
きる。ここで認められるように、このコマンドハンドラ
によれば、ドキュメントエディタマクロをトリガするた
めにボタンを用いることが許容される。例えば、そのボ
タン属性を備えたポップアップボタンは次の通りであ
る。 ButtonAttribute: Poppy1 Class: PopUpButton Menu: ( ((ApplyLook Bold)"Bold""Make selected text bold") ((ApplyLook Italics)"Italics""Make selected text italic") CommandHandler: Document Editor このポップアップボタンによれば、ドキュメントエディ
タをして、第1のメニューアイテムが選択されたときに
は、選択されたドキュメントオブジェクトをボールドに
し、または、第2のメニューアイテムが選択されたとき
には、これをイタリック体にする。
ンに対するボタン属性は、それが能動状態にあるときに
はテキストの外見をボールドに変化させ、それがアイド
ル状態にあるときにはプレーンフェースに戻すためのも
のである。このフォント変化の達成は、コマンドストリ
ング“BeginButton ApplyLook
Bold EndButton”および“BeginB
utton RemoveLook Bold End
Button”を、ドキュメントエディタに対して伝送
することによってなされる。同様にして、セクション
D.5で記述されているボタンによれば、ユーザが選択
したいずれのテキストストリングであっても、エディタ
マクロが実行される。
ィット操作言語を解読できることが絶対に必要というこ
とではないが、この能力があるときには、埋め込みボタ
ンが更に有用になる。このようなエディタが与えられる
と、フィードバックをディスプレイするための、およ
び、ある特定のドキュメントエディタにおけるマクロ操
作を実行するための標準的なドキュメントエディタ操作
を求めるために、ユーザは、ボタン属性のサブストリン
グとしてのドキュメントエディット操作ストリングを含
ませることができる。
タンをトリガするときに用いられるものである。これら
の通信経路は次のような幾つかのステップにおいて用い
られる。 ステップ1:告知(特定されたボタンクラス13に対す
る埋め込みボタンカーネル12へのエディタ11) 例えば埋め込みボタン上のマウスボタンをユーザがクリ
ックすると、該埋め込みボタンを含んでいるドキュメン
トを管理するエディタ11により、埋め込みボタンカー
ネル12に対して、マウスアクション、ドキュメントに
おける埋め込みボタンの位置の記述、および、そのボタ
ン属性が渡される。カーネル12の側においてはボタン
属性の“Class”フィールドが読み取られ、特定さ
れたボタンクラス13のためのボタンハンドラに対し
て、上記の情報が転送される。 ステップ2:イニシャルフィードバック(エディタ11
に対する埋め込みボタンカーネル12への特定されたボ
タンクラス13) 適切であるときには、ボタンクラス13は、このマウス
アクションに関連する任意のフィードバックアクション
を実行するように、埋め込みボタンカーネル12に対し
て要求する。例えば、マウスがそれに入ったときにはボ
タンがその周囲にボックスを描くか、または、マウスが
その上でクリックしたときにはそれ自体をグレイにする
ことができる。カーネル12はボタンの“Feedba
ck”フィールドにおいてマウスアクションを調べ、そ
れで見出された任意のコマンドを、ボタンを管理するた
めのエディタ11に渡す。 ステップ3:(コマンドハンドラ14)に対する埋め込
みボタンカーネル12へのアクション(特定のボタンク
ラス13)の選択 この時点におけるボタンクラスは、アクションのメニュ
ーをポップアップすることができるか、または、マウス
ボタンが近接してくるのを待つだけである。一旦ユーザ
がこのボタンの実行のためのアクションを選択したとき
には、ある操作が進行中である(ステップ2を参照)こ
とを示すために、ボタンクラス13は更なるフィードバ
ックを要求することができる。そして、ボタンクラス1
3は、カーネル12に対して、選択されたアクションの
リストを伝送する。カーネルはボタン属性の“Comm
andHandler”フィールドにおいてその名称を
調べ、当該名称で登録されているコマンドハンドラルー
チン14に対して、該アクションのリストを渡す。 ステップ4:ファイナルフィードバック(エディタ11
に対する埋め込みボタンカーネル12への特定されたボ
タンクラス13) ボタンによってトリガされたアクションの実行を一旦コ
マンドハンドラ14が終了すると、ボタンクラス13
は、ある所定のファイナルフィードバック(例えば、埋
め込みボタンをそのオリジナルの外見に戻すこと)を実
行することを(カーネル12を介して)エディタ11に
求める。
システムは、多少は従来に属するコンピュータシステム
22の仮想メモリ21内に駐在している。例えば、この
コンピュータシステム22に好適に含まれているもの
は、メモリコントローラ25を介して中央処理ユニット
(CPU)24を仮想メモリ21にリンクさせるため
の、I/Oコントローラ28を介してキーボード26お
よびカーソルコントローラ(例えば、マウス)27にリ
ンクさせるための、そして、ディスプレイコントローラ
30を介してモニタ29にリンクさせるためのバス23
である。しかしながら、ここで理解されるべきことは、
この発明はホストコンピュータ22のアーキテクチュア
に依存するものではないことから、他のアーキテクチュ
アを有するコンピュータにもこの発明を適用できるとい
うことである。
ケーションプログラムによって問い合わせができる値が
含まれている。これらのタイプのボタンを取り扱うこと
については、セクションD.3.b において説明され
たメカニズムに対する2個の複雑な事態が必要とされ
る。
っては、これらのボタンの中の一つにおける現在の値を
見出すことが可能であるべきである。これに関連して想
起されることは、埋め込みボタンカーネル12によっ
て、能動的なドキュメントおよびアーギュメントとして
のボタンを取り込み、該ボタンの値をテキストストリン
グとして戻すようなルーチンGetValueが付与さ
れるということである。好都合なことに、アプリケーシ
ョンにおいて能動的なドキュメントをそのコントロール
パネルとして用いているときには、該アプリケーション
はこの能動的なドキュメントに対するポインタを有して
おり、このために、この手順の呼びが素直なものにされ
ている。ここで認められるように、カーネル12は、こ
のような能動的なドキュメントを、該アプリケーション
に対して名称の付されたコマンドハンドラ14として、
アプリケーションによってなされたルーチン登録要求に
応答して動的に登録することができる。
ケーションのアクションと同期がとられることを必要と
することがある。現在のカラーの値をセットするために
能動的なドキュメントを用いる、ドローイングプログラ
ムについて考えてみる。ユーザが現在のカラーをブルー
に変更した時点においてアプリケーションが遅れてお
り、第1の形状をディスプレイすることが終了していな
いとしても、ユーザは、カラーをレッドにセットして第
1の形状を描き、カラーをブルーにセットして第2の形
状を描くことが可能であるべきである。混乱を防止する
ために、現在のカラーを変更する1個または複数個のボ
タンは、現在の値を用いるアプリケーションがなされる
まで、報告する値の変更をすべきではない。
態ボタンおよびラジオボタンは、自動的に状態を変更す
ることはない。これに代えて、これらのボタンは、アプ
リケーションに対して状態変更の要求を伝送する。アプ
リケーションの準備がなされたときには、ルーチンSe
tValueを呼んで、新規な値をボタンにセットする
ようにされる。これにより、入力処理における第5のス
テップへとリードされる。
ク(エディタに対する埋め込みボタンカーネルへのアプ
リケーション) アプリケーションがSetValueを呼んだときに
は、埋め込みボタンカーネル12は、実行されるべきフ
ィードバックアクションのために変更される値を有す
る、各ボタンの“Feedback”フィールドの中を
みる。ある1個がリストにされているときには、このア
クションが、ボタンを管理するエディタ11に対して伝
送される。好適なことには、アプリケーションによる名
称を付されたボタンの値に対する要求に迅速に応答する
ために、埋め込みボタンカーネル12には、ハッシュテ
ーブル(標準的なコンピュータ科学のデータ構造のも
の。ドン・ナス(Don Knuth) のコンピュータプログラミ
ングの技法 (The Art of Computer Programming),第3
刊を参照)の値が保持されている。ここに、ハッシュテ
ーブルのキーはボタンの可変名称から導出されるもので
あり、また、このテーブルに蓄積されている値はボタン
の現在値である。1個のこのようなハッシュテーブル
は、それぞれの現に能動的なボタンを含むドキュメント
のために保持されているものであり、テーブルに関連し
たドキュメント内の名称が付されたボタンの変数がその
値を変化させる度に、当該テーブルの更新がなされる。
ンドウにリンクさせること 多くのシステムにおいては、ある与えられたアプリケー
ションは幾つかのウインドウにおいて一度にランするこ
とができる。しかしながら、ある与えられたウインドウ
のコントロールパネルにおける操作は、当該ウインドウ
の内容に対して適用するように意図されており、他のい
ずれのウインドウの内容に対して意図されるものではな
い。これに加えて、ウインドウによっては多くのペーン
を有するものがある。更に、ある与えられたコントロー
ルパネルにおける異なるボタンは、異なるペーンに対し
て適用するように意図されている。
トをコントロールパネルとして一般的に用いるために、
埋め込みボタンカーネル12によって付与される前述の
LinkDocToApplicationルーチン
は、ある与えられた能動的なドキュメントにおけるCo
mmandHandlerの名称をあるアプリケーショ
ンウインドウの特定のペーンにリンクさせるべく、アプ
リケーションによって呼ばれることができる。例えば、
メール読み取りプログラムでは、1個のペーンをメッセ
ージヘッダのディスプレイをするために使用し、他方の
ペーンをメッセージ本体のディスプレイをするために使
用することができる。そして、ヘッダに適用されるボタ
ンにおいては、そのボタン属性に“CommandHa
ndler:Headers”が蓄積されるが、これに
対して、メッセージ本体に関連したボタンにおいては、
そのボタン属性に“CommandHandler:B
odies”が蓄積される。この場合において、リンク
ルーチンは2回呼ばれることになる。即ち、ある1回は
“Headers”ボタンのリンクにされ、他の1回は
“Bodies”ボタンのリンクにされる。
アプリケーションペーンにリンクされないということで
ある。むしろ、それらが参照するCommandHan
dlerの名称がリンクされる。これで可能にされるこ
とは、それらが正しいCommandHandlerの
記述をしているときに、ドキュメントを含む正しいパネ
ルに対して自動的にリンクされるように、ランタイム時
において、コントロールパネルに対して新規なボタンを
付加することである。
ントに対してボタンの埋め込みが許容されるシステムに
よれば、次のような能力が付与されるということであ
る。 (1) ドキュメントに埋め込まれているボタンを用い
ることにより、リーダ(readers)は、ドキュメ
ントそれ自体における能力を用いて、ドキュメント内の
情報に対して作用を施すことができる。この統合作用に
よってユーザが許容されることは、彼等のタスクに集中
できること、および、そうでないときには該ドキュメン
トを“off to the side”のツールにす
るような、スクリーンスペースの節減をすることであ
る。 (2) 構築されたドキュメントがメールを介して伝送
されるためのシステムがどこに存在するにしても、ボタ
ンもこれと同様にメールを介して伝送することができ
る。そして、ユーザに許容されることは、有用なボタン
を容易に交換すること、および、電子的メールにおいて
受け入れた情報に対して迅速に応答することである。 (3) ユーザは、実在するコントロールパネルの一部
を新規なドキュメントにコピーして、カスタム化された
コントロールパネルを生成させることができる。
ーキテクチュアによれば、これらの付加的な利点が付与
される。 (4) それらは通常のドキュメント要素であることか
ら、標準的なドキュメントのエディット操作を通して、
ボタンのエディット操作をすることができる。 (5) ボタンによって実行されるアクションは、ボタ
ンそれ自体の内容または外見と関連させることができ、
このために、ドキュメントエディタで支持される任意の
プロパティと関連させることができる。かくして、それ
ら自体の外見を修正するために、または、同一のドキュ
メントエディタ内の他のオブジェクトに対してそれらの
プロパティを転送するために、該ボタンを用いることが
できる。 (6) ボタンは任意の形状を有することができる。多
くのシステムにおいては、ボタンは方形であるべきもの
とされている。しかしながら、ここで説明されているシ
ステムにおいては、ボタンは随意のドキュメント要素で
あり、また、それらの形状は、それらが埋め込まれるエ
ディタの能力によって制限を受けるだけである。 (7) このようなボタンは、ドキュメント要素上での
付加的なストリング属性として表されるだけのものであ
ることから、ボタンを含むドキュメントは、構築された
ドキュメントを生成させるために実在するソフトウエア
を介して生成させることができる。
のように更に詳細にレビューされる。 1. タスクへの集中を維持すること 電子的なドキュメントにおいては、その読み取られる多
くの情報が、ユーザによる即座の使用が意図されている
ものである。例えば、ディレクトリ内でファイルをリス
トにするコマンドをユーザが入力したとすると、このユ
ーザがしばしば所望することは、リスト内のファイルの
あるものについての、読み取り、名称の改正または削除
である。大方の現在のインタフェースにおいては、ユー
ザの注意が、コマンドシェルまたはファイルツールか
ら、リストにされたファイルの一つの上でのエディタウ
インドウをオープンすることへと転換されねばならな
い。しかしながら、それらがある所定のSymboli
csなアプリケーション内にあるように、該当のファイ
ル名がボタンであるときには、これらの操作は、リスト
から注意を転換させることなく、ファイルリスト上で直
接的に実行することができる。
含ませることができるボタンのセットは、各ルーチンの
テキストに近接しているものであって、該当のルーチン
がドキュメント化され、実施され、または呼ばれるとき
の、ルーチンのテスト操作を行い、そのパフォーマンス
のタイミングをとり、または、ハイパーテキストのリン
クをするためのものである。
内の情報について受信者(recipients)が操作する助けと
なるボタンを含ませることを所望することができる。例
えば、ソフトウエアのリリース、電話番号またはファイ
ルを記述したメッセージを伝送しているときには、それ
ぞれに、新規なソフトウエアのインストール、電話番号
のダイアル操作またはファイルのオープン操作のため
に、送信者はボタンを含ませることができる。
ンウインドウにおけるある特定のペーンにリンクするこ
とが可能であって、ボタンを含むパネルがコントロール
パネルとして作用することが許容される。コントロール
パネルがドキュメントであるときには、ドキュメントエ
ディタが使用可能にされて、それらを介してのナビゲー
ション操作、それらの修正操作、コピー操作およびそれ
らの部分の組み合わせ操作をして、特別なタスクのため
にカスタム化したコントロールパネルにされる。
ックスは、テキストパターンをサーチするためのもので
ある。それはボールドワードAppleに対
するサーチのためにセットされ、それをイタリックワー
ドBananaで置換するようにされる。図9Bにおい
ては、このコントロールパネルはドキュメントにコピー
されている。そのスペースを節減するために、“Par
ameters”と呼ばれる隠しボタンが使用されてお
り、図9Aに示されたコントロールパネルを閉じ込める
ようにされている。(ある1個の隠しボタンによって、
小規模のドキュメントがその内部に隠される;この隠し
ボタンが押されると、小規模のドキュメントが現れるこ
とになる。)図9Bに示されている、Search,Y
es,No,Substituteのボタンにより、1
対1または一括のいずれかの置換を実行するための機能
が付与される。これらのボタンとともに、ある特定のサ
ーチタスク(Appleをサーチして、それ
をBananaで置換すること)のためのコンパクトな
コントロールパネルが形成される。このパラメータを変
更するためには、ユーザは隠されたコントロールパネル
を露出させて使用することができる(図9A)。
ェーススキルになる 従来のドキュメントエディタによれば、ドキュメントの
情報について、生成、選択、移動、コピー、削除、格
納、検索、サーチ、スクロール操作、スタイルの変更、
選択的なディスプレイおよびプリント操作をすることが
できる。ドキュメントがユーザインタフェースであると
きには、これらの能力の全てが、ユーザインタフェース
の生成および使用の双方のために利用可能なものにな
る。
に、ドキュメントエディタについての通常のレイアウト
能力を用いることができる。境界およびアイコンを生成
させるためにはグラフィックエディタを用いることが可
能であり、また、適当なカラー、フォント、アンダーラ
インその他によってボタンのアウトラインや表の配置を
するためにはテキストエディタを用いることが可能であ
る。このようなコントロールパネルによれば、異なるペ
ージのサイズやスケールファクタに対するテキストのフ
ォーマットを改めるための、テキストエディタにおける
能力を継承することができる。
ントエディタによれば、ユーザインタフェースを介して
ナビゲーション操作するやり方が提供される。様々なタ
スクにおける助けとなるように、ユーザが構築できる大
規模のドキュメントは、セクションおよびサブセクショ
ンに組織されていて、多くのボタン、演算フィールドお
よびその他の能動的な要素を含むようにされている。こ
れらのユーザは、スクロール操作、レベルクリップ操作
(例えば、ヘッダ名だけをディスプレイすること)、お
よび、ユーザインタフェースの構成部を見出すためのテ
キストでのサーチまたはグラフィックスでのサーチをす
る上での利点を享受することができる。
ックスでのサーチ/置換(D.カーランダー(D. Kurlan
der)らの“グラフィックスでのサーチと置換 (Graphica
l Search and Replace) ”, コンピュータグラフィック
ス (Computer Graphics)第22巻、第4号 1988 年8月,
113〜120 ページを参照)は、実在するドキュメントか
らのユーザのインタフェースを迅速になさせるために使
用できるものである。例えば、ドキュメント名、アドレ
スおよび電話番号は、電話番号に類似するストリングを
サーチして、電話番号をダイアルするボタンにそれらを
転送することにより、能動的なドキュメントに転換させ
ることができる。
ディタの能力を使用できるように、ボタンを含んでいる
ドキュメントをドキュメントエディタの増強のために使
用することができる。この増強操作サイクルの結果とし
て、ドキュメントエディタおよびユーザインタフェース
の双方に、迅速な改善がもたらされる。例えば、ユーザ
は、テキストのサーチおよびスタイルの変更を含む、退
屈で繁雑なテキストエディタの操作を実行するような、
ボタンコレクションを生成させることができる。一つの
特に有用な実施例であるこのようなボタン(これは“s
tuffer”と呼ばれている)は、現在のテキストエ
ディタのカーソル位置において、それ自体のテキストの
内容を挿入するものである。
操作を改善するためにも用いることができる。一つの例
として、GUIDEハイパーテキストシステム(P.ブ
ラウン (P. Brown) の“ダイナミックドキュメントの著
作者のためのシンプルメカニズム (A Simple Mechanism
for Authorship of Dynamic Documents) ”J.C.バ
ンブリート(J.C. van Vliet)著, テキスト処理およびド
キュメント操作 (TextProcessing and Document Man
ipulation ,ケンブリッジ大学出版部, 内部会議会報
(Proceedings of the Internal Conference, Cambridge
University Press), 1986 年4月, 35〜42ページ) に
よって影響を受けたことは、ボタンの背後にあるドキュ
メントの部位を隠すことである。各ボタンプレスによっ
て、テキストは交番的に現れたり隠れたりする。このよ
うな隠しボタンによれば、関係のあるドキュメント部分
だけに対するスクリーンスペースを用いて、ユーザがド
キュメントを通してブラウズ操作をすることが許容され
る。ここで注意されることは、隠しボタンを有するドキ
ュメントを、積層されたコントロールパネルとして使用
できることである。なお、図9Aおよび図9Bを参照。
ために、通常とは異なるやり方でボタンを用いることが
できる。図10Aおよび図10Bには、イラストレーシ
ョンプログラムで描かれた円(サークル)のコレクショ
ンが示されている。ここで仮定されることは、ユーザ
が、これらの円について異なるカラー付けを試みようと
することである。通常のエディタコマンドを採用してそ
れぞれの円を順に選択し、それにカラーをあてはめるこ
とによって上記のことは実行できるけれども、それぞれ
のカラーを変更させるためには何回かのマウスクリック
が必要である。例えば、オンのときにはブラック、オフ
のときにはホワイトのように、それぞれの円を2状態の
ボタンにすることの方がはるかに容易なことである。こ
のようなイベントにおいては、カラー変化毎に1回のマ
ウスクリックによってカラーの変化をさせることができ
る。このような全ての変化がなされたときには、再びエ
ディット操作できるカラー直しされたピクチュアを残し
て、ボタンの能動性をオフにすることができる(また
は、ボタンのプロパティをその形状から排除することが
できる)。
る 任意のカーソルに基づくエディタは、テキスト、グラフ
ィックス、等式、表等のいずれに対するものであって
も、どのオブジェクトをユーザが指摘しているかを見出
すためのやり方を備えている。ボタン属性のアーキテク
チュアには、ユーザがボタンを押しているときに、これ
らの機能について記述する利点がある。かくして、ユー
ザが該当の形状を指摘しているときに、ボタンが埋め込
まれているドキュメントエディタが検出することができ
る限りは、ボタンの形状は、円形、三角形、菓子パン屋
(gingerbread man)、装飾的なレースパターン、その他
の任意の形状であることができる。図4Aを想起する
と、これに示されているボタンはシステム内の単一のラ
インセグメントであってもよく、ここでユーザに必要な
ことは、正確にオブジェクトにおいてではなく、該オブ
ジェクトの近傍で指示することだけである。
ての、より重要なプロパティの一つは、プロセスにおけ
る大方のステップに対し、通常のドキュメントエディタ
の操作の使用を介して、それらがユーザによって生成さ
れ、修正されることが可能なことである。しかしなが
ら、プログラムコントロールの下に、埋め込みボタンを
自動的に生成できることも有用なことである。例えば、
ディレクトリにおける全てのファイルをリストさせるコ
マンドによれば、ボタン属性がファイル名に付加され、
該ファイル名がボタンに転換されて、それが押されたと
きに対応のファイルがオープンするようにされる。
により、プログラムによってボタンを含むドキュメント
を生成させる能力のために、特別なプログラミング操作
は必要とされない。このシステムで必要とされること
は、ドキュメント要素上に随意の属性を備えて構築され
たドキュメントを生成させるための、プログラムに対す
るやり方を提供することだけである。この能力は、“p
rivate data”と呼ばれるデータを許容す
る、デジタルイクイップメント社 (Digital Equipment
Corporation)のCDAアーキテクチュアのようなシステ
ムには既に存在するものであるが、標準的なドキュメン
ト要素と関連するような、ある特定のドキュメント処理
の実施に限られている。これについては、CDA(合成
ドキュメントアーキテクチャ:Compound Document Arc
hitecture )マニュアル、デジタルイクイップメント
社, メイナード(Maynard),エムエイ(Ma), 1988年11月,
セクション3.1.5.6 が参照される。このような
構築ドキュメントのゼネレータが与えられると、ボタン
を生成させるために必要とされることの全ては、ボタン
として作用するドキュメントのそれらの部分を生成させ
るときに、“ButtonAttribute”と呼ば
れる属性を取り付けることである。
図である。
順次ステップを示す説明図である。
を示す説明図である。
選択されたグラフィックオブジェクトに変換することに
よってグラフィック形式マクロスを達成するためのボタ
ンの使用を示す説明図である。
フィードバックを示す説明図である。
フィードバックを示す説明図である。
まれた関連ラジオボタンの対からのユーザフィードバッ
クを示す説明図である。
標準的なコンピュータシステムのアーキテクチャによっ
て提供される通信経路を示すブロック図である。
れた制御パネルおよびそのコンパクト表現を示す説明図
である。
機能する円から構成されたグラフィックドキュメントを
示す説明図である。
ーネル、13 ボタンクラスマネージャ、14 コマン
ドハンドラ、20 ボックス、21 仮想メモリ、22
コンピュータシステム、23 バス、24 CPU、
25 メモリコントローラ、26 キーボード、27
カーソルコントローラ、28 I/Oコントローラ、2
9 モニタ、30 ディスプレイコントローラ
Claims (1)
- 【請求項1】 ユーザによってトリガされたときに所定
のアクションを開始するためのカスタムボタンを任意に
含んでいるユーザインタフェースを備えたコンピュータ
駐在ソフトウエアシステムであって;前記ボタンは、電
子的ドキュメントにおいて、このようなドキュメントの
人手による判断が可能なエレメントに関連して、隠され
た持続性のあるキャラクタストリング属性として具体化
されており;前記ボタンの各々のボタン属性ストリング
は、ボタンクラス、ボタンデータ、コマンドハンドラ、
および、任意所望のユーザフィードバックを指定するも
のであって:次のものを含む前記ソフトウエアシステム 前記ドキュメントの中のユーザによって選択されたもの
を前記システムにロードするための少なくとも1個のド
キュメントエディタであって、前記エディタは前記ユー
ザによって選択されたドキュメントの各々に対するデー
タ構造を構築しており、これにより、前記選択されたド
キュメントの任意のものにおいて具体化された任意のボ
タンに対するボタン属性が、それらの関連したドキュメ
ントエレメントの構成部分として、前記ドキュメントの
ためのエディタによって構築されたデータ構造において
始まるようにされており;ボタンオンモードおよびボタ
ンオフモードにおいて前記エディタを選択的に動作させ
るための、ユーザによるセットが可能な入力方向切り替
えスイッチを備えている前記エディタ:指定可能なボタ
ンクラスに対する少なくとも1個のクラス指定ボタンハ
ンドラであって、ある所定のボタンクラスに対するコマ
ンドリストをそれぞれに含んでいる前記ボタンハンド
ラ;前記ボタン属性によって与えられたコマンドを実行
するための、複数の指定可能なコマンドハンドラ;およ
び前記ユーザによってトリガされた各ボタンのボタン属
性を分析するための集中カーネルであって、そのように
分析しながら、前記ボタンについて指定されたボタンク
ラスおよび前記ボタンに対して指定されたコマンドハン
ドラを同定するようにされており;前記ボタンによって
要求されるアクションおよびフィードバックを実行する
ために、前記エディタ、前記ボタンについて指定された
ボタンクラスに対するボタンハンドラ、および、前記ボ
タンに対して指定されたコマンドハンドラの間で通信パ
スを提供する前記カーネル。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US57351290A | 1990-08-24 | 1990-08-24 | |
US573512 | 1990-08-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0749759A true JPH0749759A (ja) | 1995-02-21 |
JPH07104765B2 JPH07104765B2 (ja) | 1995-11-13 |
Family
ID=24292284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3208271A Expired - Lifetime JPH07104765B2 (ja) | 1990-08-24 | 1991-08-20 | コンピュータ駐在ソフトウエアシステムに対するユーザインタフェースとしての電子的ドキュメント |
Country Status (4)
Country | Link |
---|---|
US (1) | US5862395A (ja) |
EP (1) | EP0472444B1 (ja) |
JP (1) | JPH07104765B2 (ja) |
DE (1) | DE69129959T2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0934675A (ja) * | 1995-07-14 | 1997-02-07 | Nippon Telegr & Teleph Corp <Ntt> | 3次元仮想協同空間におけるオブジェクト操作方式 |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051273B1 (en) * | 1990-11-30 | 2006-05-23 | Microsoft Corporation | Customizing forms in an electronic mail system utilizing custom field behaviors and user defined operations |
US6314570B1 (en) * | 1996-02-08 | 2001-11-06 | Matsushita Electric Industrial Co., Ltd. | Data processing apparatus for facilitating data selection and data processing in at television environment with reusable menu structures |
US6100885A (en) * | 1996-07-06 | 2000-08-08 | International Business Machines Corporation | Supporting modification of properties via a computer system's user interface |
GB2315139A (en) * | 1996-07-06 | 1998-01-21 | Ibm | Selecting operations in an object-oriented user interface |
US6003050A (en) * | 1997-04-02 | 1999-12-14 | Microsoft Corporation | Method for integrating a virtual machine with input method editors |
DE69802915T2 (de) * | 1997-04-02 | 2002-07-04 | Microsoft Corp | Verfahren zur integration einer virtuellen maschine mit eingabemethodeeditoren |
US5966719A (en) * | 1997-11-20 | 1999-10-12 | Microsoft Corporation | Method for inserting capitalized Latin characters in a non-Latin document |
US6470364B1 (en) * | 1998-02-24 | 2002-10-22 | Sun Microsystems, Inc. | Method and apparatus for generating text components |
US6810522B2 (en) * | 1998-10-07 | 2004-10-26 | Invensys Systems, Inc. | Method and system for associating parameters of containers and contained objects |
US6356866B1 (en) | 1998-10-07 | 2002-03-12 | Microsoft Corporation | Method for converting a phonetic character string into the text of an Asian language |
US6198480B1 (en) | 1998-10-07 | 2001-03-06 | Wonderware Corporation | Object-oriented tag browser |
US6388877B1 (en) | 1999-02-04 | 2002-05-14 | Palm, Inc. | Handheld computer with open accessory slot |
US6592628B1 (en) | 1999-02-23 | 2003-07-15 | Sun Microsystems, Inc. | Modular storage method and apparatus for use with software applications |
WO2000057265A1 (en) | 1999-03-18 | 2000-09-28 | 602531 British Columbia Ltd. | Data entry for personal computing devices |
US7293231B1 (en) | 1999-03-18 | 2007-11-06 | British Columbia Ltd. | Data entry for personal computing devices |
US6467080B1 (en) * | 1999-06-24 | 2002-10-15 | International Business Machines Corporation | Shared, dynamically customizable user documentation |
JP2001075772A (ja) * | 1999-06-29 | 2001-03-23 | Mitsubishi Electric Corp | 画像表示装置および画像表示方法 |
US6823330B1 (en) | 1999-11-16 | 2004-11-23 | Gateway, Inc. | Site home navigation control |
US7028267B1 (en) | 1999-12-07 | 2006-04-11 | Microsoft Corporation | Method and apparatus for capturing and rendering text annotations for non-modifiable electronic content |
US9424240B2 (en) | 1999-12-07 | 2016-08-23 | Microsoft Technology Licensing, Llc | Annotations for electronic content |
US7185274B1 (en) | 1999-12-07 | 2007-02-27 | Microsoft Corporation | Computer user interface architecture wherein users interact with both content and user interface by activating links |
US7337389B1 (en) | 1999-12-07 | 2008-02-26 | Microsoft Corporation | System and method for annotating an electronic document independently of its content |
US7458014B1 (en) | 1999-12-07 | 2008-11-25 | Microsoft Corporation | Computer user interface architecture wherein both content and user interface are composed of documents with links |
US6714214B1 (en) * | 1999-12-07 | 2004-03-30 | Microsoft Corporation | System method and user interface for active reading of electronic content |
US6820111B1 (en) | 1999-12-07 | 2004-11-16 | Microsoft Corporation | Computer user interface architecture that saves a user's non-linear navigation history and intelligently maintains that history |
US6992687B1 (en) * | 1999-12-07 | 2006-01-31 | Microsoft Corporation | Bookmarking and placemarking a displayed document in a computer system |
US6957233B1 (en) | 1999-12-07 | 2005-10-18 | Microsoft Corporation | Method and apparatus for capturing and rendering annotations for non-modifiable electronic content |
US6882334B1 (en) | 1999-12-14 | 2005-04-19 | Gateway, Inc. | Apparatus and method for detection of communication signal loss |
US7243299B1 (en) | 2000-04-21 | 2007-07-10 | Microsoft Corporation | Methods and apparatus for displaying multiple contexts in electronic documents |
US6910208B1 (en) * | 2000-04-25 | 2005-06-21 | Microsoft Corporation | System and method of providing replaceable and extensible user interface for the installation of a suite of applications |
US20020087579A1 (en) * | 2000-06-23 | 2002-07-04 | Alan Chasanoff | Object universe |
US7234108B1 (en) | 2000-06-29 | 2007-06-19 | Microsoft Corporation | Ink thickness rendering for electronic annotations |
US6825861B2 (en) * | 2001-01-08 | 2004-11-30 | Apple Computer, Inc. | Three state icons for operation |
US7454714B2 (en) * | 2001-03-30 | 2008-11-18 | Aol Llc, A Delaware Limited Liability Company | Visually distinguishing menu items |
US20020171675A1 (en) * | 2001-05-15 | 2002-11-21 | International Business Machines Corporation | Method and system for graphical user interface (GUI) widget having user-selectable mass |
AUPR701701A0 (en) * | 2001-08-14 | 2001-09-06 | Mcdonald, Nathan | Document analysis system and method |
US8239759B1 (en) * | 2001-11-27 | 2012-08-07 | Adobe Systems, Inc. | System and method for editing documents using stored commands |
EP1496451A3 (en) * | 2003-05-16 | 2005-11-30 | Sap Ag | Computer system, searching method for in a computer system, a computer program product and an article of manufacture |
KR100970729B1 (ko) * | 2003-12-26 | 2010-07-16 | 삼성전자주식회사 | 입력 관리 장치 및 방법 |
JP4630672B2 (ja) * | 2004-01-23 | 2011-02-09 | キヤノン株式会社 | アクセス制御装置及びアクセス制御方法及びアクセス制御プログラム |
US7096142B2 (en) * | 2004-04-02 | 2006-08-22 | Agilent Technologies, Inc. | Report format editor for circuit test |
US7310783B2 (en) * | 2004-05-10 | 2007-12-18 | International Business Machines Corporation | Single submission buttons |
US7477239B2 (en) * | 2004-10-29 | 2009-01-13 | Xerox Corporation | Reconfigurable lighted keypad |
US7818755B1 (en) | 2004-12-22 | 2010-10-19 | Apple Inc. | Window server event taps |
EP1839107A4 (en) * | 2005-01-12 | 2009-04-29 | British Columbia Ltd 602531 | METHOD, SYSTEM, APPARATUS AND COMPUTER-READABLE MEDIA FOR DIRECTING AN ENTRY ASSOCIATED WITH A KEYBOARD-TYPE DEVICE |
US8552984B2 (en) | 2005-01-13 | 2013-10-08 | 602531 British Columbia Ltd. | Method, system, apparatus and computer-readable media for directing input associated with keyboard-type device |
US7774299B2 (en) * | 2005-05-09 | 2010-08-10 | Microsoft Corporation | Flow computing |
US20070061714A1 (en) * | 2005-09-09 | 2007-03-15 | Microsoft Corporation | Quick styles for formatting of documents |
US7895170B2 (en) * | 2007-02-14 | 2011-02-22 | Ricoh Company, Ltd. | Document management apparatus, document management program, and recording medium |
US8954887B1 (en) * | 2008-02-08 | 2015-02-10 | Google Inc. | Long press interface interactions |
US8311806B2 (en) | 2008-06-06 | 2012-11-13 | Apple Inc. | Data detection in a sequence of tokens using decision tree reductions |
US8738360B2 (en) | 2008-06-06 | 2014-05-27 | Apple Inc. | Data detection of a character sequence having multiple possible data types |
US8489388B2 (en) | 2008-11-10 | 2013-07-16 | Apple Inc. | Data detection |
US9195365B2 (en) * | 2009-03-25 | 2015-11-24 | Honeywell International Inc. | Automatic configurator of display objects |
US20110239146A1 (en) * | 2010-03-23 | 2011-09-29 | Lala Dutta | Automatic event generation |
US20120324377A1 (en) * | 2011-06-15 | 2012-12-20 | Microsoft Corporation | User interface extensibility for web application development tool |
US10228819B2 (en) | 2013-02-04 | 2019-03-12 | 602531 British Cilumbia Ltd. | Method, system, and apparatus for executing an action related to user selection |
US10222944B1 (en) * | 2016-02-24 | 2019-03-05 | The Mathworks, Inc. | Embedding user interface elements in documents containing code |
US10949173B1 (en) | 2018-10-29 | 2021-03-16 | The Mathworks, Inc. | Systems and methods for automatic code generation |
CN115994008B (zh) * | 2022-10-17 | 2023-08-01 | 上海神玑医疗科技有限公司 | 一种按钮装置软件功能的实现方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62194532A (ja) * | 1986-02-21 | 1987-08-27 | Hitachi Ltd | 処理対象指示図柄表示装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4723209A (en) * | 1984-08-30 | 1988-02-02 | International Business Machines Corp. | Flow attribute for text objects |
US4829470A (en) * | 1985-12-12 | 1989-05-09 | International Business Machines Corp. | Text flow around irregular shaped graphic objects |
JPH01195568A (ja) * | 1988-01-29 | 1989-08-07 | Hitachi Ltd | 電子化文書編集制御方式 |
JPH01234967A (ja) * | 1988-03-16 | 1989-09-20 | Hitachi Ltd | 文書作成装置 |
US4931783A (en) * | 1988-07-26 | 1990-06-05 | Apple Computer, Inc. | Method and apparatus for removable menu window |
US5065347A (en) * | 1988-08-11 | 1991-11-12 | Xerox Corporation | Hierarchical folders display |
US5111395A (en) * | 1989-11-03 | 1992-05-05 | Smith Rodney A | Automated fund collection system including means to eliminate duplicate entries from a mailing list |
US5063600A (en) * | 1990-05-14 | 1991-11-05 | Norwood Donald D | Hybrid information management system for handwriting and text |
-
1991
- 1991-08-20 JP JP3208271A patent/JPH07104765B2/ja not_active Expired - Lifetime
- 1991-08-23 DE DE69129959T patent/DE69129959T2/de not_active Expired - Fee Related
- 1991-08-23 EP EP91307810A patent/EP0472444B1/en not_active Expired - Lifetime
-
1993
- 1993-12-27 US US08/174,949 patent/US5862395A/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62194532A (ja) * | 1986-02-21 | 1987-08-27 | Hitachi Ltd | 処理対象指示図柄表示装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0934675A (ja) * | 1995-07-14 | 1997-02-07 | Nippon Telegr & Teleph Corp <Ntt> | 3次元仮想協同空間におけるオブジェクト操作方式 |
Also Published As
Publication number | Publication date |
---|---|
JPH07104765B2 (ja) | 1995-11-13 |
EP0472444A3 (en) | 1993-12-01 |
US5862395A (en) | 1999-01-19 |
DE69129959D1 (de) | 1998-09-17 |
EP0472444B1 (en) | 1998-08-12 |
DE69129959T2 (de) | 1999-02-11 |
EP0472444A2 (en) | 1992-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0749759A (ja) | コンピュータ駐在ソフトウエアシステムに対するユーザインタフェースとしての電子的ドキュメント | |
EP0793824B1 (en) | User definable pictorial interface for accessing information in an electronic file system | |
US5613122A (en) | Object-oriented operating system | |
RU2371758C2 (ru) | Интерфейс программирования для компьютерной платформы | |
US7721254B2 (en) | Programming interface for a computer platform | |
US5652884A (en) | Method and apparatus for dynamic update of an existing object in an object editor | |
US5583761A (en) | Method for automatic displaying program presentations in different languages | |
US8296654B2 (en) | Automatic guide for data analysis | |
JP2752040B2 (ja) | マルチメディア適用業務を作成する方法 | |
US8386919B2 (en) | System for displaying an annotated programming file | |
JP2002189595A (ja) | リフレッシュ可能なWebクエリを作成するための統合された方法 | |
US20060080607A1 (en) | Extensible help facility for a computer software application | |
US5982365A (en) | System and methods for interactively generating and testing help systems | |
JP2004005568A (ja) | レガシー・アプリケーションの高速gui体裁更新 | |
JPH07168710A (ja) | プログラムを構成するためのシステム及び方法 | |
JP2006228210A (ja) | 既存のコンテンツを用いた、タスクを実行するためのアクティブコンテンツウィザード実行可能ファイルの生成 | |
JPH05505262A (ja) | コンピュータオペレーティング及びファイル管理システム用ファイル特徴付け | |
US9817811B2 (en) | Web server system, dictionary system, dictionary call method, screen control display method, and demonstration application generation method | |
US7603624B2 (en) | System and method for styling content in a graphical user interface control | |
US20030037310A1 (en) | Visual programming tool and execution environment for developing computer software applications | |
Bier | Embeddedbuttons: supporting buttons in documents | |
JPH064280A (ja) | ウィズィウィグ式エディターでオブジェクトをユーザ制御する機能を備えたグラフィカル・ユーザ・インターフェース | |
JP2001318796A (ja) | 内外イベントドリブン方式によるプログラム実行制御方法、記録媒体およびプログラム作成支援システム | |
JPH09305366A (ja) | 画面表示最適化方法 | |
WO1996015492A1 (en) | Object-oriented operating system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19960426 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071113 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081113 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091113 Year of fee payment: 14 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091113 Year of fee payment: 14 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101113 Year of fee payment: 15 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111113 Year of fee payment: 16 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111113 Year of fee payment: 16 |