GWT Cell Widgets и поведение двойного щелчка - PullRequest
2 голосов
/ 19 января 2012

У меня есть ячейка, которая обрабатывает и "click" и "dblclick". Одно поведение для клика, другое поведение для dblclick.

При двойном щелчке на ячейке запускаются 3 события.

нажмите, нажмите, и dblclick.

Есть ли способ отфильтровать события "щелчка"?

Как пример:

...
public TestCell(EventBus eventBus){
        super("click","keydown", "dblclick");
}

...

public onBrowserEvent( ... ){
   String eventType = event.getType();
   if("click".equals(eventType)){
     //do smthg.
   }
   if("dblclick".equals(eventType)){
     //do smthg different.
   }
} 

Thankyou.

Ответы [ 2 ]

1 голос
/ 20 января 2012
private int clickCount = 0;

public void onBrowserEvent(Event event) { 
  switch (DOM.eventGetType(event)) { 
    case Event.ONCLICK: 
      clickCount++; 
      if (clickCount == 1) {
        Timer timer = new Timer() {
          @Override
          public void run() {
            onClickAction();
          }
        }
        timer.schedule(200);
      }
      break; 

    case Event.ONDBLCLICK:   
      // your handler code here     
      break;
  }
} 

private void onClickAction() {
  if (clickCount == 1) {
    // Do single click actions
  } // If clickCount > 1, don't perform single click operation.
  clickCount = 0;
}

Случай, один клик:

  1. click -> clickCount = 1.
  2. set timer to fire onClick action after 200ms.
  3. 200ms elapse, onClickAction() fires.
  4. clickCount = 1, perform single click actions.
  5. reset clickCount = 0.

Дело Двойной щелчок

  1. click -> clickCount = 1.
  2. set timer to fire onClick action after 200ms.
  3. click -> clickCount = 2. No timer set.
  4  200ms elapses from first click. Timer fires onClickAction.
  5. clickCount > 1, actions for single click not performed.
  6. reset clickCount = 0.
0 голосов
/ 19 января 2012

... и если вы не хотите обрабатывать dblclick, вы не поймете, почему GWT / браузер дает вам только один клик из 2 ...

Как сказал @ adel-boutros, именно так оно и должно работать, и с этим нужно жить.

Проверьте event.detail на количество кликов. К сожалению, вам придется использовать JSNI, так как GWT, похоже, не раскрывает поле в Java.

...