import org.eclipse.jface.viewers.TableViewer;
+import net.mograsim.machine.mi.MicroInstruction;
import net.mograsim.machine.mi.MicroInstructionDefinition;
import net.mograsim.machine.mi.parameters.IntegerClassification;
import net.mograsim.machine.mi.parameters.IntegerImmediate;
+import net.mograsim.machine.mi.parameters.MicroInstructionParameter;
import net.mograsim.plugin.tables.DisplaySettings;
import net.mograsim.plugin.tables.NumberCellEditingSupport;
protected void setAsBigInteger(Object element, BigInteger value)
{
InstructionTableRow row = ((InstructionTableRow) element);
- row.data.setParameter(index, new IntegerImmediate(value, classification.getExpectedBits()));
+ MicroInstructionParameter[] params = row.data.getCell(row.address).getParameters();
+ IntegerImmediate newParam = new IntegerImmediate(value, classification.getExpectedBits());
+ if (params[index].equals(newParam))
+ return;
+ params[index] = newParam;
+ row.data.setCell(row.address, MicroInstruction.create(params));
provider.update(row.address);
// viewer.update(element, null); Does not do anything for some reason
}
@Override
protected BigInteger getAsBigInteger(Object element)
{
- return ((IntegerImmediate) ((InstructionTableRow) element).data.getParameter(index)).getValueAsBigInteger();
+ InstructionTableRow row = ((InstructionTableRow) element);
+ return ((IntegerImmediate) row.data.getCell(row.address).getParameter(index)).getValueAsBigInteger();
+ }
+
+ @Override
+ public int getBitLength(Object element)
+ {
+ return ((InstructionTableRow) element).getData().getDefinition().getMicroInstructionDefinition().getParameterClassification(index)
+ .getExpectedBits();
}
}