KMAppDelegate (Inherit from CMRAppDelegate)
- CMRAppDelegateに幽宮用メソッドを追加
- mainWindow のwindowControllerを保持 CMRMainBrowserの代わり
KMDocument (Inherit from NSDocument)
- Browserクラスの代わりとなるもの。
- 1つのファイル(スレッド)に付き1つのインスタンスが生成される。
- 生成時にはWindowControllerを持たない。
- ファイルの読み込み、ダウンロードはこのクラスが担当する。(ただし、実際の処理は専用クラスに委譲する)
KMLogDocumentWindowController(Inherit from NSWindowController)
- Viewコンポーネントのロード配置及び相互通信のハブ役
KMBrowser (Inherit from KMLogDocumentWindowController)
- CMRBrowserに変わるクラス
- 掲示板リスト、スレッド一覧、スレッドビューなどを配置する
KMLogWindowController (Inherit from KMLogDocumentWindowController)
- スレッド単独表示用クラス
KMBrowserDocumentProxy (Inheit from NSObject)
- KMBrowserのアクション振り分け用のクラス
- browerプロパティのドキュメントが変わっても、常にそのドキュメントとして振る舞う
- KMBrowserはドキュメントに関わらず同じインスタンスをドキュメントとして扱えば良い
- プロクシなのでアクション以外にでも使えるがアクション専用で!
KMResponsiveViewController (Inherit from NSViewController)
- レスポンダーチェーンに割り込むいつものあれ
KMBoardList (Inherit from KMResponsiveViewController)
- 掲示板リスト表示
- NSOutlineViewとSmartBoardListを使用
KMThreadList (Inherit from KMResponsiveViewController)
- スレッド一覧表示
- ThreadsListTableとBSDBThreadListを使用
KMStatusLineViewController (Inherit from NSViewController)
- ステータスバー用クラス
KMLogViewController (Inherit from KMResponsiveViewController)
- 特に仕事なし!
KMBSLogViewController (Inherit from KMLogViewController, Conformed to KMBSLogPopUpOwner)
- スレッド表示
- CMRThreadViewを使用
- BSTitleRulerViewを使用
- BSLayoutManagerを使用
- KMDocumentをrepresentedObjectに取る
- KMDocumentより得たデータをNSTextStorageに変換(実際の処理はCMRThreadDictReader,CMRThreadComposingTaskに委譲)
KMBoardListItemCell (Inherit from BSIconAndTextCell)
- 掲示板リスト用セル
- ValueとしてBoardListItemを受け取る
KMThreadDeleteCenter (Inherit from NSObject)
- スレッドのログ削除と再取得用
- 削除と再取得双方の共通シートを管理する
- 実際の削除も行う
- 実際の再取得は行わない
KMHistoryStack (Inherit from NSObject)
- KMBSLogViewController用の履歴管理クラス
- 現在はKMDocumentをそのまま保持している
KMWorkerEmulator (Inherit from NSObject)
- CMRThreadLayoutを排除するためのダミークラス
- layoutDummyプロパティが与えられた場合それをCMRThreadLayoutのダミーとしてexecuteWithLayout:メソッドをinvokeする
KMBSLogViewDelegate (Inherit from NSObject, Conformed to NSTextViewDelegate)
- KMBSLogViewControllerからCMRThreadViewのdelegateを分離
KMBSLogPopUp (Inherit from NSObject)
- KMBSLogViewControllerからPopUp関連を分離
- KMBSLogPopUpOwnerプロトコルを提供
KMReplyMessenger (Inherit from NSObject)
- KMBSLogViewControllerから返信関連を分離
Extentions
CMRFavoritesManager+KMAddition (Category of CMRFavoritesManager)
- お気に入りに追加/削除アクションとバリデーションを処理
CMRThreadAttributes_KMAddition (Category of NSDictionary)
- CMRThreadAttributesとそれと同等の内容を持つNSDictionaryを同列に扱う
- ポリモーフィズムでシームレスに
- CMRThreadAttributes のConverterカテゴリに相当
以下ほんとのおまけ
KMLogViewController (Inherit from KMResponsiveViewController)
- テスト用にでっち上げたクラス
- CMRThreadViewを使用するのはかなりの労力がいりそうだったので他のクラスの動作確認のために作ったもの
- .threadをHTMLに変換してWebViewにスレッドを表示する
KMLogBuilder (Inherit from NSObject)
- .threadをスレッド表示データに変換するクラス
KMHTMLBuilder (Inherit from KMLogBuilder)
- .threadをHTMLに変換するクラス
KMThreadConverter (Inherit from NSObject)
- .threadを受け取ってスレッド表示データに変換するクラス
- 変換アルゴリズムはKMLogBuilderで指定