import net.mograsim.logic.core.components.CoreClock;
import net.mograsim.logic.model.LogicExecuter;
import net.mograsim.logic.model.LogicUICanvas;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
import net.mograsim.machine.Machine;
import net.mograsim.machine.Memory.MemoryCellModifiedListener;
import net.mograsim.machine.mi.AssignableMicroInstructionMemory;
public SimulationViewEditor()
{
- activeMachineListener = m -> recreateContextDependentControls();
+ activeMachineListener = (oldM, newM) -> recreateContextDependentControls();
memCellListener = a -> instPreview.refresh();
clockObserver = o ->
{
canvasParent.layout();
+ // update preview
+ ((ActiveInstructionPreviewContentProvider) instPreview.getTableViewer().getContentProvider()).setMachine(machine);
+
// initialize executer
exec = new LogicExecuter(machine.getTimeline());
- updateSpeedFactorFromScale();
+ updateSpeedFactorFromInput(simSpeedInput.getValue());
updatePausedState();
exec.startLiveExecution();
} else
{
Composite c = new Composite(parent, SWT.NONE);
c.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- c.setLayout(new GridLayout(6, false));
+ c.setLayout(new GridLayout(7, false));
resetButton = new Button(c, SWT.PUSH);
resetButton.setText("Reset machine");
resetButton.addListener(SWT.Selection, e -> context.getActiveMachine().get().reset());
+ // TODO do we want this button in the final product?
+ Button reloadMachineButton = new Button(c, SWT.PUSH);
+ reloadMachineButton.setText("Reload machine");
+ reloadMachineButton.addListener(SWT.Selection, e ->
+ {
+ IndirectModelComponentCreator.clearComponentCache();
+ context.setActiveMachine(context.getMachineDefinition().get().createNew());
+ });
+
sbseButton = new Button(c, SWT.CHECK);
pauseButton = new Button(c, SWT.TOGGLE);
private void addInstructionPreviewControlWidgets(Composite parent)
{
- instPreview = new InstructionTable(parent, new DisplaySettings());
+ instPreview = new InstructionTable(parent, new DisplaySettings(), getSite().getWorkbenchWindow().getWorkbench().getThemeManager());
instPreview.getTableViewer().getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- instPreview.setContentProvider(new ActiveInstructionPreviewContentProvider(instPreview.getTableViewer()));
+ ActiveInstructionPreviewContentProvider cProv;
+ instPreview.setContentProvider(cProv = new ActiveInstructionPreviewContentProvider(instPreview.getTableViewer()));
+ cProv.setMachine(machine);
}
private static void setPauseText(Button pauseButton, boolean hovered)