チケット #199 (assigned タスク) — at バージョン 3
(内部設計の改善)View管理方法の改善(所有者をAppにして、Windowとの結びつきを弱める)
報告者: | daisuke | 担当者: | daisuke |
---|---|---|---|
優先度: | 普通 | マイルストーン: | 2.1.9b4 |
コンポーネント: | アプリケーション | バージョン: | |
キーワード: | 関係者: |
説明 (最終更新者: daisuke) (diff)
(内部設計の改善)
現状、WindowがViewを所有しており、ViewとDocument等とのインターフェイスはWindowが介在していることが多い。
しかし、Viewの表示方法をいろいろにする(段組表示とか、複数ウインドウへ同じViewを表示するとか、マルチファイル検索結果をメインウインドウにひょうじするとか)場合には、扱いづらい。
以下のように改善する。
- Viewオブジェクトの所有者はAppに変更。Viewはアプリ内でユニークなObjectIDを持つ。
- Windowオブジェクトは内包するViewオブジェクトのObjectIDを保持。
Windowオブジェクト削除時に、内包Viewを削除するので、動作的には今までと同じ。
ただし、Viewを切り離し可能。 - Documentオブジェクトは、ViewオブジェクトのObjectIDリストを持つ。
Document変更時の更新等、Windowを介さずに、直接Viewのメソッドをコールする。 - Viewから別のViewに情報を渡すときも、Windowを介さずに、直接Viewのメソッドをコールする。
- Windowは基本的に「枠」としての機能しか持たない。
(基本的な設計思想としてはそうなっているが、WindowがViewを所有していたので、矛盾が生じていた。)
これにより、Windowの種類に関係なく、いろいろなWindow上で、Viewの機能を実現できるようになる。
1, 2を一度に変更。3, 4は徐々に変更。
追加
- Windowオブジェクトの所有者も必ずAAppにする。
- Viewは、そのViewが含まれるウインドウへのWindowIDを保持する。
チケットの履歴
Note: チケットについてのヘルプは
TracTickets を参照
して下さい。