/// <summary> /// Load user extensions from extension assemblies. /// </summary> private void loadUserExtensions() { var exports = collectExports(); //process all exports var exportedProviders = new List <ExportedAssemblyProviderFactory>(); var drawingProviders = new List <ContentDrawer>(); _connectorFactories = new ConnectorFactory[Enum.GetValues(typeof(ConnectorAlign)).Length]; foreach (var export in exports) { registerExport(export); //collect exported providers exportedProviders.AddRange(export.ExportedProviders); drawingProviders.AddRange(createContentDrawers(export)); if (export.ExportedGeneralDrawingDefinitionProvider != null) { _exportedGeneralDrawingProvider.Add(export.ExportedGeneralDrawingDefinitionProvider); } foreach (var connectorProvider in export.ExportedConnectorFactories) { _connectorFactories[(int)connectorProvider.Key] = connectorProvider.Value; } if (export.ExportedJoinFactory != null) { _joinFactory = export.ExportedJoinFactory; } } //initialize editor var assembliesFactory = new ExportedProvidersFactory(exportedProviders); _loader = new AssemblyLoader(_settings, assembliesFactory); _contentDrawers = drawingProviders.ToArray(); }
/// <summary> /// Initializes a new instance of the <see cref="DiagramFactory" /> class. /// </summary> /// <param name="drawers">The drawers.</param> /// <param name="connectorFactories">Factory for creating connectors.</param> /// <param name="joinFactory"> Factory for creating joins.</param> internal DiagramFactory(JoinFactory joinFactory, ConnectorFactory[] connectorFactories, params ContentDrawer[] drawers) { _joinFactory = joinFactory; _connectorFactories = connectorFactories.ToArray(); if (drawers == null) { return; } foreach (var drawer in drawers) { if (drawer.IsDefaultDrawer) { _defaultContentDrawer = drawer; } else { _contentDrawers.Add(drawer.DrawedType, drawer); } } }
/// <summary> /// Exports the join drawing factory that is used for every drawn join. /// </summary> /// <param name="factory">The exported factory.</param> protected void ExportJoinFactory(JoinFactory factory) { Message("Exporting join factory {0}", factory); ExportedJoinFactory = factory; }