Exemple #1
0
        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);
        }
Exemple #2
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]);
 }
Exemple #3
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]);
        }
Exemple #4
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);
        }