helyoWAP

TUTORIAL WML
(17)
Programas comentados: phone26.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>

 

WirelessBRASIL                 Portal helyoWAP                    Anterior                    Próxima