helyoWAP |
|
TUTORIAL
WML |
Autor: Helio Fonseca Rosa
Esta página contém muitas figuras. Aguarde a carga se a conexão estiver lenta.
Programa
Phone26.wml
Objetvo: Obter três telas básicas que configuram um contexto ou
atividade em três níveis; melhor dizendo, há um contexto externo
representado pelo card "Principal", um contexto intermediário
representado pelo card "Comprar" e um mais interno representado pelo
card "Confirmar", como na figura abaixo:
As telas desejadas são:
Comentários iniciais:
Falamos acima em contexto. Se você leu os programas comentados anteriores
já sabe que vamos tratar novamente dos elemento <spawn>, <receive>
e <send>,
que definem os contextos e estabelecem comunicação entre eles. Veja como
estes elementos vão
aparecer nos três cards (estaremos comentando também <throw> e <catch>):
<card
id="principal">
<do type="accept" label="Proxima">
<spawn href="#comprar">
............
<receive name="situacao"/>
.............
</spawn>
</do>
<card
id="comprar">
<do type="accept" label="Comprar" >
<spawn href="#confirmar"
onexit="?">
<receive name="situacao"/>
</spawn>
</do>
<card
id="confirmar">
<do type="accept" label="Sim">
<exit>
<send
value="Compra efetuada"/>
</exit>
</do>
<do type="options" label="Cancela">
<throw name="abortar">
<send
value="Compra cancelada"/>
</throw>
</do>
..........
Vamos tentar visualizar as
"comunicações".
Dentro do container <spawn> do <card id=" #principal">
ocorre um desvio para o <card id=" #compra">; O <receive>
do <card id="#principal"> recebe a mensagem "Compra
efetuada", enviada pelo card <card id="confirmar>, mais
interno; esta mensagem passa "de passagem" pelo card intermediário,
rumo ao principal.
Dentro do container <spawn> do <card id="comprar"> ocorre um desvio para o <card id="confirmar">.
Observe que o <spawn> do <card id="comprar"> tem um atributo onexit="?". Este atributo está vinculado ao container <exit> do <card id="confirmar> que "envolve" o primeiro <send>.
Neste mesmo card, o outro <send> está num container <throw> e a mensagem "Compra cancelada" segue para o nível mais externo em conexão direta com o <receive> que está no container <catch> que foi omitido acima para não assustar demais o leitor. Ei-lo:
<spawn href="#comprar">
<catch name="abortar" onthrow="#msg_cancela">
<receive name="situacao"/>
</catch>
</spawn>
A comunicação <throw>
--> <catch> tem ainda como sub-produto um desvio para um card ainda
não citado, a cargo do atributo Onthrow="#msg_cancela".
Este card produz a tela:
Finalmente, o código completo do phone26.wml:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="principal">
<do type="accept" label="Proxima">
<spawn href="#comprar">
<catch name="abortar" onthrow="#msg_cancela">
<receive name="situacao"/>
</catch>
</spawn>
</do>
<p align="center">
<b>** helyoMOBILE **</b><br/>
Bolsa de Valores<br/>
Situacao:
$(situacao)
</p>
</card>
<card id="comprar">
<do type="accept" label="Comprar" >
<spawn href="#confirmar" onexit="?">
<receive name="situacao"/>
</spawn>
</do>
<p align="center">
<b>** helyoMOBILE **</b><br/>
Ordem de compra: <br/><br/>
Acao: Petrobras<br/>
Quantidade: 1000<br/>
</p>
</card>
<card id="confirmar">
<do type="accept" label="Sim">
<exit>
<send value="Compra efetuada"/>
</exit>
</do>
<do type="options" label="Cancela">
<throw name="abortar">
<send value="Compra cancelada"/>
</throw>
</do>
<p align="center">
<b>** helyoMOBILE **</b><br/><br/>
Confirma compra?<br/>
</p>
</card>
<card id="msg_cancela">
<p>
<b>** helyoMOBILE **</b><br/><br/>
Esta compra foi cancelada. Pressione OK para prosseguir.
</p>
</card>
</wml>