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 elundoManager
que se activa automáticamente cuando se añade a la pila de deshacer.isUndoing
: devuelvetrue
si se está ejecutando el método deshacer.isRedoing
: devuelvetrue
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
.