// Add existing Item: addType == AddExistingItem // This runs before the dialog protected override int AddItemToHierarchy(HierarchyAddType addType) { return base.AddItemToHierarchy(addType); }
/// <include file='doc\Hierarchy.uex' path='docs/doc[@for="HierarchyNode.AddItemToHierarchy"]/*' /> /// <summary> /// handles the add item and add new item cmdIds. Does so by invoking the system VS dialog, which calls back on the /// project's AddItem method /// </summary> /// <param name="addType"></param> /// <returns></returns> public virtual int AddItemToHierarchy(HierarchyAddType addType){ IVsAddProjectItemDlg addItemDialog; string strFilter = ""; int iDontShowAgain; uint uiFlags; IVsProject3 project = (IVsProject3)this.projectMgr; string strBrowseLocations = Path.GetDirectoryName(new Uri(this.projectMgr.projFile.BaseURI).LocalPath); System.Guid projectGuid = this.projectMgr.GetProjectGuid(); addItemDialog = this.GetService(typeof(IVsAddProjectItemDlg)) as IVsAddProjectItemDlg; if (addType == HierarchyAddType.addNewItem) uiFlags = (uint)(__VSADDITEMFLAGS.VSADDITEM_AddNewItems | __VSADDITEMFLAGS.VSADDITEM_SuggestTemplateName); /* | VSADDITEM_ShowLocationField */ else uiFlags = (uint)(__VSADDITEMFLAGS.VSADDITEM_AddExistingItems | __VSADDITEMFLAGS.VSADDITEM_AllowMultiSelect | __VSADDITEMFLAGS.VSADDITEM_AllowStickyFilter); addItemDialog.AddProjectItemDlg(this.hierarchyId, ref projectGuid, project, uiFlags, null, null, ref strBrowseLocations, ref strFilter, out iDontShowAgain); /*&fDontShowAgain*/ return 0; }