/** {@inheritDoc} */
  @Override
  public boolean validate(ERTable table) {
    for (Column column : table.getColumns()) {
      if (column instanceof NormalColumn) {
        NormalColumn normalColumn = (NormalColumn) column;

        if (!this.validate(table, normalColumn)) {
          return false;
        }

      } else {
        ColumnGroup columnGroup = (ColumnGroup) column;

        for (NormalColumn normalColumn : columnGroup.getColumns()) {
          if (!this.validate(table, normalColumn)) {
            return false;
          }
        }
      }
    }

    return true;
  }
  private static void setGroupColumnFigureColor(
      TableViewEditPart parentEditPart, ColumnGroup columnGroup, boolean selected) {
    for (final NormalColumn column : columnGroup.getColumns()) {
      for (final Object editPart : parentEditPart.getChildren()) {
        final ColumnEditPart childEditPart = (ColumnEditPart) editPart;
        if (childEditPart.getModel() == column) {
          final IFigure columnFigure = childEditPart.getFigure();
          if (selected) {
            columnFigure.setBackgroundColor(ColorConstants.titleBackground);
            columnFigure.setForegroundColor(ColorConstants.titleForeground);

          } else {
            columnFigure.setBackgroundColor(null);
            columnFigure.setForegroundColor(null);
          }

          ((NormalColumnEditPart) childEditPart).selected = selected;
          break;
        }
      }
    }
  }