Gestión de la operación de deshacer

Mientras se trabaja con un diagrama, se pueden deshacer y rehacer acciones. Estas operaciones están disponibles en DiagramEditor. No sólo admiten todos los cambios estándar que pueden aplicarse mediante las funciones de edición, sino que también admiten los cambios de propiedades básicas que se apliquen mediante programación, con el registro del objeto deshacer correspondiente. También admiten cambios más complejos mediante operaciones personalizadas.

UndoManager

Este objeto está disponible mediante el método getUndoManager y gestiona las pilas de acciones que se pueden deshacer y rehacer. Este componente no sólo proporciona una lista básica de métodos para gestionar estas pilas, sino que también mantiene un diccionario completo de GraphElements ordenado por sus ID y sus sustituciones cuando es necesario (durante la eliminación de operaciones de deshacer y rehacer consecutivas). El gestor de operaciones de deshacer tiene estos métodos:
  • getDiagram: obtiene el diagrama.
  • addAction: añade una acción a la pila de acciones de deshacer (borrándola de la pila de rehacer).
  • undoAction: saca una acción de la pila de deshacer, aplica la operación de deshacer y la añade a la pila de rehacer.
  • redoAction: saca una acción de la pila de rehacer y aplica la operación de rehacer.
  • getUndoStack: obtiene una copia de la pila de acciones de deshacer.
  • getRedoStack: obtiene una copia de la pila de acciones de rehacer.
  • setMaximumStackSize: establece el tamaño máximo de la pila. Si el valor es nulo, el tamaño es ilimitado.
  • getMaximumStackSize: obtiene el tamaño máximo de la pila.
  • getRegisteredGfx: obtiene el GFX registrado correspondiente al ID especificado. Busca la sustitución si es necesario.
  • registerGfxReplacement: registra cuando un ID de GFX se sustituye por otro (cuando se elimina un GFX y se crea una sustitución con un nuevo ID)
  • getRegisteredGfxReplacement: obtiene la sustitución registrada correspondiente del ID de GFX especificado. Busca de forma recursiva la última sustitución. Si no hay ninguna sustitución registrada, se devuelve el ID de GFX especificado.
  • getRegisteredParent: devuelve el padre del gráfico del ID especificado. Si el ID corresponde a un subgráfico, se devuelve el gráfico interno.

Acción de deshacer

La clase Action es la clase básica que contiene la operación de deshacer. Proporciona la interfaz básica para cualquier acción de deshacer y tiene los métodos siguientes:
  • undo: aplica la función deshacer.
  • redo: aplica la función rehacer.
  • getLabel: obtiene la etiqueta de acción para imprimir la interfaz de usuario.
  • getUndoManager: obtiene el undoManager que se activa automáticamente cuando se añade a la pila de deshacer.
  • isUndoing: devuelve true si se está ejecutando el método deshacer.
  • isRedoing: devuelve true si se está ejecutando el método rehacer.
El siguiente subconjunto de clases se hereda de Action y es útil para llevar a cabo personalizaciones o para crear acciones nuevas.

SimpleAction

La clase SimpleAction se utiliza para las acciones de deshacer sencillas. Se utiliza para deshacer y rehacer propiedades básicas que pueden cambiarse asignando variables o llamando a un método con un argumento simple. Utilice la clase SimpleAction para deshacer acciones de edición personalizadas. La acción de deshacer movimiento utiliza esta clase para deshacer y rehacer una acción de movimiento mediante los métodos siguientes:
  • setOldValue: establece el valor anterior.
  • setNewValue: establece el valor nuevo.
  • getOldValue: obtiene el valor anterior clonando el valor establecido si previamente se ha establecido la función de clonar.
  • getNewValue: obtiene el valor nuevo clonando el valor establecido si previamente se ha establecido la función de clonar.
  • setModifiedElementId: establece el objeto modificado.
  • getModifiedElementId: obtiene el objeto modificado.
  • getModifiedElement: obtiene el elemento GFX modificado o sus sustituciones, si es necesario.
  • setMethodOrProperty: establece el nombre de la propiedad o del método que se ha de modificar.
  • setCloneFunction: establece la función de clonar para clonar el valor antes de la acción de cambio.

MultipleAction

La clase MultipleAction agrupa una lista de UndoActions. Agrupa un conjunto de Actions en uno más complejo y ejecuta cada acción añadida en orden secuencial durante las operaciones de rehacer y deshacer.

ReparentingAction

La clase ReparentingAction permite deshacer y rehacer cualquier acción de cambiar el valor primario. Se utiliza en combinación con MultipleAction para crear cualquier acción de deshacer o rehacer que implique cambiar el valor primario.

UserCustomizedAction

La clase UserCustomizedAction es la clase base de todas las acciones que no vienen con DiagramEditor. Sin embargo, debe personalizarse para poder disfrutar de todo su potencial. Puede ampliarla utilizando DropAction, ConnectAction y ReConnectAction.