X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2FSimpleLogicUIStandalone.java;h=2b945b117727674de728b3c92d1e878ff1c31822;hb=4d1b410118f5ef48bb26a55174c87d95ad517c69;hp=23252d4bb7fad7d58395985689ab57961d2e5483;hpb=47ea68ed5c444dd14864412639f6a6fd60ab8a0f;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..2b945b11 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 @@ -10,14 +10,25 @@ import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; public class SimpleLogicUIStandalone { public static void executeVisualisation(Consumer setupViewModel) + { + executeVisualisation(setupViewModel, (Consumer) null); + } + + public static void executeVisualisation(Consumer setupViewModel, Consumer beforeRun) { LogicModelParameters params = new LogicModelParameters(); params.gateProcessTime = 50; params.wireTravelTime = 10; - executeVisualisation(setupViewModel, params); + executeVisualisation(setupViewModel, params, beforeRun); } public static void executeVisualisation(Consumer setupViewModel, LogicModelParameters params) + { + executeVisualisation(setupViewModel, params, null); + } + + public static void executeVisualisation(Consumer setupViewModel, LogicModelParameters params, + Consumer beforeRun) { // setup view model ViewModelModifiable viewModel = new ViewModelModifiable(); @@ -30,12 +41,31 @@ public class SimpleLogicUIStandalone LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(viewModel); LogicExecuter exec = new LogicExecuter(timeline); + if (beforeRun != null) + beforeRun.accept(new VisualisationObjects(viewModel, timeline, ui, exec)); + // run it exec.startLiveExecution(); ui.run(); exec.stopLiveExecution(); } + public static class VisualisationObjects + { + public final ViewModelModifiable model; + public final Timeline timeline; + public final LogicUIStandaloneGUI gui; + public final LogicExecuter executer; + + public VisualisationObjects(ViewModelModifiable 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");