import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
-import era.mi.logic.Simulation;
+import era.mi.gui.model.ViewModel;
+import era.mi.gui.modeladapter.LogicModelParameters;
+import era.mi.gui.modeladapter.ViewLogicModelAdapter;
+import era.mi.logic.timeline.Timeline;
import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasOverlay;
import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput;
*/
public class LogicUIStandalone
{
+ private ViewModel model;
+ private Timeline timeline;
+
private final Display display;
private final Shell shell;
private final LogicUICanvas ui;
- public LogicUIStandalone()
+ public LogicUIStandalone(ViewModel model)
{
+ this.model = model;
display = new Display();
shell = new Shell(display);
shell.setLayout(new FillLayout());
- ui = new LogicUICanvas(shell, SWT.NONE);
+ ui = new LogicUICanvas(shell, SWT.NONE, model);
ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(ui);
userInput.buttonDrag = 3;
userInput.buttonZoom = 2;
userInput.enableUserInput();
new ZoomableCanvasOverlay(ui, null).enableScale();
+
+ // TODO don't do this here
+ LogicModelParameters params = new LogicModelParameters();
+ params.gateProcessTime = 50;
+ params.wireTravelTime = 10;
+ timeline = ViewLogicModelAdapter.convert(model, params);
}
public LogicUICanvas getLogicUICanvas()
while (running.get())
{
// always execute to keep timeline from "hanging behind" for too long
- Simulation.TIMELINE.executeUpTo(System.currentTimeMillis(), System.currentTimeMillis() + 10);
+ timeline.executeUpTo(System.currentTimeMillis(), System.currentTimeMillis() + 10);
long sleepTime;
- if (Simulation.TIMELINE.hasNext())
- sleepTime = Simulation.TIMELINE.nextEventTime() - System.currentTimeMillis();
+ if (timeline.hasNext())
+ sleepTime = timeline.nextEventTime() - System.currentTimeMillis();
else
sleepTime = 10;
try
}
});
simulationThread.start();
- Simulation.TIMELINE.addEventAddedListener(event ->
+ timeline.addEventAddedListener(event ->
{
if (event.getTiming() <= System.currentTimeMillis())
simulationThread.interrupt();
if (!display.readAndDispatch())
display.sleep();
running.set(false);
- simulationThread.interrupt();
+// simulationThread.interrupt();
}
}
\ No newline at end of file