Projeto Ginga Hiper - Aplicação / Componentes Concepção / Plano / Cronograma / Conteúdo Curso Pipa - Carlos E. Machado / Natan V. Zeferino Concepção • • • • • • • • Estudar Tecnologia Definir Arquitetura do Software Estrutura da Interface Abrir e Salvar Projeto Exportar Abas Propriedades e Eventos Carregar os componentes Componentes Plano • • • • • • • Introdução Escopo Justificativa Exclusões Fatores críticos de sucesso Riscos Desenvolvimento – Identificação do projeto – Definição da equipe – Detalhamento das Tarefas Plano - Desenvolvimento • Identificação do Projeto – Nome : Ginga Hiper • Definição de Equipe – “só para ter um direcionamento de funções necessárias ao trabalho, para que caso estejamos saindo do foco possamos olhar para isso e retomar a linha correta” – Gerente : Ambos – Analista : Ambos – Desenvolvedor : Ambos • Detalhamento de Tarefa Plano – Desenvolvimento – Detalhamento das Tarefas • Benchmark – Olhar os softwares indicados pelos orientadores, levantar características desejadas relacionadas ao nosso software – Produto : documento de texto • Estudar Tecnologia – Ler tutoriais, “hello world”, dissertações. Plano – Desenvolvimento – Detalhamento das Tarefas • Definir arquitetura do software – Pesquisar ( alguns frameworks , api de interface gráfica, swing, jgoodies, desenvolvimento web ) • Listar possibilidades de framework – Implementar e testar • Fazer o “hello world“ • Tentar fazer algumas funcionalidades básicas da nossa aplicação (tipo flexinha, arrastar...) Plano – Desenvolvimento – Detalhamento das Tarefas • Estrutura da Interface – Definir (pensar na parte de design e usabilidade, ex: três painéis - top left, right -, paletas, maximixar, minimizar...) – Implementar (implementar telas, como uma foto, apenas o esqueleto, sem função) Plano – Desenvolvimento – Detalhamento das Tarefas • Abrir e Salvar Projeto – Definir o Meta-Modelo (criar um documento de texto definindo a estrutura do meta-modelo, ex: se usarmos tags, definir quais existirão - <componente>, <ligação>... - outra possibilidade, bastante interessante, é tentar serializar o painel central com todos os objetos filhos, dessa forma ao carregar seria apenas “dar um cast” desse painel e colocá-lo na posição) – Salvar (varrer a tela e salvar suas características em um xml, ou a cada alteração da tela ir salvando o xml em memória, e depois apenas gerar o arquivo - pensar no salvar do word, manual ou de tempos em tempos ou a idéia de serialização) – Abrir (ler arquivo xml e criar os objetos conforme suas definições contidas no arquivo ou idéia de serialização) Plano – Desenvolvimento – Detalhamento das Tarefas • Exportar – Definir / mapear componentes java com o relativo componente da linguagem destino (ex: JPanel – Swing, para “Panel” - JavaDTV -/ NCL, de preferência javaDTV, acreditamos que aqui estaremos quase que implementando um GWT (java to javascript X java to javadtv), sabendo que a dificuldade disso é grande, a solução é reduzir ao máximo o escopo, ou seja, os componentes possíveis de serem usados, por exemplo nada de Thread, Maps, Componentes 3D...) – Implementar exportação - pegar o arquivo "traduzir" e gerar o arquivo final na linguagem destino, pronto para ser rodado no viewer (lembrar que podemos testar em algum viewer existente: composer, ginga-live, algum de javadtv, lua, ou no do browser-Aloysio) Plano – Desenvolvimento – Detalhamento das Tarefas • Aba Propriedades e Eventos – Carregar as propriedades do componente selecionado (colocar os labels e os campos a serem setados conforme seus tipos - definidos em arquivo ou conforme classe, ex: list - combo, string - campo texto...) – Salvar mesmo que em memória os valores alterados / setados • Carregar os componentes ( apenas na paleta ) – Ler o diretório de componentes, listar os arquivos pela extensão definida para o componente, verificar ou apenas tratar componentes que não estão no formato adequado ( provavelmente apenas um “try catch” vai solucionar) – Colocar os ícones dos componentes na paleta de componentes Plano – Desenvolvimento – Detalhamento das Tarefas • Definir e implementar interações do usuário com o componente na área de desenvolvimento – Carregar a estrutura do objeto ( suas propriedades, a serem carregadas para a paleta de propriedades e alteradas pelo usuário ) ao colocar ele na área – Arrastar componente pela tela ( salvando sua posição pela tela ) – Arrastar para fora e para dentro da área de desenvolvimento, tirando ou colocando o componente em desenvolvimento – Linkar componentes ( ao soltar o botão do mouse, terminando o link, irá abrir a paleta de eventos focando no evento de link editado ou novo ) - ao mover componentes o link (flecha) deve se mover. – Ao clicar no link fazer a mesma função anterior – O link deve ter uma representação de sentido ( daqui pra cá - flecha ) – Ao clicar ou outra ação em um componente na área central mostrar a paleta com suas propriedades Plano – Desenvolvimento – Detalhamento das Tarefas • Definir Tela de posição do componente na tela da TV – Mostrar como o componente ficaria na tv, derrepente não o componente final, mas um ícone representativo e seu tamanho – Essa é uma tarefa possível de ser cortada do escopo • Componentes – Olhar softwares indicados pelos orientadores para entender funcionamento ou idéia de componentização, plugin, carregamento de componentes, integração com aplicação ... • produto : documento de texto – Definir Documento ( especificação ) – Definir Conjunto Modelo de Classes a serem utilizadas obrigatoriamente na implementação de um componente ( idéia de framework ) – Criação de um componente de validação do modelo Cronograma • Outubro/Novembro : 8 horas semanais • Restante : – 20 horas semanais (Carlos) – 16 horas semanais (Natan) • Agenda ( Dia - Tarefa - Status ) – 06/10 - Concepção/Plano/Cronograma Concluído – 07/10 - Reunião 1 – Em andamento – 08/10 - Projetos 1 - Resumo TCC – Pendente – ... Conteúdo Curso Pipa • 1) Telas onde tem um texto e imagem, como fazer proceder no NCL, melhor incluir dois componentes (texto e imagem), ou apenas um compenente que chame um arquivo HTML? – Para fazer um conteúdo digital idêntico ao ppt proposto, um único arquivo html, resolveria. Nessa idéia a questão de componentes não entraria. – Porém, se pensarmos em vídeo, seus devidos controles e componentes, só seria possível com ncl (ou demais): Conteúdo Curso Pipa – (NCL) Poderia ter apenas um componente com opções de configuração de texto, imagem, vídeo, áudio, links, botões, como posição, início, término, ação ( do link )... – (JavaTV) Xlet (semelhante a applet). Programaria em java. Para fazer o ppt, poderia ser basicamente um xlet, porém não tem componentização nisso. Se pensarmos em componentização, já vemos a dificuldade de comunicação entre um xlet e outro. – (Lua) Não Pesquisado. Porém deve ter grande controle, assim como java. Conteúdo Curso Pipa – Obs: Questão principal: como seria criado um componente e transformado em código final. Por exemplo o desenvolvedor de componentes, vai fazer o ppt proposto, como se fosse uma aplicação java swing, e depois como iremos gerar o código correspondente, ou ele vai ter que desenvolver em ncl, se for, como ele vai fazer uma interface gráfica legal. Conteúdo Curso Pipa • 2) Ao chamar um vídeo em uma janela, poderemos realizar controle sobre a programação corrente e sobre o vídeo em questão, ou seja, é possível realizar pausa, seguir, avançar, retroceder, etc, teremos que programar isso ou já existe em NCL? – Não sabemos a princípio se existe em NCL, nem em qualquer outra linguagem. No Xlet vimos alguns pacotes para controle de mídia. – Por fim, vamos pesquisar exemplos práticos, código... FIM