Solaris 共通デスクトップ環境 Motif への移行

静的配置と動的配置

前述のように、アプリケーションを Motif に移植する作業は、オブジェクトごとにスワップするわけではありません。このようなスワップは、アプリケーションユーザインタフェースの静的面に集中しています。特に、複雑なアプリケーションには、アプリケーションの基盤を管理する多数のオブジェクトが入っており、基盤を動的な状況で機能させます (アプリケーションの動的面には、ウィンドウのサイズ変更、ローカリゼーション、フォントの変更などが含まれますが、他の要素も含まれます)。OPEN LOOK と Motif のツールキットでは、アプリケーション内の動的ジオメトリを処理するこれらの「マネージャウィジェット」が異なります。マネージャウィジェットをオブジェクトごとにスワップしようとすると、アプリケーションは希望どおりの動的面を示しません。通常、アプリケーションの動的面の処理に適した設計を導入すると、アーキテクチャはより複雑になります。

XView では、多様な動的配置は使用できません。主として、オブジェクトは位置 (x,y) で固定されているため、アプリケーションフォントの変更や、アプリケーションの言語対応化は難しい場合があります。Motif と OLIT には、多様なジオメトリマネージャウィジェットがありますが、両者は大きく異なります。

表 6-1 OLIT と Motif のジオメトリマネージャウィジェット

OLIT 

Motif 

コメント 

BulletinBoard

XmBulletinBoard

基本的には同等。子を静的な x,y ピクセルベースで配置できます。 

Caption

(なし) 

OLIT の Caption ウィジェットを使用すると、コントロールウィジェットの 4 面のいずれかにラベルを自動的に配置できます。

この機能を Motif に導入するには、ラベルとコントロールという 2 つの子が入った別の XmRowColumn ウィジェットを作成します。

ControlArea

XmRowColumn

どちらのウィジェットを使用しても、行と列で子を配置できます。OLIT の ControlArea ウィジェットは、コロンを使用した Caption ウィジェットの子の垂直整列をサポートしています。これは、Motif の XmRowColumn ウィジェットにはない機能です。1

Motif の XmRowColumn ウィジェットは、特定のサイズポリシー (通常は、特定の行または列内の子を同じサイズにする) を子に適用しますが、OLIT の ControlArea ウィジェットにはこの機能はありません。

FooterPanel

(なし) 

OLIT の FooterPanel ウィジェットを使用すると、最下部にフローティングフッタの子が付いたウィンドウを配置できます。

フッタとして使用できるウィジェット (XmForm または XmRowColumn ウィジェットなど) として「メッセージ領域の子」を設定すると、Motif の XmMainWindow ウィジェットをこの配置用に構成できます。

Form

XmForm

どちらのウィジェットを使用しても、その子を相互に相対的に接続し Form 自体に相対的に接続できますが、これらの「アタッチメント」の表示はそれぞれ異なります。OLIT の Form ウィジェットは x 軸と y 軸のアタッチメントリソースを提供しますが、Motif の XmForm ウィジェットは 4 面 (上下左右) すべてに別のアタッチメントを提供します。両方のアタッチメントパラダイムがよくわかっている場合は、OLIT の Form ウィジェットアタッチメントを同等の XmForm ウィジェットアタッチメントに変換できます。Motif の XmForm ウィジェットは、「Position」という特殊なアタッチメントタイプも提供します。Form ウィジェットのサイズが変化するたびに変化する Form ウィジェット内の動的位置に子を接続できます。これにより、Form ウィジェットの占有部分に常に一定のパーセントを占めるように子を構成できます。

RubberTile

(なし) 

OLIT の RubberTile ウィジェットは、RubberTile ウィジェットの高さ (垂直方向の場合) または幅 (水平方向の場合) に一定のパーセントを占めるように子を構成できます。

Motif では、XmForm ウィジェット内で Position ベースのアタッチメントリソースを使用すると、同様の機能を得られます。

ScrolledWindow

XmScrolledWindow

どちらのウィジェットを使用しても、子ウィジェットをスクロール可能な表示ポートに含むことができます。 

(なし) 

XmMainWindow

Motif の XmMainWindow ウィジェットは、子をウィンドウの特定の領域に配置するマネージャを提供します。これらの領域には、メニューバー領域、コマンド領域、作業領域、メッセージ領域が含まれます。

OLIT には、同等のウィジェットはありません。 

(なし) 

XmPanedWindow

Motif の XmPanedWindow ウィジェットを使用すると、子を垂直方向の区画内に配置できます。各区画には、垂直方向にサイズ変更できるサッシが付いています。

OLIT には、同等のウィジェットはありません。 

  1. CDE の AppBuilder は、コロンで垂直に整列させるなど、ウィジェットを共通の位置に自動的に配置できる「グループ」というジオメトリマネージャ抽象化を提供します。この機能を実装するために、AppBuilder はすべてのコードを生成します。