X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Ftables%2Fmi%2FInstructionView.java;h=93a7632755e36b390d2dac5c6c406c3f399d560f;hb=90562c65d0eb70c77a3447e4186f0b848b00d6ec;hp=e354c8f6ee6c7ad0a60eb297e01cb0501d3ce4f1;hpb=a60db0eb036058aa47c928653da0b504452aa595;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java index e354c8f6..93a76327 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java @@ -17,10 +17,10 @@ import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.EditorPart; +import net.mograsim.machine.Machine.ActiveMicroInstructionChangedListener; import net.mograsim.machine.Memory.MemoryCellModifiedListener; import net.mograsim.machine.mi.AssignableMicroInstructionMemory.MIMemoryReassignedListener; import net.mograsim.machine.mi.MicroInstructionMemory; -import net.mograsim.machine.mi.MicroInstructionMemory.ActiveMicroInstructionChangedListener; import net.mograsim.machine.mi.MicroInstructionMemoryParseException; import net.mograsim.machine.mi.MicroInstructionMemoryParser; import net.mograsim.plugin.nature.MachineContext; @@ -44,8 +44,10 @@ public class InstructionView extends EditorPart table.refresh(); }; - private ActiveMicroInstructionChangedListener activeInstructionChangedListener = address -> highlight( - (int) (address - memory.getDefinition().getMinimalAddress())); + private ActiveMicroInstructionChangedListener instChangeListener = (oldAddress, newAddress) -> + { + highlight((int) (newAddress - memory.getDefinition().getMinimalAddress())); + }; private MIMemoryReassignedListener reassignedListener = newAssignee -> { @@ -99,6 +101,7 @@ public class InstructionView extends EditorPart m.getMicroInstructionMemory().registerMemoryReassignedListener(reassignedListener); context.addActiveMachineListener(activeMachineListener); m.getMicroInstructionMemory().bind(memory); + m.addActiveMicroInstructionChangedListener(instChangeListener); })); } @@ -107,13 +110,11 @@ public class InstructionView extends EditorPart if (this.memory != null) { this.memory.deregisterCellModifiedListener(cellModifiedListener); - this.memory.deregisterActiveMicroInstructionChangedListener(activeInstructionChangedListener); } this.memory = memory; if (memory != null) { this.memory.registerCellModifiedListener(cellModifiedListener); - this.memory.registerActiveMicroInstructionChangedListener(activeInstructionChangedListener); } if (table != null) table.bindMicroInstructionMemory(memory); @@ -229,9 +230,12 @@ public class InstructionView extends EditorPart @Override public void dispose() { - memory.deregisterActiveMicroInstructionChangedListener(activeInstructionChangedListener); memory.deregisterCellModifiedListener(cellModifiedListener); - context.getActiveMachine().ifPresent(m -> m.getMicroInstructionMemory().deregisterMemoryReassignedListener(reassignedListener)); + context.getActiveMachine().ifPresent(m -> + { + m.removeActiveMicroInstructionChangedListener(instChangeListener); + m.getMicroInstructionMemory().deregisterMemoryReassignedListener(reassignedListener); + }); context.removeActiveMachineListener(activeMachineListener); super.dispose(); }