X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2FSimpleLogicUIStandalone.java;h=03d0335c2f703ad14bcbe4bd982d81904581d4bf;hb=3a52b6bffe52db5dd5ca907b4b3dfd368a58e14f;hp=23252d4bb7fad7d58395985689ab57961d2e5483;hpb=b5d8c2d71e27350ea7c9314e40df5bb0584271cd;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/SimpleLogicUIStandalone.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/SimpleLogicUIStandalone.java index 23252d4b..03d0335c 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/SimpleLogicUIStandalone.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/SimpleLogicUIStandalone.java @@ -3,39 +3,69 @@ package net.mograsim.logic.model; import java.util.function.Consumer; import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.model.model.ViewModelModifiable; -import net.mograsim.logic.model.modeladapter.LogicModelParameters; -import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.model.LogicModelModifiable; +import net.mograsim.logic.model.modeladapter.CoreModelParameters; +import net.mograsim.logic.model.modeladapter.LogicCoreAdapter; public class SimpleLogicUIStandalone { - public static void executeVisualisation(Consumer setupViewModel) + public static void executeVisualisation(Consumer setupLogicModel) { - LogicModelParameters params = new LogicModelParameters(); + executeVisualisation(setupLogicModel, (Consumer) null); + } + + public static void executeVisualisation(Consumer setupLogicModel, Consumer beforeRun) + { + CoreModelParameters params = new CoreModelParameters(); params.gateProcessTime = 50; params.wireTravelTime = 10; - executeVisualisation(setupViewModel, params); + executeVisualisation(setupLogicModel, params, beforeRun); + } + + public static void executeVisualisation(Consumer setupLogicModel, CoreModelParameters params) + { + executeVisualisation(setupLogicModel, params, null); } - public static void executeVisualisation(Consumer setupViewModel, LogicModelParameters params) + public static void executeVisualisation(Consumer setupLogicModel, CoreModelParameters params, + Consumer beforeRun) { - // setup view model - ViewModelModifiable viewModel = new ViewModelModifiable(); - setupViewModel.accept(viewModel); + // setup logic model + LogicModelModifiable logicModel = new LogicModelModifiable(); + setupLogicModel.accept(logicModel); - // convert to logic model - Timeline timeline = ViewLogicModelAdapter.convert(viewModel, params); + // convert to core model + Timeline timeline = LogicCoreAdapter.convert(logicModel, params); // initialize UI and executer - LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(viewModel); + LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(logicModel); LogicExecuter exec = new LogicExecuter(timeline); + if (beforeRun != null) + beforeRun.accept(new VisualisationObjects(logicModel, timeline, ui, exec)); + // run it exec.startLiveExecution(); ui.run(); exec.stopLiveExecution(); } + public static class VisualisationObjects + { + public final LogicModelModifiable model; + public final Timeline timeline; + public final LogicUIStandaloneGUI gui; + public final LogicExecuter executer; + + public VisualisationObjects(LogicModelModifiable model, Timeline timeline, LogicUIStandaloneGUI gui, LogicExecuter executer) + { + this.model = model; + this.timeline = timeline; + this.gui = gui; + this.executer = executer; + } + } + private SimpleLogicUIStandalone() { throw new UnsupportedOperationException("No SimpleLogicUIStandalone instances");