1 package net.mograsim.plugin.tables;
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.tables.memory.DisplaySettings;
13 public abstract class NumberCellEditingSupport extends EditingSupport
15 private final TableViewer viewer;
16 private final CellEditor editor;
17 private final DisplaySettings displaySettings;
19 public NumberCellEditingSupport(TableViewer viewer, DisplaySettings displaySettings)
23 this.displaySettings = displaySettings;
24 editor = new TextCellEditor(viewer.getTable());
25 editor.setValidator(new NumberCellEditorValidator());
29 final protected boolean canEdit(Object element)
35 final protected CellEditor getCellEditor(Object element)
41 final protected Object getValue(Object element)
43 return AsmNumberUtil.toString(getAsBigInteger(element), displaySettings.getDataNumberType());
47 final protected void setValue(Object element, Object userInput)
51 setAsBigInteger(element, AsmNumberUtil.valueOf((String) userInput));
53 catch (@SuppressWarnings("unused") NumberFormatException e)
55 setAsBigInteger(element, BigInteger.valueOf(0));
57 viewer.update(element, null);
60 protected abstract void setAsBigInteger(Object element, BigInteger value);
62 protected abstract BigInteger getAsBigInteger(Object element);