private static void AddMenuItems(FieldContextMenuItems enabledItems, ref GenericMenu menu, string targetName, [NotNull] Type type, bool editable, [NotNull] GenericMenu.MenuFunction copy, [NotNull] GenericMenu.MenuFunction paste, [CanBeNull] GenericMenu.MenuFunction reset) { bool addSeparator = false; if (enabledItems.HasFlag(FieldContextMenuItems.Reset) && reset != null) { if (editable) { #if DEV_MODE && DEBUG_ADD_MENU_ITEM Debug.Log("Adding Reset to context menu for property \"" + targetName + "\" of type " + type.Name); #endif menu.AddItem(GUIContentPool.Create("Reset"), false, () => { reset(); DrawerUtility.SendResetMessage(StringUtils.SplitPascalCaseToWords(targetName)); }); } else { menu.AddDisabledItem(GUIContentPool.Create("Reset")); } addSeparator = true; } if (enabledItems.HasFlag(FieldContextMenuItems.CopyPaste)) { if (addSeparator) { menu.AddSeparator(""); } addSeparator = true; #if DEV_MODE && DEBUG_ADD_MENU_ITEM Debug.Log("Adding Copy and Paste to context menu for property \"" + targetName + "\" of type " + type.Name); #endif menu.AddItem(GUIContentPool.Create("Copy"), false, () => { copy(); Clipboard.SendCopyToClipboardMessage(targetName); }); if (editable) { if (type.IsUnityObject()) { if (Clipboard.HasObjectReference()) { menu.AddItem(GUIContentPool.Create("Paste"), false, () => { paste(); Clipboard.SendPasteFromClipboardMessage(targetName); }); } else { menu.AddDisabledItem(GUIContentPool.Create("Paste")); } } else if (Clipboard.Content.Length > 0 && Clipboard.CanPasteAs(type)) { menu.AddItem(GUIContentPool.Create("Paste"), false, () => { paste(); Clipboard.SendPasteFromClipboardMessage(targetName); }); } else { menu.AddDisabledItem(GUIContentPool.Create("Paste")); } } } if (enabledItems.HasFlag(FieldContextMenuItems.InspectStaticMembers)) { if (addSeparator) { menu.AddSeparator(""); } menu.AddItem(GUIContentPool.Create("Inspect " + StringUtils.ToStringSansNamespace(type) + " Static Members"), false, () => { var inspector = InspectorUtility.ActiveManager.LastSelectedActiveOrDefaultInspector(); if (inspector == null) { DrawGUI.ExecuteMenuItem(PowerInspectorMenuItemPaths.NewWindow); inspector = InspectorUtility.ActiveManager.LastSelectedActiveOrDefaultInspector(); } inspector.RebuildDrawers(null, type); }); } }