public void setValueAt(Object aValue, int rowIndex, int columnIndex) { if (rowIndex < getRowCount()) { MemoryCell cell = rows.get(rowIndex); assert cell != null; if (columnIndex == 1) { int v = memory.normalizeEndianness(((Value) aValue).toNumber(), cell.length()); Byte b[] = new Byte[cell.length()]; for (int i = b.length - 1; i >= 0; i--) { b[i] = (byte) v; v >>= 8; } boolean changed = false; for (int i = 0; i < b.length; i++) if ((Byte) memory.getValueAt(cell.getAddress() + i, 1) != b[i]) { changed = true; break; } if (changed) { memory.addUndo( new UndoChange( String.format("Value Change at 0x%x\n", cell.getAddress()), rowIndex, 0, UndoChangeType.VALUE)); memory.setValueAtByUser(b, cell.getAddress(), 1); } } else if (columnIndex == 3) { String newValue = ((LabelString) aValue).toString().trim(); if (!newValue.equals(cell.getLabel())) { memory.addUndo( new UndoChange( String.format("Label Change at 0x%x\n", cell.getAddress()), rowIndex, 2, UndoChangeType.LABEL)); cell.setLabel(newValue); memory.setChanged(true); } } else if (columnIndex == 4) { String newValue = ((String) aValue).trim(); if (!newValue.equals(cell.getComment())) { memory.addUndo( new UndoChange( String.format("Comment Change at 0x%x\n", cell.getAddress()), rowIndex, 3, UndoChangeType.COMMENT)); cell.setComment(newValue); memory.setChanged(true); } } else throw new AssertionError(); } }
public Object getValueAt(int rowIndex, int columnIndex) { MemoryCell cell = rows.get(rowIndex); if (columnIndex == 0) return new Integer(cell.getAddress()); else if (columnIndex == 1) return new Value(memory.normalizeEndianness((int) cell.getValue().getValue(), cell.length())); else if (columnIndex == 2) { String label = ((Datum) cell).valueAsLabel(); return label != null ? label : ""; } else if (columnIndex == 3) return new LabelString(cell.getAddress(), cell.getLabel()); else if (columnIndex == 4) return cell.getComment(); else throw new AssertionError(); }