Как «привязать» постоянную структуру данных к графическому интерфейсу в Scala? - PullRequest
7 голосов
/ 18 мая 2011

Мне нужен элемент управления GUI для обновления всякий раз, когда обновляется постоянная структура данных (PDS).

Мне нужно обновить PDS, когда пользователь выполняет определенные действия.

Так, например, SWT Tree и простая древовидная структура данных.

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

Я читал о FRP, линзах, актерах и т. Д. ... кажется, что может быть очень простой, чистый и эффективный подход к решению подобных ситуаций.

Ответы [ 4 ]

0 голосов
/ 04 октября 2011

Да, есть хороший и чистый подход: ValueModels . Это должно быть довольно легко реализовать в Scala (я ничего не нашел в быстром поиске). AFAIK есть реализация Java, встроенная в Spring Rich Client .

0 голосов
/ 14 сентября 2011

Постоянная структура данных никогда не обновляется. Возможно, у вас есть ссылка на постоянную структуру данных, которая изменяется при переходе на новую версию. Если вы хотите отслеживать постепенные изменения в PDS, это будет неудобно. Дело в том, что в тот момент, когда вы сохраняете новую версию PDS, у вас все еще есть старая версия. Может быть, вы можете запустить diff, чтобы произвести постепенное изменение.

0 голосов
/ 15 сентября 2011

Я могу подумать о наличии компонента с изменяемой ссылкой на PDS.Этот компонент может вызывать событие с новой версией PDS каждый раз, когда он меняет значение переменной var.Ваш элемент управления GUI может прослушивать это событие и реагировать на него, перерисовывая себя новой информацией.Другой вариант заключается в том, что компонент, который прослушивает событие, является родителем вашего элемента управления GUI, реагируя путем создания нового его экземпляра, поэтому элемент управления может получить PDS в конструкторе и нарисовать себя только один раз.

0 голосов
/ 29 мая 2011

Как вы описываете, кажется, что пользовательские вызовы выполняют определенные действия внутри GUI, а затем GUI и База данных должны быть обновлены.Пока обновление базы данных является побочным эффектом, вы можете полностью полагаться на все события SWT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...