コード例 #1
0
 public void OnPaneUnload()
 {
     if (_content != null)
     {
         _content.SendMessage -= _content_SendMessage;
         _content.Unload();
         ctlContent.Children.RemoveAt(0);
         _content = null;
     }
 }
コード例 #2
0
        /// <summary>
        /// Gets the value of the attribute
        /// </summary>
        /// <param name="content">The content element</param>
        /// <param name="attributeName">The name of the expected attribute.</param>
        /// <param name="defaultValue">The default value to use if the attribute is not found</param>
        /// <returns>The value of the attribute if found, else the value of the <paramref name="defaultValue"/> </returns>
        public static string GetCustomAttributeValue(this IExtensionContent content, string attributeName, string defaultValue = "")
        {
            var attributeValuePair = content.Attributes.Where(attr => attr.Key.Equals(attributeName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

            if (attributeValuePair.Equals(default(KeyValuePair <string, string>)))
            {
                return(defaultValue);
            }
            else
            {
                return(attributeValuePair.Value);
            }
        }
コード例 #3
0
        private static bool IsCustomizable(IExtensionContent content)
        {
            const string DocumentsFolder = "Documentation\\";
            const string IsCustomizableAttributeName = "IsCustomizable";

            var customizable = content.RelativePath.StartsWith(DocumentsFolder, StringComparison.OrdinalIgnoreCase);
            string customizableString;

            if (content.Attributes != null && content.Attributes.TryGetValue(IsCustomizableAttributeName, out customizableString))
            {
                if (bool.TryParse(customizableString, out customizable))
                {
                    return customizable;
                }
            }

            return customizable;
        }
コード例 #4
0
        private static bool IsCustomizable(IExtensionContent content)
        {
            const string DocumentsFolder             = "Documentation\\";
            const string IsCustomizableAttributeName = "IsCustomizable";

            var    customizable = content.RelativePath.StartsWith(DocumentsFolder, StringComparison.OrdinalIgnoreCase);
            string customizableString;

            if (content.Attributes != null && content.Attributes.TryGetValue(IsCustomizableAttributeName, out customizableString))
            {
                if (bool.TryParse(customizableString, out customizable))
                {
                    return(customizable);
                }
            }

            return(customizable);
        }
コード例 #5
0
        /// <summary>
        /// Gets the value of the <see cref="ExtensionVisibility"/> attribute.
        /// </summary>
        /// <param name="content">The content element</param>
        /// <param name="attributeName">The name of the expected attribute.</param>
        /// <param name="defaultValue">The default value to use if the attribute is not found</param>
        /// <returns>The value of the attribute if found, else the value of the <paramref name="defaultValue"/> </returns>
        public static ExtensionVisibility GetVisibilityAttributeValue(this IExtensionContent content, string attributeName, ExtensionVisibility defaultValue)
        {
            var attributeValuePair = content.Attributes.FirstOrDefault(attr => attr.Key.Equals(attributeName, StringComparison.OrdinalIgnoreCase));

            if (attributeValuePair.Equals(default(KeyValuePair <string, string>)))
            {
                return(defaultValue);
            }

            ExtensionVisibility visibilityResult;

            if (Enum.TryParse <ExtensionVisibility>(attributeValuePair.Value, true, out visibilityResult))
            {
                return(visibilityResult);
            }
            else
            {
                return(defaultValue);
            }
        }
コード例 #6
0
ファイル: SchemaResource.cs プロジェクト: dbremner/nupattern
        /// <summary>
        /// Initializes a new instance of the <see cref="SchemaResource"/> class from the given context.
        /// </summary>
        /// <param name="extensionPath">The path for the extension.</param>
        /// <param name="content">The content.</param>
        public SchemaResource(string extensionPath, IExtensionContent content)
        {
            NuPattern.Guard.NotNullOrEmpty(() => extensionPath, extensionPath);
            NuPattern.Guard.NotNull(() => content, content);

            string assemblyFile = null;

            if (content.Attributes == null || !content.Attributes.TryGetValue(AssemblyFileProperty, out assemblyFile))
            {
                throw new ArgumentException(Resources.SchemaResource_AssemblyFileAttributeMissing);
            }

            this.AssemblyPath = Path.Combine(extensionPath, assemblyFile);

            var assemblyName = AssemblyName.GetAssemblyName(this.AssemblyPath);

            this.schemaAssembly = Assembly.Load(assemblyName);

            var resourceNames = this.schemaAssembly.GetManifestResourceNames();

            if (resourceNames.Contains(content.RelativePath))
            {
                this.ResourceName = content.RelativePath;
            }
            else if (resourceNames.Contains(assemblyName.Name + @"." + content.RelativePath))
            {
                this.ResourceName = assemblyName.Name + @"." + content.RelativePath;
            }
            else
            {
                var message = string.Format(CultureInfo.CurrentCulture,
                                            Resources.SchemaResource_FailedToLoadSchemaStream,
                                            content.RelativePath,
                                            assemblyName.Name + @"." + this.ResourceName,
                                            this.AssemblyPath);

                tracer.Error(message);
                throw new InvalidOperationException(message);
            }
        }
コード例 #7
0
ファイル: SchemaResource.cs プロジェクト: NuPattern/NuPattern
        /// <summary>
        /// Initializes a new instance of the <see cref="SchemaResource"/> class from the given context.
        /// </summary>
        /// <param name="extensionPath">The path for the extension.</param>
        /// <param name="content">The content.</param>
        public SchemaResource(string extensionPath, IExtensionContent content)
        {
            NuPattern.Guard.NotNullOrEmpty(() => extensionPath, extensionPath);
            NuPattern.Guard.NotNull(() => content, content);

            string assemblyFile = null;
            if (content.Attributes == null || !content.Attributes.TryGetValue(AssemblyFileProperty, out assemblyFile))
            {
                throw new ArgumentException(Resources.SchemaResource_AssemblyFileAttributeMissing);
            }

            this.AssemblyPath = Path.Combine(extensionPath, assemblyFile);

            var assemblyName = AssemblyName.GetAssemblyName(this.AssemblyPath);
            this.schemaAssembly = Assembly.Load(assemblyName);

            var resourceNames = this.schemaAssembly.GetManifestResourceNames();

            if (resourceNames.Contains(content.RelativePath))
            {
                this.ResourceName = content.RelativePath;
            }
            else if (resourceNames.Contains(assemblyName.Name + @"." + content.RelativePath))
            {
                this.ResourceName = assemblyName.Name + @"." + content.RelativePath;
            }
            else
            {
                var message = string.Format(CultureInfo.CurrentCulture,
                    Resources.SchemaResource_FailedToLoadSchemaStream,
                    content.RelativePath,
                    assemblyName.Name + @"." + this.ResourceName,
                    this.AssemblyPath);

                tracer.Error(message);
                throw new InvalidOperationException(message);
            }
        }
コード例 #8
0
        public async void OnPaneLoad()
        {
            if (!string.IsNullOrEmpty(ExtensionManifest.ContentControl))
            {
                if (!ExtensionManifest.IsUWPExtension)
                {
                    Type type = null;
                    if (!string.IsNullOrEmpty(ExtensionManifest.AssemblyName))
                    {
                        var an  = new System.Reflection.AssemblyName(ExtensionManifest.AssemblyName);
                        var ass = System.Reflection.Assembly.Load(an);
                        type = ass.GetType(ExtensionManifest.ContentControl);
                    }
                    else
                    {
                        type = Type.GetType(ExtensionManifest.ContentControl);
                    }


                    var newEl = (UserControl)Activator.CreateInstance(type);

                    if (newEl is IExtensionContent)
                    {
                        _content              = (IExtensionContent)newEl;
                        _content.SendMessage += _content_SendMessage;
                    }

                    ctlContent.Children.Add(newEl);
                }
                else
                {
                    ViewModelBase vm = null;
                    var           ef = Extensions.ExtensionsService.Instance.GetExtensionByAppExtensionUniqueId(ExtensionManifest.AppExtensionUniqueID);

                    var resultData = await ef.MakeUWPCommandCall("VM", "Call");

                    var vms = new StringDictionary();
                    if (resultData != null)
                    {
                        foreach (var val in resultData)
                        {
                            vms.Add(val.Key, (string)val.Value);
                        }
                    }



                    var result = await ef.MakeUWPCommandCall("UI", "Call");

                    if (result != null)
                    {
                        var newEl = new Grid()
                        {
                            HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch
                        };
                        if (result.ContainsKey("default"))
                        {
                            var keyValueForDefault = result.Where(x => x.Key == "default").First();
                            var defaultPage        = result.Where(x => x.Key == (string)keyValueForDefault.Value).First();

                            var packageDirectory = ef.AppExtension.Package.InstalledLocation;
                            var publicDirectory  = await packageDirectory.GetFolderAsync("public");

                            var defaultPageXaml = await publicDirectory.GetFileAsync(defaultPage.Value.ToString());

                            using (var stream = await defaultPageXaml.OpenStreamForReadAsync())
                            {
                                var tr   = new StreamReader(stream);
                                var xaml = await tr.ReadToEndAsync();

                                if (xaml.Length > 0)
                                {
                                    var xamlFe = (FrameworkElement)XamlReader.Load(UnescapeString(xaml));
                                    newEl.Children.Add(xamlFe);
                                }
                            }

                            var assemblyToLoad = vms[(string)keyValueForDefault.Value];
                            var assemblyParts  = assemblyToLoad.Split("|".ToCharArray());

                            var assembly = Assembly.Load(new AssemblyName(assemblyParts[0]));
                            var type     = assembly.GetType($"{assemblyParts[0]}.{assemblyParts[1]}");
                            vm = (ViewModelBase)Activator.CreateInstance(type);
                        }

                        if (vm != null)
                        {
                            newEl.DataContext = vm;
                        }
                        ctlContent.Children.Add(newEl);
                    }
                }

                switch (ExtensionManifest.LaunchInDockPositions)
                {
                case ExtensionInToolbarPositions.Left: brMain.BorderThickness = new Thickness(0, 0, 0.5, 0); brMain.Margin = new Thickness(0, 3, 0, 3); break;

                case ExtensionInToolbarPositions.Right: brMain.BorderThickness = new Thickness(0.5, 0, 0, 0); brMain.Margin = new Thickness(0, 3, 0, 3); break;

                case ExtensionInToolbarPositions.Bottom: brMain.BorderThickness = new Thickness(0, 0.5, 0, 0); brMain.Margin = new Thickness(3, 0, 3, 0); break;

                case ExtensionInToolbarPositions.BottomFull: brMain.BorderThickness = new Thickness(0, 0.5, 0, 0); brMain.Margin = new Thickness(3, 0, 3, 0); break;

                case ExtensionInToolbarPositions.Top: brMain.BorderThickness = new Thickness(0, 0, 0, 0.5); brMain.Margin = new Thickness(3, 0, 3, 0); break;

                default: brMain.BorderThickness = new Thickness(0); brMain.Margin = new Thickness(3, 0, 3, 0); break;
                }
            }
        }
コード例 #9
0
 private static bool ShouldInclude(IExtensionContent content)
 {
     return(string.Equals(content.ContentTypeName, AnalyzerContentTypeName, StringComparison.InvariantCultureIgnoreCase));
 }
 private static bool ShouldInclude(IExtensionContent content)
 {
     return string.Equals(content.ContentTypeName, AnalyzerContentTypeName, StringComparison.InvariantCultureIgnoreCase);
 }
コード例 #11
0
 public string GetContentLocation(IExtensionContent content)
 {
     throw new NotImplementedException();
 }
コード例 #12
0
ファイル: _Template.xaml.cs プロジェクト: liquidboy/X
        public async void OnPaneLoad()
        {
            if (!string.IsNullOrEmpty(ExtensionManifest.ContentControl)) {

                if (!ExtensionManifest.IsUWPExtension) {
                    Type type = null;
                    if (!string.IsNullOrEmpty(ExtensionManifest.AssemblyName))
                    {
                        var an = new System.Reflection.AssemblyName(ExtensionManifest.AssemblyName);
                        var ass = System.Reflection.Assembly.Load(an);
                        type = ass.GetType(ExtensionManifest.ContentControl);
                    }
                    else type = Type.GetType(ExtensionManifest.ContentControl);


                    var newEl = (UserControl)Activator.CreateInstance(type);

                    if (newEl is IExtensionContent)
                    {
                        _content = (IExtensionContent)newEl;
                        _content.SendMessage += _content_SendMessage;
                    }

                    ctlContent.Children.Add(newEl);
                }
                else {
                    ViewModelBase vm = null;
                    var ef = Extensions.ExtensionsService.Instance.GetExtensionByAppExtensionUniqueId(ExtensionManifest.AppExtensionUniqueID);

                    var resultData = await ef.MakeUWPCommandCall("VM", "Call");
                    var vms = new StringDictionary();
                    if (resultData != null)
                        foreach (var val in resultData)
                            vms.Add(val.Key, (string)val.Value);
                    


                    var result = await ef.MakeUWPCommandCall("UI", "Call");
                    if (result != null) {
                        var newEl = new Grid() { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch };
                        if (result.ContainsKey("default"))
                        {
                            var keyValueForDefault = result.Where(x => x.Key == "default").First();
                            var defaultPage = result.Where(x => x.Key == (string)keyValueForDefault.Value).First();

                            var packageDirectory = ef.AppExtension.Package.InstalledLocation;
                            var publicDirectory = await packageDirectory.GetFolderAsync("public");

                            var defaultPageXaml = await publicDirectory.GetFileAsync(defaultPage.Value.ToString());
                            using (var stream = await defaultPageXaml.OpenStreamForReadAsync())
                            {
                                var tr = new StreamReader(stream);
                                var xaml = await tr.ReadToEndAsync();

                                if (xaml.Length > 0)
                                {
                                    var xamlFe = (FrameworkElement)XamlReader.Load(UnescapeString(xaml));
                                    newEl.Children.Add(xamlFe);
                                }
                            }

                            var assemblyToLoad = vms[(string)keyValueForDefault.Value];
                            var assemblyParts = assemblyToLoad.Split("|".ToCharArray());

                            var assembly = Assembly.Load(new AssemblyName(assemblyParts[0]));
                            var type = assembly.GetType($"{assemblyParts[0]}.{assemblyParts[1]}");
                            vm = (ViewModelBase)Activator.CreateInstance(type);
                        }
                        
                        if (vm != null) newEl.DataContext = vm;
                        ctlContent.Children.Add(newEl);
                    }




                }
                
                switch (ExtensionManifest.LaunchInDockPositions)
                {
                    case ExtensionInToolbarPositions.Left: brMain.BorderThickness = new Thickness(0,0,0.5,0); brMain.Margin = new Thickness(0, 3, 0, 3); break;
                    case ExtensionInToolbarPositions.Right: brMain.BorderThickness = new Thickness(0.5,0,0,0); brMain.Margin = new Thickness(0, 3, 0, 3); break;
                    case ExtensionInToolbarPositions.Bottom: brMain.BorderThickness = new Thickness(0, 0.5, 0, 0); brMain.Margin = new Thickness(3, 0, 3, 0); break;
                    case ExtensionInToolbarPositions.BottomFull: brMain.BorderThickness = new Thickness(0, 0.5, 0, 0); brMain.Margin = new Thickness(3, 0, 3, 0); break;
                    case ExtensionInToolbarPositions.Top: brMain.BorderThickness = new Thickness(0, 0, 0, 0.5); brMain.Margin = new Thickness(3, 0, 3, 0); break;
                    default: brMain.BorderThickness = new Thickness(0); brMain.Margin = new Thickness(3, 0, 3, 0); break;
                }
                
            }

        }
コード例 #13
0
ファイル: _Template.xaml.cs プロジェクト: liquidboy/X
 public void OnPaneUnload()
 {
     if (_content != null) {
         _content.SendMessage -= _content_SendMessage;
         _content.Unload();
         ctlContent.Children.RemoveAt(0);
         _content = null;
     }
 }