public void receive(final CallEvent event){
  if (event.isValid()) {
    if (!mEvents.contains(event)) {
      mEvents.add(0,event);
      fireTableRowsInserted(0,0);
      prune();
    }
 else {
      int row=mEvents.indexOf(event);
      fireTableRowsUpdated(row,row);
    }
  }
 else {
    if (mEvents.contains(event)) {
      int row=mEvents.indexOf(event);
      mEvents.remove(event);
      fireTableRowsDeleted(row,row);
    }
  }
}

public void receive ( final CallEvent event ) { if ( event . isValid ( ) ) { if ( ! mEvents . contains ( event ) ) { mEvents . add ( 0 , event ) ; fireTableRowsInserted ( 0 , 0 ) ; prune ( ) ; } else { int row = mEvents . indexOf ( event ) ; fireTableRowsUpdated ( row , row ) ; } } else { if ( mEvents . contains ( event ) ) { int row = mEvents . indexOf ( event ) ; mEvents . remove ( event ) ; fireTableRowsDeleted ( row , row ) ; } } }
adds , updates or deletes the event from the model . producers can send the same call event multiple times to indicate that information in the event is updated . producers can also mark the event as invalid and the event will be removed from the model .
