- activationButton.addListener(SWT.Selection,
- e -> context.getActiveMachine().ifPresent(m -> m.getMicroInstructionMemory().bind(memory)));
+ activationButton.addListener(SWT.Selection, e -> context.getActiveMachine().ifPresent(m ->
+ {
+ // clear highlighting if the memory is reassigned
+ MIMemoryReassignedListener memReassignedListener = n ->
+ {
+ if (n != memory)
+ highlight(-1);
+ };
+ m.getMicroInstructionMemory().registerMemoryReassignedListener(memReassignedListener);
+ // clear highlighting if the active machine changes
+ context.addActiveMachineListener(n ->
+ {
+ if (n.isEmpty() || n.get() != m)
+ {
+ highlight(-1);
+ m.getMicroInstructionMemory().deregisterMemoryReassignedListener(memReassignedListener);
+ }
+ });
+ m.getMicroInstructionMemory().bind(memory);
+ }));