X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Ftables%2Fmi%2FColorProvider.java;h=0a1dc0c2181af9a3a3dc7f42a19a4657af8c17bb;hb=96dd446ab936b4db82d0bd94f90e20442a4d86af;hp=fe545fc6837a7f183468c74ee9d63d09460871f8;hpb=a4ef021616f9bf3b6a7778c7b5b6a22d5a7d1c20;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/ColorProvider.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/ColorProvider.java index fe545fc6..0a1dc0c2 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/ColorProvider.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/ColorProvider.java @@ -4,8 +4,11 @@ import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.jface.resource.FontRegistry; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.themes.ITheme; import org.eclipse.ui.themes.IThemeManager; import net.mograsim.machine.mi.MicroInstructionMemory; @@ -17,6 +20,7 @@ public class ColorProvider private long highlightedAddress = -1; private ColorRegistry cRegistry; private FontRegistry fRegistry; + private Font boldItalic; private final static String font = "net.mograsim.plugin.table_font", colorModifBackground = "net.mograsim.plugin.modified_cell_bg_color", @@ -29,15 +33,13 @@ public class ColorProvider { this.viewer = viewer; this.themeManager = themeManager; - this.cRegistry = themeManager.getCurrentTheme().getColorRegistry(); - this.fRegistry = themeManager.getCurrentTheme().getFontRegistry(); + themeChanged(themeManager.getCurrentTheme()); updateListener = e -> { switch (e.getProperty()) { case IThemeManager.CHANGE_CURRENT_THEME: - cRegistry = themeManager.getCurrentTheme().getColorRegistry(); - fRegistry = themeManager.getCurrentTheme().getFontRegistry(); + themeChanged(themeManager.getCurrentTheme()); //$FALL-THROUGH$ case font: case colorModifBackground: @@ -51,6 +53,13 @@ public class ColorProvider themeManager.addPropertyChangeListener(updateListener); } + private void themeChanged(ITheme theme) + { + cRegistry = theme.getColorRegistry(); + fRegistry = theme.getFontRegistry(); + boldItalic = fRegistry.getDescriptor(font).setStyle(SWT.BOLD | SWT.ITALIC).createFont(Display.getDefault()); + } + public Color getBackground(Object element, int column) { InstructionTableRow row = (InstructionTableRow) element; @@ -78,7 +87,14 @@ public class ColorProvider public Font getFont(Object element, int column) { InstructionTableRow row = (InstructionTableRow) element; - return !isDefault(row, column) || isHighlighted(row) ? fRegistry.getBold(font) : fRegistry.get(font); + boolean modified = !isDefault(row, column), highlighted = isHighlighted(row); + if (modified && highlighted) + return boldItalic; + if (modified) + return fRegistry.getItalic(font); + if (highlighted) + return fRegistry.getBold(font); + return fRegistry.get(font); } private static boolean isDefault(InstructionTableRow row, int column)