エディタ部分のUIって結構作るのマンドクセだよな
どこまで機能をつぎ込めば良いのかわかんね

全てのテキストエディタは
・テキスト全体を文字列としてget/setできる
という責任を継承しなければならない

行指向のエディタなら、とりあえず必要そうなのは
・行数をかえせるといい
・行の削除できるといい
・ある行の直前/直後に行を追加できるといい
・行単位の文字列をget/setできるといい

グラフィカルにするなら、テキストエディタと行指向のエディタを継承して
・テキストの一部の表示を変えられればいい
…ただし諸刃なので描写が重くなったりするかも

さらにcaretも表示させたいのなら
・現在のキャレットの位置のget/set
 →行指向なら(行,位置)がキャレットの位置で、行指向でなければ(文字の位置)あたりがキャレットの位置になるかな
  これだけでだいぶ処理が変わる
・キャレットの表示に関する責任

他にもmemntoパターンを使ってundo/redow実現したり、cut/copy/pasteとかsearchとかを
詰め込むのかどうか、詰め込むならどんなAPIで接続するのかも考えなきゃいけないよな

マンドクセ