예제 #1
0
        private void ChangeExistingToolkitId(IInstalledToolkitInfo existingToolkitInfo)
        {
            var currentElement = this.DataContext as IProductElement;

            if (currentElement != null)
            {
                // Update the element properties
                var toolkit     = currentElement.As <IPatternToolkit>();
                var toolkitInfo = toolkit.Development.PatternToolkitInfo.AsElement();

                toolkit.ExistingToolkitId = existingToolkitInfo != null?existingToolkitInfo.Id.ToString() : string.Empty;

                var property = toolkitInfo.Properties.FirstOrDefault(p => p.DefinitionName == Reflector <IToolkitInfo> .GetPropertyName(x => x.Description));
                if (property != null)
                {
                    property.Value = existingToolkitInfo != null ? existingToolkitInfo.Description : property.Info.DefaultValue.Value;
                }

                property = currentElement.Properties.FirstOrDefault(p => p.DefinitionName == Reflector <IPatternToolkit> .GetPropertyName(x => x.PatternName));
                if (property != null)
                {
                    property.Value = existingToolkitInfo != null ? existingToolkitInfo.Schema.Pattern.Name : property.Info.DefaultValue.Value;
                }

                property = currentElement.Properties.FirstOrDefault(p => p.DefinitionName == Reflector <IPatternToolkit> .GetPropertyName(x => x.PatternDescription));
                if (property != null)
                {
                    property.Value = existingToolkitInfo != null ? existingToolkitInfo.Schema.Pattern.Description : property.Info.DefaultValue.Value;
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Retrieves the custom extensions that match the given content type within the extension.
        /// </summary>
        public static IEnumerable <string> GetCustomExtensions(this IInstalledToolkitInfo registration, string contentType)
        {
            Guard.NotNull(() => registration, registration);
            Guard.NotNullOrEmpty(() => contentType, contentType);

            return(registration.Extension.Content.Where(
                       content => content.ContentTypeName.Equals(contentType, StringComparison.OrdinalIgnoreCase))
                   .Select(content => content.RelativePath));
        }
예제 #3
0
            public void InitializeContext()
            {
                this.solution = VsIdeTestHostContext.ServiceProvider.GetService <ISolution>();
                this.solution.CreateInstance(this.DeploymentDirectory, "Blank");

                this.patternManager = VsIdeTestHostContext.ServiceProvider.GetService <IPatternManager>();

                this.toolkit = patternManager.InstalledToolkits
                               .SingleOrDefault(t => t.Id == "NuPattern.Runtime.IntegrationTests.TestToolkit");
            }
            public void InitializeContext()
            {
                this.solution = VsIdeTestHostContext.ServiceProvider.GetService<ISolution>();
                this.solution.CreateInstance(this.DeploymentDirectory, "Blank");

                this.patternManager = VsIdeTestHostContext.ServiceProvider.GetService<IPatternManager>();

                this.toolkit = patternManager.InstalledToolkits
                    .SingleOrDefault(t => t.Id == "NuPattern.Runtime.IntegrationTests.TestToolkit");
            }
예제 #5
0
        /// <summary>
        /// Determines whether the specified toolkit contains the schema.
        /// </summary>
        /// <param name="toolkitInfo">The toolkit info.</param>
        /// <param name="product">The product to verify the schema.</param>
        /// <returns>
        /// <c>true</c> if the specified toolkit info contains the schema; otherwise, <c>false</c>.
        /// </returns>
        public static bool ContainsSchema(this IInstalledToolkitInfo toolkitInfo, IProduct product)
        {
            Guard.NotNull(() => toolkitInfo, toolkitInfo);
            Guard.NotNull(() => product, product);

            return(product.ExtensionId.Equals(toolkitInfo.Id, StringComparison.OrdinalIgnoreCase) &&
                   toolkitInfo.Schema != null &&
                   toolkitInfo.Schema.Pattern != null &&
                   product.DefinitionId == toolkitInfo.Schema.Pattern.Id);
        }
예제 #6
0
            public void Initialize()
            {
                this.store = new DslTestStore<ProductStateStoreDomainModel>();

                this.toolkit = Mocks.Of<IInstalledToolkitInfo>().First(
                    f => f.Id == "foo" && f.Schema.Pattern.Id == Guid.NewGuid());

                var serviceProvider = Mock.Get(this.store.ServiceProvider);
                serviceProvider.Setup(sp => sp.GetService(typeof(IPatternManager)))
                    .Returns(Mocks.Of<IPatternManager>().First(x => x.InstalledToolkits == new[] { this.toolkit }));
            }
예제 #7
0
            public void Initialize()
            {
                this.store = new DslTestStore <ProductStateStoreDomainModel>();

                this.toolkit = Mocks.Of <IInstalledToolkitInfo>().First(
                    f => f.Id == "foo" && f.Schema.Pattern.Id == Guid.NewGuid());

                var serviceProvider = Mock.Get(this.store.ServiceProvider);

                serviceProvider.Setup(sp => sp.GetService(typeof(IPatternManager)))
                .Returns(Mocks.Of <IPatternManager>().First(x => x.InstalledToolkits == new[] { this.toolkit }));
            }
        public void InitializeContext()
        {
            var solution = VsIdeTestHostContext.ServiceProvider.GetService <ISolution>();

            solution.Open(PathTo(@"EmptySolution.sln"));

            this.manager = VsIdeTestHostContext.ServiceProvider.GetService <IPatternManager>();
            var componentModel    = VsIdeTestHostContext.ServiceProvider.GetService <SComponentModel, IComponentModel>();
            var installedToolkits = componentModel.GetService <IEnumerable <IInstalledToolkitInfo> >();

            this.toolkit = installedToolkits
                           .SingleOrDefault(toolkit => toolkit.Id.Equals("1530D736-97EA-4B4A-8A25-C6C7A089D1BB", StringComparison.OrdinalIgnoreCase));
        }
        public void InitializeContext()
        {
            var solution = VsIdeTestHostContext.ServiceProvider.GetService<ISolution>();

            solution.Open(PathTo(@"EmptySolution.sln"));

            this.manager = VsIdeTestHostContext.ServiceProvider.GetService<IPatternManager>();
            var componentModel = VsIdeTestHostContext.ServiceProvider.GetService<SComponentModel, IComponentModel>();
            var installedToolkits = componentModel.GetService<IEnumerable<IInstalledToolkitInfo>>();

            this.toolkit = installedToolkits
                .SingleOrDefault(toolkit => toolkit.Id.Equals("1530D736-97EA-4B4A-8A25-C6C7A089D1BB", StringComparison.OrdinalIgnoreCase));
        }
예제 #10
0
        /// <summary>
        /// Creates the pattern from the specified <see cref="IInstalledToolkitInfo"/>.
        /// </summary>
        /// <param name="toolkitInfo">The toolkit info.</param>
        /// <param name="name">The pattern name.</param>
        /// <param name="raiseInstantiateEvents">Whether instantiation events should be raised.</param>
        public virtual IProduct CreateProduct(IInstalledToolkitInfo toolkitInfo, string name, bool raiseInstantiateEvents = true)
        {
            Guard.NotNull(() => toolkitInfo, toolkitInfo);
            Guard.NotNullOrEmpty(() => name, name);

            if (!this.IsOpen)
            {
                this.OpenDefaultState();
            }

            if (this.Find(name) != null)
            {
                throw new ArgumentException(Resources.DuplicateProductName);
            }

            IProduct product;

            using (var tx = this.productStore.Store.TransactionManager.BeginTransaction())
                using (tracer.StartActivity(Resources.PatternManager_TraceCreatingProduct, name, toolkitInfo.Extension.Header.Name))
                    using (new StorePropertyBag(this.productStore.Store, ProductState.IsCreatingElementKey, true))
                    {
                        product = this.productStore.CreateProduct(p =>
                        {
                            p.ExtensionId  = toolkitInfo.Id;
                            p.DefinitionId = toolkitInfo.Schema.Pattern.Id;
                            p.InstanceName = name;

                            var prod = p as Product;
                            if (p != null)
                            {
                                prod.ExtensionName = toolkitInfo.Name;
                                prod.Author        = toolkitInfo.Author;
                                prod.Version       = toolkitInfo.Version.ToString();
                            }
                        });

                        // Flag the element in the state so that the ProductState class sees it and doesn't
                        // raise the instantiation event.
                        if (!raiseInstantiateEvents)
                        {
                            this.productStore.Store.PropertyBag.Add(product, null);
                        }

                        tx.Commit();
                    }

            return(product);
        }
예제 #11
0
        public void InitializeContext()
        {
            this.dte     = VsIdeTestHostContext.ServiceProvider.GetService <EnvDTE.DTE>();
            this.manager = VsIdeTestHostContext.ServiceProvider.GetService <IPatternManager>();
            var componentModel    = VsIdeTestHostContext.ServiceProvider.GetService <SComponentModel, IComponentModel>();
            var installedToolkits = componentModel.GetService <IEnumerable <IInstalledToolkitInfo> >();

            this.toolkit = installedToolkits.SingleOrDefault(t => t.Id == TestToolkitId);

#if VSVER11 || VSVER12
            //Copy TestToolkit template to VSExp template cache
            this.testToolkitTemplatePath = string.Format(CultureInfo.InvariantCulture, TestToolkitTemplateCacheFormat, dte.Version);
            Directory.CreateDirectory(Environment.ExpandEnvironmentVariables(this.testToolkitTemplatePath + @"\~PC\Projects\MyTemplate1.zip"));
            Directory.CreateDirectory(Environment.ExpandEnvironmentVariables(this.testToolkitTemplatePath + @"\~PC\Projects\MyTemplate2.zip"));
            File.Copy(Path.Combine(this.TestContext.DeploymentDirectory, @"MyTemplate1.gen.vstemplate"),
                      Environment.ExpandEnvironmentVariables(this.testToolkitTemplatePath + @"\~PC\Projects\MyTemplate1.zip\MyTemplate1.gen.vstemplate"), true);
            File.Copy(Path.Combine(this.TestContext.DeploymentDirectory, @"MyTemplate2.gen.vstemplate"),
                      Environment.ExpandEnvironmentVariables(this.testToolkitTemplatePath + @"\~PC\Projects\MyTemplate2.zip\MyTemplate2.gen.vstemplate"), true);
#endif
        }
        public void InitializeContext()
        {
            this.dte = VsIdeTestHostContext.ServiceProvider.GetService<EnvDTE.DTE>();
            this.manager = VsIdeTestHostContext.ServiceProvider.GetService<IPatternManager>();
            var componentModel = VsIdeTestHostContext.ServiceProvider.GetService<SComponentModel, IComponentModel>();
            var installedToolkits = componentModel.GetService<IEnumerable<IInstalledToolkitInfo>>();

            this.toolkit = installedToolkits.SingleOrDefault(t => t.Id == TestToolkitId);

#if VSVER11 || VSVER12
            //Copy TestToolkit template to VSExp template cache
            this.testToolkitTemplatePath = string.Format(CultureInfo.InvariantCulture, TestToolkitTemplateCacheFormat, dte.Version);
            Directory.CreateDirectory(Environment.ExpandEnvironmentVariables(this.testToolkitTemplatePath + @"\~PC\Projects\MyTemplate1.zip"));
            Directory.CreateDirectory(Environment.ExpandEnvironmentVariables(this.testToolkitTemplatePath + @"\~PC\Projects\MyTemplate2.zip"));
            File.Copy(Path.Combine(this.TestContext.DeploymentDirectory, @"MyTemplate1.gen.vstemplate"),
                Environment.ExpandEnvironmentVariables(this.testToolkitTemplatePath + @"\~PC\Projects\MyTemplate1.zip\MyTemplate1.gen.vstemplate"), true);
            File.Copy(Path.Combine(this.TestContext.DeploymentDirectory, @"MyTemplate2.gen.vstemplate"),
                Environment.ExpandEnvironmentVariables(this.testToolkitTemplatePath + @"\~PC\Projects\MyTemplate2.zip\MyTemplate2.gen.vstemplate"), true);
#endif
        }
예제 #13
0
        private static ITemplateSettings FindTemplateSettingsOrThrow(IInstalledToolkitInfo toolkit, Uri uri)
        {
            var uriString = uri.ToString();

            var settings = toolkit.Schema.Pattern.AutomationSettings
                           .Where(info => info.As <ITemplateSettings>() != null &&
                                  info.As <ITemplateSettings>().TemplateUri == uriString)
                           .Select(info => info.As <ITemplateSettings>())
                           .FirstOrDefault();

            if (settings != null)
            {
                return(settings);
            }

            // Traverse the rest in a generic way and find the first match;
            settings = toolkit.Schema.Pattern
                       .Views
                       .SelectMany(view => view.Elements)
                       .Traverse(element => element.Elements)
                       .SelectMany(element => element.AutomationSettings)
                       .Where(setting => setting.As <ITemplateSettings>() != null &&
                              setting.As <ITemplateSettings>().TemplateUri == uriString)
                       .Select(info => info.As <ITemplateSettings>())
                       .FirstOrDefault();

            if (settings == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        CultureInfo.CurrentCulture,
                                                        Resources.InstantiationTemplateWizard_SettingsUnavailable,
                                                        toolkit.Name,
                                                        uriString));
            }

            return(settings);
        }
예제 #14
0
        /// <summary>
        /// Executes this commmand.
        /// </summary>
        public override void Execute()
        {
            this.ValidateObject();

            tracer.Info(
                Resources.InstantiateSolutionElementCommand_TraceInitial,
                this.ToolkitIdentifier, this.InstanceName);

            IInstalledToolkitInfo toolkitInfo = this.PatternManager.InstalledToolkits
                                                .FirstOrDefault(element => element.Id == this.ToolkitIdentifier);

            if (toolkitInfo == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        CultureInfo.CurrentCulture,
                                                        Resources.InstantiateSolutionElementCommand_ErrorSolutionElementNotInstalled,
                                                        this.ToolkitIdentifier));
            }

            this.PatternManager.CreateProduct(toolkitInfo, this.InstanceName);

            tracer.Info(
                Resources.InstantiateSolutionElementCommand_TraceInstantiated, this.ToolkitIdentifier, this.InstanceName);
        }
예제 #15
0
 /// <summary>
 /// Creates a new instance 
 /// </summary>
 public InstalledToolkitInfo(IInstalledToolkitInfo info)
 {
     Guard.NotNull(() => info, info);
     this.info = info;
 }
예제 #16
0
        /// <summary>
        /// Gets the extension points.
        /// </summary>
        public static IEnumerable <IExtensionPointInfo> GetExtensionPoints(this IInstalledToolkitInfo registration)
        {
            Guard.NotNull(() => registration, registration);

            return(registration.Schema.FindAll <IExtensionPointInfo>());
        }
예제 #17
0
        /// <summary>
        /// Gets the customizable extensions.
        /// </summary>
        /// <param name="registration">The toolkit registration.</param>
        /// <returns>The list of customizable extensions.</returns>
        public static IEnumerable <IExtensionContent> GetCustomizableExtensions(this IInstalledToolkitInfo registration)
        {
            Guard.NotNull(() => registration, registration);

            return(registration.Extension.Content.Where(content => IsCustomizable(content)));
        }
        private static ITemplateSettings FindTemplateSettingsOrThrow(IInstalledToolkitInfo toolkit, Uri uri)
        {
            var uriString = uri.ToString();

            var settings = toolkit.Schema.Pattern.AutomationSettings
                .Where(info => info.As<ITemplateSettings>() != null &&
                    info.As<ITemplateSettings>().TemplateUri == uriString)
                .Select(info => info.As<ITemplateSettings>())
                .FirstOrDefault();

            if (settings != null)
            {
                return settings;
            }

            // Traverse the rest in a generic way and find the first match;
            settings = toolkit.Schema.Pattern
                .Views
                .SelectMany(view => view.Elements)
                .Traverse(element => element.Elements)
                .SelectMany(element => element.AutomationSettings)
                .Where(setting => setting.As<ITemplateSettings>() != null &&
                    setting.As<ITemplateSettings>().TemplateUri == uriString)
                .Select(info => info.As<ITemplateSettings>())
                .FirstOrDefault();

            if (settings == null)
            {
                throw new InvalidOperationException(string.Format(
                    CultureInfo.CurrentCulture,
                    Resources.InstantiationTemplateWizard_SettingsUnavailable,
                    toolkit.Name,
                    uriString));
            }

            return settings;
        }
예제 #19
0
 /// <summary>
 /// Creates a new instance
 /// </summary>
 public InstalledToolkitInfo(IInstalledToolkitInfo info)
 {
     Guard.NotNull(() => info, info);
     this.info = info;
 }
예제 #20
0
        private void ChangeExistingToolkitId(IInstalledToolkitInfo existingToolkitInfo)
        {
            var currentElement = this.DataContext as IProductElement;
            if (currentElement != null)
            {
                // Update the element properties
                var toolkit = currentElement.As<IPatternToolkit>();
                var toolkitInfo = toolkit.Development.PatternToolkitInfo.AsElement();

                toolkit.ExistingToolkitId = existingToolkitInfo != null ? existingToolkitInfo.Id.ToString() : string.Empty;

                var property = toolkitInfo.Properties.FirstOrDefault(p => p.DefinitionName == Reflector<IToolkitInfo>.GetPropertyName(x => x.Description));
                if (property != null)
                {
                    property.Value = existingToolkitInfo != null ? existingToolkitInfo.Description : property.Info.DefaultValue.Value;
                }

                property = currentElement.Properties.FirstOrDefault(p => p.DefinitionName == Reflector<IPatternToolkit>.GetPropertyName(x => x.PatternName));
                if (property != null)
                {
                    property.Value = existingToolkitInfo != null ? existingToolkitInfo.Schema.Pattern.Name : property.Info.DefaultValue.Value;
                }

                property = currentElement.Properties.FirstOrDefault(p => p.DefinitionName == Reflector<IPatternToolkit>.GetPropertyName(x => x.PatternDescription));
                if (property != null)
                {
                    property.Value = existingToolkitInfo != null ? existingToolkitInfo.Schema.Pattern.Description : property.Info.DefaultValue.Value;
                }
            }
        }