Top Banner
www.3layer.com.br Merlin www.3layer.com.br Um Novo Horizonte na Criação das Telas de Cadastro
51

Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Nov 01, 2014

Download

Technology

Marcelo Mrack

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.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

www.3laye

r.com.br

Merlin

www.3laye

r.com.br

Um Novo Horizonte na Criação das Telas de Cadastro

Page 2: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 2 de 44

www.3laye

r.com.br

Sumário

� Cenário

� A proposta

� Comparações

� Características e Funcionalidades

� O presente e o futuro

� EOF

>> panorama geral

Page 3: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 3 de 44

www.3laye

r.com.br

Sobre o autor

� Marcelo Mrack, [email protected]� 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

Page 4: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 4 de 44

www.3laye

r.com.br

Panorama geral

� Quanto custa construir um sistema

Meyers, Brad – User Interface Software Tools (1994,2002)

Referências

Sistema completo

Interface do usuário

TC

TC elementares

100%

50%

30%

18%

Custo de construção

2

2

1

1

12 Pesquisas próprias (2005,2006)

>> a construção da IU hoje

Page 5: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 5 de 44

www.3laye

r.com.br

A construção da IU hoje

� O cenário atual

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.

As diversas formas de construir interface de usuário e os problemas em comum

Abordagens Problemas recorrentes

� Escrita de código-fonte� Uso de ferramentas WYSIWYG1

� Uso de assistentes de criação� Geração baseada em modelos

� Templates� MDA

� Tempo elevado de construção� Quanto custa criar um template?

� Demora nas alterações� Como refatorar classes já geradas?� E se o código já foi alterado?

� Falta de reuso� 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?

>> a ferramenta proposta

Page 6: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 6 de 44

www.3laye

r.com.br

A ferramenta proposta

� 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

Tempo de projeto Tempo de execução

CAFE

class Cliente {String codigo;String nome;

}

new JFrame.add(Merlin.createIhc(Pessoa.class)

).setVisible(true);

>> motivação

Page 7: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 7 de 44

www.3laye

r.com.br

Motivação

� TC são funções do modelo de dados

consistência,aparência,validação,

organização,customizações,

etc.

A dependência da TC em relação ao modelo de dados

Modelo de classes Tela de Cadastro

>> motivação

Page 8: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 8 de 44

www.3laye

r.com.br

Motivação

� Regras clássicas

Classe Tela

Atributo Controle

Relacionamento Link

>> motivação

Page 9: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 9 de 44

www.3laye

r.com.br

Motivação

� Regras clássicasImplementando as regras clássicas

Classe Tela

Atributo Controle

Relacionamento Link

public class Cliente {

String nome;

Cidade naturalidade;

boolean ativo;

}

>> motivação

Nome

Cadastro de Clientes

Ativo

Naturalidade

SalvarCancelar

O cadastro gerado

A classe de dados

1

1

Page 10: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 10 de 44

www.3laye

r.com.br

Motivação

� Regras clássicasImplementando as regras clássicas

Classe Tela

Atributo Controle

Relacionamento Link

public class Cliente {

String nome;

Cidade naturalidade;

boolean ativo;

}

>> motivação

Nome

Cadastro de Clientes

Ativo

SalvarCancelar

O cadastro gerado

A classe de dados

2

2

Naturalidade

Page 11: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 11 de 44

www.3laye

r.com.br

Motivação

� Regras clássicasImplementando as regras clássicas

Classe Tela

Atributo Controle

Relacionamento Link

public class Cliente {

String nome;

Cidade naturalidade;

boolean ativo;

}

>> o objetivo da ferramenta

Nome

Cadastro de Clientes

Ativo

Naturalidade

SalvarCancelar

O cadastro gerado

A classe de dados

3

3

Page 12: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 12 de 44

www.3laye

r.com.br

O objetivo da ferramenta

� Gerar TCs elementares com o menor esforço possível

Um exemplo de interface elementar a ser gerada

>> algumas definições

O código essencial

new JFrame().add(Merlin.createIhc(Usuario.class)

).setVisible(true);

Page 13: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 13 de 44

www.3laye

r.com.br

Algunas definições importantes

� 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

>> o processo

Page 14: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 14 de 44

www.3laye

r.com.br

O processo

1. Cria-se as classes de dados

2. Opcionalmente, decora-se elas com anotações

3. Dentro da aplicação, invoca-se Merlin.createIhcsobre a classe ou objeto

>> comparação

Page 15: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 15 de 44

www.3laye

r.com.br

Uma pequena comparação

� A mesma entrada e as diferentes saídas...

Uma classe de dados para teste ...

public class Usuario {

long codigo;

String nome;

String observacoes;

String logradouro;

int numero;

Cidade cidade;

String complemento;

}

... ou em notação UML

>> comparação

Page 16: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 16 de 44

www.3laye

r.com.br

Uma pequena 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)

Nome

Cadastro de Usuário

DicasDicasO campo nome é obrigatório.O campo logradouro é obrigatórioO campo número é obrigatório

Logradouro Rua São Sepé

Número 256 Complemento

Cidade

Endereço

Observações

SalvarCancelar

nome

usuario

logradouro Rua São Sepé

numero 256

complemento

cidade

observacoes

SalvarCancelar

codigo

>> comparação

Page 17: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 17 de 44

www.3laye

r.com.br

Uma pequena 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)

Nome

Cadastro de Usuário

DicasDicasO campo nome é obrigatório.O campo logradouro é obrigatórioO campo número é obrigatório

Logradouro Rua São Sepé

Número 256 Complemento

Cidade

Endereço

Observações

SalvarCancelar

nome

usuario

logradouro Rua São Sepé

numero 256

complemento

cidade

observacoes

SalvarCancelar

codigo

Porque Observações é uma caixa de texto de múltiplas linhas?

>> comparação

Page 18: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 18 de 44

www.3laye

r.com.br

Uma pequena 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)

Nome

Cadastro de Usuário

DicasDicasO campo nome é obrigatório.O campo logradouro é obrigatórioO campo número é obrigatório

Logradouro Rua São Sepé

Número 256 Complemento

Cidade

Endereço

Observações

SalvarCancelar

nome

usuario

logradouro Rua São Sepé

numero 256

complemento

cidade

observacoes

SalvarCancelar

codigo

Porque é Observações e não Observacoes?

>> comparação

Page 19: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 19 de 44

www.3laye

r.com.br

Uma pequena 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)

Nome

Cadastro de Usuário

DicasDicasO campo nome é obrigatório.O campo logradouro é obrigatórioO campo número é obrigatório

Logradouro Rua São Sepé

Número 256 Complemento

Cidade

Endereço

Observações

SalvarCancelar

nome

usuario

logradouro Rua São Sepé

numero 256

complemento

cidade

observacoes

SalvarCancelar

codigo

Qual é o campo da cidade exibido na caixa de seleção?

>> características gerais

Page 20: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 20 de 44

www.3laye

r.com.br

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

>> características gerais

Page 21: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 21 de 44

www.3laye

r.com.br

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

>> características gerais

Page 22: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 22 de 44

www.3laye

r.com.br

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óricoO custo dos geradores tradicionais

Tempo

CustoS1 S2 S3 Sn

>> características gerais

Page 23: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 23 de 44

www.3laye

r.com.br

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óricoO custo do Merlin

Tempo

CustoS1

S2S3 Sn

>> histórico

Page 24: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 24 de 44

www.3laye

r.com.br

O 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

>> histórico

Root LIBs classes

S1

S2

Sn

C1

C2

Cn

classes

classes

classes

Page 25: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 25 de 44

www.3laye

r.com.br

O 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

>> slistaks

Root LIBs

Histórico

classes

S1

S2

Sn

C1

C2

Cn

classes

classes

classes

Page 26: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 26 de 44

www.3laye

r.com.br

Slistaks

� 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

12

110nome

status

codigo 110

>> slistaks de graça

Page 27: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 27 de 44

www.3laye

r.com.br

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

codigo : 148 milhões

O termo nome é mais significativo, logo ele é usado

na caixa de seleção

>> mais slistaks de graça

Page 28: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 28 de 44

www.3laye

r.com.br

Mais 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

>> ainda slistaks de graça

Se observacao é (ou já foi) um textArea, é provável que

outrasInformacoes também o seja

Page 29: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 29 de 44

www.3laye

r.com.br

Ainda slistaks de graça

� 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

>> eu adoro slistaks

Page 30: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 30 de 44

www.3laye

r.com.br

Eu adoro slistaks

� Corretores ortográficos� Para gerar labels

� observacao = observação

Utilizando corretores ortográficos disponíveis no próprio ambiente

>> agrupamentos

Page 31: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 31 de 44

www.3laye

r.com.br

Agrupamentos

� Agrupando controles nas telas� Requisito

� Os campos Cidade, Rua e Número devem ser exibidos em conjunto

Criando um agrupamento simples

A classe de dadosA tela

@Group(caption=“Endereço”,fields=“cidade,rua,numero”)

class Cliente {

String nome;

Cidade cidade;

String rua;

String numero;

}

Cadastro de Cliente

Dicas

Nome

SalvarCancelar

Cadastro de Cliente 1

2

3

4

5

6

7

8

>> dependências

Rua

Número

Cidade

Endereço

Page 32: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 32 de 44

www.3laye

r.com.br

Dependências

� Vinculando controles nas telas� Requisito

� Se o cliente possuir cheque especial, habilitar limite de crédito

Criando dependências simples

A classe de dadosA tela

class Cliente {

String nome;

@Dependence(“limite”)

boolean possuiCheque;

double limite;

}

Cadastro de Cliente

Dicas

Nome

SalvarCancelar

Cadastro de Cliente

Limite

Possui cheque

1

2

3

4

5

6

7

8

>> agentes

Page 33: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 33 de 44

www.3laye

r.com.br

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

� Execução de Scripts

O conceito de agentes

Eventos

Scripts

Regras de negócio

Propriedades

Controledetela

>> agentes

?

Page 34: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 34 de 44

www.3laye

r.com.br

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

� Execução de Scripts

O conceito de agentes

Eventos

Scripts

Regras de negócio

Propriedades

Controledetela

Agentes

>> agentes

Page 35: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 35 de 44

www.3laye

r.com.br

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 classe de dadosA tela

class Cliente {

String nome;

@Agent(

event={“focusLost”},

action={“habilitarCartao”})

float salario;

boolean cartaoCredito;

}

Cadastro de Cliente

Dicas

Nome

SalvarCancelar

Cadastro de Cliente

Salário

Cartão de crédito

1

2

3

4

5

6

7

8

>> agentes

Page 36: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 36 de 44

www.3laye

r.com.br

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

public class AlgumasRegras {

public void habilitarCartao() {

JTextField salario = (JTextField)

Merlin.getControle(“cliente.salario”);

//processa a regra de negócio...

JCheckBox cartao = (JCheckBox)

Merlin.getControle(“cliente.cartaoCredito”);

cartao.setEnabled(!debitos);

}

}

1

2

3

4

5

6

7

8

9

10

>> agentes

Page 37: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 37 de 44

www.3laye

r.com.br

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 classe de dadosA tela

class Cliente {

String nome;

@Async @Agent(

event={“focusLost”},

action={“habilitarCartao”})

float salario;

boolean cartaoCredito;

}

Cadastro de Cliente

Dicas

Nome

SalvarCancelar

Cadastro de Cliente

Salário

Cartão de crédito

1

2

3

4

5

6

7

8

>> agentes

Page 38: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 38 de 44

www.3laye

r.com.br

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 classe de dadosA tela

class Cliente {

@Agent( property={“border=BorderFactory.createLineBorder(Color.green,2)”})

String nome;

float salario;

boolean cartaoCredito;

}

Cadastro de Cliente

Dicas

Nome

SalvarCancelar

Cadastro de Cliente

Salário

Cartão de crédito

1

2

3

4

5

6

7

8

>> agentes

Page 39: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 39 de 44

www.3laye

r.com.br

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 classe de dadosA tela

class Cliente {

String nome;

@Agent( script={“/scripts/calc.js”})

float salario;

float limiteCredito;

}

Cadastro de Cliente

Dicas

Nome

SalvarCancelar

Cadastro de Cliente

Salário

Limite de crédito

1

2

3

4

5

6

>> agentes

Page 40: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 40 de 44

www.3laye

r.com.br

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.

O script externo escrito em BeanShell

var salario = new Float(this.caller.getText());

var limite =

Merlin.getControle(“cliente.limiteCredito”);

limite.setText(salario * 0.3);

1

2

3

4

5

6

/scripts/calc.js

>> layout

Page 41: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 41 de 44

www.3laye

r.com.br

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

>> layout

Page 42: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 42 de 44

www.3laye

r.com.br

Layout

� Alterando o layout via anotações� Modificando algumas coisas

Redefinindo a ordem de controles e a posição de labels na tela

A classe de dadosA tela

class Cliente {

@Order(after=“observacoes”)

String nome;

float salario;

@Caption(pos=Caption.TOP_LEFT)

String observacoes;

}

Cadastro de ClienteCadastro de Cliente

Salário

1

2

3

4

5

6Nome

Observações

7

2

5Observações

>> layout

Page 43: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 43 de 44

www.3laye

r.com.br

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 classe de dadosA tela

@Caption(pos=Caption.TOP_LEFT)

class Cliente {

@Order(after=“observacoes”)

String nome;

float salario;

String observacoes;

}

Cadastro de ClienteCadastro de Cliente

Salário

1

2

3

4

5

6Nome

Observações

7

>> layout

Page 44: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 44 de 44

www.3laye

r.com.br

Layout

� Criando um layout maluco1. Cria-se uma classe IU com o layout desejado

Um exemplo de layout manual

O template

TemplateMaluco extends JPanel

Cadastro de Cliente

>> layout

Page 45: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 45 de 44

www.3laye

r.com.br

Layout

� Criando um layout maluco2. Define-se nomes de controles idênticos aos que serão

gerados

Um exemplo de layout manual

O template

Cadastro de Cliente

TemplateMaluco extends JPanel

lblSalario

salario

lblNome

nome

observacoes

lblObservacoes

>> layout

Page 46: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 46 de 44

www.3laye

r.com.br

Layout

� Criando um layout maluco3. Executa-se a geração passando o template como

parâmetroMerlin.createIhc(Cliente.class, TemplateMaluco.class);

Um exemplo de layout manual

O templateCadastro de Cliente

Cadastro de ClienteCadastro de Cliente

Salário

Nome

Observações

>> extensões

Page 47: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 47 de 44

www.3laye

r.com.br

Extensões

� Modificando os controles de tela geradosUma interface padrão

A classe de dados A tela gerada

Cadastro de Cliente

Dicas

Nome

Naturalidade

SalvarCancelar

Cadastro de Clienteclass Cliente {

String nome;

Cidade naturalidade

}

1

2

3

4

>> extensões

Page 48: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 48 de 44

www.3laye

r.com.br

Extensões

� Modificando os controles de tela geradosUma interface com controle customizado

A classe de dados A tela gerada

class Cliente {

String nome;

@RenderAs(Lookup.class)

Cidade naturalidade

}

Cadastro de Cliente

Dicas

Nome

Naturalidade

SalvarCancelar

Cadastro de Cliente1

2

3

4

5

>> extensões

Page 49: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 49 de 44

www.3laye

r.com.br

Extensões

� Modificando os controles de tela gerados

Criando o controle customizado

class Lookup extends JPanel

implements IRenderer {

//metodos para binding do controle

}

Uma interface com controle customizado

A classe de dados A tela gerada

class Cliente {

String nome;

@RenderAs(Lookup.class)

Cidade naturalidade

}

Cadastro de Cliente

Dicas

Nome

Naturalidade

SalvarCancelar

Cadastro de Cliente1

2

3

4

5

1

2

3

4

>> estágio atual e perspectivas

Page 50: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 50 de 44

www.3laye

r.com.br

Estágio atual e perspectivas

� 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

>> EOF

Page 51: Merlin Um Novo Horizonte Na Criacao Das Telas De Cadastro

Merlin - Um Novo Horizonte na Criação das Telas de Cadastro slide 51 de 44

www.3laye

r.com.br

Fim

www.3laye

r.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