SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
CONSTRUCCIÓN
DE INTERFACES
DE USUARIO
1er Cuatrimestre de 2019
Interfaces Desktop
Multiplataforma
2
JVM JVM JVM
Windows Linux Mac
SWT
Arena
AWT
Swing
Interfaces Desktop
Arena
▸ Framework para facilitar la construcción de interfaces
Desktop desarrollado por Uqbar con fines educativos.
▸ Basado en SWT (Standard Widget Toolkit): conjunto de
componentes para construir interfaces gráficas en Java,
(widgets) desarrollados por el proyecto Eclipse.
▸ Link a Arena: http://arena.uqbar-project.org/index.html
3
Arena - Maven
<repositories>
<repository>
<id>uqbar</id>
<name>Uqbar</name>
<url>http://maven.uqbar.org/releases/</url>
</repository>
</repositories>
<parent>
<groupId>org.uqbar-project</groupId>
<artifactId>arena-xtend-parent</artifactId>
<version>3.6.3</version>
</parent>
4
Interfaces Desktop
Componentes
▸ TextBox - Input de texto
▸ Label - Etiqueta de texto
▸ Button
▸ Panels - Contenedor de componentes
▸ Windows y Dialogs
▸ Error Panel
Ver documentación Arena:
http://arena.uqbar-project.org/documentation/c
omponents.html
5
▸ Window: es la clase abstracta para todas las
ventanas
▸ MainWindow: es un tipo especial de ventana que se
usa para aplicaciones simples o de una sola ventana
▸ SimpleWindow: ventana común que agrega el
panel de errores
▸ Dialog: es una ventana final que depende de alguna
de las anteriores y que debe generar una acción y
cerrarse
Ventanas y Diálogos
6
Ejemplo - MainWindow
7
class LoginWindow : MainWindow<Login>(Login()) {
override fun createContents(panel: Panel) {
this.title = "Login del sistema"
Label(panel).setText("Ingrese el usuario")
TextBox(panel)
Label(panel).setText("Ingrese el password")
PasswordField(panel)
Button(panel).setCaption("Autenticar")
}
}
fun main() {
LoginWindow().startApplication()
}
Windows - Dialogs
8
▸ Pero las ventanas Window no pueden ser
inicializadas desde un main()como sí sucede con
MainWindow
▸ Es necesario otra estrategia de inicialización
▹ Hay que usar la clase Application
▹ Que se encarga de inicializar la aplicación y
llamar a la Window que indiquemos como
“inicial”
▹ Luego vamos a poder interactuar entre
Windows y Dialogs libremente
Application + SimpleWindows
9
class Main : Application() {
override fun createMainWindow(): MainWindow {
return MainWindow(this, User())
}
}
fun main() { Main().start() }
class MainWindow : SimpleWindow<User>{
constructor (owner: WindowOwner, model: User ) : super(owner, model)
override fun addActions(actionsPanel : Panel) { /* Actions Panel */ }
override fun createFormPanel(mainPanel : Panel) {
Label(mainPanel).setText("Prueba SimpleWindow")
}
}
Application + Dialog
10
class FormWindow : SimpleWindow<User> {
constructor (owner: WindowOwner, model: User) : super(owner, model)
override fun createFormPanel(mainPanel: Panel) {
Button(mainPanel).onClick(Action {
AddNameDialog(this, this.modelObject).open()
})
}
}
class AddNameDialog : Dialog<User> {
constructor(owner: WindowOwner, model: User ) : super(owner, model)
override fun createFormPanel(panel : Panel ) {
Label(panel).setText("Dialog Example: ")
Button(panel).setCaption("Aceptar").onClick(Action { this.close() })
}
}
Conceptos necesarios
Eventos
▸ Cualquier suceso en el sistema
▸ Comunicación entre dos componentes
▸ Inversión de la relación de conocimiento
▸ Tanto la vista como el modelo, pueden producir
eventos
11
Conceptos necesarios
Binding
▸ Vincular o enlazar propiedades del modelo con la
UI.
▸ Relaciona dos propiedades manteniendolas
sincronizadas
▸ El binding puede ser direccional o bidireccional
▸ Muchos framework proveen mecanismos de
binding.
12
En la UI podemos “bindear” una propiedad con el modelo de la
siguiente forma:
Label(panel).bindValueToPropertie<String, ControlBuilder>("user")
En el modelo con el annotation
@Observable
class Login {
var user: String = ""
}
Binding - Arena
13
14
@Observable
class Login {
var user: String = ""
set(value) { resetAuth(); field = value }
var password: String = ""
set(value) { resetAuth(); field = value }
var authenticated: Boolean = false
var authenticatedColor: Color = Color.ORANGE
fun authenticate() {
authenticated = (user == "polo") && (password == "polo")
authenticatedColor =
if (authenticated) Color.GREEN else Color.ORANGE
}
private fun resetAuth() {
authenticated = false
authenticatedColor = Color.ORANGE
}
Modelo + Binding
Windows + Binding
15
class LoginWindow : MainWindow<Login>(Login()) {
override fun createContents(panel: Panel) {
this.title = "Login del sistema"
Label(panel).setText("Ingrese el usuario")
TextBox(panel).bindValueToProperty<Int, ControlBuilder>("user")
Label(panel).setText("Ingrese el password")
PasswordField(panel).bindValueToProperty<Int, ControlBuilder>("password")
Button(panel)
.setCaption("Autenticar")
.onClick { modelObject.authenticate() }
val status = Label(panel)
status.bindValueToProperty<Double, ControlBuilder>("authenticated")
status.bindBackgroundToProperty<ControlBuilder, Any, Any>("authenticatedColor")
}
}
fun main() {
LoginWindow().startApplication()
}
16
¿Preguntas?
¿Hacemos una Demo?

Más contenido relacionado

La actualidad más candente

Introducción a Swing
Introducción a SwingIntroducción a Swing
Introducción a Swingmrojas_unitec
 
Java - Tutorial Ventanas
Java - Tutorial VentanasJava - Tutorial Ventanas
Java - Tutorial Ventanaselsemieni
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_Robert Wolf
 
Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Omar B.
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing Laura
 
Diseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansEmerson Garay
 
Trabajo teórico exposcición
Trabajo teórico exposciciónTrabajo teórico exposcición
Trabajo teórico exposciciónAndy Bsc
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansEmerson Garay
 
Guis en java-1pp_2011_
Guis en java-1pp_2011_Guis en java-1pp_2011_
Guis en java-1pp_2011_Ricardo Garcia
 
Interfaces de usuario con awt
Interfaces de usuario con awtInterfaces de usuario con awt
Interfaces de usuario con awtFlashnet S.A
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidAlberto Ruibal
 

La actualidad más candente (19)

Introducción a Swing
Introducción a SwingIntroducción a Swing
Introducción a Swing
 
Decorator
DecoratorDecorator
Decorator
 
Swing1
Swing1Swing1
Swing1
 
Java
JavaJava
Java
 
Java - Tutorial Ventanas
Java - Tutorial VentanasJava - Tutorial Ventanas
Java - Tutorial Ventanas
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_
 
Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
 
Java swing
Java swingJava swing
Java swing
 
Clase swing
Clase swingClase swing
Clase swing
 
Elementos Swing
Elementos SwingElementos Swing
Elementos Swing
 
Diseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando Netbeans
 
Trabajo teórico exposcición
Trabajo teórico exposciciónTrabajo teórico exposcición
Trabajo teórico exposcición
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeans
 
Guis en java-1pp_2011_
Guis en java-1pp_2011_Guis en java-1pp_2011_
Guis en java-1pp_2011_
 
Clase swing
Clase swingClase swing
Clase swing
 
Interfaces de usuario con awt
Interfaces de usuario con awtInterfaces de usuario con awt
Interfaces de usuario con awt
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
interfaz grafica
interfaz graficainterfaz grafica
interfaz grafica
 

Similar a 2.1. arena-y-binding

Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3Milaly
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Sorey García
 
3.1 mvc-mvvm-app model-binding
3.1 mvc-mvvm-app model-binding3.1 mvc-mvvm-app model-binding
3.1 mvc-mvvm-app model-bindingxavazque2
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradoresPablo Campos
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptxATM_SSI
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontesjalzate
 
Laboratorio WEB GXEv3
Laboratorio WEB GXEv3Laboratorio WEB GXEv3
Laboratorio WEB GXEv3GeneXus
 
Laboratorio WEB GXEv3
Laboratorio WEB GXEv3Laboratorio WEB GXEv3
Laboratorio WEB GXEv3GeneXus
 
Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Luis Du Solier
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverDavid Gómez García
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSIan Monge Pérez
 
Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo
Laboratorio desarrollo de aplicaciones WEB con GeneXus TiloLaboratorio desarrollo de aplicaciones WEB con GeneXus Tilo
Laboratorio desarrollo de aplicaciones WEB con GeneXus TiloGeneXus
 
Plataforma moviles ernesto horna
Plataforma moviles ernesto hornaPlataforma moviles ernesto horna
Plataforma moviles ernesto hornaLuis Rengifo Torres
 

Similar a 2.1. arena-y-binding (20)

Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
 
3.1 mvc-mvvm-app model-binding
3.1 mvc-mvvm-app model-binding3.1 mvc-mvvm-app model-binding
3.1 mvc-mvvm-app model-binding
 
Novedades en XAML
Novedades en XAMLNovedades en XAML
Novedades en XAML
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradores
 
Android bootcamp 101 v2.0
Android bootcamp 101 v2.0Android bootcamp 101 v2.0
Android bootcamp 101 v2.0
 
Windows 10: Novedades en XAML
Windows 10: Novedades en XAMLWindows 10: Novedades en XAML
Windows 10: Novedades en XAML
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontes
 
Laboratorio WEB GXEv3
Laboratorio WEB GXEv3Laboratorio WEB GXEv3
Laboratorio WEB GXEv3
 
Laboratorio WEB GXEv3
Laboratorio WEB GXEv3Laboratorio WEB GXEv3
Laboratorio WEB GXEv3
 
Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007Desarrollo De Web Parts En Share Point2007
Desarrollo De Web Parts En Share Point2007
 
JAVA Interfaz gráfica (GUI)
JAVA Interfaz gráfica (GUI)JAVA Interfaz gráfica (GUI)
JAVA Interfaz gráfica (GUI)
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JS
 
Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo
Laboratorio desarrollo de aplicaciones WEB con GeneXus TiloLaboratorio desarrollo de aplicaciones WEB con GeneXus Tilo
Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo
 
Plataforma moviles ernesto horna
Plataforma moviles ernesto hornaPlataforma moviles ernesto horna
Plataforma moviles ernesto horna
 

Más de xavazque2

258939538 dumping
258939538 dumping258939538 dumping
258939538 dumpingxavazque2
 
380914324 poo-kotlin
380914324 poo-kotlin380914324 poo-kotlin
380914324 poo-kotlinxavazque2
 
146817358 android
146817358 android146817358 android
146817358 androidxavazque2
 
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlinCurso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlinxavazque2
 
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juegoxavazque2
 
325940441 motion-ui
325940441 motion-ui325940441 motion-ui
325940441 motion-uixavazque2
 
371081023 curso-desarrollo-android
371081023 curso-desarrollo-android371081023 curso-desarrollo-android
371081023 curso-desarrollo-androidxavazque2
 
4.1. validaciones-y-excepciones
4.1. validaciones-y-excepciones4.1. validaciones-y-excepciones
4.1. validaciones-y-excepcionesxavazque2
 
5.1. stateles stateful-protocolo_http
5.1. stateles stateful-protocolo_http5.1. stateles stateful-protocolo_http
5.1. stateles stateful-protocolo_httpxavazque2
 
435338801 programacion-mobile-android
435338801 programacion-mobile-android435338801 programacion-mobile-android
435338801 programacion-mobile-androidxavazque2
 
457126889 android-pdf
457126889 android-pdf457126889 android-pdf
457126889 android-pdfxavazque2
 
266521557 apuntes-unidad-formativa-app-inventor
266521557 apuntes-unidad-formativa-app-inventor266521557 apuntes-unidad-formativa-app-inventor
266521557 apuntes-unidad-formativa-app-inventorxavazque2
 
7. react js-1
7. react js-17. react js-1
7. react js-1xavazque2
 
484719815 pidiendo-ayuda-a-los-angeles-pdf
484719815 pidiendo-ayuda-a-los-angeles-pdf484719815 pidiendo-ayuda-a-los-angeles-pdf
484719815 pidiendo-ayuda-a-los-angeles-pdfxavazque2
 
484717855 transmutacion-de-energias-pdf
484717855 transmutacion-de-energias-pdf484717855 transmutacion-de-energias-pdf
484717855 transmutacion-de-energias-pdfxavazque2
 
411958729 curso-de-delphi-pdf
411958729 curso-de-delphi-pdf411958729 curso-de-delphi-pdf
411958729 curso-de-delphi-pdfxavazque2
 
3.mvc app model-valida-excep
3.mvc app model-valida-excep3.mvc app model-valida-excep
3.mvc app model-valida-excepxavazque2
 

Más de xavazque2 (20)

258939538 dumping
258939538 dumping258939538 dumping
258939538 dumping
 
380914324 poo-kotlin
380914324 poo-kotlin380914324 poo-kotlin
380914324 poo-kotlin
 
146817358 android
146817358 android146817358 android
146817358 android
 
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlinCurso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
 
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
 
325940441 motion-ui
325940441 motion-ui325940441 motion-ui
325940441 motion-ui
 
371081023 curso-desarrollo-android
371081023 curso-desarrollo-android371081023 curso-desarrollo-android
371081023 curso-desarrollo-android
 
4.1. validaciones-y-excepciones
4.1. validaciones-y-excepciones4.1. validaciones-y-excepciones
4.1. validaciones-y-excepciones
 
5.1. stateles stateful-protocolo_http
5.1. stateles stateful-protocolo_http5.1. stateles stateful-protocolo_http
5.1. stateles stateful-protocolo_http
 
435338801 programacion-mobile-android
435338801 programacion-mobile-android435338801 programacion-mobile-android
435338801 programacion-mobile-android
 
457126889 android-pdf
457126889 android-pdf457126889 android-pdf
457126889 android-pdf
 
266521557 apuntes-unidad-formativa-app-inventor
266521557 apuntes-unidad-formativa-app-inventor266521557 apuntes-unidad-formativa-app-inventor
266521557 apuntes-unidad-formativa-app-inventor
 
7. react js-1
7. react js-17. react js-1
7. react js-1
 
Tp1
Tp1Tp1
Tp1
 
484719815 pidiendo-ayuda-a-los-angeles-pdf
484719815 pidiendo-ayuda-a-los-angeles-pdf484719815 pidiendo-ayuda-a-los-angeles-pdf
484719815 pidiendo-ayuda-a-los-angeles-pdf
 
484717855 transmutacion-de-energias-pdf
484717855 transmutacion-de-energias-pdf484717855 transmutacion-de-energias-pdf
484717855 transmutacion-de-energias-pdf
 
5.layouts
5.layouts5.layouts
5.layouts
 
6.2. js
6.2. js6.2. js
6.2. js
 
411958729 curso-de-delphi-pdf
411958729 curso-de-delphi-pdf411958729 curso-de-delphi-pdf
411958729 curso-de-delphi-pdf
 
3.mvc app model-valida-excep
3.mvc app model-valida-excep3.mvc app model-valida-excep
3.mvc app model-valida-excep
 

Último

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Último (19)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

2.1. arena-y-binding

  • 2. Interfaces Desktop Multiplataforma 2 JVM JVM JVM Windows Linux Mac SWT Arena AWT Swing
  • 3. Interfaces Desktop Arena ▸ Framework para facilitar la construcción de interfaces Desktop desarrollado por Uqbar con fines educativos. ▸ Basado en SWT (Standard Widget Toolkit): conjunto de componentes para construir interfaces gráficas en Java, (widgets) desarrollados por el proyecto Eclipse. ▸ Link a Arena: http://arena.uqbar-project.org/index.html 3
  • 5. Interfaces Desktop Componentes ▸ TextBox - Input de texto ▸ Label - Etiqueta de texto ▸ Button ▸ Panels - Contenedor de componentes ▸ Windows y Dialogs ▸ Error Panel Ver documentación Arena: http://arena.uqbar-project.org/documentation/c omponents.html 5
  • 6. ▸ Window: es la clase abstracta para todas las ventanas ▸ MainWindow: es un tipo especial de ventana que se usa para aplicaciones simples o de una sola ventana ▸ SimpleWindow: ventana común que agrega el panel de errores ▸ Dialog: es una ventana final que depende de alguna de las anteriores y que debe generar una acción y cerrarse Ventanas y Diálogos 6
  • 7. Ejemplo - MainWindow 7 class LoginWindow : MainWindow<Login>(Login()) { override fun createContents(panel: Panel) { this.title = "Login del sistema" Label(panel).setText("Ingrese el usuario") TextBox(panel) Label(panel).setText("Ingrese el password") PasswordField(panel) Button(panel).setCaption("Autenticar") } } fun main() { LoginWindow().startApplication() }
  • 8. Windows - Dialogs 8 ▸ Pero las ventanas Window no pueden ser inicializadas desde un main()como sí sucede con MainWindow ▸ Es necesario otra estrategia de inicialización ▹ Hay que usar la clase Application ▹ Que se encarga de inicializar la aplicación y llamar a la Window que indiquemos como “inicial” ▹ Luego vamos a poder interactuar entre Windows y Dialogs libremente
  • 9. Application + SimpleWindows 9 class Main : Application() { override fun createMainWindow(): MainWindow { return MainWindow(this, User()) } } fun main() { Main().start() } class MainWindow : SimpleWindow<User>{ constructor (owner: WindowOwner, model: User ) : super(owner, model) override fun addActions(actionsPanel : Panel) { /* Actions Panel */ } override fun createFormPanel(mainPanel : Panel) { Label(mainPanel).setText("Prueba SimpleWindow") } }
  • 10. Application + Dialog 10 class FormWindow : SimpleWindow<User> { constructor (owner: WindowOwner, model: User) : super(owner, model) override fun createFormPanel(mainPanel: Panel) { Button(mainPanel).onClick(Action { AddNameDialog(this, this.modelObject).open() }) } } class AddNameDialog : Dialog<User> { constructor(owner: WindowOwner, model: User ) : super(owner, model) override fun createFormPanel(panel : Panel ) { Label(panel).setText("Dialog Example: ") Button(panel).setCaption("Aceptar").onClick(Action { this.close() }) } }
  • 11. Conceptos necesarios Eventos ▸ Cualquier suceso en el sistema ▸ Comunicación entre dos componentes ▸ Inversión de la relación de conocimiento ▸ Tanto la vista como el modelo, pueden producir eventos 11
  • 12. Conceptos necesarios Binding ▸ Vincular o enlazar propiedades del modelo con la UI. ▸ Relaciona dos propiedades manteniendolas sincronizadas ▸ El binding puede ser direccional o bidireccional ▸ Muchos framework proveen mecanismos de binding. 12
  • 13. En la UI podemos “bindear” una propiedad con el modelo de la siguiente forma: Label(panel).bindValueToPropertie<String, ControlBuilder>("user") En el modelo con el annotation @Observable class Login { var user: String = "" } Binding - Arena 13
  • 14. 14 @Observable class Login { var user: String = "" set(value) { resetAuth(); field = value } var password: String = "" set(value) { resetAuth(); field = value } var authenticated: Boolean = false var authenticatedColor: Color = Color.ORANGE fun authenticate() { authenticated = (user == "polo") && (password == "polo") authenticatedColor = if (authenticated) Color.GREEN else Color.ORANGE } private fun resetAuth() { authenticated = false authenticatedColor = Color.ORANGE } Modelo + Binding
  • 15. Windows + Binding 15 class LoginWindow : MainWindow<Login>(Login()) { override fun createContents(panel: Panel) { this.title = "Login del sistema" Label(panel).setText("Ingrese el usuario") TextBox(panel).bindValueToProperty<Int, ControlBuilder>("user") Label(panel).setText("Ingrese el password") PasswordField(panel).bindValueToProperty<Int, ControlBuilder>("password") Button(panel) .setCaption("Autenticar") .onClick { modelObject.authenticate() } val status = Label(panel) status.bindValueToProperty<Double, ControlBuilder>("authenticated") status.bindBackgroundToProperty<ControlBuilder, Any, Any>("authenticatedColor") } } fun main() { LoginWindow().startApplication() }