X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Ftables%2FNumberCellEditingSupport.java;h=e1308530c34fe1d264a2012c48dfb22b14b1352e;hb=648fc6e69e09fe4467cb6bac47934be1a7dcf0d6;hp=b28c5b9c1dbfd57e391c1954921fe914927b58e9;hpb=f30643a40e01919e4544891bb8bd92fa37a5b5a7;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java index b28c5b9c..e1308530 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/NumberCellEditingSupport.java @@ -12,16 +12,16 @@ 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) + public NumberCellEditingSupport(TableViewer viewer, DisplaySettings displaySettings, boolean allowX) { super(viewer); this.viewer = viewer; this.displaySettings = displaySettings; editor = new TextCellEditor(viewer.getTable()); - editor.setValidator(new NumberCellEditorValidator()); + editor.setValidator(new NumberCellEditorValidator(allowX)); } @Override @@ -39,25 +39,35 @@ public abstract class NumberCellEditingSupport extends EditingSupport @Override final protected Object getValue(Object element) { - return AsmNumberUtil.toString(getAsBigInteger(element), displaySettings.getDataNumberType(), getBitLength(element)); + BigInteger bi = getAsBigInteger(element); + return bi == null ? "X" : AsmNumberUtil.toString(bi, displaySettings.getDataNumberType(), getBitLength(element)); } @Override final protected void setValue(Object element, Object userInput) { - try - { - setAsBigInteger(element, AsmNumberUtil.valueOf((String) userInput)); - } - catch (@SuppressWarnings("unused") NumberFormatException e) - { - setAsBigInteger(element, BigInteger.valueOf(0)); - } + if (userInput.equals("X") || userInput.equals("x")) + setAsBigInteger(element, null); + else + try + { + setAsBigInteger(element, AsmNumberUtil.valueOf((String) userInput)); + } + catch (@SuppressWarnings("unused") NumberFormatException e) + { + setAsBigInteger(element, BigInteger.valueOf(0)); + } viewer.update(element, null); } + /** + * value==null means X, if this {@link NumberCellEditingSupport} was created with allowX==true + */ protected abstract void setAsBigInteger(Object element, BigInteger value); + /** + * null means X, if this {@link NumberCellEditingSupport} was created with allowX==true + */ protected abstract BigInteger getAsBigInteger(Object element); protected abstract int getBitLength(Object element);