public PerProjectSettings(Lifetime lifetime, ISolution solution, ChangeManager changeManager, ModuleReferenceResolveSync moduleReferenceResolveSync, IViewableProjectsCollection projects, ISettingsSchema settingsSchema, SettingsStorageProvidersCollection settingsStorageProviders, IShellLocks locks, ILogger logger, InternKeyPathComponent interned, UnityProjectFileCacheProvider unityProjectFileCache) { mySolution = solution; myChangeManager = changeManager; mySettingsSchema = settingsSchema; mySettingsStorageProviders = settingsStorageProviders; myLocks = locks; myLogger = logger; myInterned = interned; myUnityProjectFileCache = unityProjectFileCache; myProjectMountPoints = new Dictionary <IProject, SettingsStorageMountPoint>(); myProjectLifetimes = new Dictionary <IProject, Lifetime>(); changeManager.RegisterChangeProvider(lifetime, this); changeManager.AddDependency(lifetime, this, moduleReferenceResolveSync); projects.Projects.View(lifetime, (projectLifetime, project) => { myProjectLifetimes.Add(project, projectLifetime); if (!project.IsUnityProject()) { return; } InitialiseProjectSettings(project); }); }
public PerProjectSettings(Lifetime lifetime, IViewableProjectsCollection projects, ISettingsSchema settingsSchema, SettingsStorageProvidersCollection settingsStorageProviders, IShellLocks locks, ILogger logger, InternKeyPathComponent interned, LangVersionCacheProvider langVersionCache) { this.settingsSchema = settingsSchema; this.logger = logger; myLangVersionCache = langVersionCache; projects.Projects.View(lifetime, (projectLifetime, project) => { if (!project.IsUnityProject()) { return; } var mountPoint = CreateMountPoint(projectLifetime, project, settingsStorageProviders, locks, logger, interned); InitialiseSettingValues(project, mountPoint); // Just to make things more interesting, the langversion cache isn't // necessarily updated by the time we get called, so wire up a callback myLangVersionCache.RegisterDataChangedCallback(projectLifetime, project.ProjectFileLocation, () => InitialiseSettingValues(project, mountPoint)); }); }
public JetBoxSettingsStorage(Lifetime lifetime, ProductSettingsLocation productSettingsLocation, ISettingsSchema settingsSchema, DataContexts dataContexts, IThreading threading, IFileSystemTracker fileSystemTracker, IFileSettingsStorageBehavior settingsStorageBehavior, ISettingsLogger settingsLogger, ISettingsChangeDispatch settingsChangeDispatch, SettingsStorageMountPoints.SelfCheckControl selfCheckControl, InternKeyPathComponent interned) { var filePath = productSettingsLocation.GetUserSettingsNonRoamingDir(ApplicationHostDetails.PerHostAndWave).Combine("JetBox" + XmlFileSettingsStorage.SettingsStorageFileExtensionWithDot); var property = new Property<FileSystemPath>(lifetime, GetType().Name + "Path", filePath); var settingsProvider = new JetBoxSettingsProvider(lifetime, GetType().Name + "::Provider", property, true, 0, IsAvailable.Always, SettingsStoreSerializationToXmlDiskFile.SavingEmptyContent.DeleteFile, threading, fileSystemTracker, settingsStorageBehavior, interned, new Dictionary<PropertyId, object>()); var mounts = new SettingsStorageMountPoints(lifetime, new CollectionEvents<IProvider<ISettingsStorageMountPoint>>(lifetime, GetType() + "::Mounts") { settingsProvider }, threading, settingsLogger, selfCheckControl); mySettingsStore = new SettingsStore(lifetime, settingsSchema, mounts, dataContexts, null, settingsLogger, settingsChangeDispatch ); }
public PerProjectSettings(ISettingsSchema settingsSchema, SettingsStorageProvidersCollection settingsStorageProviders, IShellLocks locks, ILogger logger, InternKeyPathComponent interned, UnityProjectFileCacheProvider unityProjectFileCache) { mySettingsSchema = settingsSchema; mySettingsStorageProviders = settingsStorageProviders; myLocks = locks; myLogger = logger; myInterned = interned; myUnityProjectFileCache = unityProjectFileCache; myProjectMountPoints = new Dictionary <IProject, SettingsStorageMountPoint>(); }
public SettingsLayersProvider(Lifetime lifetime, ISolution solution, IShellLocks locks, SettingsStorageProvidersCollection settingsStorageProviders, IEnumerable <IUnitySolutionSettingsProvider> solutionSettingsProviders, IEnumerable <IUnityProjectSettingsProvider> projectSettingsProviders, InternKeyPathComponent internedKeyPaths, ILogger logger) { myLifetime = lifetime; mySolution = solution; myLocks = locks; mySettingsStorageProviders = settingsStorageProviders; mySolutionSettingsProviders = solutionSettingsProviders; myProjectSettingsProviders = projectSettingsProviders; myInternedKeyPaths = internedKeyPaths; myLogger = logger; }
public PerProjectSettings(Lifetime lifetime, IViewableProjectsCollection projects, ISettingsSchema settingsSchema, SettingsStorageProvidersCollection settingsStorageProviders, IShellLocks locks, ILogger logger, InternKeyPathComponent interned) { this.settingsSchema = settingsSchema; this.logger = logger; projects.Projects.View(lifetime, (projectLifetime, project) => { if (!project.HasFlavour <UnityProjectFlavor>()) { return; } var mountPoint = CreateMountPoint(projectLifetime, project, settingsStorageProviders, locks, logger, interned); InitNamespaceProviderSettings(mountPoint); InitLanguageLevelSettings(mountPoint); }); }
private static SettingsStorageMountPoint CreateMountPoint(Lifetime projectLifetime, IProject project, SettingsStorageProvidersCollection settingsStorageProviders, IShellLocks locks, ILogger logger, InternKeyPathComponent interned) { var storageName = $"Project {project.Name} (Unity)"; var storage = SettingsStorageFactory.CreateStorage(projectLifetime, storageName, logger, interned); var isAvailable = new IsAvailableByDataConstant <IProject>(projectLifetime, ProjectModelDataConstants.Project, project, locks); // Set at a priority less than the .csproj.dotSettings layer, so we can be overridden var priority = ProjectModelSettingsStorageMountPointPriorityClasses.ProjectShared * 0.9; var mountPoint = new SettingsStorageMountPoint(storage, SettingsStorageMountPoint.MountPath.Default, MountPointFlags.IsDefaultValues, priority, isAvailable, storageName); settingsStorageProviders.MountPoints.Add(projectLifetime, mountPoint); settingsStorageProviders.Storages.Add(projectLifetime, storage); return(mountPoint); }
public PerProjectSettings(ISolution solution, ChangeManager changeManager, ISettingsSchema settingsSchema, SettingsStorageProvidersCollection settingsStorageProviders, IShellLocks locks, ILogger logger, InternKeyPathComponent interned, UnityProjectFileCacheProvider unityProjectFileCache, ProjectReferenceChangeTracker changeTracker) { mySolution = solution; myChangeManager = changeManager; mySettingsSchema = settingsSchema; mySettingsStorageProviders = settingsStorageProviders; myLocks = locks; myLogger = logger; myInterned = interned; myUnityProjectFileCache = unityProjectFileCache; myProjectMountPoints = new Dictionary <IProject, SettingsStorageMountPoint>(); myProjectLifetimes = new Dictionary <IProject, Lifetime>(); changeTracker.RegisterProjectChangeHandler(InitialiseProjectSettings); }
public JetBoxSettingsStorage(Lifetime lifetime, ProductSettingsLocation productSettingsLocation, ISettingsSchema settingsSchema, DataContexts dataContexts, IThreading threading, IFileSystemTracker fileSystemTracker, IFileSettingsStorageBehavior settingsStorageBehavior, ISettingsLogger settingsLogger, ISettingsChangeDispatch settingsChangeDispatch, SettingsStorageMountPoints.SelfCheckControl selfCheckControl, InternKeyPathComponent interned) { var filePath = productSettingsLocation.GetUserSettingsNonRoamingDir(ApplicationHostDetails.PerHostAndWave).Combine("JetBox" + XmlFileSettingsStorage.SettingsStorageFileExtensionWithDot); var property = new Property <FileSystemPath>(lifetime, GetType().Name + "Path", filePath); var settingsProvider = new JetBoxSettingsProvider(lifetime, GetType().Name + "::Provider", property, true, 0, IsAvailable.Always, SettingsStoreSerializationToXmlDiskFile.SavingEmptyContent.DeleteFile, threading, fileSystemTracker, settingsStorageBehavior, interned, new Dictionary <PropertyId, object>()); var mounts = new SettingsStorageMountPoints(lifetime, new CollectionEvents <IProvider <ISettingsStorageMountPoint> >(lifetime, GetType() + "::Mounts") { settingsProvider }, threading, settingsLogger, selfCheckControl); mySettingsStore = new SettingsStore(lifetime, settingsSchema, mounts, dataContexts, null, settingsLogger, settingsChangeDispatch); }
public JetBoxSettingsProvider([NotNull] Lifetime lifetime, [NotNull] string name, [NotNull] IProperty <FileSystemPath> path, bool isWritable, double priority, [NotNull] IIsAvailable isAvailable, SettingsStoreSerializationToXmlDiskFile.SavingEmptyContent whenNoContent, [NotNull] IThreading threading, [NotNull] IFileSystemTracker filetracker, [NotNull] IFileSettingsStorageBehavior behavior, InternKeyPathComponent interned, IEnumerable <KeyValuePair <PropertyId, object> > metadata) : base(lifetime, name, path, isWritable, priority, isAvailable, whenNoContent, threading, filetracker, behavior, interned, metadata) { }
public JetBoxSettingsProvider([NotNull] Lifetime lifetime, [NotNull] string name, [NotNull] IProperty<FileSystemPath> path, bool isWritable, double priority, [NotNull] IIsAvailable isAvailable, SettingsStoreSerializationToXmlDiskFile.SavingEmptyContent whenNoContent, [NotNull] IThreading threading, [NotNull] IFileSystemTracker filetracker, [NotNull] IFileSettingsStorageBehavior behavior, InternKeyPathComponent interned, IEnumerable<KeyValuePair<PropertyId, object>> metadata) : base(lifetime, name, path, isWritable, priority, isAvailable, whenNoContent, threading, filetracker, behavior, interned, metadata) { }