Creación de enlaces

La clase ConnectionAdorner permite crear enlaces nuevos en el diagrama. Antes de crear un enlace, se llama a una función en el diagrama para verificar si la acción está permitida. Esta función se puede enlazar a DiagramEditor a través del código allowCreateLinkFunction, que tiene el formato siguiente:
allowCreateLinkFunction: function(DiagramEditor, startNode, endNode)
Cuando se crea un enlace, se llama a una función para permitir la modificación del enlace nuevo:
onLinkUpdated: function (diagram, link, isNew, undoAction)
donde:
  • diagram es el diagrama actual.
  • link es el enlace creado.
  • isNew es un valor booleano que indica si el enlace es nuevo (true para un enlace recién creado).
  • undoAction es la clase ConnectAction creada para esta actualización. Puede establecer acciones personalizadas para las operaciones de deshacer y rehacer, y añadir los datos que haga falta para esta acción.

La clase ConnectAction

La clase ConnectAction permite deshacer y rehacer la acción de conexión. Puede personalizar esta acción añadiendo las funciones de usuario que normalmente se llaman desde la función onLinkUpdated. Contiene los métodos siguientes:
  • getLink: obtiene el enlace modificado. Este método busca automáticamente el enlace correcto, incluso después de que las acciones de deshacer hayan llevado a cabo sustituciones.
  • setUndoUserFunction: establece la función deshacer de usuario.
  • getUndoUserFunction: obtiene la función deshacer de usuario.
  • setRedoUserFunction: establece la función rehacer de usuario.
  • getRedoUserFunction: obtiene la función rehacer de usuario.

Utilización del descriptor de conexión

El descriptor de conexión está representado por un triángulo colocado a cada lado del recuadro delimitador del elemento. Al igual que los controladores de tamaño, estos manejadores se resaltan cuando se pasa el cursor sobre ellos, lo que indica que se puede llevar a cabo una acción. Cuando se pulsa el manejador, se crea un enlace entre el manejador seleccionado (creando un BasicPort en la posición especificada) y el cursor del ratón. El enlace nuevo se crea al arrastrar el punto final a un puerto de otro nodo o subgráfico.
Los puertos de destino se muestran en las entidades al pasar el ratón sobre ellos. Los puertos de destino son exactamente igual que los puertos de origen. Si se lleva a cabo una acción de soltar en uno de los puertos, se crea un BasicPort al lado del elemento y el final de enlace está conectado con él. Si no se especifica ningún descriptor de conexión de destino y se suelta el botón del ratón directamente sobre el componente de destino, se crea un AutomaticPort.
Al pulsar la tecla Control, puede crear un AutomaticPort en el origen del enlace, en cuyo caso el enlace puede originarse en cualquier puerto.
Nota
  • Mientras arrastra el descriptor de conexión, se evalúa la función allowCreateLink en cada suceso de pasar el ratón por encima y el cursor del ratón cambia para mostrar si la acción de conexión está permitida en ese lugar.
  • Tras crear el enlace, se evalúan los elementos inicial y final, y el enlace se vuelve a asignar al padre común del primer nivel. Por ejemplo, si ambos elementos pertenecen al mismo subgráfico, el padre del enlace es el mismo subgráfico.