/*
* Copyright 2009 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.property;
import java.util.HashMap;
import java.util.Map;
/**
* Base class that allows for headers or footers on a column. The 0th index
* should always refer to the row closest to the data table.
*/
class HeaderPropertyBase extends ColumnProperty {
private int headerCount;
private Map<Integer, Object> headers = new HashMap<Integer, Object>();
private boolean isDynamic;
/**
* If the headers are dymanic, they will be re-rendered on every page load.
* Set this to true if your headers depend on the data.
*
* @return true if the headers are dynamic.
*/
public boolean isDynamic() {
return isDynamic;
}
/**
* Set whether or not the headers are dynamically generated and should be
* refreshed on every page load.
*
* @param isDynamic true if the headers are dynamic
*/
public void setDynamic(boolean isDynamic) {
this.isDynamic = isDynamic;
}
/**
* Get the header at the given row index.
*
* @param row the row index from the bottom
* @return the header for the given row
*/
Object getHeader(int row) {
return headers.get(new Integer(row));
}
/**
* Get the header at the given row and column index. Override this method if
* your header includes dynamic content that depends on the column index.
*
* @param row the row index from the bottom
* @param column the column index at runtime
* @return the header for the given row
*/
Object getHeader(int row, int column) {
return getHeader(row);
}
/**
* @return get the number of headers above the column
*/
int getHeaderCount() {
return headerCount;
}
/**
* Remove the header above this column for the specified row.
*
* @param row the row index from the bottom
*/
void removeHeader(int row) {
headers.remove(new Integer(row));
}
/**
* Set the header above this column. The row index starts with the bottom row,
* which is reverse of a normal table. The headerCount will automatically be
* increased to accommodate the row.
*
* @param row the row index from the bottom
* @param header the header
*/
void setHeader(int row, Object header) {
headers.put(new Integer(row), header);
headerCount = Math.max(headerCount, row + 1);
}
/**
* Set the number of headers above the column.
*
* @param headerCount the number of headers
*/
void setHeaderCount(int headerCount) {
this.headerCount = headerCount;
}
}