Fixed a bug in Am2900; created dlatch8/80; relayouted some components
[Mograsim.git] / net.mograsim.plugin.core / src / net / mograsim / plugin / tables / mi / InstructionView.java
index 35b6933..3af070f 100644 (file)
@@ -40,6 +40,7 @@ public class InstructionView extends ViewPart implements ContextObserver
        private MicroInstructionMemory memory;
        private DisplaySettings displaySettings;
        private InstructionTableContentProvider provider;
+       private int highlighted = 0;
 
        @SuppressWarnings("unused")
        @Override
@@ -66,8 +67,16 @@ public class InstructionView extends ViewPart implements ContextObserver
                viewerData.horizontalSpan = 3;
                viewer.getTable().setLayoutData(viewerData);
 
-               displaySettings.addObserver(() -> viewer.refreshLazy());
+               displaySettings.addObserver(() -> viewer.refresh());
                MachineContext.getInstance().registerObserver(this);
+               setMachine(Optional.ofNullable(MachineContext.getInstance().getMachine()));
+       }
+
+       public void highlight(int index)
+       {
+               viewer.highlightRow(highlighted, false);
+               viewer.highlightRow(index, true);
+               viewer.getTable().setTopIndex(index);
        }
 
        @SuppressWarnings("unused")
@@ -122,12 +131,14 @@ public class InstructionView extends ViewPart implements ContextObserver
 
        private void createColumns()
        {
+               int size = miDef.size();
+               columns = new TableViewerColumn[size + 1];
+
                TableViewerColumn col = createTableViewerColumn("Address", 200);
+               columns[0] = col;
                col.setLabelProvider(new AddressLabelProvider());
 
-               int size = miDef.size();
                int bit = 0;
-               columns = new TableViewerColumn[size];
                ParameterClassification[] classes = miDef.getParameterClassifications();
 
                for (int i = 0; i < size; i++)
@@ -137,9 +148,10 @@ public class InstructionView extends ViewPart implements ContextObserver
                        String name = startBit == endBit ? Integer.toString(startBit) : startBit + "..." + endBit;
                        int bounds = 20 + 20 * classes[i].getExpectedBits();
 
-                       createEditingAndLabel(createTableViewerColumn(name, bounds), miDef, i);
+                       col = createTableViewerColumn(name, bounds);
+                       columns[i + 1] = col;
+                       createEditingAndLabel(col, miDef, i);
                }
-
        }
 
        private void createEditingAndLabel(TableViewerColumn col, MicroInstructionDefinition miDef, int index)
@@ -167,6 +179,7 @@ public class InstructionView extends ViewPart implements ContextObserver
                }
                col.setEditingSupport(support);
                col.setLabelProvider(provider);
+               col.getColumn().setToolTipText(miDef.getParameterDescription(index).orElse(""));
        }
 
        private TableViewerColumn createTableViewerColumn(String title, int bound)