バージョン

Panes 概要

ペイン タイプ(とその関係)について

ペインは、WinDockManager コンポーネントの基本的なビルディング ブロックのコンテナです。ペインは特別なタイプのウィンドウで、他のペインをはじめとするその他のウィンドウを含むことができます。WinDockManager の機能の大部分は、ペインを別のペインにネストできるようにするさまざまな方法から派生しています。WinDockManager におけるペインの基本クラスは DockablePaneBase です。このクラスは、すべてのペイン タイプが実装している基本的な機能とインタフェースを提供します。

WinDockmanager を実際に活用するためには、 3 つのペイン タイプについて理解する必要があります。これらの 3 つのペイン タイプについては以下で説明しています。ここでの説明の中心は、最も外側のレベルのペインは「DockAreaペイン」で構成されるということです。DockArea ペインは、任意の「コントロール ペイン」や「グループ ペイン」をドッキングまたはフローティングできる領域を表します。コントロール ペインは、ペイン階層で最も内側に位置するもので、コントロールのみを含むことができ、他のペインを含むことはできません。これら 2 つのレベルは DockableGroup ペインによって結合されます。DockableGroup ペインには、コントロール ペインか、他の DockableGroup ペインのどちらかを含むことができます。

DockArea ペインを作成した後は、その位置は変更されません(ただしフローティングの DockArea ペインの場合を除きます。この場合は画面上を移動できますが、常にフローティングのままになります)。ひとつの DockArea ペインの中に別の DockArea を含むことはできません。これらは常にペイン階層の最上位に位置します。

DockArea ペインの寿命は、このペインに関連付けられた他のペインによって決まります。DockArea ペインと、グループ ペインまたはコントロール ペインとの関連付けは、グループ ペインやコントロール ペインが DockArea ペインに表示されていない場合でも維持される場合があります。たとえば、コントロール ペインをコンテナの左端にドラッグしてドッキングしたとします。DockArea ペインがまだ存在しなければ、コントロール ペインを保持するための DockArea ペインが左側に作成されます。次に、コントロール ペインのキャプションをダブルクリックすると、ペインはフローティング ウィンドウになります(実際には、フローティングの DockArea ペインが作成されてコントロール ペインがそこにドッキングします。しかし、この説明の目的とは無関係であるためここでは無視します)。左端の DockArea ペインは、引き続きコントロール ペインに関連付けられています。これは、フローティング ウィンドウのキャプションがダブルクリックされた場合に戻るべき場所を、コントロール ペインに「記憶しておく」必要があるためです。DockArea ペインは、コントロール ペインがフローティングしているかぎり存在し続けます。ここで、フローティング ウィンドウを閉じたとします。コントロール ペインはもはや表示されなくなりますが、DockArea ペインは引き続き存在してコントロール ペインに関連付けられています。これは、コントロール ペインを閉じることは単にペインを非表示にするだけであるためです。ここで、コントロール ペインの非表示を解除してそのキャプションをダブルクリックしても、DockArea ペインとの関連付けは引き続き有効であり、表示される位置は記憶されています。

ペインのピン固定状態およびグループ化状態もまた、対象となる DockArea ペインとの関連付けが存在するかどうかを決めるエレメントになります。コントロール ペインは、コンテナの右端に沿ってドッキングされているグループ ペインに追加できますが、左端にある元の DockArea ペインとの関連付けは必ずしも失われるわけではありません。結合したグループ ペインは右端の DockArea ペインに関連付けられますが、コントロール ペイン自体は引き続き左端の DockArea ペインに関連付けられています。コントロール ペインを下のドッキング領域にドラッグしてそこにドッキングした場合、そのペインがそのドッキング領域に存在する ただひとつの コントロール ペインであれば(つまり、グループと結合していなければ)、左端の DockArea ペインとの関係は失われます。そして、左端の DockArea ペインは、それに関連付けられたグループ ペインやコントロール ペインが他に存在しなければ、解放されます。

DockableGroupPane もまた、同様の方法で必要に応じて作成および破棄されます。異なるタイプのペイン同士では、そのやり取りが非常に複雑になる可能性があります。さまざまなペインについてそれらのすべての関係がどのようになっているかを説明することは、特にペインのグループが関与するときは難しくなります。加えて、グループはタブ グループやスライド グループなどのさまざまな方法で表示されます。また、グループとコントロール ペインは同じドッキング領域を共有でき、ピンを固定または解除できます。これらの事実もまた、ペインの関係を複雑にしています。ここで重要なことは、「与えられたペインが以前の状態に戻る能力を失うことなく、さまざまな状態を切り替えることができるという要件に基づいて、ペインの構造が決定される」ということです。ペインのドッキングが解除された場合、コントロールではそのペインを再ドッキングする方法がわかっている必要があります。同様に、ペインのグループ化が解除された場合、コントロールではそのペインを再グループ化する方法がわかっている必要があります。この単純な原理に従っていれば、さまざまなタイプのペイン同士の関係とそれらのさまざまな状態について理解することが、はるかに簡単になります。

コントロール ペイン

クラス名: DockableControlPane

派生元: DockablePaneBase

説明: コントロール ペインは、コントロールを含むための特別なペインです。コントロール ペインはピン解除できるただひとつのペイン タイプです。ピン解除は、コントロール ペインまたはその祖先グループの Unpin メソッドが呼び出されたときに、プログラムから実行される場合があります。あるいは、ピン解除ボタンを押すか、またはペインのキャプションまたはタブ項目を右クリックしたときに表示されるコンテキスト メニューから AutoHide オプションを選択することによって、ユーザー インターフェイスを通じて呼び出される場合もあります。コントロール ペインがピン解除されると、そのコントロール ペインが格納されているドッキング領域の位置に応じて、タブがピン解除タブ領域に表示されます。

WinDockManager Panes Overview 01.png
WinDockManager Panes Overview 02.png

グループ ペイン

クラス名: DockableGroupPane

派生元: DockablePaneBase

説明: グループ ペインは、他のペインをグループ化するための基本となるペインです。グループ ペインには、コントロール ペインや他のグループペインを含むことができます。グループ ペインにはコントロール ペイン(DockableControlPane)とグループ ペイン(DockableGroupPane)を含むことができるため、グループの Panes コレクションが返す型は DockablePaneBase になります。このため、いくつかの型固有のプロパティ(DockableControlPane の Control プロパティなど)にアクセスするために、値を派生型にキャストしなければならない場合があります。

注: いったん作成されたグループ ペインは、位置が変更されることは決してありません。子のコントロール ペインの位置が変更されると、そのコントロール ペインを格納するための新しいグループ ペインが作成されます。新しいグループは、含んでいるグループのプロパティを使用して初期化されます。グループは閉じた状態のペイン、ドッキングされたペインを参照しているフローティング ペイン、ピン解除されたペインなどの他のペインによって引き続き参照されている可能性があります。

DockArea ペイン

クラス名: DockAreaPane

派生元: DockableGroupPane

説明: ドッキング領域はグループ ペインの特別なタイプで、他のグループ ペインに含まれることはできません。これらは、他のすべてのペインを含み表示するためのルートの祖先ペインとなります。ドッキング領域は、コンテナの左、右、上、または下にドッキングして作成できます。フローティング ウィンドウ内に作成することも可能です。グループ ペインの場合と同様に、いったん作成された DockArea ペインは移動できません。