GWT RadioButton Group - PullRequest
       10

GWT RadioButton Group

3 голосов
/ 09 декабря 2011

В моем приложении у меня есть URN-идентифицированные данные, поступающие с сервера. Я нахожусь в процессе абстрагирования, насколько это возможно, поэтому в моих представлениях практически нет логического кода, и я использую универсальный презентатор, который оборачивает эти представления. Все виджеты имеют URN, что позволяет очень легко сопоставлять входящие данные с определенным виджетом (до сих пор отношение 1 к 1). Это хорошо сработало практически для каждого виджета, и теперь я достиг точки, когда меня запутали.

Предположим, у меня есть (просто для простоты) два RadioButton элемента в представлении. Эти кнопки относятся к «группе» (просто устанавливая их значения name в одно и то же), но, очевидно, они представляют собой 2 разных элемента. Я не могу сопоставить свои URN-идентифицированные данные с одним виджетом, как в любом другом случае, потому что, в данном случае, это два виджета.

Вот пример того, что я имею в виду:

mockup

Коммунальная компания является ListBox, так что только один виджет там. Я сопоставляю каждый элемент в списке с определенным значением Enum.

Коэффициент полезности составляет TextBox, поэтому снова всего один виджет для сопоставления.

Для использования энергии они могут выбрать либо среднее значение за год, либо ввести 12 месячных значений. Я застрял здесь. Я не могу отобразить только один из элементов RadioButton, потому что тогда мне понадобится дополнительная логика в представлении для правильной обработки поведения.

Прикрепил ли я отображение только одного виджета и придерживаюсь (нежелательной) логики в своем представлении, чтобы определить, какое состояние всех элементов должно быть основано на значении, которое пришло для одного виджета, который равен сопоставлены?

Как мне справиться с этим делом?

Редактировать (решение): Следуя концепции ответа Джузио, я нашел работоспособное решение. Поскольку я не хотел придерживаться обработки особых случаев в своей логике, чтобы заботиться о не-виджете, я создал RadioButtonSet поддельный виджет (public class RadioButtonSet <T extends Enum<?> & HasDisplayText> extends Widget implements HasValueChangeHandlers<T>, HasValue<T>), в который я вручную передаю радиостанции, которые мы собираемся сгруппировать. Сделав это, я могу получить или установить его значение и заставить его запускать соответствующие события, когда пользователь меняет выбор. Тогда сопоставление коллекции радиостанций ничем не отличается от отображения списка. Спасибо, Юсио.

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Я полагаю, что в вашем случае вы не должны рассматривать переключатели как два отдельных виджета, в основном в вашем случае вы можете рассматривать группу переключателей как комбинированное окно, потому что поведение почти такое же (единственная проблема заключается в том, что у вас есть дополнительные мастер деталь). Таким образом, в основном вам нужно будет обернуть реальные объекты BO в какой-то вид RadioButtonGroupModel и предоставить его для просмотра, для просмотра можно использовать эту модель и генерировать переключатели (с некоторыми редакторами или чем-либо еще). Я помню, как сталкивался с этой проблемой, когда расширял FW привязки данных для JFace, и это был лучший способ найти решение этой проблемы.

0 голосов
/ 22 декабря 2011

Если я правильно понял проблему, есть 2 возможных решения:

    • Дайте каждому RadioButton уникальный URN (например, oldURN_1, oldURN_2)
    • Когда вы отправляете данные для URN, отключите другую
  1. Сохраните одно и то же Имя для каждого RadioButton, но добавьте числовую переменную в данные, которые отправляет сервер, указывая, какой radioButton он должен использовать (например: 0 для среднего значения и 1 для Ежемесячно)
...