+
+ private IFile file;
+
+ // Listeners
+ private MemoryCellModifiedListener cellModifiedListener = address ->
+ {
+ setDirty(true);
+ table.refresh();
+ };
+
+ private ActiveMicroInstructionChangedListener instChangeListener = (oldAddress, newAddress) ->
+ {
+ highlight((int) (newAddress - memory.getDefinition().getMinimalAddress()));
+ };
+
+ private MachineDebugContextListener debugContextListener = new MachineDebugContextListener()
+ {
+ @Override
+ public void machineDebugContextChanged(Optional<MachineDebugTarget> oldTarget, Optional<MachineDebugTarget> newTarget)
+ {
+ instChangeListener.instructionChanged(-1, -1);
+ oldTarget.ifPresent(target -> target.getMachine().removeActiveMicroInstructionChangedListener(instChangeListener));
+
+ newTarget.ifPresent(target ->
+ {
+ if (file.equals(target.getMPMFile()))
+ {
+ Machine m = target.getMachine();
+ target.getMachine().addActiveMicroInstructionChangedListener(instChangeListener);
+ instChangeListener.instructionChanged(-1, m.getActiveMicroInstructionAddress());
+ }
+ });
+ }
+ };