cn.mapway.ui.client.widget.common.TableEx Maven / Gradle / Ivy
package cn.mapway.ui.client.widget.common;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTMLTable.Cell;
/**
* The type Table ex.
*/
public class TableEx extends FlexTable implements HasSelectionHandlers {
/**
* Instantiates a new Table ex.
*/
public TableEx() {
setStyleName("gwtEx-Table");
rf = getRowFormatter();
this.addClickHandler(tableClickTable);
}
private static final String THEAD_CSS = "gwtEx-table-head";
private static final String TABLE_TR_HOVER_CSS = "gwtEx-Table-hover";
private static final String TABLE_TR_CLICK_CSS = "gwtEx-Table-click";
/**
* The Rf.
*/
RowFormatter rf;
/**
* The Current row.
*/
int currentRow = -1;
/**
* Format.
*
* @param format the format
*/
public void format(boolean format) {
if (format) {
int rowCount = this.getRowCount();
if (rowCount > 0) {
rf.setStyleName(0, THEAD_CSS);
for (int i = 1; i < rowCount; i++) {
rf.setStyleName(i, TABLE_TR_HOVER_CSS);
}
}
}
}
@Override
public HandlerRegistration addSelectionHandler(SelectionHandler handler) {
return addHandler(handler, SelectionEvent.getType());
}
/**
* The Table click table.
*/
ClickHandler tableClickTable = new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Cell cell = TableEx.this.getCellForEvent(event);
if (cell != null) {
if (cell.getRowIndex() != 0) {
setSelectionRow(cell.getRowIndex());
SelectionEvent.fire(TableEx.this, cell);
}
}
}
};
/**
* Sets selection row.
*
* @param row the row
*/
public void setSelectionRow(int row) {
cancelRowSelect();
if (row > 0 && row < this.getRowCount()) {
rf.setStyleName(row, TABLE_TR_CLICK_CSS);
currentRow = row;
}
}
/**
* 取消当前选择的行.
*/
private void cancelRowSelect() {
if (currentRow > 0) {
rf.removeStyleName(currentRow, TABLE_TR_CLICK_CSS);
rf.setStyleName(currentRow, TABLE_TR_HOVER_CSS);
currentRow = -1;
}
}
}
| |
© 2015 - 2025 Weber Informatics LLC | Privacy Policy