コンテンツ・オンデマンド機能は、以下のクラスを必要とします。
IlvContentController クラス
IlvContentController クラスは、以下のメソッドを定義します。
setSDMEngine(IlvSDMEngine engine)
- SDM エンジンが動作するように設定します。setContentHandler(IlvContentHandler handler)
- ハンドラーを設定します。setCacheSize(int size)
- キャッシュ・サイズを設定します。
要求を送信するメソッド
lockArea(IlvRect area, int mode)
- 指定の矩形と重なるオブジェクトをロックします。 モードは、既にロックされているオブジェクトの状況を示します。 有効な値は、以下のとおりです。IlvContentHandler.OVERRIDE
- 既にロックされていたオブジェクトがアンロックされました。IlvContentHandler.AUGMENT
- 既にロックされていたオブジェクトがロック状態のままです。
クラスilog.views.sdm.modeltools.IlvVisibleAreaListener
には、SDM ビューの表示可能領域を自動的にロックするビュー・リスナーがあります。processObjects(Object[] objects, int action)
- 以下のアクション値のいずれかに応じて、指定のオブジェクトをロック、ロード、またはアンロードします。IlvContentHandler.LOCK
- ロック・アクション。IlvContentHandler.UNLOCK
- アンロック・アクション (一度アンロックされれば、オブジェクトはいつでもアンロードできます)。IlvContentHandler.UNLOAD
- アンロード・アクション。
processObjects(Enumeration objects, int action)
- 上記メソッドと同じですが、オブジェクトは列挙型で定義されます。processObjects(Iterator objects, int action)
- 上記メソッドと同じですが、オブジェクトはイテレーターに定義されます。processAllObjects(int action)
- 上記メソッドを同じですが、すべてのオブジェクトに対して操作されます。
これらのすべてのメソッドは同期化されて、要求された状態に切り替わったオブジェクトの数を表す整数を返します。
オブジェクトの現行状態を取り出すためのメソッド
以下のメソッドは、コントローラー内のオブジェクトの現行状態 (LOCK/UNLOCK/UNLOAD) を取得します。
ハンドラーの実装によって (通常、アクションが別々のスレッドで実行される場合に)、例えば、状態は LOCK であるがコンテンツがまだ使用可能になっていないなど、状態が実際と異なる場合があります。
int getObjectStatus(Object obj)
- 指定オブジェクトの現行状態を返します。
IlvContentController
クラスの他のメソッド: IlvSDMEngine getSDMEngine()
- SDM エンジンを返します。IlvContentHandler getContentHandler()
- コンテンツ・ハンドラーを返します。void setNotificationEnabled(boolean on)
-on
がfalse
の場合、ハンドラーには通知されません。boolean isNotificationEnabled()
- 通知が使用可能かどうかを返します。int getLockedCount()
- ロック・オブジェクトの数を返します。int getLoadedCount()
- キャッシュ内のオブジェクトの数を返します。
IlvContentHandler インターフェース
IlvContentHandler インターフェースは、以下のメソッドを定義します。
loadContent(IlvContentControler source, Object[] objs)
- 指定オブジェクトのコンテンツを SDM モデルにロードします。unloadContent(IlvContentControler source, Object[] objs)
- 指定オブジェクトのコンテンツを SDM モデルにアンロードします。
source
引数には、要求を送信するコントローラーを指定します。
IlvVisibleAreaListener クラス
IlvVisibleAreaListener クラスは、ビューの表示可能領域を変更して、それをコントローラーへの要求として送信する際に、その表示可能領域を計算します。
コンストラクターは、コントローラーをパラメーターとして取ります。
ビュー上の表示可能領域の変更を listen し始めるには、以下のメソッドを呼び出します。
installListener(IlvManagerView target)
- トランスフォーマー・リスナーをインストールします。
使用の例
IlvVisibleAreaListener l = new IlvVisibleAreaListener(contentControler); l.installListener(contentControler.getSDMEngine().getReferenceView());
メソッド
requestAreaToLock
は、以下のようにロックする領域を制御するためにサブクラス化できます。
int requestAreaToLock(IlvRect area)
- ビュー・トランスフォーマーが変更されたときに呼び出されます。 デフォルトの実装では、単にコントローラー・メソッドlockArea(area, OVERRIDE)
を呼び出して、ロードされたオブジェクトの数を返します。