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=161ecd36b6dcfe0e38cee3fd6ea8ad42d0705777;hp=a358225557861c1a93b4f27b3cc56ee27b04bc88;hpb=a5e96c79d684392d7fdcf149736c2d95200e6fda;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 a3582255..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 @@ -15,13 +15,13 @@ public abstract class NumberCellEditingSupport extends EditingSupport 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);