AppleScript による実装

AppleScript による実装


AppleScript による実装例だ。かりやんさんにソースコードをいただきました。ありがとうございました。

handlerObj スクリプトオブジェクト

script handlerObj
 on previewReq()
  tell my target to previewReq()
 end previewReq
 on printReq()
  tell my target to printReq()
 end printReq
 on helpReq()
  tell my target to helpReq()
 end helpReq
end script

buttonObj ハンドラ

--ボタンを表すスクリプトオブジェクトの生成ハンドラ
on buttonObj(aDialog)
 script buttonObj
  property parent : handlerObj
  property target : aDialog
  on previewReq()
   return "button's previewReq"
  end previewReq
 end script
end buttonObj

dialogObj ハンドラ

--ダイアログを表すスクリプトオブジェクトの生成ハンドラ
on dialogObj(anApplication)
 script dialogObj
  property parent : handlerObj
  property target : anApplication
  on printReq()
    return "dialog's printReq"
  end printReq
 end script
end dialogObj

applicationObj ハンドラ

--アプリケーションを表すスクリプトオブジェクトの生成ハンドラ
on applicationObj()
 script applicationObj
  property parent : handlerObj
  on helpReq()
    return "application's helpReq"
  end helpReq
 end script
end applicationObj

run ハンドラ

on run
 set aApp to applicationObj()
 set aDialog to dialogObj(aApp)
 set aButton to buttonObj(aDialog)

 tell aButton to helpReq()
end run

AppleScript では、実装されていないハンドラを呼び出す方法がないので、基本的に決めうちのハンドラとリクエストだけの対応になるようだ。新しいハンドラを追加するには handlerObj を変更する必要があるし、動的なリクエストの追加にも答えるのが難しい。