1 package net.mograsim.plugin.memory;
3 import java.math.BigInteger;
5 import org.eclipse.jface.viewers.CellEditor;
6 import org.eclipse.jface.viewers.EditingSupport;
7 import org.eclipse.jface.viewers.TableViewer;
8 import org.eclipse.jface.viewers.TextCellEditor;
10 import net.mograsim.plugin.asm.AsmNumberUtil;
11 import net.mograsim.plugin.memory.MemoryView.DisplaySettings;
13 public class MemoryCellEditingSupport extends EditingSupport
15 private final TableViewer viewer;
16 private final CellEditor editor;
17 private final DisplaySettings displaySettings;
19 public MemoryCellEditingSupport(TableViewer viewer, DisplaySettings displaySettings)
23 this.displaySettings = displaySettings;
24 editor = new TextCellEditor(viewer.getTable());
25 editor.setValidator(new NumberCellEditorValidator());
29 protected boolean canEdit(Object element)
35 protected CellEditor getCellEditor(Object element)
41 protected Object getValue(Object element)
43 MemoryTableRow row = (MemoryTableRow) element;
44 return AsmNumberUtil.toString(row.getMemory().getCellAsBigInteger(row.address), displaySettings.getDataNumberType());
48 protected void setValue(Object element, Object userInput)
50 MemoryTableRow row = (MemoryTableRow) element;
53 row.getMemory().setCellAsBigInteger(row.address, AsmNumberUtil.valueOf((String) userInput));
55 catch (@SuppressWarnings("unused") NumberFormatException e)
57 row.getMemory().setCellAsBigInteger(row.address, BigInteger.valueOf(0));
59 viewer.update(element, null);