Это то, что я делаю, и это отлично работает в производстве в течение нескольких месяцев. Это очень легко понять и использовать повторно.
Я сделал абстрактный диалог с тем же шаблоном, который имеет абстрактный метод onConfirm
и встроенную кнопку подтверждения. Я также включил в UiBinder панель для принятия виджета и переопределил функцию setWidget, чтобы поместить виджет в эту внутреннюю панель. Затем, когда мне что-то понадобится в новом диалоге, я могу просто написать:
final CustomWidget whicheverWidgetINeedRightNow = xyz;
CustomDialog dialog = new CustomDialog()
{
@Override
protected void onConfirm()
{
process(whicheverWidgetINeedRightNow.getData());
}
};
dialog.setWidget(whicheverWidgetINeedRightNow);
Кнопка «ОК» в шаблоне UiBinder запрограммирована для вызова onConfirm при ее нажатии. Острота! Для более сложных случаев я бы создал подкласс CustomDialog в его собственном именованном классе.
Это хорошо работает для меня в 5 или 6 различных ситуациях в моем приложении, и мне не нужно ничего переделывать или перекодировать.