private void paintRow(Graphics g, int rowIndex) {
		DataTableModel model = (DataTableModel) table.getModel();
		DataRow row = model.getRow(rowIndex);
		DataCategory category = null;

		if (row instanceof DataCategory) {
			category = (DataCategory) row;
		}

		int numColumns = table.getColumnCount();
		for (int column = 0; column < numColumns; column++) {
			Rectangle cellRect = table.getCellRect(rowIndex, column, true);
			if (category == null) {
				paintCell(g, cellRect, rowIndex, column);
			} else {
				if (column < category.getColumnPosition()) {
					paintCell(g, cellRect, rowIndex, column);
				} else if (column == category.getColumnPosition()) {
					Rectangle lastColumnRect = table.getCellRect(rowIndex,
							numColumns, true);
					Rectangle extendedRect = new Rectangle(cellRect.x,
							cellRect.y, lastColumnRect.x + lastColumnRect.width
									- cellRect.x, cellRect.height);
					paintCell(g, extendedRect, rowIndex, column);
				}
			}
		}
	}