FileAppは一度に一つファイルを編集する標準的Curlアプリケーションのひな形となる抽象クラスです。標準的なファイルメニューを提供します。
使い方
Curlアプリケーションでこのクラスを継承します。
コンストラクタは以下のようになっています。
{default || タイトルバーに表示されるアプレットの名前です。 app-name:String, || ファイル選択ダイアログに使用するフィルターです。 filters:FileDialogFilterArray = FileDialogFilter.all-files-filter-array } |
以下のpublicメソッドがあります。
file-new
“file-new“コマンドの実行時に実行されます。ただし、編集中のファイルに未保存の変更が確認できれば、閉じる前に保存するか、そのまま閉じるか、キャンセルするかを問い合わせ、その後抽象メソッドdo-file-newを呼びます。do-file-newはオーバライドする必要があります。
file-open
“file-open“コマンドの実行時に実行されます。ただし、編集中のファイルに未保存の変更が確認できれば、閉じる前に保存するか、そのまま閉じるか、キャンセルするかを問い合わせます。その後、開きたいファイルのurlを抽象メソッドdo-file-openに渡します。do-file-openはオーバライドする必要があります。具体的な読み込み処理はそこに記述します。
file-revert
“file-revert“コマンドの実行時に実行されます。未保存の編集内容は破棄されます。do-file-openを呼んでファイルを読み込み直します。
file-save
“file-save“コマンドの実行時に実行されます。ファイル名が未設定なら保存場所を決めるダイアログを表示します。その後、do-file-saveまたはdo-file-save-asを呼びます。do-file-saveはオーバライドする必要があります。具体的な保存処理はそこに記述します。
file-save-as
“file-save-as“コマンドの実行時に実行されます。ファイルの保存場所を決めるダイアログを表示して名前を決めた後、do-file-save-asを呼びます。具体的な保存処理はオーバライドされたdo-file-saveに記述されたものが実行されます。
exit
“exit“コマンドの実行時に実行されます。アプレットを終了します。ただし、編集中のファイルに未保存の変更が確認できれば、閉じる前に保存するか、そのまま閉じるか、キャンセルするかを問い合わせます。
get-file-menu
これらのコマンドをMenuActionにひもづけたSubMenuを返します。
note-edited
アプリケーション上でファイルの内容に編集が施されたときに呼び出してください。このメソッドを呼ぶことにより、編集内容が保存を必要としていることをsave-needed?アクセサの値から知ることが可能になります。
note-file-saved
ファイル保存が行われたときには自動で呼び出されます。このメソッドを呼ぶことにより、編集内容の状態が保存を必要としないことをsave-needed?アクセサの値から知ることが可能になります。
サンプル
http://developers.curlap.com/curl/curl-ext/hp2/fileappdemo.curl
ごくシンプルなテキストエディタです。TextArea内に編集を加えると、ファイルメニューから「新規」や「開く」を選択したときに、保存するかどうかを問い合わせるダイアログが出ます。「開く」や「保存」を行って以降未編集の状態なら、「新規」や「開く」を選択しても問い合わせは出ません。この判断をするためのコードをほとんど書かずにこの動作が実現できていることにご注目ください。