且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

GWT CellTable与复选框选择和行单击事件

更新时间:2023-12-04 12:38:58

我找到了解决方案!而不是使用 createCheckboxManager(),使用 createCustomManager()传递参数 EventTranslator 扩展了 CheckboxEventTranslator ,并执行 translateSelectionEvent 方法的委托,只拦截忽略的事件超级( CheckboxEventTranslator )。



源代码:


DefaultSelectionEventManager.CheckboxEventTranslator< T>(){
@Override
公共SelectAction translateSelectionEvent(CellPreviewEvent< T>事件){
SelectAction action = super.translateSelectionEvent(event);
if(action.equals(SelectAction.IGNORE)){
GWT.log(做你想要的东西!!!);
返回SelectAction.IGNORE;
}
返回操作;
}
}

);


How to call a method when some row is clicked using the checkbox selection model?

I'm setting the checkbox selection model like this:

table.setSelectionModel(selectionModel, 
      DefaultSelectionEventManager.<T> createCheckboxManager(0));

I found a solution! Instead of using createCheckboxManager(), use createCustomManager() passing by argument an EventTranslator that extends the CheckboxEventTranslator and do a delegation of the translateSelectionEvent method, intercepting only the events ignored by the super (CheckboxEventTranslator).

The source code:

table.setSelectionModel(selectionModel, 
    DefaultSelectionEventManager.createCustomManager(
        new DefaultSelectionEventManager.CheckboxEventTranslator<T>() {
            @Override
            public SelectAction translateSelectionEvent(CellPreviewEvent<T> event) {
                SelectAction action = super.translateSelectionEvent(event);
                if (action.equals(SelectAction.IGNORE)) {
                    GWT.log("DO WHAT YOU WANT!!!");
                    return SelectAction.IGNORE;
                }
                return action;
            }
        }
    )
);