private static void FillContextAddFolders(FolderManagerInputInfo inputInfo, GenericMenu contextMenu) { var state = inputInfo.FolderTreeState; contextMenu.AddItem(new GUIContent("Add Folder"), false, CreateContextCallback, new FolderManagerInputInfo("Test Message", state)); }
public static void HandleLateInputEvents(FolderTreeViewState state) { if (ShouldIgnoreInput()) { return; } var inputInfo = new FolderManagerInputInfo(state); CallEventHandlers(inputInfo, true); }
private static void DeleteFolder(FolderManagerInputInfo inputInfo) { foreach (var item in inputInfo.FolderTreeState.GetSelectedItems()) { var element = inputInfo.FolderTreeState.Cache.FolderTree.TreeElements.FirstOrDefault(s => s.Id == item.id); DeleteChildren(inputInfo, element); } inputInfo.InputEvent.Use(); }
private static void DeleteChildren(FolderManagerInputInfo inputInfo, FolderTreeElement element) { if (element.HasChildren) { foreach (var treeElement in element.Children) { var el = treeElement as FolderTreeElement; inputInfo.FolderTreeState.Cache.FolderTree.RemoveElement(el); DeleteChildren(inputInfo, el); } } else { inputInfo.FolderTreeState.Cache.FolderTree.RemoveElement(element); } FolderManagerCallbacks.IssueOnDeleteElement(element); }
private static void CallEventHandlers(FolderManagerInputInfo inputInfo, bool late) { object[] parameter = { inputInfo }; foreach (var eventHandler in _eventHandlers) { if ((eventHandler.Key.HandledEvent == null || eventHandler.Key.HandledEvent == inputInfo.InputEvent.type) && (late ? eventHandler.Key.Priority >= 100 : eventHandler.Key.Priority < 100)) { // Event is happening and specified priority is ok with the late-state eventHandler.Value.DynamicInvoke(parameter); if (inputInfo.InputEvent.type == EventType.Used) { return; } } } }
private static void HandleContextClicks(FolderManagerInputInfo inputInfo) { if (Event.current.button != 1) { return; } var contextMenu = new GenericMenu(); if (inputInfo.FolderTreeState.SelectedItem != null) { FillContextMenu(inputInfo, contextMenu, ContextType.Folder); } else { FillContextMenu(inputInfo, contextMenu, ContextType.FolderTree); } contextMenu.Show(inputInfo.InputPos); Event.current.Use(); }
private static void FillContextMenu(FolderManagerInputInfo inputInfo, GenericMenu contextMenu, ContextType contextType) { foreach (var contextEntry in _contextEntries) { if (contextEntry.Key.ContextType == contextType) { contextMenu.AddItem(new GUIContent(contextEntry.Key.ContextPath), false, contextEntry.Value, inputInfo); } } object[] fillerParams = { inputInfo, contextMenu }; foreach (var contextFiller in _contextFillers) { if (contextFiller.Key.ContextType == contextType) { contextFiller.Value.DynamicInvoke(fillerParams); } } }