圖表事件
Hierarchy
- 圖表事件
圖表事件是比 輸入事件更抽象的事件. 它們是在 圖表 類上觸發的. 可以通過調用Diagram.addDiagramListener. 在圖表上註冊一個圖表偵聽器來接收此類事件.調用偵聽器函數時,將傳遞一個圖表事件實例. 使用name 屬性確定它是哪種圖表事件. 圖表 屬性引用圖表, 您可以從中獲得附加信息,例如Diagram.lastInput,反過來有提供了 例如 InputEvent.documentPoint 之類的信息,這些信息可能與此類圖表事件相關.
subject 和 parameter 可選地提供有關關係圖表事件的附加信息. subject 是Part 零部件的集合, 也可以是單個對象, 如節點中的Link 鏈接 或者 GraphObject 圖形對象 . 這取決於它是哪種圖表事件.
有些圖表事件,如 "ObjectSingleClicked" 或"BackgroundDoubleClicked" 通常與 輸入事件關聯. 有些圖表事件,如"SelectionMoved" 或 "PartRotated" 與Tool-handled gestures 或者CommandHandler 操作的結果相關聯. 有些圖表事件根本不必與任何輸入事件相關聯,例如 "ViewportBoundsChanged",這可能由於程序的直接更改 Diagram.position 和 Diagram.scale 屬性而觸發事件.
在整個關係圖的狀態穩定下來之前,可以調用事務期間發生的圖表事件. 這通常意味着此類事件發生在佈局之前,因此節點可能沒有它們的最終位置, 鏈接可能沒有最終的路由, Diagram.documentBounds 和 Diagram.viewportBounds 可能還沒有更新. 這些事件可能對圖表進行額外的更改,從而可能導致額外的副作用.
發生在事務外部的事件,如果有修改需要您手動啓動和提交事務. 但是,有些圖表事件不允許您對圖表或模型進行任何更改.
當前定義的圖表事件名稱包括:
- "AnimationStarting" 動畫渲染前事件,加載圖表的動畫即將開始;
不要在事件監聽器中修改關係圖或其模型. - "AnimationFinished" 動畫渲染完事件,加載圖表剛剛完成的動畫;
不要在事件監聽器中修改關係圖或其模型. - "BackgroundSingleClicked" 背景單擊事件, 單擊圖表背景;
如果做了任何更改,請啓動並提交事務. - "BackgroundDoubleClicked" 背景雙擊事件, 雙擊圖表背景;
如果做了任何更改,請啓動並提交事務. - "BackgroundContextClicked" 背景右鍵事件, 右鍵單擊圖表背景;
如果做了任何更改,請啓動並提交事務. - "ChangingSelection" 改變選擇前事件, 一個操作即將改變Diagram.selection 圖表選擇集合,
DiagramEvent.subject爲該集合的值;
不要對事件監聽器中的選擇或關係圖進行任何更改; 注意,直接設置 Part.isSelected 將不會觸發此事件,但是工具和命令會觸發此事件. - "ChangedSelection" 改變選擇後事件, 一個操作已經改變 Diagram.selection 圖表選擇集合,
DiagramEvent.subject爲該集合的值;
不要對事件監聽器中的選擇或關係圖進行任何更改; 注意,直接設置 Part.isSelected 將不會觸發此事件,但是工具和命令會觸發此事件. - "ClipboardChanged" 剪切板改變事件, 零部件已被CommandHandler.copySelection複製到剪貼板上;
the DiagramEvent.subject 爲 零部件的集合;
如果做了任何更改,請啓動並提交事務. - "ClipboardPasted" 剪切板粘貼事件,零部件已由CommandHandler.pasteSelection從剪貼板複製到圖表中;
DiagramEvent.subject爲 Diagram.selection,
已在事務中調用,不用再啓動和提交事務. - "DocumentBoundsChanged" 文檔範圍改變事件, 圖表中各零部件的面積, Diagram.documentBounds,已經改變了;
DiagramEvent.parameter 爲舊的Rect - "ExternalObjectsDropped" (節點或線等)零部件拖放生成事件, 零部件已經通過拖拽從圖的外部複製到圖中;
DiagramEvent.subject 是拖拽過來的 零部件 (這也是選中的Diagram.selection), the DiagramEvent.parameter is the source Diagram, 已在事務中調用. - "GainedFocus" 獲得鍵盤焦點事件, 該圖獲得了鍵盤焦點,例如在調用Diagram.focus之後.
- "InitialLayoutCompleted" 初始化佈局完成事件,整個圖表佈局自圖表發生重大變化(如更換模型)以來首次更新;
如果進行任何更改,則不需要執行事務. - "LayoutCompleted" 佈局完成事件, 整個圖表佈局剛剛更新;
如果進行任何更改,則不需要執行事務. - "LinkDrawn" 線創建事件,用戶剛剛使用LinkingTool創建了一個新鏈接;
DiagramEvent.subject 爲新創建的線,
已在事務中調用. - "LinkRelinked" 線重新連接事件, 用戶剛剛通過RelinkingTool 或 DraggingTool重新連接了現有線;
DiagramEvent.subject爲修改的 線,
DiagramEvent.parameter爲線被斷開的 GraphObject端口,
已在事務中調用. - "LinkReshaped" 線路徑改變事件, 用戶剛剛通過LinkReshapingTool調整了線的路徑;
DiagramEvent.subject 爲修改的 線,
the DiagramEvent.parameter 爲線的原始路徑點列表, 已在事務中調用. - "LostFocus" 圖表失去焦點事件,這個圖表失去了鍵盤焦點, a.k.a. "blur".
- "Modified" 圖表改變事件, Diagram.isModified 屬性已被設置爲一個新值——用於將窗口標記爲自上次保存以來已被修改;
不要在事件監聽器中修改Diagram或Model. - "ObjectSingleClicked" 對象單擊事件, 單擊了圖形對象(節點和線等);
DiagramEvent.subject 爲 圖形對象;
如果做了任何更改,請啓動並提交事務. - "ObjectDoubleClicked", 雙擊了圖形對象(節點和線等);
DiagramEvent.subject爲 圖形對象;
如果做了任何更改,請啓動並提交事務. - "ObjectContextClicked", 右鍵單擊了圖形對象(節點和線等);
爲 圖形對象;
如果做了任何更改,請啓動並提交事務. - "PartCreated" Part創建事件,用戶通過 ClickCreatingTool插入新的零部件;
the DiagramEvent.subject爲新的Part 零部件,
已在事務中調用. - "PartResized" Part大小改變事件, 用戶通過ResizingTool 調整工具改變了一個圖形對象的大小;
DiagramEvent.subject 爲 圖形對象,
DiagramEvent.parameter 爲原始尺寸,
已在事務中調用. - "PartRotated" Part旋轉事件, 用戶通過RotatingTool 旋轉工具改變了一個圖形對象的角度 ;
the DiagramEvent.subject 爲 圖形對象,
the DiagramEvent.parameter 爲原始角度,
已在事務中調用. - "SelectionMoved" 拖動事件, 用戶通過DraggingTool 拖動工具移動了選定的部分;
the DiagramEvent.subject爲拖動的零部件,
已在事務中調用. - "SelectionCopied" 複製事件,戶通過DraggingTool 拖動工具複製了選定的部分;
DiagramEvent.subject爲新拷貝的零部件集合,
已在事務中調用. - "SelectionDeleted" 刪除後事件,用戶通過 CommandHandler.deleteSelection 已經刪除了選定的部分;
the DiagramEvent.subject 是已刪除的零部件集合,
已在事務中調用. - "SelectionDeleting" 刪除前事件,用戶通過 CommandHandler.deleteSelection即將刪除選定的部分;
the DiagramEvent.subject 爲Diagram.selection 即將刪除的零部件集合,
已在事務中調用. - "SelectionGrouped" 選擇創建分組事件, 用戶通過CommandHandler.groupSelection已經從選擇的零部件中創建了一個新的組 ;
DiagramEvent.subject 爲新的組 組,
已在事務中調用. - "SelectionUngrouped",用戶已刪除選定的組,但通過CommandHandler.ungroupSelection保留其成員;
DiagramEvent.subject未分組的 組的集合,
DiagramEvent.parameter 參數是未分組的前成員零部件的集合, 已在事務中調用. - "SubGraphCollapsed" 子圖摺疊事件, 用戶通過CommandHandler.collapseSubGraph將選定的組摺疊;
DiagramEvent.subject爲已摺疊的 組集合,
已在事務中調用. - "SubGraphExpanded" 子圖展開事件, 用戶通過CommandHandler.expandSubGraph將選定的組展開;
the DiagramEvent.subject爲展開的 組集合,
已在事務中調用. - "TextEdited" 文本塊修改事件,用戶通過文本編輯工具改變了文本塊的字符串值;
DiagramEvent.subject 爲編輯過的 TextBlock 文本塊,
the DiagramEvent.parameter 爲原始字符串,
已在事務中調用. - "TreeCollapsed" 樹摺疊事件, 用戶通過CommandHandler.collapseTree摺疊所選節點的子樹;
DiagramEvent.subject 爲被摺疊的節點集合,
已在事務中調用. - "TreeExpanded" 樹展開事件, 用戶通過CommandHandler.expandTree展開了所選節點的子樹;
DiagramEvent.subject爲被展開的節點集合,
已在事務中調用. - "ViewportBoundsChanged"視窗範圍改變事件,圖表中可見的區域, Diagram.viewportBounds,發生了改變;
DiagramEvent.subject 爲一個對象,
"scale"屬性是舊的 Diagram.scale 值,
"position" 屬性是舊的Diagram.position 值,
"bounds" 屬性是舊的 Diagram.viewportBounds 值,
DiagramEvent.parameter 是舊的viewportBounds Rect.
構造函數
constructor
- new DiagramEvent(): DiagramEvent
-
DiagramEvent類構造函數生成一個空的DiagramEvent.你不需要調用這個構造函數.但是如果您這樣做了,您必須首先將diagram設置爲Diagram,然後才能進行其他使用.
Returns DiagramEvent
屬性
diagram : Diagram
-
獲取與事件關聯的圖表.
name : string
-
獲取或設置圖表事件類型的名稱.此屬性應始終設置爲可識別的名稱列表之一,如圖表事件文檔中所列.
parameter : any
-
獲取或設置描述對圖表事件subject更改的可選對象.此屬性默認爲null.
subject : any
-
獲取或設置作爲圖表事件subject的可選對象.此屬性默認爲null.