ChangedEvent类的构造函数产生一个空的ChangedEvent对象
获取或设置发生更改的性质。默认值为 ChangedEvent.Property。 其他值是 ChangedEvent.Insert, ChangedEvent.Remove, and ChangedEvent.Transaction.
当此ChangedEvent类型为 ChangedEvent.Transaction 并表示事务更改结束时,此只读属性为true。 它实现为:
return (this.change === ChangedEvent.Transaction &&
(this.propertyName === "CommittedTransaction" ||
this.propertyName === "FinishedUndo" ||
this.propertyName === "FinishedRedo"));
获取或设置已修改的 Model 或 TreeModel 或 GraphLinksModel。 如果此属性非null,则 diagram 属性也将为null。 但是,当没有特定的model或diagram适用时,此属性和 diagram 属性可能同时为null。
获取或设置model更改的名称,除了对model本身进行更改之外,还反映对model data的更改
默认值为空字符串,表示这只是对某个对象状态(可能是其属性)的定期更改。 有关可能的model更改名称的列表,请参见 ChangedEvent 文档。 名称以区分大小写的方式进行比较
获取或设置与新值关联的可选值。大多属性不需要任何参数来描述更改。通常,这是一个有助于区分新值的值,例如数组的索引。如果不使用,则为null。默认为null
获取或设置属性具有下一个或当前值,默认为null
获取或设置已修改的对象,默认为null
对于 ChangedEvent.Transaction 的更改, 这可能是 Transaction.
获取或设置与旧值关联的可选值。大多数属性不需要任何参数来描述更改。通常,这是一个有助于区分旧值的值,例如数组的索引。如果不使用,则为null。默认为null
获取或设置属性具有的先前值或旧值。默认为null
获取或设置属性更改的名称。默认值为空字符串,它不是有效的属性名称。 即使更改的类型不是 ChangedEvent.Property ,此属性也很有用,因为它可以帮助标识已修改的 object ( ChangedEvent.Insert 或 ChangedEvent.Remove) 或当前事务阶段( ChangedEvent.Transaction)
如果可以调用redo(),则返回true
如果准备好调用redo(),则为true
如果可以调用undo(),则返回true
如果准备好调用undo(),则为true
忘记此ChangedEvent可能具有的任何对象引用
复制此ChangedEvent。 UndoManager 添加到 Transaction 时,将复制ChangedEvents
在作为撤销或重做的一部分实现状态变更时,这是一种方便的方法,以获得正确的参数值。
如果为true,则返回oldParam,否则返回newParam
oldParam 或者 newParam.
在作为撤销或重做的一部分实现状态变更时,这是一种方便的方法,以获得正确的参数值。
如果为true,则返回oldValue,否则返回newValue
oldValue 或者 newValue.
在undo()之后重新执行此对象更改。 canRedo()必须为true才能使此方法生效
反转此对象更改的效果。 canUndo()必须为true才能使此方法生效
用于插入集合中,并用作 ChangedEvent.change 的值。 修改后的对象由 ChangedEvent.object 给出。 使用可选的 ChangedEvent.propertyName 可以区分对象上的不同集合。 使用 ChangedEvent.newValue 属性表示插入的值。 使用可选的 ChangedEvent.newParam 属性来表示位置或方式,例如数组的索引或字典的键
用于简单的属性更改,并用作 ChangedEvent.change 的值。 属性的名称由 ChangedEvent.propertyName 给出。 修改后的对象由 ChangedEvent.object 给出。 将 ChangedEvent.oldValue 和 ChangedEvent.newValue 属性用于上一个和下一个属性值
对于model的更改 ChangedEvent.modelChange 可以是非空的,表示对model的结构更改
用于从集合中移除,并用作 ChangedEvent.change 的值。 修改后的对象由 ChangedEvent.object 给出。 使用可选的 ChangedEvent.propertyName 可以区分对象上的不同集合。 使用 ChangedEvent.oldValue 属性表示已删除的值。 使用可选的 ChangedEvent.oldParam 属性来表示位置或方式,例如数组的索引或字典的键
用于信息事件,例如事务和撤销/重做操作,并用作 ChangedEvent.change 的值。 ChangedEvent.object 引用受 Transaction 影响(如果有)。 ChangedEvent.propertyName 区分不同的事务或撤销或重做阶段。 ChangedEvent.oldValue 可以提供事务名称(如果有),如 UndoManager.commitTransaction 所提供的
ChangedEvent表示对对象(通常是 GraphObject)的更改,但也表示对model data, Model 或 Diagram 的更改。 最常见的情况是记住属性的名称以及该属性的前后值。
你可以使用 Model.addChangedListener 或者 Diagram.addModelChangedListener 在model上监听更改的事件, 以及使用 Diagram.addChangedListener 在Diagram上监听更改的事件
更改共有四种,用枚举值表示: ChangedEvent.Property (最常见), ChangedEvent.Insert 和 ChangedEvent.Remove (表示从集合中插入或删除对象), 和 ChangedEvent.Transaction (通知有关开始或结束事务或撤销或恢复)
最常见的ChangedEvent类型是属性更改。 属性的名称由 propertyName 给出。 修改后的object由 object 给出。 使用 oldValue 和 newValue 属性作为before和after属性值
对于Insert ChangedEvent, 修改后的集合(通常是Array)是 object 上的属性值。 propertyName 有助于区分对象上的不同集合。 newValue 属性表示插入的值。 使用 newParam 属性表示位置或方式,例如数组索引或字典键
对于Remove ChangedEvent, 修改后的集合是 object 上的属性值。 propertyName 有助于区分对象上的不同集合。 oldValue 属性表示已删除的值 使用 oldParam 属性表示位置或方式,例如数组索引或字典键。
事务 ChangedEvents 由 UndoManager 生成。 propertyName 表示了ChangedEvent的性质。 对于第一个事务,属性名称为 "StartingFirstTransaction" 此ChangedEvent位于属性名称为 "StartedTransaction" 的ChangedEvent之前,该变更事件发生在每个顶级事务之前
当结束一个事务时,首先有一个ChangedEvent其名称为 "ComittingTransaction"。 紧随其后的是 "CommittedTransaction" 或 "RolledBackTransaction",这取决于事务如何结束。 oldValue 提供事务名称,而 object 是正在完成的 Transaction 。 (注意,如果当时没有可用的Transaction,则Transaction值可能为null,这可能是因为在事务期间没有进行任何更改) 可以查看Transaction以找到可能希望记录在数据库中的ChangedEvents,所有这些都在单个数据库事务中
还存在与 "StartingUndo", "FinishedUndo", "StartingRedo", 和 "FinishedRedo" 相对应的Transaction ChangedEvents。 object 属性提供即将撤销或恢复的 Transaction
如果 UndoManager.isEnabled ,则非事务ChangedEvents会被 UndoManager 记住, 并作为包含ChangedEvents列表的 Transaction 保留在 UndoManager.history 中。 这就是为什么ChangedEvent实现了它所记得的更改的 undo 和 redo 的原因
当ChangedEvent表示 Model 的更改时, model 的值非null 而 diagram 的值则无意义。 如果更改是对model的结构更改,则 modelChange 的值表示更改的类型 当前定义的model更改事件名称包括:
ChangedEvent.propertyName 的值表示已修改属性的实际名称。 仅当model存在已知的结构更改时 ChangedEvent.modelChange 才是非空字符串,而不仅仅是某些对象上某些属性的设置
当ChangedEvent表示对 Diagram 或者 GraphObject 的更改时,diagram 的值非null,而 model 和 modelChange 的值则无意义。
请注意,可以出于多种原因引发ChangedEvents。您可能对临时对象的更改忽略的这种情况下,当 Model.skipsUndoManager 或 Diagram.skipsUndoManager 为true时,忽略ChangedEvent