はじめての2chブラウザのつくりかた(その2)

http://d.hatena.ne.jp/RNatori/20080714
から20行ほどいじることで、新・Mac専用ブラウザを作ることが出来ます。
http://homepage.mac.com/k_natori/Cocoa/downloads/MyFirst2chBrowser020.zip
完成図はこちら。

URLフィールドは動作しなくなってます。「Load」ボタンを読み込むと、新・Mac板が読み込まれてTableViewに表示されます。マウスで特定のスレッドをクリックすると、下部のThreadViewに表示されます。
Cocoa Bindingの利用により、スレッドが読み込まれるとTableViewに表示されている既読レス数も自動的に変更されます。さらに、アプリケーションを終了して再度起動しても、板の情報は自動的に保存/読み込みされています。


重要な変更の部分だけ解説。

MyDocument.h, MyDocument.m
-(IBAction)load:(id)sender {
	if (!_threadList) {
		T2ListFace *listFace = [T2ListFace listFaceWithInternalPath:@"2ch BBS/mac"
															  title:@"mac" image:nil];
		T2ThreadList *threadList = (T2ThreadList *)[listFace list];
		[self setThreadList:threadList];
	}
	[_threadList load];
}

load:メソッドの役割が変更されています。MyDocumentにはインスタンス変数_threadListが追加され、アクセッサが実装されています。

-(IBAction)selectThread:(id)sender {
	T2ThreadFace *threadFace = [[_threadFacesController selectedObjects] lastObject];
	if (threadFace) {
		T2Thread *thread = [threadFace thread];
		[_threadView setResExtractPath:@"allRes"];
		[_threadView setThread:thread];
		[thread load];
	}
}

selectThread:はTableView上でマウスクリックで選択されたときに呼ばれます。以前とは若干スレッドの生成方法が変わっています。
T2ThreadListは板を表すオブジェクト、T2Threadはスレッドを表すオブジェクトですが、どちらも生成するときに「〜Face」とつくオブジェクトに頼む必要があります。これはまあ、Thousand2chの流儀です。