JTextAreaでテキストエディタを作ってます。

UndoManagerを利用するところまではわかったのですが
そこから先がどうもわかりません

どのリスナでテキストが変更されたかを関知するか、
どこにundo内容を格納するか。
等、よろしくお願いいたします