Tutorial ZK PDF
Tutorial ZK PDF
Tutorial ZK PDF
Diciembre
ZK Framework
Estuardo Garca
Este documento pretende embarcar al desarrollador a las aplicaciones RIA a travs
de ZK Framework, basado en ZK The Developers Guide de los mismos autores
del marco de trabajo, desde su instalacin y su uso ms bsico hasta aplicaciones
donde se utilicen patrones de diseo y desarrollo y uso de middleware como JDBC.
Para el uso de esta gua es necesario que el lector tenga los conceptos bsicos e
intermedios de programacin, conocimiento bsico de desarrollo de aplicaciones
WEB y de preferencia haber usado alguna distribucin de Eclipse y el lenguaje de
JAVA.
Guatemala, Guatemala
09
ZKFramework
Tabla de Contenidos
ZK Framework Tutorial .................................................................................3
Qu es ZK?................................................................................................3
Qu no es ZK?............................................................................................4
Manos a la obra! (Instalando lo que necesitamos) ................................................5
Obteniendo las herramientas...................................................................................... 6
ZK Studio ............................................................................................................. 7
Binarios ............................................................................................................... 9
ZKFramework 3
ZK Framework Tutorial
El siguiente documento va dirigido al lector interesado en construir aplicaciones Web
enriquecidas de manera fcil y rpida donde el uso de metodologas y cdigo AJAX sea
transparente y correctamente administrado por la plataforma ZK.
Para un mejor avance y captacin de la informacin que este documento provee, es
necesario que el lector tenga las siguientes habilidades y conocimientos:
HTML
Cascading Style Sheets (CSS)
Basic Programing
SQL (Structured Query Language)
Java
JDBC
Qu es ZK?
ZK es un Framework o marco de trabajo orientado a eventos y basado en componentes, que
hace posible interfaces Web enriquecidas para el usuario. Incluye un conjunto de
componentes XUL y XHTML y un lenguaje de etiquetas llamado ZUML (Zk User interface
Markup Language).
Con ZK, se puede representar una aplicacin con caractersticas enriquecidas por medio de
componentes XUL y XHTML los cuales se puede manipular a travs de los eventos disparados
por la actividad de los usuarios, similar a lo que se realiza en las aplicaciones de escritorio.
ZKFramework
Qu no es ZK?
ZK no contiene nada acerca de la persistencia o comunicacin entre servidores. ZK esta
diseada para ser un Framework lo ms liviano posible. Solamente esta enfocado en la capa
de presentacin. No requiere ni sugiere el uso de cualquier tecnologa back-end. Las
tecnologas middleware como lo es JDBC, Hibernate, Java Mail, EJB o JMS funcionan de la
manera tradicional.
ZKFramework 5
ZK no provee tnel, RMI ni ninguna otra API para la comunicacin entre clientes y
servidores. Es por esto que todo el cdigo se ejecuta en el servidor en la misma JVM.
ZK no obliga a los desarrolladores a usar MVC o algn otro patrn de diseo, el patrn que
se use es una decisin propia del desarrollador, por lo mismo es importante ser ordenados y
tener una disciplina para un fcil mantenimiento de la aplicacin.
ZK no apunta a traer XUL a las aplicaciones WEB. Se enfoca en traer el modelo de
aplicaciones de escritorio a las aplicaciones WEB. Actualmente, soporta XUL y XHTML pero
en el futuro podra soportar XAML y XQuery.
ZK empotra AJAX en la actual implementacin, pero no termina donde AJAX termina. Con
ZK API for Mobile Devices, las aplicaciones puede alcanzar cualquier dispositivo que soporte
J2ME tales como PDAs, telfonos mviles y juegos de consolas (incluyendo portables, en
dispositivos con pequeas pantallas la presentacin de las pginas son ajustadas). Para esto
no sera necesario modificar toda la aplicacin ya realizada.
ZK tampoco va orientado a la realizacin de aplicaciones que pretenden el uso complejo de
computo de lado de los clientes, tales como los juegos 3D.
Como notacin importante, el interprete de scripts dentro de ZUML estn basadas en los
siguientes motores:
ZKFramework
Si piensan trabajar en otros proyectos JEE ser mejor que descarguen la distribucin de 188
MB, actualmente la versin con la que trabajar este tutorial ser la que se mira en la
siguiente imagen:
ZKFramework 7
Adicionalmente al IDE es necesario que nos descarguemos Apache Tomcat en donde
estaremos publicando nuestras pginas. Para esto visiten el sitio de apache y descarguense
los binarios del contenedor de preferencia la versin 6. (http://tomcat.apache.org/)
ZK Studio
ZK Studio es la herramienta que junto con Eclipse nos permitir desarrollar nuestras pginas
web de manera sencilla. Podremos trabajar los archivos ZUML con herramientas WYSIWYG
proporcionada por los creadores de ZK Framework.
1. Lo primero que debemos hacer es, en Eclipse nos dirigimos al men Help Software
Updates
2. La opcin anterior abrir una ventana que nos permite agregar sitios de descarga de
plugins para su integracin con nuestro IDE. Luego de que nos aparezca la siguiente
ventana, demos clic en el botn Add Site bajo la pestaa o apartado Available
Software
ZKFramework
ZKFramework 9
Eclipse identifica lo que desea instalar aparecer otra ventana, en esta solamente
presionen el botn de finalizar para que instale y actualice el paquete.
Como sabremos si la instalacin fue satisfactoria? Bueno, en realidad es sencillo, basta
con reiniciar el IDE y veremos una nueva pestaa de bienvenida de ZK tal y como se
mira en la siguiente imagen.
Binarios
1. Por ltimo solo tenemos que descargarnos los binarios de ZK Framework y relacionarlo
con nuestros proyectos para empezar a trabajar. As que, lo siguiente es descargarnos
del sitio de ZK lo binarios, dirjanse a http://www.zkoss.org/download/zk.dsp y
descarguen el paquete de ZK 3.6.3, en otra oportunidad veremos ZK 5. Una vez nos
hayamos descargado el paquete, lo descomprimimos y el contenido lo ubicamos en
alguna ruta sencilla pues esta ruta la tenemos que buscar e ingresar en nuestro IDE.
2. Ahora en Eclipse nos dirigimos al men del IDE, la disposicin
de las opciones del men depender del SO que utilicen, por
ejemplo en Windows, dirjanse en el men Window
Preferences en mi caso, me dirijo al men Eclipse
Preferences
3. Bien en la ventana de
preferencias
del
IDE
buscamos en el rbol de
opciones la etiqueta ZK y
lo desplegamos para ver y
seleccionar ZK Packages.
10
ZKFramework
En la imagen anterior nos muestra la seccin ZK Packages, bsicamente lo que hay
que hacer es presionar el botn Add File/Directory y seleccionar el directorio donde
tengamos nuestros binarios de ZK Framework. Como ven ZK Studio nos permite tener
varias distribuciones del Framework para poder trabajar sin conflictos que pudieran
existir entre versiones (Aunque la verdad, yo no encontr ninguno) para el desarrollo y
distribucin a nuestro Web Server de preferencia.
Luego de agregado solo verificamos que este chequeada la versin que deseamos
utilizar y presionamos el botn Apply y luego OK. Ahora estamos listos para
empezar nuestros proyectos con ZK Framework.
ZKFramework 11
Iniciando en ZK Framework
Como ya es de costumbre para todos, siempre que emprendemos un viaje en alguna nueva
plataforma de desarrollo lenguaje lo primero que hacemos es el famoso Hola mundo!,
bien pues esta no ser la excepcin.
Para empezar, iniciemos Eclipse, el IDE nos
preguntar por nuestro Workspace y por orden
vamos a crear uno nuevo. A mi workspace de
nombre le pondr tutorial_zk_09, para los
que no han trabajado an con Eclipse o
similares esto no es ms que una carpeta de
donde quedar guardado nuestro cdigo fuente, binarios del mismo, libreras utilizadas y
configuraciones propias del IDE as como de la plataforma sobre la cual estamos trabajando.
Esto le permite a Eclipse generar y administrar de manera adecuada la distribucin de la
aplicacin que vamos a realizar.
12
ZKFramework
un mensaje indicando que error contiene el nombre. Al proyecto lo llamaremos
EjerciciosZK.
3. De regreso en la ventana de
Dinamic Web Project vemos bajo la
etiqueta de configuracin un botn
que dice Modify
ZKFramework 13
En esta nueva ventana que se abre (Project Facets) vamos a seleccionar los siguientes
tems que se ven en la siguiente imagen para que de esta manera poder trabajar
adecuadamente con el Framework.
Adicionalmente la seleccin de los tems se puede guardar, como vern en el combo box
con la etiqueta Configurations ya tiene uno que guarde con el nombre de ZK Project
Configuration esto con la idea de ahorrarme este paso cada vez que desee crear un
nuevo proyecto.
4. Por ltimo aceptamos la seleccin para la
configuracin del proyecto, regresamos a la
ventana inicial de Dinamic Web Project y
presionamos el botn de finalizar. Como resultado
veremos en la pestaa de Project Explorer las
secciones creadas en donde estar todo lo
relacionado a este proyecto. El ZK Studio crea el
archivo ZK.xml y modifica el archivo web.xml para
que el despliegue y funcionamiento de las pginas
sea el correcto.
14
ZKFramework
Hola Mundo!
Despus de haber instalado ZK, ZK Studio y configurado nuestro nuevo proyecto, es tiempo
de empezar a escribir nuestras aplicaciones. Para empezar solamente tenemos que crear un
archivo, que diga Hola Mundo!, este archivo debe ser creado bajo el directorio correcto y
seleccionado. Nosotros vamos a crear una nueva carpeta dentro de WebContent bajo el
nombre de GettingStarted.
Para aquellos que an se estn familiarizando con Eclipse, es sencillo, solamente en Project
Explorer seleccionen la carpeta llamada WebContent, clic derecho y seleccionen New
Folder del men emergente y asgnenle el nombre anteriormente dicho.
Ahora damos clic derecho sobre la carpeta
GettingStarted y el men emergente
seleccionamos New ZUL y en la caja
de texto con la etiqueta File Name
escribimos hola.zul y en Page Title
escribimos Hola.
Una vez lo hayamos escrito presionamos
finalizar y veremos que nos aparece ahora
el cdigo de nuestra nueva pgina la cul
vamos a cambiar inmediatamente. Hay que notar que en el cdigo de abajo hay un texto
que dice New Content Here! Pues bien vamos a cambiarlo por el texto que se mira en la
imagen que le sigue a la flecha.
ZKFramework 15
Bien, ahora iniciamos Tomcat, el archivo web.xml tiene las etiquetas necesarias para que el
proyecto pueda ser publicado en Tomcat, es decir, posiblemente el deployment no funcione
correctamente con un Gernimo por ejemplo.
En Eclipse vern la pestaa Servers damos clic izquierdo y una vez seleccionada en la
parte blanca del panel damos clic derecho y en el men emergente seleccionamos New
Server.
Aparecer una ventana como la siguiente:
Solamente verifiquen que el servidor sea Tomcat v6, dejen todo como esta y presionen el
botn Finish. Una vez hecho esto solo debemos iniciarlo, en algunos casos deberemos de
agregar algunos argumentos de inicio al servidor, como la memoria inicial asignada, pero
eso lo veremos cuando lo necesitemos.
Para iniciar solo basta con
seleccionar del listbox el servidor
nuevo que agregamos y dar clic en
la flechita verde
circulo verde.
dentro
del
16
ZKFramework
nuestra pgina es necesario que iniciemos nuestro webserver/contenedor, as que, en los siguientes ejercicios que se
realicen no explicaremos de nuevo como iniciar nuevamente Tomcat y asumiremos que el lector de manera
predeterminada lo har cada vez que vuelva a retomar el tutorial.
Una vez iniciado el contenedor vamos a desplegar o publicar nuestro proyecto, para esto
seleccionamos de nuevo nuestro servidor del listbox anterior y damos clic derecho, en el
men emergente seleccionamos Add and Remove Projects, veremos que en el list de
Available Projects esta EjerciciosZK, pues bien lo seleccionamos y presionamos el botn
Add > y luego finalizar.
Entonces, en su navegador de preferencia escribimos
http://localhost:8080/EjerciciosZK/GettingStarted/hola.zul (donde localhost puede ser tu
IP, el nombre de tu mquina o bien la direccin 127.0.0.1), y lo que veremos ser esto
En una pgina ZUML (*.zul), un elemento XML es el que describe que componente debe
crear. En este ejemplo, es una ventana, o sea la etiqueta window
(org.zkoss.zul.Window). Los atributos XML son usados para asignar los valores a las
propiedades de los componentes. En este ejemplo, Crea una ventana con un ttulo y con un
borde, el cual es realizado asigando a title y border las propiedades Hola y normal
respectivamente.
ZKFramework 17
Interaccin
Ahora debemos de poner un poco de interaccin con el usuario de nuestro ejercicio, vamos
a cambiar el texto que tenemos en nuestro archivo hola.zul por lo siguiente:
<?page title="Hola" contentType="text/html;charset=UTF-8"?>
<zk>
<window title="Hola" border="normal">
<button label="Di hola" onClick="alert("Hola Mundo")"/>
</window>
</zk>
18
ZKFramework
Por supuesto grabamos los cambios y nos dirigimos a nuestro explorador refrescamos la
pgina y damos clic en el botn y veremos lo siguiente:
Hay que notar que la ventana modal, bloqueo del contenido y funcionalidad del popup fue
realizado sin que hayamos tenido que realizar ningn tipo de programacin ni codificacin
JavaScript, el framework realiza estas tareas por nosotros manteniendo actualizado el DOM.
Notas:
Los scripts empotrados in una pgina ZUML pueden ser escritos en diferentes lenguajes,
incluyendo pero no limitndose a JAVA, JavaScript, Ruby y Groovy. Sobre todo los scripts se
ejecutan en el servidor y no del lado del cliente, an cuando sea JavaScript el lenguaje
seleccionado.
ZKFramework 19
ZK usa BeanShell para interpretar Java en tiempo de ejecucin, por lo tanto, se pueden declarar
funciones globales, tales como alert. Similarmente, todos los scripts (refirindose a los
lenguajes) proveen una manera simple de definir funciones globales y en algunos casos clases.
Las
clases
en
los
paquetes
java.lang,
java.util,
org.zkoss.zk.ui,
org.zkoss.zk.ui.event
org.zkoss.zul son importados antes de la evaluacin del cdigo del script empotrado en la pgina.
El Elemento zscript
El elemento zscript es un elemento especial que define los cdigos script que sern
evaluados cuando la pgina sea renderizada (asignar y calcular todas las propiedades de un
objeto antes de mostrarlo en pantalla). Las expresiones EL no pueden usarse en el cdigo
zscript.
Por ejemplo, el siguiente cdigo despliega diferentes mensaje cada vez que el botn es
presionado.
<window title="Hola" border="normal">
<button label="Di hola" onClick="diHola()"/>
<zscript>
int count = 0;
void diHola() {
alert("Hola Mundo! "+ ++count);
}
</zscript>
</window>
ZScript es evaluado solamente cuando una pgina es creada, usualmente es utilizado para
definir mtodos y variables iniciales. Como desarrollador estamos acostumbrados al syntax
highlighting, no es algo que no tengamos para los cdigos zscript, vasta con agregar
<![CDATA[ y ]]> al inicio y final de zscript respectivamente como se mira a continuacin.
<window title="Hola" border="normal">
<button label="Di hola" onClick="diHola()"/>
<zscript>
<![CDATA[
int count = 0;
void diHola() {
alert("Hola Mundo! "+ ++count);
}
]]>
</zscript>
</window>
20
ZKFramework
Lenguajes Script
Por defecto, el lenguaje que se asume para zscript es Java. Sin embargo, se pueden
seleccionar diferentes lenguajes especificandolo en el atributo language. El valor del
atributo language es case insensitive, o sea, no importa como lo escribamos en cuanto a
maysculas o minsculas.
<zscript language="javascript">
alert('Hola, con javascript');
new Label("Hola, JavaScript!").setParent(win);
</zscript>
Puedes tener en una misma pgina varios scripts con diferentes lenguajes.
Cdigo Scripts en archivos separados
Para separar los cdigos y vistas, los desarrolladores pueden dejar sus scripts en un archivo
separado digamos un diHola.zs y usar el atributo src para referirse al archivo zs.
<window id="win" title="Hola" border="normal">
<button label="Di hola" onClick="diHola()"/>
<zscript src="diHola.zs"/>
</window>
Elemento attribute
El elemento attribute es un elemento especial que define un atributo XML para los
elementos que lo encierran. Con un uso propio, puede hacer que la pgina sea ms
entendible (refirindonos al cdigo). Lo siguiente es equivalente a hola.zul que ya habamos
realizado.
<button label="Di hola">
<attribute name="onClick">alert("Hola Mundo!");</attribute>
ZKFramework 21
</button>
Como ven, attribute nos es til para poder ordenar nuestro cdigo, pues el atributo onClick
de button lo sacamos de la etiqueta y la alojamos como una etiqueta hija de button.
Expresiones EL
Igual que en JSP, podemos usar expresiones EL en cualquier parte de una pgina ZUML,
excepto en los nombres de los atributos y procesamiento de instrucciones. Recordemos que
una expresin EL usa la siguiente sintaxis ${expresin}.
Cuando una expresin EL es usada para el valor de un atributo, puede retornar cualquier
clase de objeto tanto como el objeto lo permita. Por ejemplo, en la siguiente expresin se
evala una expresin tipo Boolean.
<window if="${algo >10}" />
Los objetos implcitos usualmente usados en EL, talse como param y requestScope, y
objetos ZK implcitos, tales como, self y page son soportados para simplificar el uso.
<label value="${param.quien} hace ${param.que}" />
Para importar un mtodo, se puede usar una instruccin de procesamiento llamada xelmethod como la siguiente:
<?xel-method prefix="c" name="forName"
class="java.lang.Class"
signature="java.lang.Class forName(java.lang.String)"?>
<textbox value="${c:forName('java.util.List')}"/>
Atributo id
Para el acceso a componentes en cdigo Java y expresiones EL, se puede asignar un
identificador al mismo, para esto se usa el atributo id. En el siguiente ejemplo, se agrega
un identificador a la etiqueta, de tal manera que se pueda manipular su valor cuando un
botn es presionado.
<window id="win" title="Ejemplo" border="normal" width="200px">
Te gusta ZK? <label id="label"/>
<separator />
<button label="Yes" onClick="label.value = self.label"/>
<button label="No" onClick="label.value = self.label"/>
</window>
22
ZKFramework
Atributos if y unless
Los atributos if y unless son usados para controlar cuando un componente es creado o no.
En los siguientes ejemplos, las dos etiquetas son creadas solamente s el parmetro llamado
vote al evaluarse retorna ser verdadero.
<window border="normal" title="Ejemplo 2" width="200px">
<label value="Vote 1" if="${param.vote}" />
<label value="Vote 2" unless="${!param.vote}" />
</window>
Atributo forEach
La propiedad atributo forEach es usada para controlar cuantos componentes deseamos
crear. Si se especifica una coleccin de objetos con este atributo, ZK Loader crear un
componente para cada elemento o tem de la coleccin especfica. Por ejemplo, en la
siguiente pgina ZUML, el elemento listitem ser evaluado tres veces (Para lunes, martes y
mircoles) y se generar tres listados de tems.
<zscript>
<![CDATA[
String[] contacts = {"Lunes", "Martes", "Mircoles"};
]]>
</zscript>
<listbox width="100px">
<listitem label="${each}" forEach="${contacts}"/>
</listbox>
ZKFramework 23
Cuando se evala el elemento con el atributo forEach, la variable each es asignada uno a
uno a los objetos de la coleccin, para nuestro ejemplo contacts. Los siguientes bloques de
cdigo son equivalentes al cdigo de arriba.
<listbox width="100px">
<listitem label="${each}" forEach="Lunes, Martes, Miercoles"/>
</listbox>
<listbox width="100px">
<listitem label="Lunes" />
<listitem label="Martes" />
<listitem label="Mircoles" />
</listbox>
JAVA
import org.zkoss.zul.Window;
public class MyManager extends Window{
public void onCreate() {
//Mtodo de inicializacin
}
24
ZKFramework
Sin embargo, el ejemplo anterior requiere que se empotre algo de cdigo en la pgina
ZUML. La ventaja de empotrar cdigo en el GUI es el cambio dinmico del comportamiento
(particularmente en la fase de prototipo), pero cierto cdigo de mantenimiento y de
desempeo puede se lento a la hora de querer cambiarse. Ms adelante veremos un
ejemplo completo de cmo dividir nuestro cdigo y lgica de la aplicacin de la vista.
El Atributo use
Si se prefiere no usar ningn cdigo java en las pginas ZUML, se puede extender la
implementacin de manejador (handler) de eventos de un componente como se muestra en
la siguiente clase:
import org.zkoss.zul.Window;
public class MyWindow extends Window{
public void onCreate() {
//Mtodo de inicializacin
}
public void onOk() {
// Salvamos el resultado
}
public void onCancel() {
// Se cancela cualquier cambio
}
}
El Atributo Apply
Tambin si se prefiere el acercamiento MVC (Model View - Controller), por ejemplo, para
no empotrar cdigo en la ventana (refirindose a la vista de la aplicacin), se puede
ZKFramework 25
implementar una clase que inicialice la ventana. Esta clase debe de implementar la
interface org.zkoss.zk.ui.util.Composer.
package ejercicioszk.gettingStarted;
import org.zkoss.zul.Window;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.Composer;
public class MyManager implements Composer{
@Override
public void doAfterCompose(Component comp) throws Exception {
((Window) comp).setTitle("My Title");
//SE hace cualquier otra inicializacin que se desee
//Comp es una ventana, desde luego que nosotros lo especificamos ms adelante
}
}
Donde asumimos que tenemos tres event listeners, MyCreate, MyOk y MyCancel. Esto lo
veremos en la seccin de eventos y la explicacin de los event listeners (no creo que sea
adecuado la traduccin de event listeners).
Luego especificamos la clase en nuestra pgina ZUML con el atributo apply como se muestra
abajo.
<window title="Apply Attribute [Ejemplo]" apply="ejercicioszk.gettingStarted.MyManager">
Otra forma de separar el cdigo de la vista, podemos poner todos los cdigos zscript en un
archivo separado, digamos myZscriptCode.zs y de esta manera dentro del elemento zscript
lo llamamos con el atributo scr del elemento tal y como sigue.
<zscript scr="/zs/myZscriptCodes.zs"/>
26
ZKFramework
El Atributo forward
Una ventana usualmente consiste en muchos botones, mens y otros controles. Por
ejemplo:
<window border="normal" title="MiVentana">
<button label="OK" />
<button label="Cancel" />
</window>
Cuando un usuario presiona un botn, el evento onClick es disparado por el botn. Sin
embargo, estos eventos es mejor procesarlos en la ventana en lugar de hacerlo en cada
uno de los botnes. Para esto, se puede usar el atributo forward como sigue:
<window border="normal" title="MiVentana">
<button label="OK" forward="onOk"/>
<button label="Cancel" forward="onCancel"/>
</window>
Donde el atributo forward del botn OK que el evento onClick, si se recibe, debe de ser
enviado de regreso al dueo del espacio (owner space, en este caso el dueo es window,
que es el contenedor donde reside el botn) como el evento onOk. Similarmente, en el
evento onClick del botn Cancel, es regresado al owner space como evento onCancel.
Adicionalmente en nuestra clase Java MyWindow tendramos declarados los eventos
onOk() y onCancel() para que realice lo que deseamos hacer.
No solamente podemos enviar en el evento onClic de regreso al space owner, se puede
retornar cualquier evento a cualquier componente con el atributo forward.
ZKFramework 27
</window>
Con el ejemplo anterior, se pudo usar el mtodo setVisible y tener un efecto similar. Sin
embargo setVisible(false) no remueve el componente del navegador. Solo hace que el
componente y los componentes hijos no sean visibles.
Desde de que el componente es removido de la pgina, la memoria que ocupaba es
removida por el garbage collector del JVM si la aplicacin ya no hace referencia al mismo.
28
ZKFramework
Con ZK tenemos una manera muy sencilla de definir nuevos componentes para una pgina
en particular. Es muy util si los componentes del mismo tipo comparten un conjunto de
propiedades.
Primero, necesitamos usar la directiva component para definir el nuevo componente.
<?page title="Hola" contentType="text/html;charset=UTF-8"?>
<?component name="bluebutton" extends="button" style="border:1px solid blue" label="OK"?>
<zk>
<window id="win" title="Ejemplo" border="normal" width="200px">
<bluebutton />
<bluebutton label="Cancel"/>
</window>
</zk>
Lo equivalente a:
<button style="border:1px solid blue" label="OK"/>
<button style="border:1px solid blue" label="Cancel"/>
Adems, tambin podemos sobrescribir la definicin del componente button por ejemplo.
Por su puesto, esto no afectara a otras pginas que no tengan descrita la directiva.
<?page title="Hola" contentType="text/html;charset=UTF-8"?>
<?component name="button" extends="button" style="border:1px solid blue" label="OK"?>
<zk>
<window id="win" title="Ejemplo" border="normal" width="200px">
<button />
<button label="Cancel"/>
</window>
</zk>
ZKFramework 29
Desarrollando en ZK
Despus de haber visto los elementos y propiedades bsicas para empezar a desarrollar en
ZK podemos proseguir. De aqu en adelante veremos desde el layout de nuestra aplicacin
hasta la conexin con nuestra base de datos para crear registros, modificarlos, eliminarlos y
buscar entre las entidades (CRUD), ZK Studio tambin incluye un asistente o wizard para
realizar pginas ZUML CRUD con un modelo MVC, Zeta Form, pero nosotros aprenderemos a
realizarlos a realizarlos por nosotros mismos con nuestro propio layout y por ltimo
utilizaremos Zeta Form para ejemplificar. De esta forma cada desarrollador decidir si
desean o no utilizar el asistente.
Perspectiva ZK y ZK Studio
Cuando instalamos el Add On de ZK Studio, este agrega una perspectiva ms a nuestro IDE.
Una perspectiva en Eclipse y derivados, consiste en, un conjunto de ventanas, pestaas y
herramientas orientadas a cierto trabajo, es decir, es un conjunto de herramientas
distribuidas y visualizadas en el IDE para ayudarnos a trabajar (Para los que han trabajado
con IDEs de Embarcadero RAD Studio, Delphi, etc, es el equivalente al Layout de las barras
de herramientas donde queda guardada la configuracin y disposicin de las herramientas
que utilizamos) .
En la siguiente imagen tenemos la ventana donde nosotros seleccionamos la perspectiva con
la que deseamos trabajar, para llegar a la seleccin de perspectivas nos dirigimos al men
en Window Open perspective Others
La perspectiva de ZK pone a nuestra disposicin varias
herramientas para el diseo y realizacin de nuestras
pginas.
Entre las herramientas tenemos, ZUL Palette
(Contiene los distintos componentes que podemos
utilizar en nuestras pginas y permite Drag n Drop
entre ZUL Palette y nuestra pgina).
Otra herramienta es el ZUL Visual Editor, este es un
WYSIWYG, que nos permite visualizar en tiempo de
desarrollo como se vera la pgina en tiempo de
ejecucin.
30
ZKFramework