Esempio n. 1
0
 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();
 }
Esempio n. 2
0
 public void checkpoint() {
   for (MemoryCell c : rows) c.checkpointValue();
 }
Esempio n. 3
0
 public void restoreFromCheckpoint() {
   for (MemoryCell c : rows) c.restoreValueFromCheckpoint();
 }
Esempio n. 4
0
 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();
   }
 }