アプリケーションの本体のクラス名は TextEditor です。
このクラスは次のようなコンポーネントからできています。
本体(Panel)-+-サブパネル1(Panel)-+-ロードボタン(Button)
| +-セーブボタン(Button)
| +-ファイル名入力アイテム(TextField)
| +-クリアボタン(Button)
|
|-テキスト表示アイテム(TextArea)
|
+-サブパネル2(Panel)-+-メッセージ表示アイテム(Label)
TextEditorは Frameではなく Panelのサブクラスとして設計されています。 従って、 さらに大規模なアプリケーションの内部にその一部として組み込むことができます。 単独で起動すると main() メソッド内で独自に ExitableFrame (第6週参照)を生成し、その内部に自分自身のオブジェクトをレイアウトします。
TextEditorはファイルの読み込み(load)と書き出し(save)の両方の機能を持ちます。
読み込みのみの機能を持つクラスとして FileViewerを用意しました。
TextEditorは FileViewerのサブクラスとして実現されていますが、
FileViewerも単独のアプリケーションとして起動することができます。
Buttonのアクション処理は、TextEditor,FileViewerとも
innerクラスとして Adapterのクラスを用意しています。
それぞれの名前は FileViewer$ClearAdapter, FileViewer$LoadAdapter,
TextEditor$SaveAdapter です。
ファイルの読み込み、書き出しの機能はウィンドウコンポーネントとは
独立のクラスで実現されています。
それぞれ FileLoader, FileSaver という名前のクラスです。
FileLoader と FileSaver は他のアプリケーションでも再利用可能です。
利用しやすいように、FileLoader.loadText() および FileSaver.saveText()は
static メソッドとして用意しました。
ファイルの読み込み処理、書き出し処理に発生したエラーを
専門に取り扱うために、それぞれ FileLoaderException, FileSaverException
という public な Exception のクラスも用意しました。
ExitableFrame ------- FileViewer ----------- TextEditor
| |
+ FileLoader + FileSaver
| |
+ FileLoaderException + FileSaverException
| |
+ LoadAdapter + SaveAdapter
|
+ ClearAdapter
ソースファイル