Quick fix for MemoryEditor CellEditor using the wrong Font
authorFabian Stemmler <stemmler@in.tum.de>
Sat, 5 Oct 2019 21:53:05 +0000 (23:53 +0200)
committerFabian Stemmler <stemmler@in.tum.de>
Sat, 5 Oct 2019 21:53:20 +0000 (23:53 +0200)
plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/editors/MemoryEditor.java
plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java
plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryCellEditingSupport.java

index b367f3a..c1268fe 100644 (file)
@@ -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<Control> 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)
index b28c5b9..a358225 100644 (file)
@@ -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)
index deaabe2..6f689e7 100644 (file)
@@ -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