Exemple #1
0
        public ConceptUsecase CreateUseCase( )
        {
            var vindow = new Vindow();

            var mainform = vindow.Backend.ToSwf() as Form;

            Xwt.SwfBackend.SwfEngine.SwfApplicationContext.MainForm = mainform;

            Limaki.Iconerias.Iconery.Compose();
            mainform.Icon       = Limaki.View.Properties.GdiIconery.LimadaIcon;
            mainform.ClientSize = new System.Drawing.Size(800, 600);

            var backendComposer = new SwfConceptUseCaseComposer {
                MainWindow = vindow
            };

            var factory = new UsecaseFactory <ConceptUsecase>();

            factory.Composer        = new ConceptUsecaseComposer();
            factory.BackendComposer = backendComposer;

            var useCase = factory.Create();

            useCase.MainWindow = vindow;

            factory.Compose(useCase);

            backendComposer.FinalizeCompose?.Invoke();

            CallPlugins(factory, useCase);

            useCase.Start();

            if (useCase.ApplicationQuitted)
            {
                Application.Exit();
                Environment.Exit(0);
            }

            return(useCase);
        }
        protected virtual IXwtBackendConceptUseCaseComposer CreateUseCase()
        {
            var vindow = new Vindow(new MainWindowBackend());

            var mainWindowBackend = vindow.Backend as MainWindowBackend;

            Iconerias.Iconery.Compose();
            mainWindowBackend.Icon    = Iconerias.Iconery.LimadaLogo;
            mainWindowBackend.Size    = new Size(800, 600);
            mainWindowBackend.Padding = 2;

            var backendComposer = Registry.Create <IXwtBackendConceptUseCaseComposer> ();

            backendComposer.MainWindow = vindow;

            var factory = new UsecaseFactory <ConceptUsecase> ();

            factory.Composer        = new ConceptUsecaseComposer();
            factory.BackendComposer = backendComposer;

            var useCase = factory.Create();

            useCase.MainWindow = vindow;

            factory.Compose(useCase);

            backendComposer.FinalizeCompose?.Invoke();

            CallPlugins(factory, useCase);

            useCase.Start();

            if (useCase.ApplicationQuitted)
            {
                Application.Exit();
            }
            return(backendComposer);
        }
        public void WriteUsecase0(ConceptUsecase usecase)
        {
            try {
                var mesh = Registry.Pooled <IGraphSceneDisplayMesh <IVisual, IVisualEdge> > ();
                //TODO:move this to another test
                if (true)
                {
                    var mesh2 = Registry.Pooled <IGraphSceneMesh <IVisual, IVisualEdge> > ();

                    if (mesh2 != mesh)
                    {
                        throw new Exception();
                    }
                }

                XElement dmx = null;

                var fileName = "laststate.limstate";
                if (File.Exists(fileName))
                {
                    using (var reader = new StreamReader(fileName)) {
                        dmx = XElement.Parse(reader.ReadToEnd());
                    }
                }

                // write current state
                var dmx1 = new UsecaseXmlSerializer()
                           .Write(usecase);

                Trace.WriteLine(dmx1.ToString());

                if (Registry.Pooled <IMessageBoxShow> ().Show("save state", "save", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    using (var writer = new StreamWriter(fileName)) {
                        writer.Write(dmx1);
                    }
                }
                var usecase1 = usecase;

                // test with new usecase
                var testNewUsecase = false && dmx != null;
                if (testNewUsecase)
                {
                    var backendComposer = Registry.Create <IBackendConceptUseCaseComposer> ();
                    backendComposer.MainWindow = new Vindow {
                        Size = new Size(800, 600)
                    };

                    var factory = new UsecaseFactory <ConceptUsecase> ();
                    factory.Composer        = new ConceptUsecaseComposer();
                    factory.BackendComposer = backendComposer;

                    usecase1 = factory.Create();
                    factory.Compose(usecase1);
                }

                if (dmx != null)
                {
                    mesh.Clear();

                    new UsecaseXmlSerializer()
                    .Read(dmx, usecase1);

                    if (testNewUsecase)
                    {
                        usecase1.MainWindow.Show();
                    }
                }
            } catch (Exception ex) {
                Registry.Pooled <IExceptionHandler> ().Catch(ex);
            }
        }