2010-09-12 8 views
0

Quel est le type d'événement pour le clic de contrôle dans une cellule de tableau dans une application GWT? Je veux fondamentalement changer la couleur de l'arrière-plan lorsque l'utilisateur fait cette action.Quel type d'événement est contrôlé par un clic dans gwt

Cette partie de mon code ressemble essentiellement comme:

public void onBrowserEvent(Event event) { 
     Element td = getEventTargetCell(event); 

     if (td == null) return; 
     Element tr = DOM.getParent(td); 

     System.out.println("Event " + Event.getCurrentEvent()); 
     switch (DOM.eventGetType(event)) { 
     case Event.ONMOUSEDOWN: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      onRowClick(tr); 
      break; 
     } 
     case Event.ONMOUSEUP: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffffff"); 
      break; 
     } 
     case Event.ONMOUSEOVER: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      onRowRollover(tr); 
      break; 
     } 
     case Event.ONMOUSEOUT: { 
      //DOM.setStyleAttribute(td, "backgroundColor","#ffffff"); 
      break; 
     } 
     /*case Event.ONCLICK: { 
      DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      break; 
     }*/ 
     case Event.ONDBLCLICK: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffffff"); 
      break; 
     } 
     case Event.KEYEVENTS: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      break; 
     } 
     case Event.ONFOCUS: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      break; 
     } 
     /*case Event. { 
      DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      break; 
     }*/ 
     } 

    } 

Que dois-je faire pour capturer cet événement?

Répondre

0

Que diriez-vous d'envelopper le contenu de la cellule dans un FocusPanel et d'ajouter le gestionnaire approprié (probablement MouseDownHandler)? (astuce: créez le gestionnaire une fois et ajoutez-le à toutes les cellules associées)
Vous pouvez également ajouter des gestionnaires de clés, etc. à FocusPanel afin de ne pas avoir à vous soucier des événements de navigateur natifs (ce qui peut entraîner des problèmes, un navigateur code spécifique, etc.), laissez GWT faire cela pour vous :)

2

L'objet http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/user/client/Event.html passé à onBrowserEvent a des méthodes. Des méthodes telles que boolean getCtrlKey().

case Event.ONCLICK: { 
    if (event.getCtrlKey()) { 
     DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
    } 
    break; 
} 

Cela fonctionnera pour Windows, pas sûr de Mac et Linux. Sous OS X, vous pouvez vérifier getMetaKey() à la place, car Command est normalement utilisé lorsque Control est utilisé sous Windows.

Questions connexes