Exemple #1
0
        /// <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;
 }