示例#1
0
        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);
            });
        }
示例#2
0
        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));
            });
        }
示例#3
0
        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 );
        }
示例#4
0
 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);
        }
示例#9
0
        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);
        }
示例#10
0
 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)
 {
 }
示例#11
0
 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)
 {
 }