@Override
	public void tableChanged(TableModelEvent e) {
		if (e.getType() == TableModelEvent.UPDATE) {
			int row = e.getFirstRow();
			int col = e.getColumn();
			if ((row < 0) || (col < 1)) { // account for first column being
											// header too
				return;
			}
			Object newObj = routeTableModel.getValueAt(row, col);
			Location origin = getLocationFromRow(row);
			Location destination = getLocationFromColumn(col);
			if (newObj != null) {
				String newValue = newObj.toString();
				int travelTime = Integer.parseInt(newValue);
				if (travelTime < 0) {
					throw new RuntimeException(
							"Vehicle route travel time cannot be negative.");
				}
				controller.setVehicleRoute(vehicle, origin, destination,
						travelTime);
				return;
			}
			controller.removeVehicleRoute(vehicle, origin, destination);
		}
	}