ページ

2008年12月6日土曜日

吹き出しウィンドウ(3)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

吹き出しの続き。
描画の目処が立ったので、アプリへ組み込める様にクラスを整備する。ビューに加えて新たに2つのクラスを追加した。

FukidashiView
FukidashiWindow
FukidashiController


FukidashiWindowはビュー(FukidashiView)を載せるウィンドウ。FukidashiControllerは名前の通りコントローラで、この機能を使うクライアントコードと、吹き出し表示の間を調整する。

(イメージ)
 <<クライアント>>
    |
    |表示指示
    ↓
 FukidashiContoroller
    |
    |表示設定・大きさ調整
    ↓
 FukidashiWindow
 FukidashiView


位置決め後回しとして今回は渡された文字列をこの仕組みで表示するところまで実装した。コントローラの実装はこんな感じ。
FukidashiController.m
- (id)init
{
self = [super init];
if (self) {
_window = [[FukidashiWindow alloc] init];
_view = [[FukidashiView alloc] init];
[_window setContentView:_view];
}
return self;
}
- (void)showMessage:(NSString*)message
{
[_view setMessage:message];
NSSize window_size = [_view areaSize];
[_window setContentSize:window_size];
[_window makeKeyAndOrderFront:self];
}


#initでウィンドウとビューのインスタンスを作り紐づける。クライアントコードから showMessageメッセージが来たらビューに文字列を渡した後、表示サイズを計算させウィンドウサイズに設定する。

実行結果はこうなる。



サンプル:Fukidashi-2.zip