protected override void SetMenuItems() { menu = new GenericMenu(); itemAction = new AddItemAction(TC.get("TreeNode.AddElement6")); setItemAction = new AddSetItemAction(TC.get("TreeNode.AddElement60")); npcAction = new AddNPCAction(TC.get("TreeNode.AddElement8")); menu.AddItem(new GUIContent(itemAction.Label), false, Callback, itemAction); menu.AddItem(new GUIContent(setItemAction.Label), false, Callback, setItemAction); menu.AddItem(new GUIContent(npcAction.Label), false, Callback, npcAction); }
public void AddItemActionWorks() { List<string> list = new List<string>(); AddItemAction<string> action = new AddItemAction<string>(list.Add, s => list.Remove(s), "foo"); ActionManager am = new ActionManager(); am.RecordAction(action); Assert.AreEqual("foo", list[0]); am.Undo(); Assert.AreEqual(0, list.Count); am.Redo(); Assert.AreEqual("foo", list[0]); }
public void AddItemActionWorks() { List <string> list = new List <string>(); AddItemAction <string> action = new AddItemAction <string>(list.Add, s => list.Remove(s), "foo"); ActionManager am = new ActionManager(); am.RecordAction(action); Assert.AreEqual("foo", list[0]); am.Undo(); Assert.AreEqual(0, list.Count); am.Redo(); Assert.AreEqual("foo", list[0]); }
/// <summary> /// Show the item dialog window to add new/existing items. /// </summary> private static async Task ShowAddItemDialogAsync( IPhysicalProjectTree projectTree, IUnconfiguredProjectVsServices projectVsServices, SVsServiceProvider serviceProvider, IProjectTree target, AddItemAction addItemAction) { Requires.NotNull(projectTree, nameof(projectTree)); Requires.NotNull(projectVsServices, nameof(projectVsServices)); Requires.NotNull(serviceProvider, nameof(serviceProvider)); Requires.NotNull(target, nameof(target)); await projectVsServices.ThreadingService.SwitchToUIThread(); var strBrowseLocations = projectTree.TreeProvider.GetAddNewItemDirectory(target); ShowAddItemDialog(serviceProvider, target, projectVsServices.VsProject, strBrowseLocations, addItemAction); }
private static int ShowAddItemDialog(SVsServiceProvider serviceProvider, IProjectTree target, IVsProject vsProject, string strBrowseLocations, AddItemAction addItemAction) { #pragma warning disable RS0030 // Do not used banned APIs IVsAddProjectItemDlg addItemDialog = serviceProvider.GetService <IVsAddProjectItemDlg, SVsAddProjectItemDlg>(); #pragma warning restore RS0030 // Do not used banned APIs Assumes.Present(addItemDialog); __VSADDITEMFLAGS uiFlags = __VSADDITEMFLAGS.VSADDITEM_AddNewItems | __VSADDITEMFLAGS.VSADDITEM_SuggestTemplateName | __VSADDITEMFLAGS.VSADDITEM_AllowHiddenTreeView; if (addItemAction == AddItemAction.ExistingItem) { uiFlags = __VSADDITEMFLAGS.VSADDITEM_AddExistingItems | __VSADDITEMFLAGS.VSADDITEM_AllowMultiSelect | __VSADDITEMFLAGS.VSADDITEM_AllowStickyFilter | __VSADDITEMFLAGS.VSADDITEM_ProjectHandlesLinks; } string strFilter = string.Empty; Guid addItemTemplateGuid = Guid.Empty; // Let the dialog ask the hierarchy itself return(addItemDialog.AddProjectItemDlg(target.GetHierarchyId(), ref addItemTemplateGuid, vsProject, (uint)uiFlags, null, null, ref strBrowseLocations, ref strFilter, out _)); }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="actionManager"></param> /// <param name="list"></param> /// <param name="item"></param> public static void AddItemAction <T>(this ActionManager actionManager, ICollection <T> list, T item) { var action = new AddItemAction <T>(list.Add, m => list.Remove(m), item); actionManager.Execute(action); }