public void OnPaneUnload() { if (_content != null) { _content.SendMessage -= _content_SendMessage; _content.Unload(); ctlContent.Children.RemoveAt(0); _content = null; } }
/// <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); } }
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; }
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); }
/// <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); } }
/// <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); } }
/// <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); } }
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; } } }
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); }
public string GetContentLocation(IExtensionContent content) { throw new NotImplementedException(); }
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; } } }
public void OnPaneUnload() { if (_content != null) { _content.SendMessage -= _content_SendMessage; _content.Unload(); ctlContent.Children.RemoveAt(0); _content = null; } }