Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
        /// <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);
            }
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 public PersistenceSystem(FileType fileType, FileSubType fileSubType, string folder)
 {
     this.fileType    = fileType;
     this.fileSubType = fileSubType;
     this.folder      = folder;
 }