как сохранить представление «скромным», используя SuggestBox со специальным Oracle и предложением - PullRequest
0 голосов
/ 19 апреля 2011

я узнал, как реализовать свой собственный SuggestionOracle ("AuSuggestOracle") и собственный Предложения ( "AuMultiWordSuggestion"). В моем случае объект предложения построен с DTO. На событии выбора мне нужно это dto (или некоторые поля этого) реагировать соответствующим образом. Я реализовал виджет, содержащий 3 подсказки с этим специальным оракул и некоторая логика между ними. Теперь я хочу применить шаблон MVP - разделить этот виджет в презентере и просмотреть. На данный момент интерфейс отображения докладчиков выглядит так:

    public interface Display {
            HasSelectionHandlers<Suggestion> getFedLand();
            HasSelectionHandlers<Suggestion> getCounty();
            HasSelectionHandlers<Suggestion> getCommunity();
            AuSuggestOracle getFedLandOracle();
            AuSuggestOracle getCountyOracle();
            AuSuggestOracle getCommunityOracle();
            void clearCounty();
            void clearCommunity();
            void activateForm();
            Widget asWidget();
    }

проблема в неявных знаниях о моей модели в методах возвращая "AuSuggestOracle". поэтому мой вопрос, как получить представление / Интерфейс "скромный". в моем случае отображаемые строки предложений неоднозначно, и мне нужно, по крайней мере, «идентификатор» выбранного элемента, чтобы знать, что DTObject выбран.

1 Ответ

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

Способ, которым я обошел это, - это исключить геттеры для Oracle, поскольку, как только мой докладчик установит его, мое мнение не будет нуждаться в информации об этом. Итак, мой интерфейс выглядел так:

public interface Display {
    ...

    void setSuggestionOracle(SuggestOracle oracle);
    HasSelectionHandlers<SuggestOracle.Suggestion> getSelectionListener();
}

Проблема, с которой я столкнулся, заключалась в возможности добавить предложение в SuggestBox после его создания. Чтобы обойти это, я инициализировал пустой SuggestBox, а затем удалил его из представления, обновил и вставил обратно в позицию.

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

Делая это, все ваше мнение знает, что оно будет принимать общие предложения для чего-то, и что через некоторое время оно будет обновляться с информацией (которая будет в результате предложения, но мнение состоит в том, чтобы «скромно» знать это).

...