44 slides sobre o merlin, apresentado no FISL 2007 de Porto Alegre. O Merlin é um gerador de IU java que renderiza telas de cadastro completamente funcionais em tempo de execução. É um produto da 3Layer baseado em software livre e deve entrar no mercado em 2009.
Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro
1. www.3layer.com.br
www.3layer.com.br
Merlin
Um Novo Horizonte na Criação das Telas de Cadastro
2. www.3layer.com.br
Sumário
>> panorama geral
Cenário
A proposta
Comparações
Características e Funcionalidades
O presente e o futuro
EOF
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 2 de 44
3. www.3layer.com.br
Sobre o autor
Marcelo Mrack, mmrack@gmail.com
29 anos, 8 em TI, 6 em Java
Bacharel em C. Computação, UNISC – 2001
Mestrando em C. Computação, UFRGS – 2006
Atuação em projetos web e desktop n camadas
Arquiteto na 3Layer Tecnologia
Projetista na CWI Software
Consultor e instrutor Hibernate, Java EE
Especialidades: IHC, Patterns, geradores, PU Ágil e UML
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 3 de 44
4. www.3layer.com.br
Panorama geral
>> a construção da IU hoje
Quanto custa construir um sistema
Custo de construção
Sistema completo 100%
1
Interface do usuário 50%
1
TC 30%
2
TC elementares 18%
2
Referências
1 Meyers, Brad – User Interface Software Tools (1994,2002)
2 Pesquisas próprias (2005,2006)
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 4 de 44
5. www.3layer.com.br
A construção da IU hoje
>> a ferramenta proposta
O cenário atual
As diversas formas de construir interface de usuário e os problemas em comum
Abordagens Problemas recorrentes
Escrita de código-fonte Tempo elevado de construção
Uso de ferramentas WYSIWYG1 Quanto custa criar um template?
Uso de assistentes de criação Demora nas alterações
Como refatorar classes já geradas?
Geração baseada em modelos E se o código já foi alterado?
Templates Falta de reuso
MDA Posso reusar o label “Nome do cliente”
em projetos diferentes?
Gerência de código
Código template ou não? E a versão?
1. ( WYSIWYG: /wǺziwǺg/ ) What You See Is What You Get, ou seja o que você vê (ou o que você desenha no
editor) é o que você tem quando o sistema estiver em execução.
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 5 de 44
6. www.3layer.com.br
A ferramenta proposta
>> motivação
Abdicar totalmente da geração do código-fonte
Em outras palavras, gerar a TC durante a execução do
sistema, através de um processo de interpretação de
meta-informações oriundas do próprio modelo de dados
A idéia-chave
class Cliente {
new JFrame.add(
String codigo;
CAFE Merlin.createIhc(Pessoa.class)
String nome; ).setVisible(true);
}
Tempo de projeto Tempo de execução
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 6 de 44
7. www.3layer.com.br
Motivação
>> motivação
TC são funções do modelo de dados
A dependência da TC em relação ao modelo de dados
Modelo de classes Tela de Cadastro
consistência,
aparência,
validação,
organização,
customizações,
etc.
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 7 de 44
8. www.3layer.com.br
Motivação
>> motivação
Regras clássicas
Classe Tela
Atributo Controle
Relacionamento Link
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 8 de 44
9. www.3layer.com.br
Motivação
>> motivação
Regras clássicas Implementando as regras clássicas
Classe Tela
A classe de dados
Atributo Controle public class Cliente { 1
String nome;
Relacionamento Link Cidade naturalidade;
boolean ativo;
}
O cadastro gerado
Cadastro de Clientes
1
Nome
Naturalidade
Ativo
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 9 de 44
10. www.3layer.com.br
Motivação
>> motivação
Regras clássicas Implementando as regras clássicas
Classe Tela
A classe de dados
Atributo Controle public class Cliente {
2 String nome;
Relacionamento Link Cidade naturalidade;
boolean ativo;
}
O cadastro gerado
Cadastro de Clientes
Nome 2
Naturalidade
Ativo
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 10 de 44
11. www.3layer.com.br
Motivação
>> o objetivo da ferramenta
Regras clássicas Implementando as regras clássicas
Classe Tela
A classe de dados
Atributo Controle public class Cliente {
String nome;
Relacionamento Link Cidade naturalidade; 3
boolean ativo;
}
O cadastro gerado
Cadastro de Clientes
Nome
Naturalidade
Ativo
3
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 11 de 44
12. www.3layer.com.br
O objetivo da ferramenta
>> algumas definições
Gerar TCs elementares com o menor esforço possível
Um exemplo de interface elementar a ser gerada
O código essencial
new JFrame().add(
Merlin.createIhc(Usuario.class)
).setVisible(true);
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 12 de 44
13. www.3layer.com.br
Algunas definições importantes
>> o processo
Contexto
É a relação entre o elemento e o ambiente em que ele ocorre
Algo é importante dependendo do local onde ele está
Empirismo
É o conhecimento baseado na experiência
Eu sei porque eu já fiz isso
É reativo
Heurística
É o conhecimento baseado em aproximações
Eu acho que sei porque eu já fiz algo parecido
É pró-ativa
Inferência
Obtém-se novos conhecimentos a partir de informações existentes
Quanto mais contexto, melhor
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 13 de 44
14. www.3layer.com.br
O processo
>> comparação
1. Cria-se as classes de dados
2. Opcionalmente, decora-se elas com anotações
3. Dentro da aplicação, invoca-se Merlin.createIhc
sobre a classe ou objeto
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 14 de 44
15. www.3layer.com.br
Uma pequena comparação
>> comparação
A mesma entrada e as diferentes saídas...
Uma classe de dados para teste ... ... ou em notação UML
public class Usuario {
long codigo;
String nome;
String observacoes;
String logradouro;
int numero;
Cidade cidade;
String complemento;
}
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 15 de 44
16. www.3layer.com.br
Uma pequena comparação
>> comparação
A mesma entrada e as diferentes saídas...
Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b)
Um gerador tradicional (a) Merlin (b)
usuario Cadastro de Usuário
Dicas
Dicas
codigo
O campo nome é obrigatório.
O campo logradouro é obrigatório
nome O campo número é obrigatório
cidade
Nome
logradouro Rua São Sepé
Endereço
numero 256
Cidade
complemento
Logradouro Rua São Sepé
observacoes
Número 256 Complemento
Cancelar Salvar
Observações
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 16 de 44
17. www.3layer.com.br
Uma pequena comparação
>> comparação
A mesma entrada e as diferentes saídas...
Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b)
Um gerador tradicional (a) Merlin (b)
usuario Cadastro de Usuário
Dicas
Dicas
codigo
O campo nome é obrigatório.
O campo logradouro é obrigatório
nome O campo número é obrigatório
cidade
Nome
logradouro Rua São Sepé
Endereço
numero 256
Cidade
complemento
Logradouro Rua São Sepé
observacoes
Número 256 Complemento
Cancelar Salvar
Observações
Porque Observações é uma caixa
de texto de múltiplas linhas?
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 17 de 44
18. www.3layer.com.br
Uma pequena comparação
>> comparação
A mesma entrada e as diferentes saídas...
Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b)
Um gerador tradicional (a) Merlin (b)
usuario Cadastro de Usuário
Dicas
Dicas
codigo
O campo nome é obrigatório.
O campo logradouro é obrigatório
nome O campo número é obrigatório
cidade
Nome
logradouro Rua São Sepé
Endereço
numero 256
Cidade
complemento
Logradouro Rua São Sepé
observacoes
Número 256 Complemento
Cancelar Salvar
Observações
Porque é Observações e não
Observacoes?
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 18 de 44
19. www.3layer.com.br
Uma pequena comparação
>> características gerais
A mesma entrada e as diferentes saídas...
Interfaces geradas por ferramentas tradicionais (a) e pelo Merlin (b)
Um gerador tradicional (a) Merlin (b)
usuario Cadastro de Usuário
Dicas
Dicas
codigo
O campo nome é obrigatório.
O campo logradouro é obrigatório
nome O campo número é obrigatório
cidade
Nome
logradouro Rua São Sepé
Endereço
numero 256
Cidade
complemento
Logradouro Rua São Sepé
observacoes
Número 256 Complemento
Cancelar Salvar
Observações
Qual é o campo da cidade
exibido na caixa de seleção?
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 19 de 44
20. www.3layer.com.br
Características gerais
>> características gerais
Essência
Não produzir código-fonte, mas sim renderizar a interface do sistema em
tempo de execução
Ser independente de framework gráfico
Protótipo em Swing
Previsão para JSF
Outras aplicações podem ser SWT, XUL e GWT
Baseada no modelo de objetos do sistema
Ter uma API minimalista
Anotações
Merlin.createIhc()
Reusar (e apostar em novos) padrões
EJB3 Persistence – JSR220
Hibernate Validator – JSR299 (JBoss Seam)
Java Beans Binding – JSR295
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 20 de 44
21. www.3layer.com.br
Características gerais
>> características gerais
Não utilizar metamodelo externo
Tudo reside nas classes compiladas do sistema
Utilizar ao máximo conceitos como heurísiticas,
empirismo, inferência baseada em contexto, etc.
Configuração por exceção
Reuso de histórico
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 21 de 44
22. www.3layer.com.br
Características gerais
>> características gerais
Não utilizar metamodelo externo
Tudo reside nas classes compiladas do sistema
Utilizar ao máximo conceitos como heurísiticas,
empirismo, inferência baseada em contexto, etc.
Configuração por exceção
O custo dos geradores tradicionais
Reuso de histórico
Custo
S1 S2 S3 Sn
Tempo
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 22 de 44
23. www.3layer.com.br
Características gerais
>> histórico
Não utilizar metamodelo externo
Tudo reside nas classes compiladas do sistema
Utilizar ao máximo conceitos como heurísiticas,
empirismo, inferência baseada em contexto, etc.
Configuração por exceção
O custo do Merlin
Reuso de histórico
Custo
S1
S2
S3
Sn
Tempo
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 23 de 44
24. www.3layer.com.br
O histórico
>> histórico
A busca por informações históricas pode ser feita no
próprio classpath do sistema
Em servidores de aplicação, tudo pode ser compartilhado
Em aplicações simples (standalone), as classes com
anotações podem ser exportadas junto
Classes nos servidores de aplicação
Root LIBs classes
C1 S1 classes
C2 S2 classes
Cn Sn classes
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 24 de 44
25. www.3layer.com.br
O histórico
>> slistaks
A busca por informações históricas pode ser feita no
próprio classpath do sistema
Em servidores de aplicação, tudo pode ser compartilhado
Em aplicações simples (standalone), as classes com
anotações podem ser exportadas junto
Classes nos servidores de aplicação
Root LIBs classes
C1 S1 classes
C2 S2 classes Histórico
Cn Sn classes
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 25 de 44
26. www.3layer.com.br
Slistaks
>> slistaks de graça
Informações de contexto, heurísticas, empirismo e
inferência são utilizados para:
Gerar corretamente nomes para labels
Mapear os tipos de controles em função do tipo de dado
Adicionar validadores, tamanho, etc.
Agrupamentos
Utilizando a ocorrência de termos para produzir o conteúdo em comboboxes
nome 110
status 12
codigo 110
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 26 de 44
27. www.3layer.com.br
Slistaks de graça
>> mais slistaks de graça
Google como fonte de informações
Relevância de campos pode ser obtida de forma online
O maior contexto gratuito do mundo: A internet
nome : 212 milhões
O termo nome é mais
significativo, logo ele é usado
na caixa de seleção
codigo : 148 milhões
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 27 de 44
28. www.3layer.com.br
Mais slistaks de graça
>> ainda slistaks de graça
Dicionários de sinônimos
Para inferir mapeamentos de controles
observacao = informacaoComplementar = outrasInformacoes
Todos geram textAreas
Utilizando um dicionário de sinônimos gratuito para inferir mapeamentos
observacao
Se observacao é (ou já foi) um
textArea, é provável que
outrasInformacoes também o seja
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 28 de 44
29. www.3layer.com.br
Ainda slistaks de graça
>> eu adoro slistaks
Algoritmos de similaridade
Para detectar aproximações e inferir correspondências
observacao = observacoes
Muitos frameworks na web
Utilizando um framework externo para identificar similaridades
System.out.print(
StringMetrics.compare(“observacao”,”observacoes”)
);
//imprime 0.8 (entre 0 e 1)
Por exemplo, se o valor for maior que 0.5
os termos são conceitualmente iguais. Se
observacao é (ou já foi) um textArea, é
provável que observacoes também seja
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 29 de 44
30. www.3layer.com.br
Eu adoro slistaks
>> agrupamentos
Corretores ortográficos
Para gerar labels
observacao = observação
Utilizando corretores ortográficos disponíveis no próprio ambiente
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 30 de 44
31. www.3layer.com.br
Agrupamentos
>> dependências
Agrupando controles nas telas
Requisito
Os campos Cidade, Rua e Número devem ser exibidos em conjunto
Criando um agrupamento simples
A tela A classe de dados
Cadastro de Clientede Cliente
Cadastro 1 @Group(caption=“Endereço”,fiel
Dicas
2 ds=“cidade,rua,numero”)
Nome 3 class Cliente {
Endereço 4 String nome;
Cidade 5 Cidade cidade;
Rua 6 String rua;
Número 7 String numero;
8 }
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 31 de 44
32. www.3layer.com.br
Dependências
>> agentes
Vinculando controles nas telas
Requisito
Se o cliente possuir cheque especial, habilitar limite de crédito
Criando dependências simples
A tela A classe de dados
Cadastro de Clientede Cliente
Cadastro 1 class Cliente {
Dicas
2 String nome;
Nome
3 @Dependence(“limite”)
Possui cheque
4 boolean possuiCheque;
Limite
5 double limite;
Cancelar Salvar 6 }
7
8
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 32 de 44
33. www.3layer.com.br
Agentes
>> agentes
Derivados da linguagem Eiffel, agentes são
elementos que podem ser plugados na IU e
executar funções diversas, como:
Tratamento de eventos
Invocação de regras de negócio
Definição de propriedades O conceito de agentes
Execução de Scripts
Eventos
Controle Scripts
de
tela ? Regras de negócio
Propriedades
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 33 de 44
34. www.3layer.com.br
Agentes
>> agentes
Derivados da linguagem Eiffel, agentes são
elementos que podem ser plugados na IU e
executar funções diversas, como:
Tratamento de eventos
Invocação de regras de negócio
Definição de propriedades O conceito de agentes
Execução de Scripts
Eventos
Controle Scripts
de Agentes
tela Regras de negócio
Propriedades
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 34 de 44
35. www.3layer.com.br
Agentes
>> agentes
Agentes na execução de regras de negócio
Requisito
Ao preencher o salário do cliente, se ele não tiver débitos deve ser
habilitado um cartão de crédito para ele.
Conectando eventos e regras de negócio
A tela A classe de dados
Cadastro de Clientede Cliente
Cadastro 1 class Cliente {
Dicas
2 String nome;
Nome
3 @Agent(
Salário
4 event={“focusLost”},
Cartão de crédito
5 action={“habilitarCartao”})
Cancelar Salvar 6 float salario;
7 boolean cartaoCredito;
8 }
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 35 de 44
36. www.3layer.com.br
Agentes
>> agentes
Agentes na execução de regras de negócio
Requisito
Ao preencher o salário do cliente, se ele não tiver débitos deve ser
habilitado um cartão de crédito para ele.
Implementando a regra de negócio
1 public class AlgumasRegras {
2 public void habilitarCartao() {
3 JTextField salario = (JTextField)
4 Merlin.getControle(“cliente.salario”);
5 //processa a regra de negócio...
6 JCheckBox cartao = (JCheckBox)
7 Merlin.getControle(“cliente.cartaoCredito”);
8 cartao.setEnabled(!debitos);
9 }
10 }
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 36 de 44
37. www.3layer.com.br
Agentes
>> agentes
Agentes na execução de regras de negócio
Requisito (agora de forma assíncrona)
Ao preencher o salário do cliente, se ele não tiver débitos deve ser
habilitado um cartão de crédito para ele.
Conectando eventos e regras de negócio de forma assíncrona
A tela A classe de dados
Cadastro de Clientede Cliente
Cadastro 1 class Cliente {
Dicas
2 String nome;
Nome
3 @Async @Agent(
Salário
4 event={“focusLost”},
Cartão de crédito
5 action={“habilitarCartao”})
Cancelar Salvar 6 float salario;
7 boolean cartaoCredito;
8 }
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 37 de 44
38. www.3layer.com.br
Agentes
>> agentes
Agentes na definição de propriedades de controles
Requisito
Aplicar uma borda verde saliente sobre o nome do cliente.
Uma interface com controle customizado
A tela A classe de dados
Cadastro de Clientede Cliente
Cadastro 1 class Cliente {
Dicas
2 @Agent(
Nome
3 property={“border=BorderFac
Salário tory.createLineBorder(Color
4 .green,2)”})
Cartão de crédito
5 String nome;
Cancelar Salvar
6 float salario;
7 boolean cartaoCredito;
8 }
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 38 de 44
39. www.3layer.com.br
Agentes
>> agentes
Agentes na execução de scripts (BeanShell, Groovy, etc.)
Requisito
Criar uma regra externa configurável para calcular o limite de
crédito do cliente em função do valor do salário.
Utilizando agentes para externalizar comportamentos através de scripts
A tela A classe de dados
Cadastro de Clientede Cliente
Cadastro 1 class Cliente {
Dicas
2 String nome;
Nome
3
@Agent(
Salário script={“/scripts/calc.js”})
4 float salario;
Limite de crédito
5 float limiteCredito;
Cancelar Salvar
6 }
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 39 de 44
40. www.3layer.com.br
Agentes
>> layout
Agentes na execução de scripts (BeanShell, Groovy, etc.)
Requisito
Criar uma regra externa configurável para calcular o limite de
crédito do cliente.
O script externo escrito em BeanShell
/scripts/calc.js
1 var salario = new Float(this.caller.getText());
2
3 var limite =
4 Merlin.getControle(“cliente.limiteCredito”);
5
6 limite.setText(salario * 0.3);
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 40 de 44
41. www.3layer.com.br
Layout
>> layout
O posicionamento de controles é totalmente executado por
algoritmos, os quais utilizam
Gerenciadores de layout (TableLayout, JGoodies Forms)
Heurísiticas, UI patterns, regras de usabilidade
Configurações via anotações
Customizações
Simples
Uso de anotações
Complexas
Implementação de novos algoritmos
Malucas
Design manual
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 41 de 44
42. www.3layer.com.br
Layout
>> layout
Alterando o layout via anotações
Modificando algumas coisas
Redefinindo a ordem de controles e a posição de labels na tela
A tela A classe de dados
Cadastro de Clientede Cliente
Cadastro
1 class Cliente {
Salário 2 @Order(after=“observacoes”)
Observações
3 String nome;
Observações
5 4 float salario;
5 @Caption(pos=Caption.TOP_LEFT)
2 Nome
6 String observacoes;
7 }
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 42 de 44
43. www.3layer.com.br
Layout
>> layout
Alterando o layout via anotações
Modificando tudo de uma vez
Redefinindo a ordem de controles e a posição de todos os labels na tela
A tela A classe de dados
Cadastro de Clientede Cliente
Cadastro
1 @Caption(pos=Caption.TOP_LEFT)
Salário
2 class Cliente {
Observações
3 @Order(after=“observacoes”)
4 String nome;
5 float salario;
Nome 6 String observacoes;
7 }
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 43 de 44
44. www.3layer.com.br
Layout
>> layout
Criando um layout maluco
1. Cria-se uma classe IU com o layout desejado
Um exemplo de layout manual
O template
TemplateMaluco extends JPanel
Cadastro de Cliente
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 44 de 44
45. www.3layer.com.br
Layout
>> layout
Criando um layout maluco
2. Define-se nomes de controles idênticos aos que serão
gerados
Um exemplo de layout manual
O template
TemplateMaluco extends JPanel
Cadastro de Cliente
salario
lblSalario
lblObservacoes
observacoes
lblNome
nome
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 45 de 44
46. www.3layer.com.br
Layout
>> extensões
Criando um layout maluco
3. Executa-se a geração passando o template como
parâmetro
Merlin.createIhc(Cliente.class, TemplateMaluco.class);
Um exemplo de layout manual
O template
Cadastro de Cliente
Cadastro de Clientede Cliente
Cadastro
Salário
Observações
Nome
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 46 de 44
47. www.3layer.com.br
Extensões
>> extensões
Modificando os controles de tela gerados
Uma interface padrão
A classe de dados A tela gerada
1 class Cliente { Cadastro de Cliente Cliente
Cadastro de
Dicas
2 String nome;
Nome
3 Cidade naturalidade
Naturalidade
4 }
Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 47 de 44
48. www.3layer.com.br
Extensões
>> extensões
Modificando os controles de tela gerados
Uma interface com controle customizado
A classe de dados A tela gerada
1 class Cliente { Cadastro de Clientede Cliente
Cadastro
Dicas
2 String nome;
Nome
3 @RenderAs(Lookup.class)
Naturalidade
4 Cidade naturalidade
5 } Cancelar Salvar
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 48 de 44
49. www.3layer.com.br
Extensões
>> estágio atual e perspectivas
Modificando os controles de tela gerados
Uma interface com controle customizado
A classe de dados A tela gerada
1 class Cliente { Cadastro de Clientede Cliente
Cadastro
Dicas
2 String nome;
Nome
3 @RenderAs(Lookup.class)
Naturalidade
4 Cidade naturalidade
5 } Cancelar Salvar
Criando o controle customizado
1 class Lookup extends JPanel
2 implements IRenderer {
3 //metodos para binding do controle
4 }
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 49 de 44
50. www.3layer.com.br
Estágio atual e perspectivas
>> EOF
Divulgação
Alfa release disponível
Controles básicos, agentes, layout e anotações essenciais
Telas de cadastro simples
Parte teórica em desenvolvimento
Binding
Telas mestre-detalhte
Integração com outros frameworks
Captação de recursos financeiros
Para 2008
Início: Beta release em Swing
Final: Beta release em JSF
2009 em diante
Gerência de realimentação
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 50 de 44
51. www.3layer.com.br
Fim
www.3layer.com.br
Conteúdo
http://merlin.dev.java.net
http://merlin.3layer.com.br
http://treelayer.dev.java.net
Contato
http://groups.google.com/group/treelayer-merlin
Histórias
http://telasdecadastro.blogspot.com
Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 51 de 44