Есть ли лучший шаблон для отображения 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 кажется очень полезным сам по себе.

Может быть, вы могли бы поделиться своим кодом где-нибудь, чтобы спасти кого-то еще, придумав его

Другие вопросы по тегам