X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Ftables%2Fmi%2FInstructionTable.java;h=a806bd28c0abc0ceeb8051fc4687dcbf857ac2a9;hb=0eb525202d3c871a2a20f789af1728248f3cff11;hp=11e57baa942b06f9d772627fa67f184d3354b989;hpb=6b01ce390c1bb33d133902479645abfcc293704f;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTable.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTable.java index 11e57baa..a806bd28 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTable.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTable.java @@ -12,6 +12,8 @@ import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.TableViewerEditor; import org.eclipse.jface.viewers.TableViewerFocusCellManager; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; @@ -35,6 +37,7 @@ public class InstructionTable private MicroInstructionDefinition miDef; private MicroInstructionMemory memory; private InstructionTableContentProvider provider; + private final RowHighlighter highlighter; private final ColorProvider cProv; public InstructionTable(Composite parent, DisplaySettings displaySettings, IThemeManager themeManager) @@ -42,11 +45,13 @@ public class InstructionTable viewer = new LazyTableViewer(parent, SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL); this.displaySettings = displaySettings; this.cProv = new ColorProvider(viewer, themeManager); + this.highlighter = new RowHighlighter(viewer, cProv); Table table = viewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); viewer.setUseHashlookup(true); + table.addDisposeListener(e -> dispose()); TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer)); @@ -87,7 +92,26 @@ public class InstructionTable TableViewerColumn col = createTableViewerColumn("Address"); columns[0] = col; - col.setLabelProvider(new AddressLabelProvider()); + col.setLabelProvider(new AddressLabelProvider() + { + @Override + public Color getBackground(Object element) + { + return cProv.getBackground(element, -1); + } + + @Override + public Color getForeground(Object element) + { + return cProv.getForeground(element, -1); + } + + @Override + public Font getFont(Object element) + { + return cProv.getFont(element, -1); + } + }); String[] columnTitles = new String[size]; @@ -234,9 +258,14 @@ public class InstructionTable Display.getDefault().asyncExec(() -> viewer.refresh()); } - public void dispose() + private void dispose() { cProv.dispose(); viewer.getTable().dispose(); } + + public void highlight(int row) + { + highlighter.highlight(row); + } }