Added active instruction preview to LogicUIPart
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / tables / mi / InstructionTableLazyContentProvider.java
1 package net.mograsim.plugin.tables.mi;
2
3 import org.eclipse.jface.viewers.TableViewer;
4 import org.eclipse.jface.viewers.Viewer;
5
6 import net.mograsim.machine.mi.MicroInstructionMemory;
7
8 public class InstructionTableLazyContentProvider implements InstructionTableContentProvider
9 {
10         private TableViewer viewer;
11         private MicroInstructionMemory memory;
12         private long minAddr = 0;
13
14         @Override
15         public void updateElement(int index)
16         {
17                 long address = memory.getDefinition().getMinimalAddress() + index;
18                 viewer.replace(new InstructionTableRow(address, memory), index);
19         }
20
21         @Override
22         public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
23         {
24                 this.viewer = (TableViewer) viewer;
25                 this.memory = (MicroInstructionMemory) newInput;
26                 if (this.memory != null)
27                 {
28                         this.viewer.setItemCount((int) memory.size());
29                         this.minAddr = memory.getDefinition().getMinimalAddress();
30                 }
31         }
32
33         @Override
34         public void update(long address)
35         {
36                 updateElement((int) (address - minAddr));
37         }
38 }