public static FormMain CreateForm(IDatabaseCoordinator coordinator, ByteHolder holder,
                                          OrdinaryDifferentialEquations.IDifferentialEquationSolver ordSolver,
                                          DataPerformer.Portable.DifferentialEquationProcessors.DifferentialEquationProcessor diffProcessor,
                                          DataPerformer.Portable.Interfaces.IDataRuntimeFactory strategy,
                                          IApplicationInitializer[] initializers,
                                          IUIFactory[] factories,
                                          bool throwsRepeatException, LightDictionary <string, ButtonWrapper[]> buttons,
                                          Icon icon, string filename, Dictionary <string, object>[] resources, string text,
                                          string ext, string fileFilter, TextWriter logWriter, TestCategory.Interfaces.ITestInterface testInterface)
        {
            EngineeringUIFactory factory = new EngineeringUIFactory(factories, true, ext);

            StaticExtensionDiagramUIFactory.UIFactory = factory;
            IDatabaseCoordinator c = coordinator;

            if (c == null)
            {
                c = AssemblyService.StaticExtensionAssemblyService.GetFirstInterfaceObjectFromBaseDirectory <IDatabaseCoordinator>();
            }
            EngineeringInitializer initializer = new EngineeringInitializer(c, ordSolver, diffProcessor,
                                                                            strategy, initializers, throwsRepeatException, resources, logWriter);
            DefaultApplicationCreator creator = new DefaultApplicationCreator(c, buttons, icon, factory, holder,
                                                                              filename, factory.Start, resources, text,
                                                                              ext, fileFilter, initializer, logWriter, testInterface);

            return(CreateForm(creator));
        }
        public static FormMain CreateForm(IDatabaseCoordinator coordinator, ByteHolder holder,
                                          OrdinaryDifferentialEquations.IDifferentialEquationSolver ordSolver,
                                          DataPerformer.Portable.DifferentialEquationProcessors.DifferentialEquationProcessor diffProcessor,
                                          IApplicationInitializer[] initializers,
                                          IUIFactory[] factories,
                                          bool throwsRepeatException, LightDictionary <string, ButtonWrapper[]> buttons,
                                          Icon icon, string filename, Dictionary <string, object>[] resources, string text,
                                          string ext, string fileFilter, TextWriter logWriter, TestCategory.Interfaces.ITestInterface testInterface)
        {
            EngineeringUIFactory   factory     = new EngineeringUIFactory(factories, true, ext);
            EngineeringInitializer initializer = new EngineeringInitializer(coordinator, ordSolver, diffProcessor,
                                                                            DataPerformer.Runtime.DataRuntimeFactory.Object, initializers, throwsRepeatException, resources, logWriter);
            DefaultApplicationCreator creator = new DefaultApplicationCreator(coordinator, buttons, icon, factory, holder, filename,
                                                                              factory.Start, resources, text,
                                                                              ext, fileFilter, initializer, logWriter, testInterface);

            return(CreateForm(creator));
        }
        public DefaultApplicationCreator(IDatabaseCoordinator coordinator, LightDictionary <string, ButtonWrapper[]> buttons,
                                         Icon icon, EngineeringUIFactory factory, ByteHolder holder, string filename, Action <double, double, int, int, int, IDesktop> start,
                                         Dictionary <string, object>[] resources, string text,
                                         string ext, string fileFilter,
                                         IApplicationInitializer initializer, TextWriter log,
                                         TestCategory.Interfaces.ITestInterface testInterface)
        {
            this.coordinator   = coordinator;
            this.buttons       = buttons;
            this.icon          = icon;
            this.factory       = factory;
            this.holder        = holder;
            this.filename      = filename;
            this.start         = start;
            this.resources     = resources;
            this.text          = text;
            this.ext           = ext;
            this.fileFilter    = fileFilter;
            this.initializer   = initializer;
            this.log           = log;
            this.testInterface = testInterface;

            ///!!! ZIP LOG     Event.Interfaces.StaticExtensionEventInterfaces.LogFactory =                new Zip.Service.ZipLog();
        }