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;
12 public abstract class NumberCellEditingSupport extends EditingSupport
14 private final TableViewer viewer;
15 private final CellEditor editor;
16 private final DisplaySettings displaySettings;
18 public NumberCellEditingSupport(TableViewer viewer, DisplaySettings displaySettings)
22 this.displaySettings = displaySettings;
23 editor = new TextCellEditor(viewer.getTable());
24 editor.setValidator(new NumberCellEditorValidator());
28 final protected boolean canEdit(Object element)
34 final protected CellEditor getCellEditor(Object element)
40 final protected Object getValue(Object element)
42 return AsmNumberUtil.toString(getAsBigInteger(element), displaySettings.getDataNumberType(), getBitLength(element));
46 final protected void setValue(Object element, Object userInput)
50 setAsBigInteger(element, AsmNumberUtil.valueOf((String) userInput));
52 catch (@SuppressWarnings("unused") NumberFormatException e)
54 setAsBigInteger(element, BigInteger.valueOf(0));
56 viewer.update(element, null);
59 protected abstract void setAsBigInteger(Object element, BigInteger value);
61 protected abstract BigInteger getAsBigInteger(Object element);
63 protected abstract int getBitLength(Object element);