GWT MVP со столом - PullRequest
       16

GWT MVP со столом

6 голосов
/ 22 сентября 2009

При работе с MVP в GWT как бы вы работали с таблицей? Например, если у вас есть таблица пользователей, ваше мнение выглядит так?

public interface MyDisplay{

HasValue<User> users();

}

или так будет больше?

public interface MyDisplay{

HasValue<TableRow> rows();

}

MVP имеет массу смысла, пока вы не начнете работать с виджетами, которые должны отображать списки непримитивных данных. Кто-нибудь может пролить свет?

Этот архив списка рассылки, кажется, задает тот же вопрос, но никогда не достигает твердого разрешения ...

http://www.mail-archive.com/google-web-toolkit@googlegroups.com/msg24546.html

Ответы [ 3 ]

6 голосов
/ 23 сентября 2009

HasValue<User> или HasValue<TableRow> не будут работать в этом случае, потому что это позволит обрабатывать только одну строку. Возможно, вы могли бы использовать HasValue<List<User>>, но это означало бы, что ваше представление должно отображать всю таблицу при каждом изменении.

Я могу ошибаться, но я думаю, что для таблиц лучше использовать Supervising Presenter вместо Passive View . Посмотрите на виджет PagingScrollTable в инкубаторе GWT :

public class PagingScrollTable<RowType> extends AbstractScrollTable implements
    HasTableDefinition<RowType>, ... {
  ...
  TableModel<RowType> getTableModel() 
  ...
}

Для PagingScrollTable, MutableTableModel<RowType> используется как реализация TableModel<RowType>.

MutableTableModel<RowType> в свою очередь реализует следующие интерфейсы:

HasRowCountChangeHandlers, HasRowInsertionHandlers, HasRowRemovalHandlers, HasRowValueChangeHandlers<RowType>

PagingScrollTable регистрируется как слушатель на MutableTableModel и, следовательно, получает очень подробные уведомления об обновлениях. Полученная реализация должна быть очень производительной.

2 голосов
/ 26 мая 2010

Это может быть очень интересное сообщение в блоге:

http://www.draconianoverlord.com/2010/03/31/gwt-mvp-tables.html

2 голосов
/ 23 сентября 2009

эта дискуссия действительно решает аналогичный вопрос:

http://groups.google.com/group/google-web-toolkit/browse_thread/thread/4887a7565d05f349?tvc=2

...