/// <summary> /// Checks whether a given file sub-type is a code one. /// </summary> /// <param name="itemSubType">File sub-type.</param> /// <param name="miscFilesAsCode">Treat miscellaneous files as code ones.</param> /// <returns>File sub-type status.</returns> public bool IsCodeSubType(FileSubType itemSubType, bool miscFilesAsCode = true) { switch (itemSubType) { case FileSubType.Code: case FileSubType.WinForm: case FileSubType.Component: case FileSubType.UserControl: case FileSubType.WebFormCode: case FileSubType.WebControlCode: case FileSubType.WebServiceCode: case FileSubType.WebAppFileCode: case FileSubType.WebGenericHandler: case FileSubType.WebMasterPageCode: return(true); case FileSubType.JScript: case FileSubType.XmlFile: case FileSubType.ConfigFile: return(miscFilesAsCode); default: return(false); } }
/// <summary> /// Checks whether a given file sub-type is for web file that is represented by a single code file only /// (like Generic Handler web file, for instance). /// </summary> /// <param name="itemSubType">File sub-type.</param> /// <param name="languageSet">Language.</param> /// <param name="isWebProject">Whether item is part of web project.</param> /// <returns>File sub-type status.</returns> public bool IsWebCodeOnlySubType(FileSubType itemSubType, LanguageSettings languageSet, bool isWebProject) { switch (itemSubType) { case FileSubType.WebGenericHandler: return(true); default: return(false); } }
/// <summary> /// Checks whether a given file sub-type is WinForms that supports design surface. /// </summary> /// <param name="itemSubType">File sub-type.</param> /// <returns>File sub-type status.</returns> public bool IsWinDesignSubType(FileSubType itemSubType) { switch (itemSubType) { case FileSubType.WinForm: case FileSubType.Component: case FileSubType.UserControl: return(true); default: return(false); } }
/// <summary> /// Checks whether a given file sub-type is a web one with both design and code views. /// </summary> /// <param name="itemSubType">File sub-type.</param> /// <returns>File sub-type status.</returns> public bool IsDesignAndCodeSubType(FileSubType itemSubType) { switch (itemSubType) { case FileSubType.WebForm: case FileSubType.WebControl: case FileSubType.WebAppFile: case FileSubType.WebService: case FileSubType.XmlSchema: case FileSubType.XamlFile: return(true); default: return(false); } }
/// <summary> /// Checks whether a given file is a .Designer generated file. /// </summary> /// <param name="projectItem">Project item. Untyped extensibility link (name matches the actual type).</param> /// <param name="itemSubType">File sub-type.</param> /// <param name="languageSet">Language.</param> /// <param name="isWebProject">Whether item is part of web project.</param> /// <returns>File status.</returns> public bool IsDesignerItem(object projectItem, FileSubType itemSubType, LanguageSettings languageSet, bool isWebProject) { ThreadHelper.ThrowIfNotOnUIThread(); if (languageSet?.Type == LanguageType.Unknown) { return(false); } if ((languageSet.DesignerFiles == LanguageDesignerFiles.NotSupported) || isWebProject || !IsCodeSubType(itemSubType)) { return(false); } var dteItem = projectItem as ProjectItem; if (dteItem == null) { return(false); } var checkFileName = true; // If language is fully supported then it must expose the below property // Otherwise we must rely on unconditional file name check if (languageSet.DesignerFiles == LanguageDesignerFiles.FullySupported) { // TODO: revisit when substituted with less performance intensive API //try //{ // // Various files are reported as .Designer - further file name check is required // var props = dteItem.Properties; // if (props == null) // return false; // var prop = props.Item(PROP_IS_DEPENDENT_FILE); // if (prop != null) // checkFileName = (bool)prop.Value; // else // return false; //} //catch //{ // return false; //} } // Check if last part of the file name ends with .Designer if (checkFileName) { var fileName = dteItem.get_FileNames(1); if ((fileName != null) && (fileName != string.Empty)) { fileName = Path.GetFileNameWithoutExtension(fileName); if (fileName.EndsWith(DESIGNER_EXT, StringComparison.OrdinalIgnoreCase)) { return(true); } } } return(false); }
public static IPersistenceSystem GetPersistenseSystem(FilePersistenceSystemType systemType, FileType fileType, FileSubType fileSubType, string folder) { IPersistenceSystem persistenceSystem; switch (systemType) { case FilePersistenceSystemType.AzureFile: persistenceSystem = new AzureFilePersistenceSystem(fileType, fileSubType, folder); break; case FilePersistenceSystemType.AzureBlob: persistenceSystem = new AzureBlobPersistenceSystem(fileType, fileSubType, folder); break; case FilePersistenceSystemType.Local: default: persistenceSystem = new LocalPersistenceSystem(fileType, fileSubType, folder); break; } return(persistenceSystem); }
public PersistenceSystem(FileType fileType, FileSubType fileSubType, string folder) { this.fileType = fileType; this.fileSubType = fileSubType; this.folder = folder; }