/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.gen2.table.client;
import com.google.gwt.gen2.table.client.SelectionGrid.SelectionPolicy;
import com.google.gwt.gen2.table.client.TableDefinition.AbstractRowView;
/**
* Allows bulk rendering of {@link SelectionGrid}s.
*
* @param <RowType> the data type of the row values
*/
public class SelectionGridBulkRenderer<RowType> extends
GridBulkRenderer<RowType> {
/**
* A customized {@link SelectionGridBulkRenderer.BulkCellView} used by the
* {@link SelectionGridBulkRenderer}.
*
* @param <RowType> the data type of the row values
*/
protected static class SelectionBulkCellView<RowType> extends
BulkCellView<RowType> {
private TableBulkRenderer<RowType> bulkRenderer = null;
/**
* Construct a new {@link SelectionGridBulkRenderer.SelectionBulkCellView}.
*
* @param bulkRenderer the renderer
*/
public SelectionBulkCellView(TableBulkRenderer<RowType> bulkRenderer) {
super(bulkRenderer);
this.bulkRenderer = bulkRenderer;
}
@Override
protected void renderRowValue(RowType rowValue, ColumnDefinition columnDef) {
// Add the input column
if (getCellIndex() == 0) {
SelectionPolicy selectionPolicy = ((SelectionGrid) bulkRenderer.getTable()).getSelectionPolicy();
if (selectionPolicy.hasInputColumn()) {
getStringBuffer().append("<td align='CENTER'>");
getStringBuffer().append(
((SelectionGrid) bulkRenderer.getTable()).getInputHtml(selectionPolicy));
getStringBuffer().append("</td>");
}
}
// Render the actual cell
super.renderRowValue(rowValue, columnDef);
}
}
/**
* Construct a new {@link SelectionGridBulkRenderer}.
*
* @param grid {@link SelectionGrid} to be be bulk rendered
* @param tableDef the table definition that should be used during rendering
*/
public SelectionGridBulkRenderer(SelectionGrid grid,
TableDefinition<RowType> tableDef) {
super(grid, tableDef);
}
/**
* Construct a new {@link SelectionGridBulkRenderer}.
*
* @param grid {@link SelectionGrid} to be be bulk rendered
* @param sourceTableDef the external source of the table definition
*/
public SelectionGridBulkRenderer(SelectionGrid grid,
HasTableDefinition<RowType> sourceTableDef) {
super(grid, sourceTableDef);
}
@Override
protected AbstractRowView<RowType> createRowView(
final RenderingOptions options) {
BulkCellView<RowType> cellView = new SelectionBulkCellView<RowType>(this);
return new BulkRowView<RowType>(cellView, this, options);
}
}