プログラムでノードを作成するには、ibm_ilog.diagram.Graph.createNode() メソッドを使用します。引数が指定されない場合、createNode メソッドは、ibm_ilog.diagram.Node インスタンスを作成し、これをデフォルト・ノード・テンプレート (長方形形状およびテキスト形状) で初期化します。
カスタム・グラフィカル表現を指定するため、Graph.createNode メソッドが
template
パラメーターを受け入れますが、このパラメーターはストリング、または GFX シリアライゼーション仕様に準拠する簡潔な JavaScript オブジェクト・プロパティーでなければなりません。例:var graph = ... var template = ibm_ilog.diagram.declareTemplate({ shape: {type:'rect'}, fill: 'blue'}); var node = graph.createNode(template);
メモ
この例では、テンプレート・パラメーターがストリングとして定義されています。オプションの ibm_ilog.diagram.declareTemplate() 関数により、テンプレーティング・エンジンのテンプレートが処理され、より良好なパフォーマンスが得られます。
テンプレート・パラメーターを JavaScript オブジェクト・プロパティーとして定義する例については、バインディング セクションを参照してください。
テンプレートを動的に変更するには、node.applyTemplate() メソッドを使用します。このようにすれば、同じノード・インスタンスのグラフィカル表現を変更し、リンク・ポート設定を保持することができます。例:
var graph = ... var template = ibm_ilog.diagram.declareTemplate({ shape: {type:'rect'}, fill: 'blue'}); var node = graph.createNode(template); // ... // later, the template is changed for a new one node.applyTemplate({ shape: {type:'ellipse'}, fill: 'red'});
サブコンポーネントがノード・インスタンスから参照される、すなわち、ノード・インスタンスがその子のいずれかへの直接参照を定義する場合、テンプレートは、
dojoAttachPoint
プロパティーでそのサブコンポーネントにタグを付けることができます。このプロパティーの値は、ノード・インスタンスで定義される参照のプロパティー名です。例:[{ dojoAttachPoint: 'baseShape', shape: { type: 'rect', ... } ... }, { dojoAttachPoint: 'textShape', shape: { type: 'text', ... } ... }]
このテンプレートを使用すると、新規のプロパティーが、テンプレート内の各
dojoAttachPoint
エントリーのノード・インスタンスに設定され、対応する形状に適用されます。
テンプレートの適用後、node.baseShape
プロパティーにより長方形形状にアクセスし、node.textShape プロパティーによりテキスト形状にアクセスします。