1 package net.mograsim.logic.model;
3 import java.util.function.Consumer;
5 import net.mograsim.logic.core.timeline.Timeline;
6 import net.mograsim.logic.model.model.ViewModelModifiable;
7 import net.mograsim.logic.model.modeladapter.LogicModelParameters;
8 import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
10 public class SimpleLogicUIStandalone
12 public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel)
14 executeVisualisation(setupViewModel, (Consumer<VisualisationObjects>) null);
17 public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel, Consumer<VisualisationObjects> beforeRun)
19 LogicModelParameters params = new LogicModelParameters();
20 params.gateProcessTime = 50;
21 params.wireTravelTime = 10;
22 executeVisualisation(setupViewModel, params, beforeRun);
25 public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel, LogicModelParameters params)
27 executeVisualisation(setupViewModel, params, null);
30 public static void executeVisualisation(Consumer<ViewModelModifiable> setupViewModel, LogicModelParameters params,
31 Consumer<VisualisationObjects> beforeRun)
34 ViewModelModifiable viewModel = new ViewModelModifiable();
35 setupViewModel.accept(viewModel);
37 // convert to logic model
38 Timeline timeline = ViewLogicModelAdapter.convert(viewModel, params);
40 // initialize UI and executer
41 LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(viewModel);
42 LogicExecuter exec = new LogicExecuter(timeline);
44 if (beforeRun != null)
45 beforeRun.accept(new VisualisationObjects(viewModel, timeline, ui, exec));
48 exec.startLiveExecution();
50 exec.stopLiveExecution();
53 public static class VisualisationObjects
55 public final ViewModelModifiable model;
56 public final Timeline timeline;
57 public final LogicUIStandaloneGUI gui;
58 public final LogicExecuter executer;
60 public VisualisationObjects(ViewModelModifiable model, Timeline timeline, LogicUIStandaloneGUI gui, LogicExecuter executer)
63 this.timeline = timeline;
65 this.executer = executer;
69 private SimpleLogicUIStandalone()
71 throw new UnsupportedOperationException("No SimpleLogicUIStandalone instances");