X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Feditors%2FMemoryEditor.java;h=c1268fec3572fd8ac77fb1a31e67c6cf90f5d042;hb=30779f58b602f508ae3b8048bdb576191f7d9980;hp=028a1b5be295a41978073e10b63f079f151f09bc;hpb=5f8f05cd27d2b7663e32093c3e9c542b1af9224b;p=Mograsim.git 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 028a1b5b..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; @@ -111,19 +117,21 @@ public class MemoryEditor extends EditorPart Text amountText = new Text(parent, SWT.BORDER); amountText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); amountText.addVerifyListener(vl); - amountText.setText("0"); amountText.addModifyListener(e -> { try { - provider.setAmount(AsmNumberUtil.valueOf(amountText.getText()).intValue()); - viewer.refresh(); + if (provider != null) + provider.setAmount(AsmNumberUtil.valueOf(amountText.getText()).intValue()); + if (viewer != null) + viewer.refresh(); } catch (NumberFormatException x) { // Nothing to do here } }); + amountText.setText("100");// do this after registering the ModifyListener new RadixSelector(parent, displaySettings); addActivationButton(parent); @@ -139,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); @@ -165,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() @@ -189,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)