public Object getValueAt(int rowIndex, int columnIndex) {
   final Breakpoint bp = breakPoints.get(rowIndex);
   switch (columnIndex) {
     case COL_BP_ENABLED:
       return bp.isEnabled();
     case COL_BP_ADDRESS:
       return Misc.toHexString(bp.getAddress());
     case COL_BP_EXPRESSION:
       return bp.hasCondition() ? bp.getCondition() : UNCONDITIONAL_BREAKPOINT;
     default:
       return "<unknown column>";
   }
 }
  private String createLinePrefix(Address pc, Address realAddress, DisassembledLine line) {
    /*
     * The prefix may contain a flag indicating that
     * a breakpoint is present on this line as well
     * as a caret for the current program counter (PC) position.
     *
     * Example:
     *
     * [B] >> 0000: SET a,1
     */

    final Breakpoint breakpoint = emulator.getBreakPoint(realAddress);
    String prefix1 = breakpoint != null ? breakpoint.isEnabled() ? "[B] " : "[_] " : "    ";
    String prefix2 = realAddress.equals(pc) ? ">> " : "   ";
    return prefix1 + prefix2;
  }
 public int getRow(Breakpoint breakpoint) {
   for (int index = 0; index < breakPoints.size(); index++) {
     if (breakPoints.get(index).getAddress().equals(breakpoint.getAddress())) {
       return index;
     }
   }
   throw new IllegalArgumentException("Unknown breakpoint: " + breakpoint);
 }
 public void addBreakpoint(Breakpoint bp) {
   int pos = 0;
   for (; pos < breakPoints.size(); pos++) {
     if (breakPoints.get(pos).getAddress().isGreaterThan(bp.getAddress())) {
       breakPoints.add(pos, bp);
       fireTableRowsInserted(pos, pos);
       return;
     }
   }
   pos = breakPoints.size();
   breakPoints.add(bp);
   fireTableRowsInserted(pos, pos);
 }
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
      final Breakpoint bp = getBreakpoint(rowIndex);

      switch (columnIndex) {
        case COL_BP_ENABLED:
          bp.setEnabled((Boolean) aValue);
          break;
        case COL_BP_EXPRESSION:
          if (UNCONDITIONAL_BREAKPOINT.equals(aValue)) {
            return;
          }
          try {
            bp.setCondition((String) aValue);
          } catch (ParseException e) {
            e.printStackTrace();
            return;
          }
          break;
        default:
          throw new UnsupportedOperationException("Unhandled column edited: " + columnIndex);
      }
      emulator.breakpointChanged(bp);
    }