Como já sabemos, a NCL é a linguagem base do ambiente declarativo Ginga-NCL, e tem como sua principal característica ser do tipo structure-based, ou seja, a NCL faz uma definição bastante acurada entre o conteúdo e a estrutura de uma aplicação.
Por esta característica, a linguagem NCL não define nenhum tipo de objeto de mídia em si, ao invés disso, através do elemento de linguagem <media>, ela “junta” os objetos de mídia que serão apresentados na aplicação. Uma aplicação desenvolvida em NCL apenas definirá como os diversos objetos de mídia serão estruturados e relacionados no espaço e tempo.
Sendo assim, podemos ter qualquer tipo de objeto s do tipo imagem (png, jpeg, bmp, gif, …), vídeo (mpeg, mov, avi, rmvb, …), texto (doc, txt, pdf, …) e etc. E o mais interessante, podemos ter objetos de código declarativo (html, smil, ncl, svg, …), de código imperativo (Lua, xlet, …) dentre outros. Obviamente que quais objetos de mídia são suportados depende dos exibidores de mídia que estão juntos ao formatador NCL (player).
Por esta característica, uma aplicação NCL pode executar outra aplicação NCL definida no seu elemento de linguagem <media>, assim como uma aplicação NCL pode conter objetos de mídia representando outra aplicação NCL, de forma recursiva. O que é muito interessante, tendo em vista que a linguagem NCL dá suporte à exibição de aplicações em múltiplos dispositivos. Um exemplo: uma aplicação NCL (pai) poderia executar uma outra aplicação NCL (filho), a aplicação filho poderia ser a responsável pela interatividade em um dispositivo portátil, sem a necessidade do usuário ter q executar a interatividade no dispositivo pai.
O Grupo Ginga Goiás, explorando esta característica da linguagem NCL, desenvolveu uma aplicação chamada NCN (Ncl Chama Ncl). É uma aplicação bastante simples, onde mostramos um exemplo de uma aplicação NCL (Pai) que executa uma outra aplicação NCL (filho).
A aplicação consiste na execução de um documento Ncl (pai) a qual fornece uma opção ao usuário para executar um outro documento Ncl (filho). Abaixo vemos a figura da aplicação Ncl (pai).
Execução da Aplicação NCL (Pai)
Temos portanto dois documentos ncls, NclPai.ncl e NclFilho.ncl. O documento NclPai.ncl define em sua estrutura o documento NclFilho.ncl e o executa em dado momento. A interatividade propriamente dita da aplicação, ficará a cargo do documento Ncl (filho).
Quando a aplicação é carregada (NclPai.ncl), é dada a opção para o usuário executar o outro documento Ncl (filho) pressionando o botão 1 do controle remoto. Após pressionado, o documento NclFilho.ncl é carregado, e através dele o usuário poderá navegar através dos botões interativos do controle remoto. Veja figura abaixo:
Execução da Aplicação Ncl (filho)
Note que toda a interação da aplicação é feita através do documento NclFilho.ncl.
Carregado o documento responsável pela interação, o usuário poderá então interagir através do controle remoto. Como dito anteriormente, este é um exemplo bem interessante, pois como no desenvolvimento de aplicações para execução em múltiplos dispositivos, será comum o desenvolvedor optar por realizar determinadas interações da aplicação através de outros documentos declarativos, quer serão executados se o usuário realmente quiser ver a interatividade da aplicação.
Voltando à aplicação, é no documento NclPai.ncl que deverão conter as linhas de código necessárias para executar o documento NclFilho.ncl. No documento NclFilho.ncl não há nada de novo, apenas o desenvolvimento necessário para a interação com o usuário.
No documento NclPai.ncl é definido as seguintes linhas dentro do elemento <head>:
<importedDocumentBase>
<importNCL documentURI=”NclFilho.ncl” alias=”documentoNclFilho”/>
</importedDocumentBase>
Aqui, apenas importamos o documento NclFilho.ncl e demos um alias a ele através do elemento <importedDocumentBase>.
Dentro do elemento <body> devemos fazer o reuso do documento NclFilho.ncl como um novo contexto do documento NclPai.ncl.
<context id=”docNclFilho” refer=”documentoNclFilho#ncl2″/>
obs.: ncl2 é o id do documento NclFilho.ncl
Pronto, basta agora eu utilizar um conector para fazer um elo startando o docNclFilho.
<link xconnector=”connBase#onKeySelectionStartNStopN” id=”iniciaDocumentoNclFilho”>
<bind role=”onSelection” component=”botaoinicio”>
<bindParam name=”keyCode” value=”1″/>
</bind>
<bind role=”start” component=”docNclFilho”/>
<bind role=”stop” component=”fundoPai”/>
<bind role=”stop” component=”inicio”/>
<bind role=”stop” component=”botaoinicio”/>
</link>
O código desta aplicação está disponível para download em nosso portal. Abaixo segue algumas imagens da aplicação.
por: Daniel Alves da Cruz
danielcruz733.wordpress.com
Botão Vermelho - Menu para Escolha de Vídeos Carregados
Vídeo Entrevista Carregado
Botão Verde - Informações Carregada no Canto da Tela
Botão Amarelo - Informações Carregada Abaixo do Vídeo
Botão Volta - Quando pressionado volta à Tela Anterior
Segundo Vídeo sendo Executado
Aplicação Sendo Executada no Set-Top-Box Virtual Ginga-Ncl