У меня есть GWT CellTable с включенной SingleSelectionModel.Как только пользователь щелкает строку, onSelectionChange (...) запускает мой диалог подтверждения, который спрашивает пользователя, продолжать или нет.Проблема в том, что когда пользователь нажимает кнопку «Отмена», ничего не происходит, но он не может выбрать одну и ту же строку (предположим, что только одна строка в CellTable). Я знаю, что могу отменить выбор, когда пользователь нажмет кнопку «Отмена», но этоснова запускает onSelectionChange (..) и запускает мой диалог подтверждения ..... это бесконечный цикл.
Ниже мой код:
// Add SelectionModel to dTable;
final SingleSelectionModel<Driver> ssm = new SingleSelectionModel<Driver>();
dTable.setSelectionModel(ssm);
ssm.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@ Override
public void onSelectionChange(final SelectionChangeEvent event)
{
SC.confirm("Do you want to contact the driver?", new BooleanCallback() {
public void execute(Boolean value) {
if (value != null && value) {
final Driver d = ssm.getSelectedObject();
dataStoreService.updateDrivers(d._UUID.toString(),tripDate.getValue(), loginInfo.getEmailAddress(),destination.getText().trim(),
new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(String uuid) {
Window.alert("The driver has been notified. Please keep your reference id: "+uuid);
}
});
dataStoreService.getBookings(loginInfo.getEmailAddress(), new AsyncCallback<List<Booking>>() {
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(List<Booking> myBookings) {
ClientUtilities.populateBookings(bookingDataProvider, myBookings);
}
});
} else {
//clear selection
//ssm.setSelected(ssm.getSelectedObject(), false);
}
}
});
}
});
Может кто-нибудь сказать мне, как обрабатыватьтакая ситуация в CellTable?Я открыт для любых решений.