OpenOBEX Frontend, primeira demonstração

Este blog deixou de ser mantido, mas o autor continua escrevendo aqui. Não deixe de assinar o novo feed!

OpenOBEX Frontend LogoPara aqueles que ficaram curiosos quanto ao meu novo projeto (se é que existe alguém), acabei de criar uma screencast - bem curta e direta - que mostra praticamente tudo o que implementei até o presente momento. Além da linda janela “About” que fiz sozinho no Gimp (tirando o telefone vermelho, é claro), :P já é possível de se configurar o comportamento da aplicação (dados de conexão, tipos de arquivos) e navegar pelo sistema de arquivos do dispositivo. Hooray!

Devo dizer que este projeto está se mostrando um tanto quanto complexo (mas interessante), pois estou trabalhando com alguns aspectos do Swing que nunca havia trabalhado antes. Por exemplo, algo que era totalmente desconhecido por mim era como se trabalhar com componentes JTree. Mesmo achando a API complexa em demasia (mesmo quando comparamos com outros componentes complexos, como JTable), é impressionante como esse troço todo é flexível! Nesta aplicação, além de precisar implementar um CellRenderer mais elaborado (para mostrar os ícones de acordo com o tipo de arquivo e tudo mais), tive que montar um esquema de carregamento de nós sob demanda, ou seja, a lista de diretórios e arquivos é carregada e mostrada conforme os nós da árvore vão sendo expandidos. Ah, também foi necessário criar uma implementação de TreeSelectionListener para habilitar e desabilitar itens do menu de contexto de acordo com os arquivos e diretórios selecionados. Desenvolver em Swing não é fácil, mas é legal!

Outra coisa interessante é que tudo funciona de forma multi-threaded. Quando a aplicação está carregando os dados de um determinado diretório, o usuário é informado através de uma pequena animação situada no canto superior direito da tela e, ainda assim, o usuário não precisa ficar esperando a tarefa terminar para fazer outras coisas. Ele pode, por exemplo, expandir todos os diretórios rapidamente e, conforme os dados vão sendo coletados, a árvore vai sendo atualizada com os dados que chegam. Embora essa questão da “responsividade” seja importantíssima, infelizmente ainda vemos aplicações que travam a cada input do usuário. (se tem uma coisa que eu odeio é conseguir gerar mais input do que a aplicação que eu estou usando é capaz de processar…)

Continuando com o relato, algo - de certo modo - semelhante foi implementado no módulo de configurações. Como pode ser visto na screencast, quando as configurações mudam, outros elementos da aplicação são notificados das mudanças no mesmo momento. No exemplo, a renderização dos diretórios e arquivos na JTree é modificada dinamicamente quando reconfiguramos os campos que descrevem a classificação dos arquivos de acordo com suas extensões.

Enfim, há bastante coisa que poderia ser discutida a respeito do que venho escrevendo neste modesto projeto. Se você se interessa por programação desktop em Java, dê uma olhada na screencast e baixe o código da aplicação quando este for disponibilizado… essa é uma das vantagens do mundo open source: aprendizado! Apesar de não ser algo estupendo e muito menos impressionante, é um bom começo para aqueles que querem aprender a criar aplicações Swing menos triviais de forma efetiva.

Em breve, disponibilizarei mais informações sobre o andamento desse mini-projeto. O código - escrito no NetBeans 6 M10 - será colocado no ar logo que terminar de implementar as funcionalidades previstas.

UPDATE: Veja este post para mais detalhes.

Tags: , , , , , , , , , ,