A través de los servicios broker.ui.*
, se tiene acceso a funciones relacionadas con la interfaz de usuario y el control de navegación de los diferentes Layouts de la aplicación.
METODOS PUBLICOS
void broker.ui.push(String nombreLayout)
Hace visible el layout referenciado en nombreLayout
y lo añade a la pila de navegación actual. En la misma acción, se autogenera y se bindea el modelo correspondiente al configurado como datasource en el layout nombreLayout
. Este método sólo se puede utilizar con experiencias (no válido para Layout de tipo crossmenu
.
Argumentos |
|
nombreLayout |
String: Nombre del layout. |
Excepciones |
|
LayoutNotFound – Layout nombreLayout not found. |
Layout referenciado en nombreLayout no ha sido encontrado. |
InvalidUIAction – Error when trying to execute push action outside application navigation stack. |
Error tratando de ejecutar el método push fuera de la pila de navegación. |
void broker.ui.push(String nombreLayout, Model… dataSourceModel)
Hace visible el layout referenciado en nombreLayout
y lo añade a la pila de navegación actual. En la misma acción, los modelos pasados después del primer argumento, se bindean (asocian) a los datasources configurados en el layout. Para las experiencias siempre existe como máximo 1 dataSource a bindear.
En el caso de un Layout de tipo crossmenu
, los modelos argumentos a bindear en los dataSources son tantos como ítems tenga el menú. Es importante observar que en este tipo de Layout, todos los layouts referenciados dentro del crossmenu
deben tener un dataSource asociado
Argumentos |
|
nombreLayout |
String: Nombre del layout. |
dataSourceModel |
Model: Modelo asociado al primer dataSource configurado en el Layout. |
dataSourceModelN |
Model: Modelo n-ésimo asociado al dataSource n-ésimo configurado en el Layout. |
Excepciones |
|
LayoutNotFound – Layout nombreLayout not found. |
Layout referenciado en nombreLayout no ha sido encontrado. |
InvalidUIAction – Error when trying to execute push action outside application navigation stack. |
Error tratando de ejecutar el método push fuera de la pila de navegación. |
WrongNumberOfArgumentsInCall – Trying to navigate to layout nombreLayout with wrong number of datasources. |
Se trató de navegar al layout nombreLayout con un número incorrecto de datasources. |
void broker.ui.pop()
Termina la visualización del layout actual y lo elimina de la pila de navegación. Este método solo puede ser usado si anteriormente se añadió un layout usando el método push
.
Excepciones |
|
InvalidUIAction – Error when trying to execute pop action outside application navigation stack. |
Error tratando de ejecutar el método pop fuera de la pila de navegación. |
void broker.ui.present(String nombreLayout)
Hace visible el layout referenciado en nombreLayout
y lo añade a una nueva pila de navegación, en forma modal. En la misma acción, se autogenera y se bindea el modelo correspondiente al configurado como datasource en el layout nombreLayout
. Este método sólo se puede utilizar con experiencias (no válido para Layout de tipo crossmenu
.
Argumentos |
|
nombreLayout |
String: Nombre del layout. |
Excepciones |
|
LayoutNotFound – Layout nombreLayout not found. |
Layout referenciado en nombreLayout no ha sido encontrado. |
InvalidUIAction – Error when trying to execute push action outside application navigation stack. |
Error tratando de ejecutar el método push fuera de la pila de navegación. |
void broker.ui.present(String nombreLayout, Model… dataSourceModel)
Hace visible el layout referenciado en nombreLayout
y lo añade a una nueva pila de navegación, en forma modal. En la misma acción, los modelos pasados después del primer argumento, se bindean (asocian) a los datasources configurados en el layout. Para las experiencias siempre existe como máximo 1 dataSource a bindear.
En el caso de un Layout de tipo crossmenu
, los modelos argumentos a bindear en los dataSources son tantos como ítems tenga el menú. Es importante observar que en este tipo de Layout, todos los layouts referenciados dentro del crossmenu
deben tener un dataSource asociado.
Argumentos |
|
nombreLayout |
String: Nombre del layout. |
dataSourceModel |
Model: Modelo asociado al primer dataSource configurado en el Layout. |
dataSourceModelN |
Model: Modelo n-ésimo asociado al dataSource n-ésimo configurado en el Layout. |
Excepciones |
|
LayoutNotFound – Layout nombreLayout not found. |
Layout referenciado en nombreLayout no ha sido encontrado. |
InvalidUIAction – Error when trying to execute present action outside application navigation stack. |
Error tratando de ejecutar el método present fuera de la pila de navegación. |
WrongNumberOfArgumentsInCall – Trying to navigate to layout nombreLayout with wrong number of datasources. |
Se trató de navegar al layout nombreLayout con un número incorrecto de datasources. |
void broker.ui.dismiss()
Termina la visualización del layout actual y lo elimina de la pila de navegación. Este método es usado si anteriormente se añadió un layout usando el método present
.
Excepciones |
|
InvalidUIAction – Error when trying to execute dismiss action outside application navigation stack. |
Error tratando de ejecutar el método dismiss fuera de la pila de navegación. |
void broker.ui.setInitialExperience(String nombreLayout)
Hace visible el layout referenciado en nombreLayout reemplazando la pila de navegación actual por una nueva que contiene solo este layout. En la misma acción, se autogenera y se bindea el modelo correspondiente al configurado como datasource en el layout nombreLayout. Este método sólo se puede utilizar con experiencias (no válido para Layout de tipo crossmenu).
Argumentos |
|
nombreLayout |
String: Nombre del layout. |
Excepciones |
|
LayoutNotFound – Layout nombreLayout not found. |
Layout referenciado en nombreLayout no ha sido encontrado. |
InvalidUIAction – Error when trying to execute push action outside application navigation stack. |
Error tratando de ejecutar el método push fuera de la pila de navegación. |
void broker.ui.setInitialExperience(String nombreLayout, Model… dataSourceModel)
Hace visible el layout referenciado en nombreLayout reemplazando la pila de navegación actual por una nueva que contiene solo este layout. En la misma acción, los modelos pasados después del primer argumento, se bindean (asocian) a los datasources configurados en el layout. Para las experiencias siempre existe como máximo 1 dataSource a bindear.
En el caso de un Layout de tipo crossmenu, los modelos argumentos a bindear en los dataSources son tantos como ítems tenga el menú. Es importante observar que en este tipo de Layout, todos los layouts referenciados dentro del crossmenu deben tener un dataSource asociado.
Argumentos |
|
nombreLayout |
String: Nombre del layout. |
dataSourceModel |
Model: Modelo asociado al primer dataSource configurado en el Layout. |
dataSourceModelN |
Model: Modelo n-ésimo asociado al dataSource n-ésimo configurado en el Layout. |
Excepciones |
|
LayoutNotFound – Layout nombreLayout not found. |
Layout referenciado en nombreLayout no ha sido encontrado. |
InvalidUIAction – Error when trying to execute push action outside application navigation stack. |
Error tratando de ejecutar el método push fuera de la pila de navegación. |
WrongNumberOfArgumentsInCall – Trying to navigate to layout nombreLayout with wrong number of datasources. |
Se trató de navegar al layout nombreLayout con un número incorrecto de datasources. |
Model broker.ui.getDataSource()
Retorna el modelo bindeado al layout que esta siendo visualizado o null
si no encuentra ninguno.
Retorna |
|
Model |
Modelo bindeado al layout actual o null. |
void broker.ui.showAlert(String titulo, String descripcion)
Muestra un cuadro de diálogo con titulo y descripción.
Parametros |
|
titulo |
String: Título a mostrar en el cuadro de diálogo. |
descripcion |
String: Descripción a mostrar en el cuadro de diálogo. |
Excepciones |
|
InvalidUIAction – Error when trying to execute showAlert action outside application navigation stack. |
Error tratando de ejecutar el método showAlert fuera de la pila de navegación. |
Integer broker.ui.showAlert(String titulo, String descripcion, String textoBotonPositivo)
Muestra un cuadro de diálogo con titulo, descripción, y un boton con el texto ‘textoBotonPositivo’.
Parametros |
|
titulo |
String: Título a mostrar en el cuadro de diálogo. |
descripcion |
String: Descripción a mostrar en el cuadro de diálogo. |
textoBotonPositivo |
String: Texto a mostrar en el botón positivo. |
Retorna |
|
Integer |
Retorna siempre el valor 1, correspondiente al botón positivo. |
Excepciones |
|
InvalidUIAction – Error when trying to execute showAlert action outside application navigation stack. |
Error tratando de ejecutar el método showAlert fuera de la pila de navegación. |
Integer broker.ui.showAlert(String titulo, String descripcion, String textoBotonPositivo, String textoBotonNegativo)
Muestra un cuadro de diálogo con titulo, descripción, y botones con los textos ‘textoBotonPositivo’ y ‘textoBotonNegativo’.
Parametros |
|
titulo |
String: Título a mostrar en el cuadro de diálogo. |
descripcion |
String: Descripción a mostrar en el cuadro de diálogo. |
textoBotonPositivo |
String: Texto a mostrar en el botón positivo. |
textoBotonNegativo |
String: Texto a mostrar en el botón negativo. |
Retorna |
|
Integer |
Retorna 1 si se presionó el botón positivo, o -1 si se presionó el botón negativo . |
Excepciones |
|
InvalidUIAction – Error when trying to execute showAlert action outside application navigation stack. |
Error tratando de ejecutar el método showAlert fuera de la pila de navegación. |
Integer broker.ui.showAlert(String titulo, String descripcion, String textoBotonPositivo, String textoBotonNegativo, String textoBotonCancelar)
Muestra un cuadro de diálogo con titulo, descripción, y botones con los textos ‘textoBotonPositivo’, ‘textoBotonNegativo’ y ‘textoBotonCancelar’.
Parametros |
|
titulo |
String: Título a mostrar en el cuadro de diálogo. |
descripcion |
String: Descripción a mostrar en el cuadro de diálogo. |
textoBotonPositivo |
String: Texto a mostrar en el botón positivo. |
textoBotonNegativo |
String: Texto a mostrar en el botón negativo. |
textoBotonCancelar |
String: Texto a mostrar en el botón cancelar. |
Retorna |
|
Integer |
Retorna 1 si se presionó el botón positivo, -1 si se presionó el botón negativo, ó 0 si se presionó el botón cancelar . |
Excepciones |
|
InvalidUIAction – Error when trying to execute showAlert action outside application navigation stack. |
Error tratando de ejecutar el método showAlert fuera de la pila de navegación. |
void broker.ui.showLoading()
Muestra un indicador de actividad en la pantalla que esta siendo visualizada, atrapa eventos de toque por parte del usuario, impidiendo que se ejecute cualquier acción asociada a los mismos.
La llamada a este servicio broker debe estar balanceada con llamadas a broker.ui.hideLoading()
void broker.ui.hideLoading()
Oculta el indicador de actividad que esta siendo visualizado a causa de una llamada al servicio broker.ui.hideLoading().
Importante: Es responsabilidad del desarrollador mantener balanceadas las llamadas de broker.ui.showLoading() y broker.ui.hideLoading().
Ejemplo:
Experience Main {
String name label("Main name")
Decision rule1 action("MainContext.abrirPantalla") label("Abrir")
Decision rule2 action("MainContext.abrirPantallaModal") label("Abrir modal")
Decision rule3 action("MainContext.abrirMenu") label("Abrir menu")
Decision rule4 action("MainContext.mostrarDialogo") label("Mostrar cuadro de dialogo")
Decision rule5 action("MainContext.fetchDataAndStoreOnCloud") label("fetchDataAndStoreOnCloud")
}
Experience SegundaExperiencia {
Decision rule1 action("MainContext.cerrarPantalla") label("Cerrar")
Decision rule2 action("MainContext.cerrarPantallaModal") label("Cerrar modal")
}
Experience TerceraExperiencia {
String name label("Tercera name")
}
RuleContext MainContext {
Rule abrirPantalla {
//creamos una instancia de SegundaExperiencia
SegundaExperiencia segExp = SegundaExperiencia()
//levantamos esa experiencia con el metodo push
broker.ui.push("SegundaExperiencia", segExp)
//ó igualmente válido
broker.ui.push("SegundaExperiencia")
}
Rule abrirPantallaModal {
SegundaExperiencia segExp = SegundaExperiencia()
broker.ui.present("SegundaExperiencia", segExp)
}
Rule abrirMenu {
SegundaExperiencia segExp = SegundaExperiencia()
TerceraExperiencia terExp = TerceraExperiencia()
//levanta un crossmenu con dos items, correspondientes a dos experiencias
broker.ui.push("crossmenu", segExp, terExp)
}
Rule cerrarPantalla {
broker.ui.pop()
}
Rule cerrarPantallaModal {
broker.ui.dismiss()
}
Rule mostrarDialogo {
broker.ui.showAlert("Titulo", "Esta es la descripcion")
}
Rule fetchDataAndStoreOnCloud {
broker.ui.showLoading() //prevent user interacts with Experience and show an activity indicator
Array rspData = service.longFetch.call()
for rsp in rspData { //some processing with rsp
broker.cloudStorage.save(rsp)
}
broker.ui.hideLoading()
}
}