package org.gch.tables;
import java.util.List;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.TableCellElement;
import com.google.gwt.dom.client.TableRowElement;
import com.google.gwt.dom.client.TableSectionElement;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Widget;
public abstract class MyCellTableextends CellTable {
public MyCellTable() {
this.setSize("100%", "100%");
this.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
sinkEvents(Event.ONMOUSEUP | Event.ONDBLCLICK | Event.ONCONTEXTMENU);
}
@Override
protected void onBrowserEvent2(Event event) {
super.onBrowserEvent2(event);
String eventType = event.getType();
final Element target = event.getEventTarget().cast();
// Find the cell where the event occurred.
TableCellElement tableCell = findNearestParentCell(target);
if (tableCell == null) {
return;
}
Element trElem = tableCell.getParentElement();
if (trElem == null) {
return;
}
TableRowElement tr = TableRowElement.as(trElem);
Element sectionElem = tr.getParentElement();
if (sectionElem == null) {
return;
}
TableSectionElement section = TableSectionElement.as(sectionElem);
if("mouseover".equals(eventType) && tableCell.getCellIndex() == this.getColumnIndex(column)) {
event.preventDefault();
Listvisibles = this.getVisibleItems();
T o = visibles.get(tr.getSectionRowIndex());
//Do something with "o"
}
}
private TableCellElement findNearestParentCell(Element elem) {
while ((elem != null)) {
String tagName = elem.getTagName();
if ("td".equalsIgnoreCase(tagName)
|| "th".equalsIgnoreCase(tagName)) {
return elem.cast();
}
elem = elem.getParentElement();
}
return null;
}
}
mercredi 1 juin 2011
GWT CellTable et OnMouseOver
Enfin! J'ai eu l'occasion il y a quelques jours de me remettre à GWT et d'essayer la version 2.3. Après trois ans de développement en version 1.x, j'ai pu mesurer tous les progrès qui ont été fait avec la sortie de la V2. Pour moi qui suis un fervent défenseur de la non utilisation de composant externe à GWT pour la construction d'interface graphique, l'arrivé du composant CellTable est une aubaine. Malheureusement ce composant n'est pas encore tout à fait abouti, il manque notamment le redimensionnement dynamique des colonnes et l'interaction avec la grille n'est pas prévu. Cela étant dit en farfouillant un peu dans les sources il est possible de rendre la grille sensible aux évènements souris. En voici un exemple:
Inscription à :
Articles (Atom)