2012-04-16 11 views

答えて

0

これは何か? ;私たちは、「シンプルなリスナインタフェースを」使用している場合)

public class CellTableExample implements EntryPoint, ClickHandler { 

    private static class SomeEntity { 
     /* ... */ 
    } 


    private static class ClickableTextHeader extends TextHeader { 

     private ClickHandler handler; 

     public ClickableTextHeader(String text, ClickHandler handler) { 
      super(text); 
      this.handler = handler; 
     } 

     @Override 
     public void onBrowserEvent(Context context, final Element elem, 
       final NativeEvent event) { 

      //maybe hijack click event 
      if(handler != null) { 

       if(Event.ONCLICK == Event.getTypeInt(event.getType())) { 

        handler.onClick(new ClickEvent() { 
         { 
          setNativeEvent(event); 
          setRelativeElement(elem); 
          setSource(ClickableTextHeader.this); 
         } 
        }); 
       } 
      } 

      //default dom event handler 
      super.onBrowserEvent(context, elem, event); 
     } 
    } 

    CellTable<SomeEntity> cellTable; 
    TextColumn<SomeEntity> firstColumn; 
    TextColumn<SomeEntity> secondColumn; 
    TextColumn<SomeEntity> thirdColumn; 

    @Override 
    public void onModuleLoad() { 

     /* somehow init columns - it's not the point for this example */ 

     cellTable.addColumn(firstColumn, new ClickableTextHeader("First column header", this)); 
     cellTable.addColumn(secondColumn, new ClickableTextHeader("Second column header", this)); 
     cellTable.addColumn(thirdColumn, new ClickableTextHeader("Third column header", this)); 
    } 

    @Override 
    public void onClick(ClickEvent event) { 
     ClickableTextHeader source = (ClickableTextHeader) event.getSource(); 
     Window.alert(source.getValue()); 
    } 
} 

ハイジャックイベントは単純になります - 私は、「アウト・オブ・ボックス・ハンドラとsemanticaly対応」になりたいと思った:)

関連する問題