From a5e96c79d684392d7fdcf149736c2d95200e6fda Mon Sep 17 00:00:00 2001 From: Fabian Stemmler Date: Sat, 5 Oct 2019 23:53:05 +0200 Subject: [PATCH] Quick fix for MemoryEditor CellEditor using the wrong Font --- .../net/mograsim/plugin/editors/MemoryEditor.java | 15 +++++++++++++-- .../plugin/tables/NumberCellEditingSupport.java | 2 +- .../tables/memory/MemoryCellEditingSupport.java | 6 ++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/editors/MemoryEditor.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/editors/MemoryEditor.java index b367f3a4..c1268fec 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/editors/MemoryEditor.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/editors/MemoryEditor.java @@ -3,6 +3,8 @@ package net.mograsim.plugin.editors; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; +import java.util.Collection; +import java.util.HashSet; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; @@ -11,10 +13,12 @@ import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.SafeRunnable; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; @@ -55,6 +59,8 @@ public class MemoryEditor extends EditorPart private MemoryTableContentProvider provider; private DisplaySettings displaySettings; + private Collection fontDependent = new HashSet<>(); + private boolean dirty; private final MemoryCellModifiedListener memListener; @@ -141,6 +147,7 @@ public class MemoryEditor extends EditorPart private void createViewer(Composite parent) { viewer = new LazyTableViewer(parent, SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL); + fontDependent.add(viewer.getTable()); createColumns(); Table table = viewer.getTable(); table.setHeaderVisible(true); @@ -167,7 +174,9 @@ public class MemoryEditor extends EditorPart private void updateFont(ITheme theme) { - viewer.getTable().setFont(theme.getFontRegistry().get(font)); + Font newFont = theme.getFontRegistry().get(font); + // TODO: This is a quick fix! Still have to figure out why the CellEditors do not get the appropriate Font on their own + fontDependent.forEach(c -> c.setFont(newFont)); } private void createColumns() @@ -191,7 +200,9 @@ public class MemoryEditor extends EditorPart return ((MemoryTableRow) element).getMemory().getDefinition().getCellWidth(); } }); - dataCol.setEditingSupport(new MemoryCellEditingSupport(viewer, displaySettings)); + MemoryCellEditingSupport eSup; + dataCol.setEditingSupport(eSup = new MemoryCellEditingSupport(viewer, displaySettings)); + fontDependent.add(eSup.getCellEditorControl()); } private TableViewerColumn createTableViewerColumn(String title, int width) diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java index b28c5b9c..a3582255 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java @@ -12,7 +12,7 @@ import net.mograsim.plugin.asm.AsmNumberUtil; public abstract class NumberCellEditingSupport extends EditingSupport { private final TableViewer viewer; - private final CellEditor editor; + protected final CellEditor editor; private final DisplaySettings displaySettings; public NumberCellEditingSupport(TableViewer viewer, DisplaySettings displaySettings) diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryCellEditingSupport.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryCellEditingSupport.java index deaabe26..6f689e7a 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryCellEditingSupport.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryCellEditingSupport.java @@ -3,6 +3,7 @@ package net.mograsim.plugin.tables.memory; import java.math.BigInteger; import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.widgets.Control; import net.mograsim.plugin.tables.DisplaySettings; import net.mograsim.plugin.tables.NumberCellEditingSupport; @@ -33,4 +34,9 @@ public class MemoryCellEditingSupport extends NumberCellEditingSupport { return ((MemoryTableRow) element).getMemory().getDefinition().getCellWidth(); } + + public Control getCellEditorControl() + { + return editor.getControl(); + } } \ No newline at end of file -- 2.17.1