データ・モデル・オブジェクトの起こり得る動作を実装するメソッドは、 IlvSDMModel インターフェースとして提供されます。提供される各種データ・モデル・クラスは、これらのメソッドのさまざまなサブセットを実装します。
このインターフェース内のメソッドは、リンクを他のオブジェクトとは異なるものとして認識し、親子関係を考慮して階層モデルを実装します。
各データ・モデル・オブジェクトには、固有 ID、非固有タグ、および様々なプロパティー (属性) があります。
リンクの場合、From プロパティーと To プロパティーにエンドポイントが保管されます。
変更のモニタリングは、リスナー機構により可能です。
ノードとリンクの間をナビゲートするメソッド
以下の 3 つのメソッドは、モデル・オブジェクト・ツリーをナビゲートします。
- getObjects は、すべてのトップレベル・オブジェクトを列挙して返します。
- getChildren は、指定のモデル・オブジェクトのすべての子を返します。
- getParent は、モデル・ツリー内の指定オブジェクトの親を返すか、または (そのオブジェクトがトップレベルにある場合)
null
を返します。
モデル・オブジェクトがリンク
であるときは、以下のメソッドが適用されます。
ID、タグおよびプロパティーを取得するためのメソッド
以下のメソッドは、モデル・オブジェクトに関する情報を提供します。
- getID は、オブジェクトに関連した固有の ID (ストリング) を返します。 ID を使用して、リンクからそのソース・ノードおよびターゲット・ノードへの参照を定義します。
- getObject は、指定 ID に関連付けられたモデル・オブジェクトを返します。
- getTag は、モデル・オブジェクトのタグを返します。タグは、モデル・オブジェクトのタイプを記述するストリングのことです。 複数のオブジェクトが同じタグを共用することがあります。 例えば、タグが XML データ・ファイル内の XML 要素の名前になります。
- getObjectPropertyNames は、このオブジェクトのすべての定義済みプロパティーを表す String 配列を返します。
- getObjectProperty は、指定オブジェクト上の指定プロパティーの値を表すオブジェクトを返します。
リスナー実装のメソッド
モデルは動的です。つまり、モデルがモデル自身を変更することがあります。
グラフィック表示をモデル状態と整合した状態に保つために、モデルに変更が発生したときにイベントを送信するリスナー機構があります。
- [ addSDMModelListener| removeSDMModelListener] は、モデル・イベント用のリスナー・リストを管理します。モデル階層またはモデル・オブジェクト・プロパティーが変更されたときには、モデル・イベントが実行される必要があります。
- [ addSDMPropertyChangeListener| removeSDMPropertyChangeListener] は、プロパティーの変更イベント用のリスナー・リストを管理します。 モデル・オブジェクト・プロパティーが変更されたときに、プロパティー変更イベントが実行される必要があります。
編集可能なモデル用のメソッド
編集可能なすべてのメソッドは、モデル述部の
isEditable が
true
を返した場合に実装されるように作られています。以下のメソッドは、モデル階層を変更します。
- addObject は、最初の引数を、2 番目の引数より下にあるモデル (2 番目の引数が
null
の場合はトップレベルにあるモデル) および 3 番目の引数より前にあるモデル (3 番目の引数がnull
の場合は最後にあるモデル) に追加します。 - removeObject は、指定のオブジェクトをモデルから削除します。
- clear は、すべてのオブジェクトを一度に削除します。
以下のモデル・メソッドは、オブジェクト・プロパティーを変更します。
- setObjectProperty は、モデル・オブジェクト・プロパティーを変更します。最初の引数がモデル・オブジェクト、2 番目がプロパティー名、3 番目がプロパティー値です。
- setID により、モデル・オブジェクトの ID を変更することができます。オブジェクトをモデルに追加する前にこのメソッドを呼び出すようにして各モデル・オブジェクトの固有の永続的な ID が常に存在することを確認するのが賢明です。
- isAdjusting および setAdjusting は、複数のプロパティーが変更されようとしていることをモデルに警告する場合に使用できます。