protected virtual void DrawEventHandlerGUI(Flowchart flowchart) { // Show available Event Handlers in a drop down list with type of current // event handler selected. Block block = target as Block; System.Type currentType = null; if (block._EventHandler != null) { currentType = block._EventHandler.GetType(); } string currentHandlerName = "<None>"; if (currentType != null) { EventHandlerInfoAttribute info = EventHandlerEditor.GetEventHandlerInfo(currentType); if (info != null) { currentHandlerName = info.EventHandlerName; } } var pos = EditorGUILayout.GetControlRect(true, 0, EditorStyles.objectField); if (pos.x != 0) { lastEventPopupPos = pos; lastEventPopupPos.x += EditorGUIUtility.labelWidth; lastEventPopupPos.y += EditorGUIUtility.singleLineHeight; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(new GUIContent("Execute On Event")); if (EditorGUILayout.DropdownButton(new GUIContent(currentHandlerName), FocusType.Passive)) { EventSelectorPopupWindowContent.DoEventHandlerPopUp(lastEventPopupPos, currentHandlerName, block, (int)(EditorGUIUtility.currentViewWidth - lastEventPopupPos.x), 200); } EditorGUILayout.EndHorizontal(); if (block._EventHandler != null) { EventHandlerEditor eventHandlerEditor = Editor.CreateEditor(block._EventHandler) as EventHandlerEditor; if (eventHandlerEditor != null) { EditorGUI.BeginChangeCheck(); eventHandlerEditor.DrawInspectorGUI(); if (EditorGUI.EndChangeCheck()) { SelectedBlockDataStale = true; } DestroyImmediate(eventHandlerEditor); } } }
static public void DoEventHandlerPopUp(Rect position, string currentHandlerName, Block block, int width, int height) { if (!FungusEditorPreferences.useLegacyMenus) { //new method EventSelectorPopupWindowContent win = new EventSelectorPopupWindowContent(currentHandlerName, block, width, height); PopupWindow.Show(position, win); } //old method DoOlderMenu(block); }