コンテンツ・コントローラーは、SDM エンジンおよびハンドラーと関連付けられている必要があります。
コンテンツ・オンデマンド機能を使用するには、以下の手順が必要です。
コンテンツ・オンデマンド機能を使用するには、以下のようにします。
-
コンテンツ・コントローラーを SDM エンジンおよびハンドラーと関連付けます。
_controller = new IlvContentController(); _controller.setSDMEngine(diagrammer.getEngine()); _controller.setContentHandler(new ContentHandler()); private class ContentHandler extends IlvContentHandler() { // here we load/unload objects private void loadObject(Object node, boolean load) { if (load) { model.setObjectProperty(node, CONTENT, ...); } else { // unload values model.setObjectProperty(node, CONTENT, null); } } // callback for loading content public void loadContent(IlvContentController source, Object[] objects) { // prevent too much notifications diagrammer.setAdjusting(true); // loop over objects to load for (int i=0; i<objects.length; i++) { loadObject(objects[i], true); } diagrammer.setAdjusting(false); } // callback for unloading content public void unloadContent(IlvContentController source, Object[] objects) { diagrammer.setAdjusting(true); for (int i=0; i<objects.length; i++) { loadObject(objects[i], false); } diagrammer.setAdjusting(false); } } }
-
オプションで、
setCacheSize(int size)
メソッドを使用してキャッシュ値を変更します。キャッシュ・サイズは、指定する動作に応じて調整する必要があります。 デフォルト値は、無限で、これは、ロードされたコンテンツは決してアンロードされないことを意味します。_controller.setCacheSize(1024);
-
コントローラーに要求を送信するビュー・リスナーをインストールします。
IlvVisibleAreaListener l = new IlvVisibleAreaListener(contentControler); l.installListener(contentControler.getSDMEngine().getReferenceView());
-
これでビュー内をナビゲートして、オブジェクトの自動的なロードまたはアンロードを行えます。