From 4294019fb99a78ffa6802c0765e4efb7f96bd880 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Sun, 15 Sep 2019 15:11:15 +0200 Subject: [PATCH] Fixed some bugs preventing Am2900 from working in Eclipse --- .../src/net/mograsim/machine/mi/MicroInstruction.java | 2 +- .../mi/components/CoreMicroInstructionMemory.java | 1 + .../src/net/mograsim/plugin/MachineContext.java | 1 + .../net/mograsim/plugin/tables/memory/MemoryView.java | 1 + .../net/mograsim/plugin/tables/mi/InstructionView.java | 5 +++-- .../src/net/mograsim/plugin/views/LogicUIPart.java | 10 ++-------- 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java index 92e33ebe..ec1efa0a 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java @@ -26,7 +26,7 @@ public interface MicroInstruction BitVector vector = BitVector.of(); int size = getSize(); for (int i = 0; i < size; i++) - vector.concat(getParameter(i).getValue()); + vector = vector.concat(getParameter(i).getValue()); return vector; } } diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/components/CoreMicroInstructionMemory.java b/net.mograsim.machine/src/net/mograsim/machine/mi/components/CoreMicroInstructionMemory.java index a958dc20..60902af2 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/components/CoreMicroInstructionMemory.java +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/components/CoreMicroInstructionMemory.java @@ -23,6 +23,7 @@ public class CoreMicroInstructionMemory extends BasicCoreComponent this.memory = memory; this.data = data; this.address = address; + address.registerObserver(this); } public MicroInstructionMemory getMemory() diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/MachineContext.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/MachineContext.java index 8a7faa76..cc96edbb 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/MachineContext.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/MachineContext.java @@ -25,6 +25,7 @@ public class MachineContext if (instance == null) { instance = new MachineContext(); + // TODO don't hardcode the Am2900 instance.setMachine(new Am2900Machine((Am2900MachineDefinition) MachineRegistry.getinstalledMachines().get("Am2900"))); } return instance; diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java index 1bcc3bc1..09368807 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java @@ -163,6 +163,7 @@ public class MemoryView extends ViewPart implements ContextObserver private void setupContextBinding() { MachineContext.getInstance().registerObserver(this); + setMachine(Optional.ofNullable(MachineContext.getInstance().getMachine())); } @Override diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java index 68e83298..b9627aad 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java @@ -69,6 +69,7 @@ public class InstructionView extends ViewPart implements ContextObserver displaySettings.addObserver(() -> viewer.refresh()); MachineContext.getInstance().registerObserver(this); + setMachine(Optional.ofNullable(MachineContext.getInstance().getMachine())); } public void highlight(int index) @@ -125,7 +126,8 @@ public class InstructionView extends ViewPart implements ContextObserver private void deleteColumns() { for (TableViewerColumn col : columns) - col.getColumn().dispose(); + if (col != null) + col.getColumn().dispose(); } private void createColumns() @@ -147,7 +149,6 @@ public class InstructionView extends ViewPart implements ContextObserver createEditingAndLabel(createTableViewerColumn(name, bounds), miDef, i); } - } private void createEditingAndLabel(TableViewerColumn col, MicroInstructionDefinition miDef, int index) diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java index fecb922a..212f777c 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java @@ -1,7 +1,5 @@ package net.mograsim.plugin.views; -import java.util.Optional; - import javax.inject.Inject; import org.eclipse.e4.ui.model.application.ui.basic.MPart; @@ -14,8 +12,7 @@ import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInpu import net.mograsim.logic.model.LogicExecuter; import net.mograsim.logic.model.LogicUICanvas; import net.mograsim.machine.Machine; -import net.mograsim.machine.MachineDefinition; -import net.mograsim.machine.MachineRegistry; +import net.mograsim.plugin.MachineContext; import net.mograsim.plugin.ThemePreferences; import net.mograsim.preferences.Preferences; @@ -40,10 +37,7 @@ public class LogicUIPart extends ViewPart // set preferences Preferences.setPreferences(new ThemePreferences(PlatformUI.getWorkbench().getThemeManager().getCurrentTheme())); - Optional mdo = MachineRegistry.getinstalledMachines().values().stream().findFirst(); - - MachineDefinition md = mdo.orElseThrow(IllegalStateException::new); - Machine m = md.createNew(); + Machine m = MachineContext.getInstance().getMachine(); // initialize UI ui = new LogicUICanvas(parent, SWT.NONE, m.getModel()); -- 2.17.1