Ir para o conteúdo

 Voltar a Linguagem NCL
Tela cheia

Campos de Texto

28 de Outubro de 2007, 22:58 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 46 vezes


Eu estou desenvolvendo um sistema que é necessário que o usuário realize um login. Para isso, eu tenho que utilizar a linguagem java, to certo? com isso, eu tenho algumas perguntas:

1 -> nao encontrei um metodo que crie uma caixa de texto para entrar com a senha

2-> vou ter que recorrer a outra implementação como HAVI ou open MHP???

3-> em outro tópico eu li alguém da equipe Ginga falando que é possível criar aplicações java genérica. Ou seja, eu poderia criar qualquer tipo de aplicação java?? de qualquer API???

Obrigado.
 

Autor: Adonias Melo Jr.


1313 comentários

  • 6958a7d3f20a68182800b45d6134fedf?only path=false&size=50&d=404Rafael Rodrigues(usuário não autenticado)
    29 de Outubro de 2007, 0:23

     

    Não precisa ser necessáriamente Java, pode ser feito em LUA...

    Atualmente nosso emulador suporta uma versão limitada da API Java. Dê uma olhada no Wiki para averiguar a integração do Java com o NCL.

    No seu caso, você provavelmente não precisará do Havi.

    Nesse tópico coloquei um trecho de como recuperar eventos do controle remoto (ou seja, o uso das teclas pelo usuário). Em breve teremos um tutorial melhor.

    Um abraço,

    Rafael

    • 754d4402e67aee0305d1a29003710c1c?only path=false&size=50&d=404andrey silva souza(usuário não autenticado)
      29 de Outubro de 2007, 16:33

       

      Grande Rafael vcs poderiam postar um exemplo Lua de entrada de dados? e onde eu posso  ter acesso a mais exemplos? 

      Abrax!

      • 6958a7d3f20a68182800b45d6134fedf?only path=false&size=50&d=404Rafael Rodrigues(usuário não autenticado)
        29 de Outubro de 2007, 17:10

         

        Andrey,

        Apenas um esclarecimento: nosso foco aqui tem sido sanar dúvidas sobre a linguagem NCL, ok? Por isso a falta de tutoriais sobre o Java. De qualquer forma, existem alguns bons tutorias espalhados pela rede ensinando a programação Java para TV (inclusive no site da Sun).

        Quanto aos exemplos Lua, realmente estamos devendo. Isso porque a versão atual do emulador ainda não está suportando especificação LUA (apenas a implementação de referência feita para Linux). Já está quase saindo do forno uma versão do emulador com suporte a essa linguagem. Assim que soltarmos essa versão liberaremos alguns exemplos. Enquanto isso, se você quiser ir conhecendo um pouco mais sobre a linguagem, te aconselho a dar uma olhada no site www.​lua.​org. E, para consultar a API lua disponível no Ginga, você pode consultar a especificação no site da ABNT (você vai precisar criar um login para acessar).

         Só um detalhe: com as informações que postei no tópico ao qual eu me referi na resposta anterior, já dá para obter a entrada do usuário.
         

        Um abraço,

        Rafael

        • Ac5efceeaa3915852da0072ea32b8e6e?only path=false&size=50&d=404Adonias Melo Jr.(usuário não autenticado)
          3 de Novembro de 2007, 19:51

           

          Então, criando um xlet para ser chamado no NCL, é possível fazer a inserção de texto pelo controle remoto do NCL-Payer ou no player do Composer?

           Nesse caso, para testar meu xlet teria que recorrer a um emulador como o xletview?

          Eu sei que esse é um fórum para se discutir o Ginga-NCL, só to perguntando porque o meu programa declarativo está funcionando sem problemas, o problema é que preciso rodar um código procedural e estou tendo dificuldades.

           

          • 6958a7d3f20a68182800b45d6134fedf?only path=false&size=50&d=404Rafael Rodrigues(usuário não autenticado)
            6 de Novembro de 2007, 17:17

             

            Adonias,

            Sim, é possível. Mas apenas usando o AWT.

            O XletView é uma boa ferramenta para você emular o ambiente Java.
             

            Um abraço,

            Rafael 

            • Ac5efceeaa3915852da0072ea32b8e6e?only path=false&size=50&d=404Adonias Melo Jr.(usuário não autenticado)
              8 de Novembro de 2007, 19:21

               

              Rafael, obrigado pela sua ajuda, tem sido de grande valor.

               Seguinte, fiz minha aplicação utilizando AWT normalmente. Consigo inserir texto via teclado, mas não itulizando o controle remoto.

               Minha dúvida é: vai ser preciso fazer o tratamento de evento toda vez que o usuário teclar alguma tecla do teclado para poder inserir os caracteres na caixa de texto? Caso seja isso mesmo, eu poderia utilizar para isso tanto atw, havi ou dvb?

              • Ac5efceeaa3915852da0072ea32b8e6e?only path=false&size=50&d=404Adonias Melo Jr.(usuário não autenticado)
                8 de Novembro de 2007, 19:22

                 

                Rafael, obrigado pela sua ajuda, tem sido de grande valor.

                 Seguinte, fiz minha aplicação utilizando AWT normalmente. Consigo inserir texto via teclado, mas não itulizando o controle remoto.
                 Minha dúvida é: vai ser preciso fazer o tratamento de evento toda vez que o usuário teclar alguma tecla do controle para poder inserir os caracteres na caixa de texto? Caso seja isso mesmo, eu poderia utilizar para isso tanto atw, havi ou dvb?

                • 6958a7d3f20a68182800b45d6134fedf?only path=false&size=50&d=404Rafael Rodrigues(usuário não autenticado)
                  10 de Novembro de 2007, 14:22

                   

                  Adonias,

                  Essa é uma forma de se fazer. As outras ainda não estão implementadas no nosso emulador.

                  O emulador, por exemplo, ainda não modifica, pelo controle remoto, o foco entre campos de texto em uma aplicação JAVA-AWT.

                  Um abraço,

                  Rafael

          • 80281508d24634177d10e7b503d515bf?only path=false&size=50&d=404Gabriel Paduan(usuário não autenticado)
            19 de Novembro de 2007, 18:22

             

            Pessoal,

            Estive trabalhando em outro projeto e não acessei o forum, portanto, não sei se vou colaborar em tempo com vocês.

            Durante meus estudos de NCL e Java, também tive essa mesma dúvida de interagir com um TextField e o controle remoto do Ginga e resolvi criar uma aplicação que fizesse isso.

            Vou postar aqui os dois códigos, NCL e Java e gostaria de um retorno de vocês se o que fiz está dentro dos padrões ou se estou utilizando alguma coisa que não é permitida.

            Explicação rápida sobre os códigos:

            NCL: Apenas passa parâmetros para o Java. Neste caso, o NCL é responsável apenas por detectar qual tecla foi pressionada e envia para o Java fazer o tratamento da informação.

             Java: É onde todo processamento ocorre. No meu exemplo, implementei o seguinte: Cada tecla pressionada imprime seu código no textfield (aproveitei também para ver quais teclas do controle estão realmente mapeadas). As teclas coloridas são responsáveis pela função de BACKSPACE, e proporcionei tambem uma interação com as setas do controle, ou seja, a pessoa pode posicionar o cursor do text field onde quiser e apagar ou inserir um novo caracter na posição indicada.

            Códigos:

            NCL:

             

            <?xml version="1.0" encoding="ISO-8859-1"?>

                <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                !  Projeto 15 (NCLTextField)                            !
                !                                            !
                !  Objetivo: Proporcionar integração do NCL com um textfield,         !
                !  passando parâmetros para uma classe Java.                    !
                !                                            !
                !  Características:                                    !
                !                                            !
                !  - sincronismo: seleção de teclas no controle -> escrita do texto     !
                !    selecionado no textfield                            !
                !  - interação do usuário: entrada de dados em um textfield através     !
                !    da seleção no controle remoto                        !
                !                                            !
                !  Preparação:                                    !
                !                                            !
                !  Para executar este exemplo, é necessário ter as seguintes mídias     !
                !  no subdiretório media a partir do caminho do arquivo NCL:        !
                !  1) arquivo de vídeo chamado video1.mpg                    !
                !  2) arquivo de vídeo chamado botao_vermelho.gif                !
                !                                            !
                !  Para executar este exemplo, é necessário ter as seguintes mídias     !
                !  no subdiretório connectors a partir do caminho do arquivo NCL:    !
                !  1) arquivo de conectores chamado composerConnectorBase.conn    !
                !                                            !
                !  Para executar este exemplo, é necessário ter as seguintes mídias     !
                !  no subdiretório bin\ncl\textfield a partir do caminho do arquivo NCL:    !
                !  1) arquivo .class chamado TFInterface.class                !
                !  2) arquivo .class chamado TFXlet.class                    !
                !  3) arquivo .class chamado TFXLet$1.class                    !
                !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->

            <ncl id="project15" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">

                <head>
               
                    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    !  BASE DE CONECTORES:                            !
                    !  definem o comportamento dos elos                        !
                    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
                   
                    <connectorBase>
                        <importBase documentURI="connectors/composerConnectorBase.conn" alias="connBase"/>
                        <importBase documentURI="connectors/myConnectors.conn" alias="myConnBase"/>
                    </connectorBase>
                   
                    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    !  BASE DE REGIÕES:                                !
                    !  define as regiões na tela onde as mídias são apresentadas        !
                    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
                   
                    <regionBase>
                        <region id="rgTV" width="1280" height="1024">
                            <region id="rgVideo1" left="512" top="258" width="320" height="240"/>
                            <region id="rgBotao" left="0" top="0" width="0" height="0"/>
                            <region id="rgAppJava" left="512" top="498" width="1" height="1"/>
                        </region>
                    </regionBase>
                   
                    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    !  BASE DE DESCRITORES:                            !
                    !  define como as mídias são apresentadas                    !
                    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
                   
                    <descriptorBase>
                        <descriptor id="dVideo1" region="rgVideo1"/>
                        <descriptor id="dBotao" region="rgBotao"/>
                       
                        <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                        !  DESCRITOR XLET                                !
                        !  DescriptorParam criado para a inserção de uma mídia Java        !
                        !  São necessários o argumento name="x-classpath" e o argumento     !
                        !  value="./bin/", subdiretório principal a partir do caminho do NCL,    !
                        !  onde estão as classes Java que serão utilizadas no projeto.        !
                        !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
                       
                        <descriptor id="dAppJava" region="rgAppJava">
                            <descriptorParam name="x-classpath" value="./bin/"/>
                        </descriptor>
                    </descriptorBase>
                </head>

                <body>
               
                    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    !  PONTO DE ENTRADA:                                !
                    !  indica o componente onde o programa inicia                !
                    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
                   
                    <port id="pInitialize" component="video1"/>

                    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    !  MÍDIAS:                                        !
                    !  define o local dos arquivos de mídia e as associa com seus descritores    !
                    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
                   
                    <media type="video/mpeg" id="video1" src="media/video1.mpg" descriptor="dVideo1"/>
                    <media type="image/gif" id="botao" src="media/botao_vermelho.gif" descriptor="dBotao"/>
                   
                   
                    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    !  MÍDIA XLET                                    !
                    !  Property criada na mídia para a passagem de parâmetros,         !
                    !  referenciando o método public da classe para onde a passagem         !
                    !  será feita.                                        !
                    !  A passagem ocorre quando algum botão do controle é presionado,    !
                    !  fazendo com que o NCL chame o método setText da classe TFXlet,    !
                    !  passando para ele uma string desejada, no caso, o código das        !
                    !  teclas do controle. Todo o tratamento das informações passadas    !   
                    !  pelo NCL é feito dentro da classe Java.                    !
                    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
                   
                    <media id="appJava" src="bin/ncl/textfield/TFXlet.class" descriptor="dAppJava">
                        <property name="setText"/>
                    </media>
                   
                    <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    !  ELOS                                        !
                    !  define os elos que regem o sincronismo entre as mídias            !
                    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
                   
                    <!-- Quando o botão POWER é pressionado no controle, o NCL passa o parâmetro "POWER" para o Java que encerra a aplicação -->
                   
                    <link id="lSelecionaBotaoPower" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="POWER"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="POWER"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão GUIDE é pressionado no controle, o NCL passa o parâmetro "GUIDE" para o Java que escreve GUIDE no textfield -->
                   
                    <link id="lSelecionaBotaoGuia" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="GUIDE"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="GUIDE"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão INFO é pressionado no controle, o NCL passa o parâmetro "INFO" para o Java que escreve INFO no textfield -->
                   
                    <link id="lSelecionaBotaoInfo" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="INFO"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="INFO"/>
                        </bind>
                    </link>
                   
                    <!-- Quando a seta pra cima é pressionada no controle, o NCL passa o parâmetro "CURSOR_UP" para o Java que escreve CURSOR_UP no textfield-->
                   
                    <link id="lSelecionaBotaoCURSOR_UP" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="CURSOR_UP"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="CURSOR_UP"/>
                        </bind>
                    </link>
                   
                    <!-- Quando a seta pra baixo é pressionada no controle, o NCL passa o parâmetro "CURSOR_DOWN" para o Java que escreve CURSOR_DOWN no textfield-->
                   
                    <link id="lSelecionaBotaoCURSOR_DOWN" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="CURSOR_DOWN"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="CURSOR_DOWN"/>
                        </bind>
                    </link>
                   
                    <!-- Quando a seta pra esquerda é pressionada no controle, o NCL passa o parâmetro "CURSOR_LEFT" para o Java que permite o usuário posicionar  o cursor do textfield-->
                   
                    <link id="lSelecionaBotaoCURSOR_LEFT" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="CURSOR_LEFT"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="CURSOR_LEFT"/>
                        </bind>
                    </link>
                   
                    <!-- Quando a seta pra direita é pressionada no controle, o NCL passa o parâmetro "CURSOR_RIGHT" para o Java que permite o usuário posicionar  o cursor do textfield-->
                   
                    <link id="lSelecionaBotaoCURSOR_RIGHT" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="CURSOR_RIGHT"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="CURSOR_RIGHT"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão OK é pressionado no controle, o NCL passa o parâmetro "OK" para o Java que seleciona o botão de OK-->
                   
                    <link id="lSelecionaBotaoOk" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="ENTER"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="OK"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão VOLTA é pressionado no controle, o NCL passa o parâmetro "EXIT" para o Java que escreve EXIT no textfield-->
                   
                    <link id="lSelecionaBotaoExit" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="EXIT"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="EXIT"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão vermelho é pressionado no controle, o NCL passa o parâmetro "BACKSPACE" para o Java que apaga o caracter anterior no textfield em relação a posição do cursor -->
                   
                    <link id="lSelecionaBotaoVermelho" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="RED"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="BACKSPACE"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão verde é pressionado no controle, o NCL passa o parâmetro "BACKSPACE" para o Java que apaga o caracter anterior no textfield em relação a posição do cursor -->
                   
                    <link id="lSelecionaBotaoVerde" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="GREEN"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="BACKSPACE"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão amarelo é pressionado no controle, o NCL passa o parâmetro "BACKSPACE" para o Java que apaga o caracter anterior no textfield em relação a posição do cursor -->
                   
                    <link id="lSelecionaBotaoAmarelo" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="YELLOW"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="BACKSPACE"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão azul é pressionado no controle, o NCL passa o parâmetro "BACKSPACE" para o Java que apaga o caracter anterior no textfield em relação a posição do cursor -->
                   
                    <link id="lSelecionaBotaoAzul" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="BLUE"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="BACKSPACE"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 1 é pressionado no controle, o NCL passa o parâmetro "1" para o Java que escreve 1 no textfield-->
                   
                    <link id="lSelecionaBotao1" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="1"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="1"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 2 é pressionado no controle, o NCL passa o parâmetro "2" para o Java que escreve 2 no textfield-->
                   
                    <link id="lSelecionaBotao2" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="2"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="2"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 3 é pressionado no controle, o NCL passa o parâmetro "3" para o Java que escreve 3 no textfield-->
                   
                    <link id="lSelecionaBotao3" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="3"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="3"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 4 é pressionado no controle, o NCL passa o parâmetro "4" para o Java que escreve 4 no textfield-->
                   
                    <link id="lSelecionaBotao4" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="4"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="4"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 5 é pressionado no controle, o NCL passa o parâmetro "5" para o Java que escreve 5 no textfield-->
                   
                    <link id="lSelecionaBotao5" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="5"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="5"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 6 é pressionado no controle, o NCL passa o parâmetro "6" para o Java que escreve 6 no textfield-->
                   
                    <link id="lSelecionaBotao6" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="6"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="6"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 7 é pressionado no controle, o NCL passa o parâmetro "7" para o Java que escreve 7 no textfield-->
                   
                    <link id="lSelecionaBotao7" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="7"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="7"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 8 é pressionado no controle, o NCL passa o parâmetro "8" para o Java que escreve 8 no textfield-->
                   
                    <link id="lSelecionaBotao8" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="8"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="8"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 9 é pressionado no controle, o NCL passa o parâmetro "9" para o Java que escreve 9 no textfield-->
                   
                    <link id="lSelecionaBotao9" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="9"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="9"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão 0 é pressionado no controle, o NCL passa o parâmetro "0" para o Java que escreve 0 no textfield-->
                   
                    <link id="lSelecionaBotao0" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="0"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="0"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão * é pressionado no controle, o NCL passa o parâmetro "*" para o Java que escreve * no textfield-->
                   
                    <link id="lSelecionaBotao*" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="*"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="*"/>
                        </bind>
                    </link>
                   
                    <!-- Quando o botão # é pressionado no controle, o NCL passa o parâmetro "#" para o Java que escreve # no textfield-->
                   
                    <link id="lSelecionaBotao#" xconnector="connBase#onKeySelectionSetN">
                        <bind component="botao" role="onSelection">
                            <bindParam name="keyCode" value="#"/>
                        </bind>
                        <bind component="appJava" interface="setText" role="set">
                            <bindParam name="var" value="#"/>
                        </bind>
                    </link>
                   
                    <!-- Inicia as midias javaApp e botao quando o video1 é iniciado-->
                   
                    <link id="lBeginVideo1StartJavaApp" xconnector="connBase#onBeginStart">
                        <bind component="video1" role="onBegin"/>
                        <bind component="appJava" role="start"/>
                        <bind component="botao" role="start"/>
                    </link>
                   
                    <!-- Encerra as midias javaApp e botao quando o video1 é terminado-->
                   
                    <link id="lEndVideo1StopJavaApp" xconnector="connBase#onEndStop">
                        <bind component="video1" role="onEnd"/>
                        <bind component="botao" role="stop"/>
                        <bind component="appJava" role="stop"/>
                    </link>
                </body>
            </ncl>

             

            Java:

             

            package ncl.textfield;

            import java.awt.Button;
            import java.awt.Frame;
            import java.awt.Panel;
            import java.awt.TextField;

            public class TFInterface extends Frame {

                private static final long serialVersionUID = 7482303915525149546L;
               
                private TextField textField;
                private Button okButton;
                private Panel panel;
               
                public TFInterface() {
                    super("Teste");
                    setUndecorated(true);
                    setLocation(512, 498);
                    setSize(320,40);
                    buildInterface();
                }

                private void buildInterface() {
                    add(getJPanel());
                }

                private Panel getJPanel() {
                    if(panel == null) {
                        panel = new Panel();
                        panel.add(getTextField());
                        panel.add(getOkButton());
                    }
                    return panel;
                }

                private Button getOkButton() {
                    if(okButton == null) {
                        okButton = new Button("OK");
                    }
                    return okButton;
                }

                public TextField getTextField() {
                    if(textField == null) {
                        textField = new TextField();
                        textField.setColumns(10);
                        textField.requestFocus();
                    }
                    return textField;
                }
               
                public void pressOkButton() {
                    getOkButton().setEnabled(false);
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    getOkButton().setEnabled(true);
                }
               
                public void updateTextFieldText(String text) {
                    int cursorPosition = getCursorPosition();
                    int currentCursorPositon = getCursorPosition();
                    char[] oldString = getTextField().getText().toCharArray();
                    char[] auxInsert = text.toCharArray();
                    char[] auxNewString = new char[oldString.length + auxInsert.length];
                    int i=0;
                    for(i=0;i<cursorPosition;i++) {
                        auxNewString[i] = oldString[i];
                    }
                    for(int k=0;k<auxInsert.length;k++,i++) {
                        auxNewString[i] = auxInsert[k];
                    }
                    for(;i<auxNewString.length;i++){
                        auxNewString[i] = oldString[cursorPosition];
                        cursorPosition++;
                    }
                    String newString = new String(auxNewString);
                    getTextField().setText(newString);
                    getTextField().setCaretPosition(++currentCursorPositon);
                }
               
                public void backspaceTextFieldText() {
                    int cursorPosition = getCursorPosition();
                    int currentCursorPositon = getCursorPosition();
                    char[] oldString = getTextField().getText().toCharArray();
                    String newString;
                    if(cursorPosition!=0) {
                        char[] auxNewString1 = new char[oldString.length-1];
                        int i=0;
                        for(i=0;i<cursorPosition-1;i++) {
                            auxNewString1[i] = oldString[i];
                        }
                        for(;i<oldString.length-1;i++) {
                            auxNewString1[i] = oldString[cursorPosition];
                            cursorPosition++;
                        }
                        newString = new String(auxNewString1);
                    }
                    else {
                        newString = new String(oldString);
                    }
                    getTextField().setText(newString);
                    getTextField().setCaretPosition(--currentCursorPositon);
                }
               
                public void updateCursor(String how) {
                    int cursorPosition = getTextField().getCaretPosition();
                    if(how.equals("UP") && cursorPosition < getTextField().getText().length()) {
                        getTextField().setCaretPosition(++cursorPosition);
                    }
                    else if(how.equals("DOWN") && cursorPosition > 0) {
                        getTextField().setCaretPosition(--cursorPosition);
                    }
                }
               
                private int getCursorPosition() {
                    return getTextField().getCaretPosition();
                }

            }

             

            package ncl.textfield;

            import java.awt.BorderLayout;
            import java.awt.Component;
            import java.awt.Container;
            import java.awt.Graphics;

            import javax.tv.graphics.TVContainer;
            import javax.tv.xlet.Xlet;
            import javax.tv.xlet.XletContext;
            import javax.tv.xlet.XletStateChangeException;

            public class TFXlet implements Xlet{
               
                XletContext thisContext;
                TFInterface tfInterface = new TFInterface();
                String text = "";
                private Component legenda;
               
                public void initXlet(XletContext ctx) throws XletStateChangeException {
                    thisContext = ctx;
                }
               
                @SuppressWarnings("serial")
                public void startXlet() throws XletStateChangeException {
                    Container rootContainer = TVContainer.getRootContainer(thisContext);
                    tfInterface.setVisible(true);
                    legenda = new Component() {
                        @Override
                        public void paint(Graphics g){
                            tfInterface.updateTextFieldText(getText());
                            tfInterface.getTextField().requestFocus();
                        }
                    };
                    rootContainer.setLayout(new BorderLayout());
                    rootContainer.add(legenda,BorderLayout.CENTER);
                }
               
                public void setText(String text) {
                    if(text.equals("BACKSPACE")) {
                        tfInterface.backspaceTextFieldText();
                        tfInterface.getTextField().requestFocus();
                    }
                    else if(text.equals("CURSOR_LEFT")) {
                        tfInterface.updateCursor("DOWN");
                        tfInterface.getTextField().requestFocus();
                    }
                    else if(text.equals("CURSOR_RIGHT")) {
                        tfInterface.updateCursor("UP");
                        tfInterface.getTextField().requestFocus();
                    }
                    else if(text.equals("OK")) {
                        tfInterface.pressOkButton();
                        tfInterface.getTextField().requestFocus();
                    }
                    else {
                        this.text = text;
                        legenda.repaint();
                    }
                }
               
                private String getText() {
                    return text;
                }
               
                public void pauseXlet() {}
               
                public void destroyXlet(boolean unconditional) throws XletStateChangeException {
                    tfInterface.dispose();
                }
            }

             

            Desculpem pelo tamanho do post.

            Att.

            Gabriel Paduan 

            • Ac5efceeaa3915852da0072ea32b8e6e?only path=false&size=50&d=404Adonias Melo Jr.(usuário não autenticado)
              19 de Novembro de 2007, 23:05

               

              Gabriel, muito obrigado por ajudar. Na verdade, acabei de entrar no forum para fazer uma pergunta, mas seu post ja me ajudou a soluciona-la.

              Meu xlet estava funcionando perfeitamente, inclusive testado com sucesso no xletview. Nao estava conseguindo faze-lo funcionar totalmente sendo chamado de um ncl. Pelo seu codigo percebi que meu erro era que eu estava tentando fazer a leitura da tecla digitada no controle remoto a partir do xlet e nao do ncl. Meu codigo ja estava todo pronto, faltando so a parte da entrada de dados pelo controle e nao pelo teclado, agora so falta colocar a mao na massa para terminar essa parte.

               Novamente, obrigado pela contribuicao.

            • 6958a7d3f20a68182800b45d6134fedf?only path=false&size=50&d=404Rafael Rodrigues(usuário não autenticado)
              20 de Novembro de 2007, 1:37

               

              Gabriel,

              Óimo o tamanho do post... deu pra entender exatamente o que você quer fazer.
              Vamos lá:

              -Essa é uma das formas de se fazer a recuperação das teclas utilizadas pelo controle remoto, ilustrando muito bem a ponte entre a NCL e o Java.

              -Minha primeira observação é que você utilizou algumas classes que não estão presentes no GEM. Olhando bem superficialmente observei a TextField e o Panel.
              Como nosso emulador não possui uma implementação do Havi, sugiro a você criar uma implementação mínima dessas classes utilizando Component e Container. A API que você pode usar você encontra em (http://java.sun.com/javame/reference/apis/jsr218/ e java​.sun​.com​/jav​ame/​refe​renc​e/ap​is/j​sr21​7/).

              -E, para finalizar, é possível capturar os eventos do controle remoto através da classe Java EventManager.

              Um abraço,
              Rafael

              • 80281508d24634177d10e7b503d515bf?only path=false&size=50&d=404Gabriel Paduan(usuário não autenticado)
                20 de Novembro de 2007, 18:28

                 

                Rafael,

                Muito obrigado pelas dicas, no entanto não consegui entender muito bem...

                Seria o caso de eu desenhar o textfield, repintando-o na tela a cada tecla pressionada?

                Obrigado pelo retorno,

                Att.

                Gabriel Paduan

                 

                • 6958a7d3f20a68182800b45d6134fedf?only path=false&size=50&d=404Rafael Rodrigues(usuário não autenticado)
                  28 de Novembro de 2007, 19:09

                   

                  Exato!!

                  Mas repare, esta é uma das formas de se fazer, pois as outras ainda não foram implementadas no nosso emulador.

                  Um abraço,
                  Rafael

Concurso ITU-T de Aplicações para IPTV 2012

13 de Agosto de 2012, 19:38, por Desconhecido

Gostaríamos de lembrar aos possíveis interessados que o prazo de registro para participação no Concurso ITU-T de Aplicações para IPTV 2012 (IPTV Application Challenge) se encerra nesta semana, dia 15 de agosto de 2012. Já o prazo para a submissão de aplicações se encerra no dia 07 de setembro de 2012.



NCL Eclipse 1.6 disponível

10 de Janeiro de 2012, 21:19, por Desconhecido

Caros membros da Comunidade Ginga,



Concursos de Aplicações Ginga-NCL

22 de Setembro de 2011, 3:22, por Desconhecido

    Gostaríamos de relembra-los de que há dois concursos de aplicações Ginga-NCL com inscrições ainda abertas. O convite é aberto a toda a comunidade de desenvolvedores de aplicações para o Middleware Ginga-NCL, em nível internacional. São os seguintes concursos:



Novas versões: Ginga e Ginga-NCL Virtual Set-top Box (v.0.12.3)

1 de Agosto de 2011, 20:58, por Desconhecido



Algumas Boas Notícias da Comunidade Ginga

28 de Julho de 2011, 21:31, por Desconhecido

Autor: Roberto Azevedo