A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Eduardo Guerra Aplicações Swing a Jato.

Apresentações semelhantes


Apresentação em tema: "Eduardo Guerra Aplicações Swing a Jato."— Transcrição da apresentação:

1 Eduardo Guerra http://swingbean.sf.net Aplicações Swing a Jato

2 Apresentação do Palestrante Eduardo Guerra guerraem@gmail.com Formado em Engenharia de Computação pelo ITA em 2002. Mestre pelo ITA, no curso de Engenharia Eletrônica e Computação, na área de Informática em 2005. Faz o curso de Doutorado no ITA com previsão de término para 2010. Professor da Graduação do ITA e da pós-graduação ITA-Stefanini. Possui as certificações da Sun: SCJA, SCJP, SCWCD, SCBCD (1.3 e 5.0), SCJWSD, SCMAD e SCEA. Possui experiência como Arquiteto de Software nas plataformas Java SE, Java EE e Java ME. Editor-chefe e autor de vários artigos da revista MundoJava. Administrador dos projeto open-source SwingBean e Esfinge.

3 Objetivo Apresentar a abordagem do SwingBean para a criação de interfaces gráficas a partir de metadados de objetos, mostrando como ele pode aumentar a produtividade em aplicações desktop.

4 Dificuldades em Aplicações Swing Geração de Telas por XML Abordagem SwingBean Um Exemplo Simples O que Mais o SwingBean Pode Fazer? Geração de Templates O Futuro do SwingBean Agenda da Apresentação

5 Aplicações em Swing A API Swing é extremamente flexível e cheia de recursos, permitindo muitas extensões e a construção de interfaces realmente independente de plataforma. public class FixedSizeFilter extends DocumentFilter { public void insertString(...) throws BadLocationException { replace(fb, offset, 0, str, attr); } public void replace(...) throws BadLocationException { int newLength = fb.getDocument().getLength() - length + str.length(); if (newLength <= 30)‏ fb.replace(offset, length, str, attrs); } Porém este mesmo fator torna seu uso complexo e pouco trivial. Veja o código para criar um filtro que limita um campo de texto em 30 caracteres:

6 Dificuldades do Swing ‏ Pelo fato do Swing ser projetado para ser multiplataforma, os componentes deve ser posicionados de forma relativa e não de forma absoluta como em outras plataformas. Em uma tela com muitos componentes, tratalhar com a posição relativa dos componentes é trabalhoso, principalmente quando uma tela muda (exemplo: acrescentar um novo campo). A flexibilidade dos componentes muitas vezes deixa a execução de simples tarefas de interface complexas e com a necessidade de criação de várias classes. Cada componente gráfico tem suas particularidades, tendo grandes diferenças no tratamento de eventos e na configuração de cada um, o que exige um grande conhecimento de toda API. A lógica de criação da interface acaba ficando misturada com a lógica de apresentação e de negócios, havendo um grande trabalho para recuperar os dados de formulários e tabelas para os objetos de negócio.

7 Abordagem Clica & Arrasta Mesmo clicando e arrastando a construção de interfaces ainda é trabalhosa, pois cada componente ainda precisa ser posicionado e configurado. Ao se trabalhar diretamente no código, muitas ferramentas deixam de reconhecer a interface e não se consegue mais a edição visual dela. Ainda existe o mesmo trabalho braçal de se ligar as interfaces gráficas nos objetos de negócio.

8 Geração de Interface por XML Esta abordagem facilita a construção da interface e o posicionamento dos componentes, porém ainda deve ser feita a ligação entre a interface e os objetos de negócio e muitas vezes se perde flexibilidade na construção das telas. Surgiram vários frameworks que descrevem a interface utilizando um documento XML, para facilitar a construção das telas.

9 Abordagem SwingBean O SwingBean é um framework que fornece componentes de interface menos granulares e que são configurados com metadados de objetos de negócio. O formulário dessa tela é apenas um componente de interface e não vários! O SwingBean não gera telas completas a partir de documentos XML!!!

10 Metadados do SwingBean <property name='raca' comboList='Yorkshire;Beagle;Basset;Poodle' /> Os metadados do SwingBean são configurados por um documento XML e são bem simples (existem só 3 tipos de entidade). Os tipos de dados são reconhecidos automaticamente e os componentes são escolhidos de acordo. É feito o posicionamento e o redimensionamento nos componentes de forma automática.

11 Metadados do SwingBean <property name='raca' label='Raça' comboList='Yorkshire;Beagle;Basset;Poodle' colspan='3' /> Outros atributos podem ser utilizados para customizar o comportamento e tamanho de cada componente.

12 Manipulando o Formulário GenericFieldDescriptor descriptor = XMLDescriptorFactory.getFieldDescriptor(Cachorro.class, "cachorroForm.xml","CachorroForm"); JBeanPanel panel = new JbeanPanel ( Cachorro.class, descriptor); Criando um Formulário panel.setBean(cachorro); Setando um Objeto Cachorro cao = new Cachorro(); panel.populateBean(cao); Recuperando um Objeto panel.cleanForm(); Limpando o Formulário

13 Tabelas no SwingBean As tabelas também podem ser construídas com base nos metadados A única diferença no XML é que ele só pode ter um elemento Se não for colocado o atributo readOnly=”true”, os campos da tabela são editáveis de acordo com os mesmos componentes que o formulário utiliza.

14 Manipulando a Tabela TableFieldDescriptor tabledescriptor = XMLDescriptorFactory.getTableFieldDescriptor(Cachorro.class, "cachorroTable.xml","CachorroTable"); BeanTableModel model = new BeanTableModel (tabledescriptor); JBeanTable table = new JBeanTable(model); Criando a Tabela model.addBean(cachorro); model.setBeanList(list); Colocando Objetos Cachorro cao = model.getBeanAt(5); List list = model.getCompleteList(); Recuperando Objetos

15 O que mais o SwingBean faz? Validação dos dados e adequação dos componentes do formulário baseado nos metadados do XML. Criação de componentes avançados como lista duplas, lista de checkbox e imagens. Adição de eventos em componentes de interface. Possui um pequeno framework para criação de ações de interface. Configuração de combos dependentes em formulários e tabelas.

16 O que mais o SwingBean faz? Validação de dados em tabelas, colocando a linha não válida em vermelho e mostrando os erros como tooltip. Recuperação de dados inseridos, atualizados e excluídos em tabelas para sincronização com o banco de dados. Filtragem e ordenação de dados em tabelas. Criação de tabelas-árvore, com 3 opções para a regra de formação das árvores. Customização de aparência para todos os componentes.

17 Geração de Templates O segredo da produtividade com o SwingBean está na criação de templates de telas, visto que o que muda de uma tela para outra normalmente é o que está definido nos metadados em XML. Trocando o XML do formulário e da tabela, poucas modificações precisam ser feitas para que se tenham telas genéricas. As diferenças mais comuns podem ser parametrizadas e as específicas inseridas por herança.

18 Futuro do Swing ‏ Bean Como o XML do SwingBean é um metadado do objeto e não uma descrição da tela, será implementado o uso de anotações para a geração das telas. Vários comportamentos do SwingBean não podem ser facilmente alterados (como a forma que o label fica em relação ao componente). Aos poucos esses fatores estão sendo flexibilizados, para que se possa extender o framework mais facilmente. Como o SwingBean trabalha com componentes voltados a objetos de domínio, já está em implementação um mecanismo de binding para que se tenha objetos sincronizados com formulários e listas sincronizadas com tabelas. O uso de templates pode ser feito, porém não existe nenhum pronto pelo framework para ser utilizado. Depois de implementado o binding, serão criados vários templates para que se possa agilizar o desenvolvimento.

19 Frase Final Muitas pessoas preferem o SwingBean do que ferramentas vizuais de edição de tela, devido a facilidade de reuso da lógica de interface.


Carregar ppt "Eduardo Guerra Aplicações Swing a Jato."

Apresentações semelhantes


Anúncios Google