Delegate方式のスクリプト

OpenKitのスクリプトの利用方法について、
property parent : script "OpenKit"
という宣言でdropletの親として使用する方法を紹介したところ、Script FactoryのKuritaさんから、

AppleScript のライブラリを実装する際に、そのライブラリを parent にするような設計は良く無い。そのライブラリを利用するスクリプトの設計を制限することになってしまう。デリゲートパターンを利用すべき。

との意見をいただきました。
そこで、Kuritaさんから教えていただいたスクリプトをもとに、OpenKitを利用しながら、droplet本体には好きなparentなり何なりの設定をすることができるdelegate方式のスクリプトを書いてみましたので、ご利用ください。
OpenKitの中に含まれるスクリプトハンドラはあくまでも私自身のために作られているので、他の人にとって使いやすいとは限りませんから、この方がいいかもしれません。

property parent : script "CoreObj" --好きなparentを使える

on openFile(aFile)
display dialog (name of (info for aFile))
end openFile
on run
set aList to {choose file}
tell aSample
set_delegate(me)
openFinderList(aList) --OpenKitのハンドラ
end tell
end run
on open aList
tell aSample
set_delegate(me)
openFinderList(aList) --OpenKitのハンドラ
end tell
end open

script aSample
property parent : script "OpenKit"
property _delegate : missing value

on set_delegate(aScript)
set my _delegate to aScript
end set_delegate
on openFile(aFile)
tell _delegate to openFile(aFile)
end openFile

end script

スクリプトエディタで開く
テーマ: Mac | ジャンル: コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する