<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
   <title>Tutorial para criar uma IU SVG ativada por toque para dispositivos Java ME - NetBeans IDE</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
   <link rel="stylesheet" type="text/css" href="../../../netbeans.css">
   <meta name="Karol Harezlak" content="">
</head>
  <body>
  <a name="top"></a>
<h1>Criando uma IU SVG ativada por toque para dispositivos Java ME</h1>
 <p>Este tutorial mostra como desenvolver IUs ricas para dispositivos de tela por toque com base no Java ME usando widgets IU SVG. O r&aacute;pido crescimento do n&uacute;mero de dispositivos de tela por toque com base no Java ME, como o Samsung Omnia e Instinct, Nokia 5800 Xpress Music ou Blackberry Storm, torna esta leitura essencial para qualquer desenvolvedor s&eacute;rio de aplicativo m&oacute;vel. O aplicativo criado neste tutorial funciona na maioria dos dispositivos que suportam a API SVG para o J2ME (<a href="http://jcp.org/en/jsr/summary?id=226">JSR226</a>), j&aacute; que os dispositivos de tela por toque tamb&eacute;m oferecem suporte a ricos widgets IU SVG.</p> 
<!--<p class="notes"><b>Observa&ccedil;&atilde;o:</b> se voc&ecirc; estiver usando o NetBeans IDE 6.8, consulte o tutorial <a href="../../68/javame/svgtouch.html">Criando uma IU SVG habilitada para toque para dispositivos Java ME no NetBeans IDE 6.8</a>.</p>-->
 <h3>Conte&uacute;do</h3>
<img  src="../../../images_www/articles/69/netbeans-stamp-69-70-71.png" class="stamp" alt="O conte&uacute;do desta p&aacute;gina se aplica ao NetBeans IDE 6.9 ou posterior" title="O conte&uacute;do desta p&aacute;gina se aplica ao NetBeans IDE 6.9 ou posterior" >
<ul>
<li><a href="#reqs" title="Requisitos do Tutorial">Requisitos do Tutorial</a></li>
<li><a href="#setup" title="Configurando o ambiente do projeto">Configurando o ambiente do projeto</a></li>
<li><a href="#svgcomp" title="Criando a IU no SVG Composer">Criando a IU no SVG Composer</a>
<ul>
<li><a href="#backinfo" title="Informa&ccedil;&otilde;es b&aacute;sicas">Informa&ccedil;&otilde;es b&aacute;sicas</a></li>
<li><a href="#svgintro" title="Introdu&ccedil;&atilde;o aos widgets SVG e suas fun&ccedil;&otilde;es">Introdu&ccedil;&atilde;o aos widgets SVG e suas fun&ccedil;&otilde;es</a></li>
<li><a href="#svgui" title="Etapas para criar a IU SVG">Etapas para criar a IU SVG</a></li>
<li><a href="#createmidlet" title="Criando um MIDlet no Visual Mobile Designer">Criando um MIDlet no Visual Mobile Designer</a></li>
</ul></li>
<li><a href="#vmdflow" title="Usando o Visual Mobile Designer para criar um fluxo do aplicativo">Usando o Visual Mobile Designer para criar um fluxo do aplicativo</a></li>

<li><a href="#applogic" title="Adicionando a l&oacute;gica do aplicativo na IU">Adicionando a l&oacute;gica do aplicativo na IU</a>
<ul>
<li><a href="#background" title="Informa&ccedil;&otilde;es b&aacute;sicas">Informa&ccedil;&otilde;es b&aacute;sicas</a></li>
<li><a href="#creatingsvg" title="Criando um modelo SVGList personalizado">Criando um modelo SVGList personalizado</a></li>
<li><a href="#nextprevious" title="L&oacute;gica dos bot&otilde;es Avan&ccedil;ar e Voltar">L&oacute;gica dos bot&otilde;es Avan&ccedil;ar e Voltar</a></li>
</ul></li>
<li><a href="#uitest" title="Testando o aplicativo em um emulador de dispositivo de tela por toque">Testando o aplicativo em um emulador de dispositivo de tela por toque</a></li>
<li><a href="#summary" title="Resumo">Resumo</a></li>
<li><a href="#see-also">Consulte tamb&eacute;m</a></li>
</ul>
<h2><a name="reqs"></a>Requisitos</h2>
<p><b>Para concluir este tutorial, voc&ecirc; precisa dos seguintes recursos e softwares:</b></p>

<table>
        <tbody>
            <tr>
                <th class="tblheader" scope="col">Software ou recurso</th>
                <th class="tblheader" scope="col">Vers&atilde;o necess&aacute;ria</th>
            </tr> 
            <tr>
                <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE com Java ME</a></td>
                <td class="tbltd1">Vers&atilde;o 6.9 ou posterior</td>
            </tr>
            <tr>
                <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java Development Kit</a> (JDK)</td>
                <td class="tbltd1">Vers&atilde;o 6 ou 7 </td>
            </tr> 
             <tr>
                <td class="tbltd1"><a href="https://netbeans.org/projects/samples/downloads/download/Samples/Mobile/ContactBrowserExample.zip">Exemplo Contact Browser</a></td>
                <td class="tbltd1">Projeto NetBeans</td>
             </tr>
             <tr>
                <td class="tbltd1"><a href="https://netbeans.org/projects/www/downloads/download/mobility%252Forg-netbeans-modules-mobility-svg-snippets.nbm">Fragmentos de IU SVG</a></td>
                <td class="tbltd1">Plug-in NetBeans</td>
            </tr> 
                 
        </tbody>
</table>

          
<p class="notes">Para assegurar-se de que os recursos Java ME estejam habilitados, recomendamos executar uma instala&ccedil;&atilde;o personalizada e desmarcar Recursos sob demanda durante a instala&ccedil;&atilde;o do IDE.</p>
      

<h2><a name="setup"></a>Configurando o ambiente do projeto</h2>

                      <p> Al&eacute;m do software requerido listado acima, voc&ecirc; deveria ter o seguinte instalado em seu computador:</p>

                      <ul>
                        <li>O arquivo <code>ContactBrowser.zip</code> deveria ser descompactado na sua pasta de projetos NetBeans.</li>
                        <li>O plug-in dos fragmentos SVG deveria ser baixado e instalado no NetBeans:
                        <ol>
                        <li>No IDE, v&aacute; para Ferramentas &gt; Plug-ins. Clique na aba Download e clique em Adicionar plug-in.</li>
                        <li>V&aacute; at&eacute; a pasta local que cont&eacute;m o arquivo <tt>svg-snippets.nbm</tt>, selecione o arquivo e clique em Instalar.</li> 
                        </ol></li>
                      <li>Clique em Instalar e o IDE o guiar&aacute; atrav&eacute;s da instala&ccedil;&atilde;o do plug-in. Ap&oacute;s o plug-in ser instalado, &eacute; preciso reiniciar o IDE. </li>
                      <li>Ap&oacute;s reiniciar o IDE, v&aacute; para Ferramentas &gt; Op&ccedil;&otilde;es. Clique em Diversos na janela da caixa de di&aacute;logo Op&ccedil;&otilde;es e, a seguir, clique na aba SVG.</li>
                      <li>Na se&ccedil;&atilde;o Fragmentos de componentes SVG ricos abra o menu suspenso Fragmentos e escolha <strong>Fragmentos SVG J1 HOL</strong>. Clique em OK.
                       <p class="align-center"><a href="../../../images_www/articles/71/mobility/svgtouch/ex0_3.png" rel="lytebox"
                       title="Caixa de di&aacute;logo de op&ccedil;&otilde;es"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex0_3-small.png"
                     alt="Caixa de di&aacute;logo de op&ccedil;&otilde;es" border=1></a></p>
                      </li>
                      </ul>
<p class="align-center"><a href="#top">in&iacute;cio</a></p>                      
<h2><a name="svgcomp"></a>Criando a IU no SVG Composer</h2>
      <p> Construiremos uma IU de aplicativo b&aacute;sico com base em SVG. Apesar do aplicativo ser bem simples, ele mostrar&aacute; como criar um novo aplicativo JavaME, como importar imagens SVG do SVG Composer para um MIDlet visual, e como executar o projeto em um emulador de dispositivo MIDP.</p>
 <a name="backinfo"></a>
  <h3>Informa&ccedil;&otilde;es b&aacute;sicas</h3>

      <p><strong>SVG:</strong> o JSR-226 especifica a API para a renderiza&ccedil;&atilde;o de gr&aacute;ficos de vetor bidimensionais em XML. Ao inv&eacute;s de codificar o conte&uacute;do de cada pixel, como os formatos GIF e JPG, os gr&aacute;ficos de vetor cont&ecirc;m somente as instru&ccedil;&otilde;es de desenho para cada pixel. Isso oferece diversas vantagens &agrave;s imagens de vetor: </p>
      <ul>
        <li>S&atilde;o <strong>dimension&aacute;veis</strong>, portanto, a qualidade da imagem permanece a mesma em diferentes tamanhos e resolu&ccedil;&otilde;es. Tamb&eacute;m &eacute; poss&iacute;vel alongar, inverter ou reverter uma imagem sem perder a qualidade.</li>
        <li>Oferecem suporte a <strong>scripts e anima&ccedil;&otilde;es, </strong>portanto, s&atilde;o ideais para gr&aacute;ficos interativos conduzidos por dados.</li>
        <li>S&atilde;o<strong> compactas</strong>. As imagens com base em vetores podem ser at&eacute; dez vezes menores do que uma imagem id&ecirc;ntica no formato GIF ou JPEG. Esta importante vantagem torna poss&iacute;vel criar aplicativos graficamente ricos para dispositivos port&aacute;teis com recursos limitados. </li>
        <li>Tamb&eacute;m permitem que os usu&aacute;rios <strong>possam interagir</strong> com o conte&uacute;do da imagem.</li>
        <li>S&atilde;o <strong>pesquis&aacute;veis</strong>, permitindo que os usu&aacute;rios pesquisem por texto dentro da imagem. Por exemplo, os usu&aacute;rios podem pesquisar um mapa para encontrar nomes de ruas espec&iacute;ficos ou pesquisar uma lista de menus de restaurantes para encontrar seu prato favorito.</li>
      </ul>
      <p>Um subconjunto SVG com recursos completos destinado a dispositivos m&oacute;veis &eacute; denominado SVG-Tiny e o JSR-226 adota a vers&atilde;o 1.1 do perfil SVG-Tiny como o formato de arquivo oficial para gr&aacute;ficos de vetores J2ME. 
      </p>
 <a name="svgintro"></a>
      <h3>Introdu&ccedil;&atilde;o aos widgets SVG e suas fun&ccedil;&otilde;es</h3>
      <p>A cria&ccedil;&atilde;o de interfaces de usu&aacute;rio fica mais f&aacute;cil ao usar o SVG Composer e os Componentes de IU no formato SVG ricos no NetBeans. </p>
          <p>Vis&atilde;o geral dos fragmentos de IU SVG dispon&iacute;veis na paleta do SVG Composer:</p>       
          <ul>
              <li>Lista SVG - Permite ao desenvolvedor criar uma lista de elementos da IU necess&aacute;rios para a IU.</li>
              <li>Bot&atilde;o SVG - Nos fragmentos SVG, permite ao usu&aacute;rio selecionar o sexo.</li>
              <li>Caixa de combina&ccedil;&atilde;o SVG - Componente da IU para menus de lista suspensa. </li>
              <li>Texto SVG - Um campo no qual &eacute; poss&iacute;vel exibir textos como nomes de pessoas, IDs de produto etc. </li>
              <li>Bot&atilde;o SVG - Os bot&otilde;es s&atilde;o usados para fun&ccedil;&otilde;es de Avan&ccedil;ar, Voltar, OK e outras fun&ccedil;&otilde;es da IU.</li>
              <li>Girador SVG - Permite o usu&aacute;rio navegar atrav&eacute;s de uma vari&aacute;vel usando o bot&atilde;o Acima ou Abaixo.</li>
              <li>Deslizador SVG - Permite ao usu&aacute;rio ajustar um recurso de vari&aacute;vel. Por exemplo, de claro para escuro ou 0-100%.</li>
              <li>Legenda SVG - Permite que o usu&aacute;rio legende um campo de texto ou outro componente da IU.</li>
        </ul>
          <p class="align-center"> <a href="../../../images_www/articles/71/mobility/svgtouch/ex1_2.png" rel="lytebox"
                       title="Fragmentos de IU SVG dispon&iacute;veis na paleta do SVG Composer"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex1_2-small.png"
                     alt="Fragmentos de IU SVG dispon&iacute;veis na paleta do SVG Composer" border=1></a></p>
  
   <p>Isso foi somente uma introdu&ccedil;&atilde;o r&aacute;pida aos componentes de IU SVG ricos. Para obter mais detalhes, consulte a p&aacute;gina <a href="http://wiki.netbeans.org/MobilityDesignerRichComponents">wiki do Visual Mobile Designer do NetBeans</a>.</p>

       <a name="svgui"></a>
	  <h3>Etapas para criar a IU SVG</h3>
  <p> Para iniciar rapidamente vamos come&ccedil;ar por abrir o projeto ContactBrowser preparado que usaremos como base para criar o projeto. </p>
    <ol>
    <li>Abra o projeto Java ME ContactBrowser preparado no NetBeans IDE.
          <p>Vis&atilde;o geral do projeto ContactBrowser</p>
          <p class="align-center"><img src="../../../images_www/articles/71/mobility/svgtouch/ex2_2.png"></p></li>
        <li>Abra a imagem <code>employeeList.svg</code> no SVG Composer e arraste e solte dois bot&otilde;es SVG e um Componente de formul&aacute;rio de lista SVG na tela Visualizar da paleta, como ilustrado abaixo. Renomearemos os bot&otilde;es no tutorial posteriormente.
       <p>Abaixo est&aacute; o formul&aacute;rio completo com os seguintes componentes adicionados:</p>
        <ul>
          <li>2 x bot&otilde;es</li>
          <li>1 x lista</li>
        </ul>
     

        <p class="align-center">
		<a href="../../../images_www/articles/71/mobility/svgtouch/ex2_3.png" rel="lytebox"
                       title="Formul&aacute;rio com dois bot&otilde;es e uma lista"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_3-small.png"
                     alt="Formul&aacute;rio com dois bot&otilde;es e uma lista" border=1></a>
		</p></li>
<li>Na janela Visualizar, clique no bot&atilde;o OK do texto no canto superior esquerdo e arraste-o para esquerda, conforme ilustrado na captura de tela abaixo. Isso permitir&aacute; que a palavra &quot;Selecionar&quot; seja corretamente exibida no bot&atilde;o da IU.
 <p class="align-center">
 <a href="../../../images_www/articles/71/mobility/svgtouch/ex2_4b.png" rel="lytebox"
                       title="Formul&aacute;rio com dois bot&otilde;es e uma lista"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_4b-small.png"
                     alt="Formul&aacute;rio com dois bot&otilde;es e uma lista" border=1></a></p></li>

       <li>Nossa IU SVG precisa de um arquivo SVG adicional, <code>employeeForm.svg</code>, portanto, novamente abrimos o arquivo e adicionamos bot&otilde;es, campos de texto, legendas e bot&otilde;es da paleta na imagem no SVG Composer e renomeamos os mesmos para criar a IU. Quando terminada, deveria ser semelhante &agrave; imagem abaixo.
      <ul>
        <li>Componentes adicionados
        <ul>
          <li>3 x bot&otilde;es</li>
          <li>4 x legendas</li>
          <li>2 x campos de texto</li>
          <li>1 x bot&atilde;o</li>
          <li>1 x girador</li>
        </ul></li>
      </ul>

        <p class="align-center">
		<a href="../../../images_www/articles/71/mobility/svgtouch/ex2_4.png" rel="lytebox"
                       title="Componentes SVG adicionados"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_4-small.png"
                     alt="Componentes SVG adicionados" border=1></a>
		
		</p></li>

 <li>Na janela Visualizar, clique no texto do bot&atilde;o OK no canto inferior esquerdo e arraste-o para esquerda, como ilustrado na captura de tela abaixo. Isso permitir&aacute; que a palavra &quot;Voltar&quot; seja corretamente exibida no bot&atilde;o da IU.
 <p class="align-center">
 <a href="../../../images_www/articles/71/mobility/svgtouch/ex2_4a.png" rel="lytebox"
                       title="Texto no bot&atilde;o OK arrastado para a esquerda"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_4a-small.png"
                     alt="Texto no bot&atilde;o OK arrastado para a esquerda" border=1></a>
 </p></li>
  </ol>

<a name="createmidlet"></a>
<h3>Criando um MIDlet no Visual Mobile Designer</h3>
  
<p>O framework de componentes IU SVG ricos &eacute; dividido em duas partes:</p> 
<ul>
<li>Os fragmentos SVG s&atilde;o usados para construir a IU no SVG Composer ou em outro editor SVG.</li>
<li>As bibliotecas Java ME que suportam a funcionalidade de IU</li>
</ul>
<p>J&aacute; examinamos o SVG Composer e fragmentos, portanto, nosso pr&oacute;ximo passo &eacute; o de examinar as bibliotecas de tempo de execu&ccedil;&atilde;o no Visual Mobile Designer, que permitem mesclar as imagens SVG com a l&oacute;gica do aplicativo no c&oacute;digo-fonte Java ME.</p>

  <ol>
    <li>Para criar um novo MIDlet visual, selecione <tt>Arquivo</tt> &gt; <tt>Novo arquivo</tt> e a seguir, na caixa de di&aacute;logo Novo arquivo, em Categorias, selecione MIDP e em Tipos de arquivos escolha Visual MIDlet. O novo arquivo deve ser parte do pacote <tt>org.netbeans.lab.ui.svg</tt>.           
          <p class="align-center">
		   <a href="../../../images_www/articles/71/mobility/svgtouch/ex2_5.png" rel="lytebox"
                       title="Caixa de di&aacute;logo Novo Arquivo"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_5-small.png"
                     alt="Caixa de di&aacute;logo Novo Arquivo" border=1></a>
		  
		  </p>
    </li>

        <li>Dentro do MIDlet rec&eacute;m-criado alterne para a visualiza&ccedil;&atilde;o Fluxo. Encontre a se&ccedil;&atilde;o Componentes SVG da paleta e, a seguir, arraste e solte os componentes do Formul&aacute;rio SVG para a tela de desenho da visualiza&ccedil;&atilde;o Fluxo e use o menu contextual exibido ao clicar com o bot&atilde;o direito do mouse para renome&aacute;-los como <code>employeeForm</code> e </code>employeeList<code>.
          
          <p class="align-center"><a href="../../../images_www/articles/71/mobility/svgtouch/ex2_6.png" rel="lytebox"
                       title="Dois formul&aacute;rios SVG adicionados"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_6-small.png"
                     alt="Dois formul&aacute;rios SVG adicionados" border=1></a></p>
        </li>
        
        <li>A pr&oacute;xima etapa &eacute; a de conectar as imagens SVG ao c&oacute;digo-fonte. Para conectar os componentes da IU SVG ao c&oacute;digo-fonte, basta arrastar e soltar o arquivo <code>employeeList.svg</code> da janela Projeto para o componente </code>employeeList<code> e repetir esta a&ccedil;&atilde;o para o </code>employeeForm.svg<code> ao arrast&aacute;-lo para o <code>employeeForm</code>.
          
          <p class="align-center"><a href="../../../images_www/articles/71/mobility/svgtouch/ex2_8.png" rel="lytebox"
                       title="Componentes UI SVG conectados ao c&oacute;digo-fonte"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_8-small.png"
                     alt="Componentes UI SVG conectados ao c&oacute;digo-fonte" border=1></a></p>
        </li>
        
        <li>Agora temos que alterar a inst&acirc;ncia do <code>svgButtons</code> para que coincidam com as a&ccedil;&otilde;es que eles executam. Observe que isto n&atilde;o altera o bot&atilde;o IU. Faremos isso mais tarde. Para alterar o nome da inst&acirc;ncia do <code>svgButtons</code>, clique com o bot&atilde;o direito do mouse no bot&atilde;o e selecione renomear a partir do menu contextual. Digite o nome da a&ccedil;&atilde;o que deseja para a inst&acirc;ncia do <code>svgButtons</code> no campo Novo nome da caixa de di&aacute;logo Renomear nome da inst&acirc;ncia.
           <p class="notes"><b>Dica</b>: certifique-se de que o novo nome corresponda &agrave; fun&ccedil;&atilde;o do bot&atilde;o IU ao alterar os nomes de inst&acirc;ncias de componentes da IU.</p>
           <p class="align-center">
		  <a href="../../../images_www/articles/71/mobility/svgtouch/ex2_9.png" rel="lytebox"
                       title="Nomes das inst&acirc;ncias do svgButtons alterados"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_9-small.png"
                     alt="Nomes das inst&acirc;ncias do svgButtons alterados" border=1></a>
		  </p>
        </li>
         <li>Na pr&oacute;xima etapa alteraremos as legendas SVG padr&atilde;o dos bot&otilde;es e campos de texto para que correspondam com as informa&ccedil;&otilde;es exibidas pelo aplicativo <strong>ContactBrowser</strong>. Para isso, alterne para a visualiza&ccedil;&atilde;o Tela e exiba <code>employeeForm</code>. A seguir, selecione o item Legenda na visualiza&ccedil;&atilde;o Tela e edite as propriedades de texto de cada legenda e bot&atilde;o para que se pare&ccedil;am com a captura de tela abaixo.
          <p class="align-center">
		   <a href="../../../images_www/articles/71/mobility/svgtouch/ex2_11.png" rel="lytebox"
                       title="Propriedades do texto para os r&oacute;tulos e bot&otilde;es alteradas"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_11-small.png"
                     alt="Propriedades do texto para os r&oacute;tulos e bot&otilde;es alteradas" border=1></a>
		  
		  </p>  </li>
        <li>Tamb&eacute;m precisamos alterar o nome da inst&acirc;ncia dos campos de texto SVG. Clique com o bot&atilde;o direito do mouse em Nome e escolha Renomear a partir do menu contextual e altere o nome para <code>svgTextFieldFirstName</code>. Repita esta etapa para o campo Sobrenome e renomei-o como <code>svgTextFieldLastName</code>.</li>
		
        <li>Agora no menu suspenso da janela do projeto IDE, alterne de <strong>employeeForm</strong> para <strong>employeeList</strong> e renomeie os bot&otilde;es conforme ilustrado na captura de tela abaixo. Voc&ecirc; ver&aacute; as altera&ccedil;&otilde;es no campo texto da janela Propriedades.
        <p class="align-center">
		<a href="../../../images_www/articles/71/mobility/svgtouch/ex2_11a.png" rel="lytebox"
                       title="Propriedade do texto dos bot&otilde;es alterada"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_11a-small.png"
                     alt="Propriedade do texto dos bot&otilde;es alterada" border=1></a>
		
		</p> </li> 
  </ol>
<p class="align-center"><a href="#top">in&iacute;cio</a></p>
 <h2><a name="vmdflow"></a>Usando o Visual Mobile Designer para criar o fluxo do aplicativo</h2>
  <p>Agora estamos prontos para criar o fluxo do aplicativo usando a visualiza&ccedil;&atilde;o Fluxo do Visual Mobile Designer. </p>
        <ol>
        <li>Alterne da visualiza&ccedil;&atilde;o Tela para Fluxo no IDE.</li>
        <li>Conecte os componentes conforme ilustrado abaixo. Comece por clicar em Iniciado no elemento <strong>Dispositivo m&oacute;vel</strong> e arraste o mouse para o elemento <strong>employeeList</strong>. Repita este m&eacute;todo para fazer as conex&otilde;es dos outros componentes.
                  <p class="align-center">
				  <a href="../../../images_www/articles/71/mobility/svgtouch/ex2_12.png" rel="lytebox"
                       title="Fluxo de aplicativo criado"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex2_12-small.png"
                     alt="Fluxo de aplicativo criado" border=1></a>
				  </p>
        </li>
        </ol>
  <p>Na visualiza&ccedil;&atilde;o C&oacute;digo-fonte voc&ecirc; poder&aacute; ver o mecanismo que vincula os fragmentos do Componente da IU SVG XML com as bibliotecas de tempo de execu&ccedil;&atilde;o do Java ME. No exemplo abaixo voc&ecirc; pode ver como os fragmentos do Bot&atilde;o SVG s&atilde;o vinculados com objetos Java ME. O Componente SVG &eacute; reconhecido com base na ID do fragmento XML que, neste exemplo, &eacute; <code>button_0</code>.</p>
      <p class="align-center"><img src="../../../images_www/articles/71/mobility/svgtouch/ex2_14.png"></p>
      
      <h3>Executando o aplicativo</h3>
      <p>Antes de adicionar a l&oacute;gica do aplicativo, devemos testar a IU Contact Browser no emulador.</p>

<p>No menu, escolha Executar projeto principal (F6) e, ap&oacute;s o emulador ser iniciado, voc&ecirc; poder&aacute; ver e testar sua IU. N&oacute;s ainda n&atilde;o implementamos a l&oacute;gica do aplicativo, mas voc&ecirc; pode verificar se a IU &eacute; exibida como esperado com base no trabalho feito no Visual Mobile Designer.</p>
  

  <p class="align-center"><a href="#top">in&iacute;cio</a></p>      
  <h2><a name="applogic"></a>Adicionando a l&oacute;gica do aplicativo &agrave; interface de usu&aacute;rio SVG</h2>

  <p>Agora podemos usar o Visual Mobile Designer para criar a l&oacute;gica do aplicativo para a IU que criamos na etapa anterior. Usaremos alguns componentes e m&eacute;todos adicionais e finalizaremos ao executar o aplicativo no emulador Java ME SDK 3.0.</p>
  <a name="background"></a>
  <h3>Informa&ccedil;&otilde;es b&aacute;sicas</h3>
<ul>
<li><strong>SVG ListModel</strong>: define os componentes do m&eacute;todo como o que o SVGList usa para obter o valor de cada c&eacute;lula em uma lista e para calcular o n&uacute;mero de c&eacute;lulas necess&aacute;rias para o exibir. Logicamente, o modelo &eacute; um vetor. Os &iacute;ndices variam de <tt>0</tt> a <tt>ListDataModel.getSize() - 1</tt>. Qualquer altera&ccedil;&atilde;o no conte&uacute;do do comprimento dos dados precisa ser reportada para todos os SVGListDataListeners. Se j&aacute; estiver familiarizado com o modelo JList do Swing, o SVGListModel deveria ser f&aacute;cil de ser entendido.</li>
<li><strong>Componente do ponto de entrada</strong>: o componente do ponto de entrada nos permite representar um m&eacute;todo em uma classe projetada. Este m&eacute;todo cont&eacute;m o c&oacute;digo especificado por uma a&ccedil;&atilde;o atribu&iacute;da a ele, o pino &quot;Entrada chamada&quot;. Este m&eacute;todo &eacute; muito &uacute;til quando for necess&aacute;rio executar o c&oacute;digo ao alternar entre telas do aplicativo ou, em nosso caso, para mostrar a l&oacute;gica do SVGButton na visualiza&ccedil;&atilde;o Fluxo de um Visual Midlet.</li>
</ul>  
<a name="creatingsvg"></a>
<h3>Criando um modelo SVGList personalizado</h3>
<p> Nesta etapa criaremos nossa pr&oacute;pria implementa&ccedil;&atilde;o do SVGListModel. Nossa implementa&ccedil;&atilde;o do SVGListModel &eacute; uma classe an&ocirc;nima dentro do m&eacute;todo <code>getSvgList</code>.</p>
      <ol>
         <li> Use o Navegador (Ctrl+7 se j&aacute; n&atilde;o estiver exibido) para encontrar o elemento <code>getSvgList</code> dentro do elemento <code>employeeList</code> ao clicar com o bot&atilde;o direito do mouse e escolher Ir para o c&oacute;digo-fonte a partir do menu contextual.</li>
         <li>Dentro do m&eacute;todo <code>getSVGList</code> adicione o seguinte c&oacute;digo ap&oacute;s <code>svgList = new SVGList(getEmployeeList(), &quot;list_0&quot;);</code>:<br>
		 <pre class="examplecode">
		    //Criando e adicionando novo SVListModel com classe an&ocirc;nima. Implementation of ListModel
            svgList.setModel(new SVGList.ListModel() {
                //Getting contact data as Vector from class EmployeeData
                Vector data = EmployeeData.getData();  
                                
                /**
                 * Method returns combination of strings: First Name + Last Name
                 * @return Employee name as String
                 */
                public Object getElementAt(int index) {
                    //Getting First Name String
                    String firstName = ((Employee) data.elementAt(index)).getFirstName();
                    //Getting Last Name String
                    String lastName = ((Employee) data.elementAt(index)).getLastName();
                    
                    return firstName + &quot; &quot; + lastName;
                }
                 /**
                 * Number of employees
                 * @return number of employees
                 */
                public int getSize() {
                    return data.size();
                }
                //not used
                public void addDataListener(DataListener listener) { }               
                
                //not used
                public void removeDataListener(DataListener listener) { }                          
            });</pre></li>
  </ol>
      <p class="notes"><b>Nota:</b> Voc&ecirc; pode usar o recurso de conclus&atilde;o de c&oacute;digo no IDE e digitar voc&ecirc; mesmo o c&oacute;digo.</p>
      
<a name="nextprevious"></a>
<h3>L&oacute;gica dos bot&otilde;es Avan&ccedil;ar e Voltar</h3> 
      <p>Nesta etapa adicionaremos a l&oacute;gica aos SVGButtons que fazem parte do <code>employeeForm</code>. Estes bot&otilde;es permitem que os usu&aacute;rios do aplicativo naveguem atrav&eacute;s dos dados do funcion&aacute;rio. Ao clicar em Avan&ccedil;ar, o usu&aacute;rio pode ir para o pr&oacute;ximo Contato do funcion&aacute;rio. Ao pressionar o bot&atilde;o Voltar, o usu&aacute;rio dever&aacute; ver o registro do funcion&aacute;rio anterior. Nesta etapa usaremos o elemento Ponto de entrada, anteriormente descrito.</p>
     <ol>
        <li>Alterne para a visualiza&ccedil;&atilde;o Fluxo e adicione dois componentes Ponto de entrada da categoria Fluxo da paleta. Clique com o bot&atilde;o direito do mouse nos componentes e renomeie-os como </tt>nextMethod<tt> e <tt>previousMethod</tt>  como ilustrado abaixo:   
      <p class="align-center">
	  <a href="../../../images_www/articles/71/mobility/svgtouch/ex3_1.png" rel="lytebox"
                       title="Fluxo de SVGButtons criado"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex3_1-small.png"
                     alt="Fluxo de SVGButtons criado" border=1></a>
	 </p>
      </li>
      <li> Agora temos que adicionar um &iacute;ndice de propriedade de inteiro privado global ao Visual MIDlet. Vamos alternar para a visualiza&ccedil;&atilde;o C&oacute;digo-fonte e adicionar o seguinte no bloco protegido Campos gerados:<br>
     
     <pre class="examplecode">private int index = 0;</pre></li>
      
      <li>Agora precisamos adicionar a l&oacute;gica para atualizar a IU no <code>employeeForm</code>. O m&eacute;todo usado aqui atualiza os elementos da IU SVG no componente <code>employeeForm</code>. No editor de c&oacute;digo-fonte, no fim da classe, adicione o seguinte m&eacute;todo:
      <p class="notes"><b>Observa&ccedil;&atilde;o:</b> voc&ecirc; pode usar o recurso de conclus&atilde;o de c&oacute;digo no IDE para inserir o c&oacute;digo.</p>
      
	  <pre class="examplecode">
	        //**O m&eacute;todo &eacute; respons&aacute;vel pelo preenchimento do formul&aacute;rio da UI de funcion&aacute;rios com informa&ccedil;&otilde;es dos funcion&aacute;rios.
            private void updateEmployeeFormUI() {
              //Getting currently selected employee
              final Employee employee = (Employee) EmployeeData.getData().elementAt(index);
              //Setting First Name
              getSvgTextFieldFirstName().setText(employee.getFirstName());
              //Setting Last Name
              getSvgTextFieldLastName().setText(employee.getLastName());
              //Setting Gender
              if (employee.getGender()) {
                  getSvgRadioButton().setSelected(false);
                  getSvgRadioButton1().setSelected(true);
              } else {
                  getSvgRadioButton().setSelected(true);
                  getSvgRadioButton1().setSelected(false);
              }    
              //Setting age
              getSvgSpinner().getModel().setValue(new Integer(employee.getAge()));
            }  
	  </pre>
         
      <p>Agora podemos come&ccedil;ar a adicionar a l&oacute;gica ao <tt>nextMethod</tt> e ao <tt>previousMethod</tt>.</p></li> 

        <li>Alterne para a visualiza&ccedil;&atilde;o Fluxo, clique com o bot&atilde;o direito do mouse no Ponto de entrada <code>nextMethod</code> e escolha a op&ccedil;&atilde;o Ir para o c&oacute;digo-fonte a partir do menu suspenso.</li>
        <li>No editor de c&oacute;digo-fonte, adicione o c&oacute;digo seguinte ao m&eacute;todo<tt>nextMethod()</tt> antes de <tt>switchDisplayable(null, getEmployeeForm().getSvgCanvas());</tt>. Este c&oacute;digo exibe o pr&oacute;ximo registro na fila dos registros de dados de funcion&aacute;rios. Ele tamb&eacute;m chama a IU para atualizar as informa&ccedil;&otilde;es exibidas.<br>
		<pre class="examplecode">// Move to the next Employee record
        if (index &lt; EmployeeData.getData().size() - 1) {
            //Update index.
            index++;
        }
        //Update UI - employee form
        updateEmployeeFormUI();
        //Go back to employeeForm
		</pre></li>
       <li>Alterne para a visualiza&ccedil;&atilde;o Fluxo, clique com o bot&atilde;o direito do mouse no Ponto de entrada <code>previousMethod</code> e escolha a op&ccedil;&atilde;o Ir para o c&oacute;digo-fonte a partir do menu suspenso.</li> 
	   <li>No editor de c&oacute;digo-fonte, adicione o c&oacute;digo seguinte ao m&eacute;todo <tt>previousMethod()</tt> antes de <tt>switchDisplayable(null, getEmployeeForm().getSvgCanvas());</tt> para habilitar a funcionalidade de navega&ccedil;&atilde;o de dados ao trabalho.<br>
       <pre class="examplecode">// Move to the previous Employee record
        if (index &gt; 0) {
            //Update index
            index--;
        }
        //Update UI
        updateEmployeeFormUI();
        //Go back to employeeForm
	  </pre>
          
     
   <p>A seguir, precisamos garantir que a IU ser&aacute; atualizada quando <code>employeeForm</code> e o &iacute;ndice global definido com base em uma sele&ccedil;&atilde;o forem feitos na lista de funcion&aacute;rios.</p></li>
      <li>Alterne para a visualiza&ccedil;&atilde;o Fluxo e clique com o bot&atilde;o direito do mouse no bot&atilde;o <tt>selecionar</tt> em <code>employeeList</code> e escolha a op&ccedil;&atilde;o Ir para o c&oacute;digo-fonte a partir do menu contextual.</li>
      <li>No editor de c&oacute;digo-fonte, adicione o c&oacute;digo seguinte ao m&eacute;todo <code>getSelect()</code> depois de <tt>public void actionPerformed(SVGComponent svgComponent) {</tt>:<br>
	  <pre class="examplecode"> //Updating global index
                    index = getSvgList().getSelectionModel().getSelectedIndex();
                    //Updating UI after selection has been made
                    updateEmployeeFormUI();
                    //Switching to the employeeForm</pre></li>
      
  </ol>
<p class="align-center"><a href="#top">in&iacute;cio</a></p>    
    <h2><a name="uitest"></a>Testando o aplicativo em um emulador de dispositivo de tela por toque</h2>
      <p>Estamos prontos para testar nosso aplicativo no Java ME SDK 3.0 <strong>DefaultFxTouchPhone1</strong> que vem embutido no instalador do NetBeans IDE. Para poder iniciar o aplicativo , precisamos editar as Propriedades do projeto.</p>
      
      <ol>
        <li>Clique com o bot&atilde;o direito do mouse no n&oacute; do projeto e escolha Propriedades no menu contextual. Na caixa de di&aacute;logo Projeto, em Categoria, escolha Plataforma e, a seguir, escolha Java Platform Micro Edition SDK 3.0 no menu suspenso Plataforma do emulador.</li>
        <li>Para uma emula&ccedil;&atilde;o de dispositivo de tela por toque, selecione DefaultFxTouchPhone1 no menu suspenso Dispositivo e CLDC-1.1 como Dispositivo de configura&ccedil;&atilde;o como ilustrado abaixo e clique em OK.
          <p class="align-center">
	 <a href="../../../images_www/articles/71/mobility/svgtouch/ex4_4.png" rel="lytebox"
                       title="Dispositivo e plataforma do emulador selecionados"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex4_4-small.png"
                     alt="Dispositivo e plataforma do emulador selecionados" border=1></a>
	</p>
	</li>
        <li>Acesse Executar &gt; Executar projeto e o aplicativo ser&aacute; iniciado no emulador. &Eacute; poss&iacute;vel verificar se as propriedades da tela sens&iacute;vel ao toque est&atilde;o ativadas colocando o ponteiro do mouse sobre os componentes SVG. &Eacute; poss&iacute;vel mover cursor do mouse pela tela para navegar pelos menus do aplicativo como um usu&aacute;rio faria com o a ponta do dedo.</li>
        <li>No emulador, podemos executar alguns testes b&aacute;sicos da IU, como o uso do bot&atilde;o Voltar ou Avan&ccedil;ar, para verificar se os elementos da IU est&atilde;o funcionando corretamente.
     <p class="align-center">
	 <a href="../../../images_www/articles/71/mobility/svgtouch/ex4_5.png" rel="lytebox"
                       title="Aplicativo executado no emulador"> <img src="../../../images_www/articles/71/mobility/svgtouch/ex4_5-small.png"
                     alt="Aplicativo executado no emulador" border=1></a>
	</p> </li>
</ol>

 <h2>Resumo<a name="summary"></a></h2>
      <p> Neste tutorial, voc&ecirc; aprender&aacute; como criar uma IU habilitada para tela sens&iacute;vel ao toque com base em SVG para dispositivos JavaME usando o NetBeans IDE.</p>

      <p class="align-center"><a href="#top">in&iacute;cio</a></p>

 <div class="feedback-box"><a href="/about/contact_form.html?to=6&subject=Creating%20a%20Touch%20Enabled%20SVG%20UI%20for%20Java%20ME%20Devices">Envie-nos seus coment&aacute;rios</a></div>
   <br style="clear:both;" >
     
<a name="see-also"></a>
<h2>Consulte tamb&eacute;m</h2>
<ul>	
         <li><a href="http://wiki.netbeans.org/MobilityDesignerRichComponents">Refer&ecirc;ncia de componentes de IU SVG ricos</a></li>
         <li><a href="http://blogs.sun.com/kharezlak/entry/playing_with_svg_components_in">Aplicativo IU SVG rico</a></li>
         <li><a href="http://wiki.netbeans.org/MobilitySVGComponents">Usando componentes de IU SVG ricos</a></li>
         <li><a href="http://wiki.netbeans.org/VisualMobileDesignerPalatteReference">Refer&ecirc;ncia: Guia da paleta do Visual Mobile Designer</a></li>
  <li><a href="../../../kb/trails/mobility.html">Trilha do aprendizado dos aplicativos Java ME no NetBeans</a></li>
  </ul>
	 <p class="align-center"><a href="#top">in&iacute;cio</a></p>
  </body>
  </HTML>
