イベント・リスナーの使用

すべてのレイアウト・クラスは、レイアウト・イベントとパラメーター・イベントの 2 種類のイベントをサポートします。 その結果、リスニング・メカニズムは、以下を提供します。

グラフ・レイアウト・イベント・リスナー

レイアウト・イベントのリスニング・メカニズムは、レイアウト中に起きていることをユーザーに通知する方法を提供します。 時々、特に、大きなグラフを扱っている場合に、レイアウト・アルゴリズムは実行に長時間を要することがあります。 さらに、場合によってはアルゴリズムが収束しない可能性があります。 状態がどうであれ、ユーザーはレイアウト中に発生するイベントについて通知される必要があります。
これは、例えば、各反復やステップの後の完了パーセンテージなどのように、適切な情報を表示することによって行うことができます。
レイアウト中に送られるレイアウト・イベントを受け取るには、 (dojo.connect を使用して) 適切な on <Event> メソッドに接続する必要があります。
以下のイベントが起動されます。
  1. onLayoutStepPerformed(layoutStarted, layoutFinished):「実行されたレイアウト・ステップ」イベントは、いつグラフ・レイアウト処理のステップが実行されたかを示します。 また、いつレイアウトが終了あるいは停止したかも示します。
  2. onAttached(): このイベントは、グラフ・レイアウトがグラフ・レイアウト・モデルにアタッチされると起動されます。 グラフ・レイアウトが実行されるためには、グラフ・レイアウト・モデルにアタッチされている必要があります。
  3. onDetached(): このイベントは、グラフ・レイアウトがグラフ・レイアウト・モデルからデタッチされると起動されます。
グラフ・レイアウト・イベントを listen するには、リスナー関数を実装して、それを (dojo.connect を使用して) グラフ・レイアウト・インスタンスの該当メソッドに接続する必要があります。
グラフ・レイアウト・レポートの使用」を参照してください。このようにして、レイアウト・レポートの現在の状態に関する情報を読み込むことができます。 (例えば、この情報は、レイアウト・アルゴリズムの各反復あるいはステップのあとに読み込むことができます)。
次の例は、レイアウト・イベント・リスナーを実装および接続する方法を示したものです。
dojo.connect(layout, "onLayoutStepPerformed", function(layoutStarted, layoutFinished){
 console.log("started = " + layoutStarted + " finished = " + layoutFinished);
 console.log("percentage of completion: " + layout.getLayoutReport().getPercentageComplete());
});

パラメーター・イベント・リスナー

レイアウト・パラメーター・イベント・リスナーのメカニズムは、レイアウト・パラメーターが変更されたことをユーザーに通知する方法を提供します。
レイアウト・パラメーター・イベントを受け取るには、リスナー関数を実装して、 onParameterChanged イベントに接続することでそれを登録する必要があります。
次のイベントを受け取ることができます。
  1. ibm_ilog.graphlayout.GraphLayout.onObjectParameterChanged(nodeOrLink, parameterName): このイベントは、ローカル・レイアウト・パラメーター (すなわち、特定のノードまたはリンクに適用されるパラメーター) が変更されたときに必ず起動されます。
  2. ibm_ilog.graphlayout.GraphLayout.onParameterChanged(parameterName): このイベントは、グローバル・レイアウト・パラメーターが変更されたときに必ず起動されます。
次の例は、レイアウト・パラメーター・イベント・リスナーの実装方法を示したものです。
 dojo.connect(layout, "onParameterChanged", function(parameterName){
  console.log("parameter " + parameterName + " has changed");
 });