En artículos anteriores sobre WD se han comentado varias utilidades o elementos más o menos avanzados. En el siguiente tutorial quiero describir el proceso de algo tan básico en la programación WD como es la navegación entre vistas dentro de una misma ventana.
A los controladores de ventanas se les puede asignar varias vistas que van a formar parte de la aplicación. Para poder navegar entre ellas, se deben definir en las mismas Inbound y Outbound plugs y conectarlos mediante enlaces de navegación. Al generar los Outbound plugs en las vistas se crean automáticamente unos métodos (disparadores) para poder comenzar la navegación. Será el usuario el responsable de llamar a estos métodos para poder navegar, a través de acciones asociadas a eventos.
El siguiente gráfico explica el funcionamiento de la navegación:
A continuación se describe como se puede hacer una aplicación con la navegación que se muestra en el gráfico.
Lo primero de todo será crear un componente Web Dynpro. Al crear uno, normalmente se nos genera una vista por defecto con el nombre MAIN. A esta vista le añadiremos, en la pestaña de layout, un textView con el texto “Vista Main” y un botón con el texto “Cambiar Vista”.
Después, en la pestaña de Outbund Plugs crearemos uno para poder cambiar de vista. Simplemente hay que darle un nombre al plug para crearlo. Yo recomiendo que todos los Outbound plugs se nombren con el prefijo TO_ y el nombre de la vista a la que querremos navegar.
El último paso en esta vista será ejecutar el método disparador del plug. Para ello, creamos una acción en el botón, y en el pop-up que aparece, le damos un nombre a la acción y elegimos el plug que hemos creado.
Con este paso lo que conseguimos es que en el código de la acción se escriba la llamada al método disparador que se ha creado al definir el plug. Estos métodos siempre corresponden al controlador de la vista, y siempre se llaman fire_<nombre_plug>_plg. Por lo tanto, en este caso habrá la llamada resultaría:
wd_this->fire_to_vista2_plg( ).
A continuación, debemos crear la segunda vista. En esta vista añadiremos al layout un textView con el texto “Estamos en la Vista 2”. También habrá que definir un Inbound plug en la pestaña correspondiente. Al igual que los out, con darle un nombre el plug es creado. Recomiendo que estos se llamen FROM_ y el nombre de la vista de la que se viene.
Al crear un Inbound, se genera automáticamente un método handler. Este método será ejecutado por el runtime siempre que exista una navegación que entre por el Inbound plug correspondiente.
Ya tenemos las dos vistas creadas con sus correspondientes plugs. El último paso será crear el enlace de navegación. Este se debe hacer en la ventana de la aplicación. En la ventana creada por defecto ya está embebida la vista MAIN, así que deberemos añadir la nueva vista, mediante la opción “Incrustar Vista” del menú contextual.
Cuando se hayan introducido las vistas se debe realizar la conexión entre Inbound y Outbound plugs. Para ello, pulsando con el botón derecho en el Outbound Plug que se quiere relacionar, se elige la opción “Crear enlace de navegación”:
Después, se debe elegir con qué Inbound Plug de qué vista se quiere conectar el Outbound seleccionado y de esta manera ya quedará definida la navegación.
Con todo esto ya tenemos definida nuestra navegación entre vistas. Ya solo quedaría activar todo, crear una aplicación y probarla.
Esto serían los pasos para crear una navegación de una vista a otra. Si se quiere volver a la vista principal habría que repetir los pasos, tomando como vista de origen la vista 2. Es posible añadir tantos plugs como sean necesarios, e incrustar tantas vistas como se quieran en la ventana de la aplicación.