2011-05-18 14 views
7

Necesito un control GUI para actualizar cada vez que se actualiza una estructura de datos persistente (PDS).¿Cómo "enlazar" una estructura de datos persistente a una GUI en Scala?

Necesito tener el PDS actualizado cuando el usuario realiza ciertas acciones.

Así, por ejemplo, un árbol SWT y una estructura de datos de árbol simple.

Existen muchas formas manuales y feas de hacer esto, pero me parece que esta es una situación muy común y es probable que haya un enfoque muy limpio.

He estado leyendo acerca de FRP, Lentes, Actores, etc. Parece que podría haber un enfoque muy simple, limpio y efectivo para manejar este tipo de situaciones.

Respuesta

0

Lo que puedo pensar es tener un componente con una referencia mutable al PDS. Este componente podría generar un evento con la nueva versión del PDS cada vez que cambie el valor de la var. El control de su GUI podría estar escuchando ese evento y reaccionar al mismo redibujándose con la nueva información. Otra opción es que el componente que escucha el evento sea el padre del control de su GUI, reaccionando al crear una nueva instancia de este, para que el control pueda recibir el PDS en el constructor y dibujarse solo una vez.

-1

Cómo se describe, parece que las llamadas de los usuarios toman ciertas acciones dentro de la GUI, y luego la GUI y la base de datos deben actualizarse. Siempre que la actualización de la base de datos sea un efecto secundario, puede confiar completamente en todos los eventos SWT.

+1

La estructura de datos persistente no se refiere a una base de datos. – mentics

0

Una estructura de datos persistente nunca se actualiza. Probablemente tenga una referencia a una estructura de datos persistente que cambie a la nueva versión, cuando la cambie. Si desea rastrear el cambio incremental en el PDS, será incómodo. El caso es que, en el momento en que está almacenando la nueva versión del PDS, todavía tiene la versión anterior. Tal vez puedas ejecutar un diff para producir el cambio incremental.

0

Sí, hay un enfoque agradable y limpio: ValueModels. Debería ser bastante fácil de implementar en Scala (no he encontrado nada en una búsqueda rápida). AFAIK hay una implementación de Java incrustada en Spring Rich Client.

Cuestiones relacionadas