Esempio n. 1
0
        private bool AddWebRoleSupportFiles()
        {
            var    uiShell   = (IVsUIShell)((IServiceProvider)this).GetService(typeof(SVsUIShell));
            var    emptyGuid = Guid.Empty;
            var    result    = new[] { VSADDRESULT.ADDRESULT_Failure };
            IntPtr dlgOwner;

            if (ErrorHandler.Failed(uiShell.GetDialogOwnerHwnd(out dlgOwner)))
            {
                dlgOwner = IntPtr.Zero;
            }

            var fullTemplate = ((EnvDTE80.Solution2) this.GetDTE().Solution).GetProjectItemTemplate(
                "AzureCSWebRole.zip",
                PythonConstants.LanguageName
                );

            return(ErrorHandler.Succeeded(_innerProject3.AddItemWithSpecific(
                                              (uint)VSConstants.VSITEMID.Root,
                                              VSADDITEMOPERATION.VSADDITEMOP_RUNWIZARD,
                                              "bin",
                                              1,
                                              new[] { fullTemplate },
                                              dlgOwner,
                                              0u,
                                              ref emptyGuid,
                                              string.Empty,
                                              ref emptyGuid,
                                              result
                                              )) && result[0] == VSADDRESULT.ADDRESULT_Success);
        }
Esempio n. 2
0
        /// <summary>
        /// Adds one or more files to the solution folder.
        /// </summary>
        public async Task <IEnumerable <File> > AddExistingFilesAsync(params string[] files)
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            IVsUIShell uiShell = await VS.Services.GetUIShellAsync();

            uiShell.GetDialogOwnerHwnd(out IntPtr hwndDlgOwner);

            GetItemInfo(out IVsHierarchy hierarchy, out _, out _);

            Guid rguidEditorType = Guid.Empty, rguidLogicalView = Guid.Empty;

            VSADDRESULT[] result   = new VSADDRESULT[1];
            IVsProject3   project3 = (IVsProject3)hierarchy;

            project3.AddItemWithSpecific(itemidLoc: (uint)VSConstants.VSITEMID.Root,
                                         dwAddItemOperation: VSADDITEMOPERATION.VSADDITEMOP_OPENFILE,
                                         pszItemName: "test",
                                         cFilesToOpen: (uint)files.Count(), //The name of the parameter is misleading, it's the number of files to process,
                                                                            //and whether to open in editor or not is determined by other flag
                                         rgpszFilesToOpen: files,
                                         hwndDlgOwner: hwndDlgOwner,
                                         grfEditorFlags: 0u, //We do not want to open in the editor
                                         rguidEditorType: ref rguidEditorType,
                                         pszPhysicalView: null,
                                         rguidLogicalView: ref rguidLogicalView,
                                         pResult: result);

            return(await File.FromFilesAsync(files));
        }
Esempio n. 3
0
        public int AddItem(uint itemidLoc, VSADDITEMOPERATION dwAddItemOperation, string pszItemName, uint cFilesToOpen, string[] rgpszFilesToOpen, IntPtr hwndDlgOwner, VSADDRESULT[] pResult)
        {
            // Check if we are adding an item to a folder that consists of browser-side code.
            // In this case, we will want to open the file with the default editor.
            var isClientCode = false;
            var project      = _innerVsHierarchy.GetProject().GetNodejsProject();

            var selectedItems = this.GetSelectedItems().GetEnumerator();

            if (selectedItems.MoveNext())
            {
                var    currentId = selectedItems.Current.itemid;
                string name;
                GetCanonicalName(currentId, out name);
                var nodeFolderNode = project.FindNodeByFullPath(name) as NodejsFolderNode;

                if (nodeFolderNode != null)
                {
                    if (nodeFolderNode.ContentType == FolderContentType.Browser)
                    {
                        isClientCode = true;
                    }
                }
            }

            if (!isClientCode && _innerProject3 != null && IsJavaScriptFile(pszItemName))
            {
                Guid ourEditor = Guid.Empty;
                Guid view      = Guid.Empty;
                return(_innerProject3.AddItemWithSpecific(
                           itemidLoc,
                           dwAddItemOperation,
                           pszItemName,
                           cFilesToOpen,
                           rgpszFilesToOpen,
                           hwndDlgOwner,
                           dwAddItemOperation == VSADDITEMOPERATION.VSADDITEMOP_CLONEFILE ?
                           (uint)__VSSPECIFICEDITORFLAGS.VSSPECIFICEDITOR_DoOpen :
                           0,
                           ref ourEditor,
                           String.Empty,
                           ref view,
                           pResult
                           ));
            }
            return(_innerProject.AddItem(itemidLoc, dwAddItemOperation, pszItemName, cFilesToOpen, rgpszFilesToOpen, hwndDlgOwner, pResult));
        }
Esempio n. 4
0
 public int AddItem(uint itemidLoc, VSADDITEMOPERATION dwAddItemOperation, string pszItemName, uint cFilesToOpen, string[] rgpszFilesToOpen, IntPtr hwndDlgOwner, VSADDRESULT[] pResult)
 {
     if (_innerProject3 != null && IsJavaScriptFile(pszItemName))
     {
         Guid ourEditor = typeof(NodejsEditorFactory).GUID;
         Guid view      = Guid.Empty;
         return(_innerProject3.AddItemWithSpecific(
                    itemidLoc,
                    dwAddItemOperation,
                    pszItemName,
                    cFilesToOpen,
                    rgpszFilesToOpen,
                    hwndDlgOwner,
                    dwAddItemOperation == VSADDITEMOPERATION.VSADDITEMOP_CLONEFILE ?
                    (uint)__VSSPECIFICEDITORFLAGS.VSSPECIFICEDITOR_DoOpen :
                    0,
                    ref ourEditor,
                    String.Empty,
                    ref view,
                    pResult
                    ));
     }
     return(_innerProject.AddItem(itemidLoc, dwAddItemOperation, pszItemName, cFilesToOpen, rgpszFilesToOpen, hwndDlgOwner, pResult));
 }