Para crear un nodo mediante programación, utilice el
método
ibm_ilog.diagram.Graph.createNode(). Cuando no se especifica ningún argumento, el
método createNode crea
una instancia de ibm_ilog.diagram.Node y la inicializa con la plantilla de nodos
predeterminada (una forma rectangular y una forma de texto).
Para especificar una representación gráfica
personalizada, el método
Graph.createNode acepta
un parámetro
template
que debe
ser una serie de caracteres o la propiedad de un objeto JavaScript
normal conforme con la especificación de serialización de GFX. Por ejemplo:var graph = ... var template = ibm_ilog.diagram.declareTemplate({ shape: {type:'rect'}, fill: 'blue'}); var node = graph.createNode(template);
Nota
En este ejemplo, los parámetros de la plantilla se
definen como series. La función ibm_ilog.diagram.declareTemplate()
opcional procesa la plantilla para el motor de plantillas, lo que da
como resultado un mejor rendimiento. En la sección
Enlaces puede
consultar un ejemplo en que se definen parámetros de plantilla como
propiedades de un objeto JavaScript.
Para cambiar plantillas de forma dinámica, utilice el
método
node.applyTemplate().
De este modo, puede cambiar la representación gráfica de la instancia
del mismo nodo y mantener los valores del puerto de enlace. Por ejemplo:
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'});
Si se hace referencia a un subcomponente desde la
instancia de nodo, es decir, la instancia de nodo define una
referencia directa a uno de sus hijos, la plantilla puede etiquetar
el subcomponente con la propiedad
dojoAttachPoint
.
El valor de esta propiedad es el nombre de la propiedad de la
referencia definida en la instancia de nodo. Por ejemplo:[{ dojoAttachPoint: 'baseShape', shape: { type: 'rect', ... } ... }, { dojoAttachPoint: 'textShape', shape: { type: 'text', ... } ... }]
Si utiliza esta plantilla, se establece una propiedad
nueva en la instancia de nodo para cada entrada
dojoAttachPoint
de la
plantilla y se le aplica a la forma correspondiente. Tras aplicar la
plantilla, puede acceder a la forma rectangular mediante la propiedad
node.baseShape
y a la forma de
texto mediante la propiedad
node.textShape.