Есть ли лучший шаблон для отображения OptionalFieldEditor, только если значение не является нулевым?
Я создал крупномасштабный редактор, состоящий из множества подредакторов. Некоторые из них должны обрабатывать необязательные подструктуры, и я обернул их в OptionalFieldEditor
,
Проблема в том, что я хочу показать только те подструктуры, если такая структура существует, а если нет, я хочу показать кнопку создания.
Пока проблем нет: если я начну без этой структуры, я просто скрою панель редактора и сделаю ее видимой, как только пользователь нажмет кнопку "Создать".
Проблема возникает, если в редакторе структура заполнена уже с самого начала. OptionalFieldEditor не позволит мне получить уведомление или прочитать значение, чтобы перевести отображение в исходное состояние. Таким образом, редактор остается либо невидимым, несмотря на значения, либо редактор видим, но значения не установлены.
Чтобы обойти эту проблему, я реализовал производную OptionalField
Редактор, который уведомит об обратном вызове, если это setValue()
метод называется.
Но я подумал, что это должен быть классический вариант использования OptionalFieldEditor
так зачем мне это выдумывать? Может быть, я просто глуп, чтобы понять правильный путь, поэтому я спрашиваю здесь. Это допустимый шаблон, или в среде редактора есть средство, чтобы сделать это простым?
Вот код:
public class MyOptionalFieldEditor
extends OptionalFieldEditor<HwrDefinition, HwrDefinitionEditorView>
{
public interface ValueHandler {
void receivedValue(HwrDefinition value);
}
ValueHandler handler;
protected MyOptionalFieldEditor( HwrDefinitionEditorView subEditor,
ValueHandler handler )
{
super( subEditor );
this.handler = handler;
}
@Override
public void setValue(HwrDefinition value) {
super.setValue( value );
if( handler != null ) {
handler.receivedValue(value);
}
}
}
Спасибо,
Томас
1 ответ
Мы пробовали разные вещи с помощью OptionalFieldEditor и в итоге получили нечто похожее на то, что у вас есть, хотя мы инкапсулировали часть пользовательского интерфейса и управляли структурой редактора в один класс многократного использования. Кроме того, у нас были разные варианты - с кнопкой добавления / удаления или неявной кнопкой, где заполнение полей добавляло / удаляло объект под обложками.
Я знаю, что вы имеете в виду под "если это сделает больше", но я думаю, что это хорошо согласуется с философией GWT, заключающейся в предоставлении базовых блоков сборки, а не в попытке проникнуть на менее определенную территорию. OptionalFieldEditor кажется очень полезным сам по себе.
Может быть, вы могли бы поделиться своим кодом где-нибудь, чтобы спасти кого-то еще, придумав его