Options
All
  • Public
  • Public/Protected
  • All
Menu

ChangedEvent 类

层次结构

  • ChangedEvent

ChangedEvent表示对对象(通常是 GraphObject)的更改,但也表示对model data, ModelDiagram 的更改。 最常见的情况是记住属性的名称以及该属性的前后值。

你可以使用 Model.addChangedListener 或者 Diagram.addModelChangedListener 在model上监听更改的事件, 以及使用 Diagram.addChangedListener 在Diagram上监听更改的事件

更改共有四种,用枚举值表示: ChangedEvent.Property (最常见), ChangedEvent.InsertChangedEvent.Remove (表示从集合中插入或删除对象), 和 ChangedEvent.Transaction (通知有关开始或结束事务或撤销或恢复)

最常见的ChangedEvent类型是属性更改。 属性的名称由 propertyName 给出。 修改后的object由 object 给出。 使用 oldValuenewValue 属性作为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实现了它所记得的更改的 undoredo 的原因

当ChangedEvent表示 Model 的更改时, model 的值非null 而 diagram 的值则无意义。 如果更改是对model的结构更改,则 modelChange 的值表示更改的类型 当前定义的model更改事件名称包括:

ChangedEvent.propertyName 的值表示已修改属性的实际名称。 仅当model存在已知的结构更改时 ChangedEvent.modelChange 才是非空字符串,而不仅仅是某些对象上某些属性的设置

当ChangedEvent表示对 Diagram 或者 GraphObject 的更改时,diagram 的值非null,而 modelmodelChange 的值则无意义。

请注意,可以出于多种原因引发ChangedEvents。您可能对临时对象的更改忽略的这种情况下,当 Model.skipsUndoManagerDiagram.skipsUndoManager 为true时,忽略ChangedEvent

Index

Constructors

constructor

  • ChangedEvent类的构造函数产生一个空的ChangedEvent对象

    Returns ChangedEvent

Properties

change : EnumValue

diagram : Diagram | null

  • 获取或设置已修改的 Diagram。 如果此属性非null model 属性将为null。 但是,当没有特定的model或diagram适用时,此属性和 model 属性可能同时为null

Read-only isTransactionFinished : boolean

  • 当此ChangedEvent类型为 ChangedEvent.Transaction 并表示事务更改结束时,此只读属性为true。 它实现为:

    return (this.change === ChangedEvent.Transaction &&
            (this.propertyName === "CommittedTransaction" ||
             this.propertyName === "FinishedUndo" ||
             this.propertyName === "FinishedRedo"));

model : Model | null

  • 获取或设置已修改的 ModelTreeModelGraphLinksModel。 如果此属性非null,则 diagram 属性也将为null。 但是,当没有特定的model或diagram适用时,此属性和 diagram 属性可能同时为null。

modelChange : string

  • 获取或设置model更改的名称,除了对model本身进行更改之外,还反映对model data的更改

    默认值为空字符串,表示这只是对某个对象状态(可能是其属性)的定期更改。 有关可能的model更改名称的列表,请参见 ChangedEvent 文档。 名称以区分大小写的方式进行比较

newParam : any

  • 获取或设置与新值关联的可选值。大多属性不需要任何参数来描述更改。通常,这是一个有助于区分新值的值,例如数组的索引。如果不使用,则为null。默认为null

newValue : any

  • 获取或设置属性具有下一个或当前值,默认为null

object : ObjectData | null

oldParam : any

  • 获取或设置与旧值关联的可选值。大多数属性不需要任何参数来描述更改。通常,这是一个有助于区分旧值的值,例如数组的索引。如果不使用,则为null。默认为null

oldValue : any

  • 获取或设置属性具有的先前值或旧值。默认为null

propertyName : string | function(a: ObjectData, b: any): any

Methods

canRedo

  • canRedo(): boolean
  • 如果可以调用redo(),则返回true

    Returns boolean

    如果准备好调用redo(),则为true

canUndo

  • canUndo(): boolean
  • 如果可以调用undo(),则返回true

    Returns boolean

    如果准备好调用undo(),则为true

clear

  • clear(): void
  • 忘记此ChangedEvent可能具有的任何对象引用

    Returns void

copy

getParam

  • getParam(undo: boolean): any
  • 在作为撤销或重做的一部分实现状态变更时,这是一种方便的方法,以获得正确的参数值。

    Parameters

    • undo: boolean

      如果为true,则返回oldParam,否则返回newParam

    Returns any

    oldParam 或者 newParam.

getValue

  • getValue(undo: boolean): any
  • 在作为撤销或重做的一部分实现状态变更时,这是一种方便的方法,以获得正确的参数值。

    Parameters

    • undo: boolean

      如果为true,则返回oldValue,否则返回newValue

    Returns any

    oldValue 或者 newValue.

redo

  • redo(): void
  • 在undo()之后重新执行此对象更改。 canRedo()必须为true才能使此方法生效

    Returns void

undo

  • undo(): void
  • 反转此对象更改的效果。 canUndo()必须为true才能使此方法生效

    Returns void

Constants

Static Insert : EnumValue

用于插入集合中,并用作 ChangedEvent.change 的值。 修改后的对象由 ChangedEvent.object 给出。 使用可选的 ChangedEvent.propertyName 可以区分对象上的不同集合。 使用 ChangedEvent.newValue 属性表示插入的值。 使用可选的 ChangedEvent.newParam 属性来表示位置或方式,例如数组的索引或字典的键

Static Property : EnumValue

用于简单的属性更改,并用作 ChangedEvent.change 的值。 属性的名称由 ChangedEvent.propertyName 给出。 修改后的对象由 ChangedEvent.object 给出。 将 ChangedEvent.oldValueChangedEvent.newValue 属性用于上一个和下一个属性值

对于model的更改 ChangedEvent.modelChange 可以是非空的,表示对model的结构更改

Static Remove : EnumValue

用于从集合中移除,并用作 ChangedEvent.change 的值。 修改后的对象由 ChangedEvent.object 给出。 使用可选的 ChangedEvent.propertyName 可以区分对象上的不同集合。 使用 ChangedEvent.oldValue 属性表示已删除的值。 使用可选的 ChangedEvent.oldParam 属性来表示位置或方式,例如数组的索引或字典的键

Static Transaction : EnumValue

用于信息事件,例如事务和撤销/重做操作,并用作 ChangedEvent.change 的值。 ChangedEvent.object 引用受 Transaction 影响(如果有)。 ChangedEvent.propertyName 区分不同的事务或撤销或重做阶段。 ChangedEvent.oldValue 可以提供事务名称(如果有),如 UndoManager.commitTransaction 所提供的