/**
  * Remove a row from the model.
  *
  * @param row row to remove
  */
 public void remRow(TimeBarRow row) {
   if (_rows.contains(row)) {
     row.remTimeBarRowListener(this);
     _rows.remove(row);
     updateMinMax();
     fireRowRemoved(row);
   }
 }
 /**
  * Add a row.
  *
  * @param index index the row should be inserted. -1 marks append to the end.
  * @param row row to add.
  */
 public void addRow(int index, TimeBarRow row) {
   if (index == -1) {
     _rows.add(row);
   } else {
     _rows.add(index, row);
   }
   if (_minDate == null) {
     _minDate = row.getMinDate();
     _maxDate = row.getMaxDate();
   } else if (row.getMinDate() != null && row.getMaxDate() != null) {
     if (_minDate.compareTo(row.getMinDate()) > 0) {
       _minDate = row.getMinDate();
     }
     if (_maxDate.compareTo(row.getMaxDate()) < 0) {
       _maxDate = row.getMaxDate();
     }
   }
   row.addTimeBarRowListener(this);
   fireRowAdded(row);
 }