Exemplo - Field Assist
Introdução
O exemplo do Field Assist demonstra como utilizar o suporte disponibilizado em org.eclipse.jface.fieldassist
para fornecer assistência de tarefa nos campos de texto. Uma caixa de diálogo de exemplo demonstra como configurar decorações de campo
para indicar campos obrigatórios, campos com erros e avisos, e campos que disponibilizam assistência de conteúdo. O
exemplo inclui igualmente uma página de preferências que lhe permite configurar as
decorações e o suporte de assistência de conteúdo.
Executar o exemplo
Quando o conector está instalado, deverá visualizar uma acção FieldAssist
na barra de acções. Seleccione o artigo de menu "Open Field Assist Dialog..."
Isto vai lançar a caixa de diálogo field assist. A caixa de diálogo pode ser configurada
utilizando as preferências do exemplo.
Definir as Preferências Field Assist
São fornecidas duas páginas de preferências para configurar o modo como a caixa de diálogo
se comporta. A página Field Assist Example Preferences permite configurar
a forma como o diálogo anota campos com erros e avisos,
campos requeridos e assistência de conteúdo. Pode ser utilizada uma combinação
de cores e decorações para anotar os campos. Esta página de preferências
pretende mostrar as possibilidades disponíveis ao configurar decorações. Está mais voltada para o programador que experimenta o field assist, não
tendo pretensões de ser um exemplo de uma boa página de preferências para deixar os
utilizadores finais controlar as anotações.
A página Content Assist
Preferences permite-lhe configurar a forma como a assistência de conteúdo é
instalada no campo de texto da caixa de diálogo. A maioria das opções fornecidas na
API field assist (ContentProposalAdapter) são configuráveis nesta página.
Repare que é possível configurar a assistência de conteúdos para uma experiência
de utilizador indesejável. Por exemplo, definir a assistência de conteúdo para fazer a auto-activação em todos
os caracteres utilizando um diferimento prolongado, não é desejável. Pode ser confuso
utilizar filtragem de propostas cumulativa quando as chaves de filtro não são
devolvidas ao controlo. O objectivo de expor a API na página de preferências é
permitir que o programador de field assist experimente todas as combinações possíveis. Não está previsto que qualquer destas preferências seja, alguma vez, exposta
a um utilizador final, mas sim que o programador escolha a melhor combinação destes
valores para proporcionar um determinado estilo de assistência de conteúdos.
Utilizar a caixa de diálogo
A caixa de diálogo de exemplo mostra vários tipos de campos diferentes:
- O campo User name é configurado como um campo obrigatório com assistência
de conteúdo. Este campo é considerado como estando errado quando é inserido um carácter não-alfabético
no campo. É considerado como estando no modo de aviso quando o nome "bob"
é escrito no campo.
- O campo Combo user name é configurado de forma semelhante, mas utiliza uma caixa de combinação
em vez de uma caixa de texto.
- O campo Age demonstra a utilização de um widget giratório com decorações.
É configurado como um campo obrigatório, mas não fornece um estado de erro. É considerado
como estando no modo de aviso quando é definida uma idade superior a 65 anos.
- O campo Password não utiliza quaisquer decorações na assistência de conteúdo.
É fornecido apenas para demonstrar a forma como campos não-decorados podem ser alinhados
com campos decorados.
Exemplo de código fonte
A caixa de diálogo de exemplo não é muito complexa, mas pretende demonstrar como programar
field assist. Seguem-se algumas notas relativas ao código fonte:
- Campos não-decorados podem ser dispostos em alinhamento com campos decorados, utilizando
o protocolo
FieldDecorationRegistry.getMaximumDecorationWidth()
.
- O conector de exemplo regista decoradores de campo padrão para indicar
a disponibilidade da assistência de conteúdo, marcar um campo como sendo obrigatório ou marcar
um campo que contenha um erro ou aviso. Em casos em que uma descrição de um decorador padrão
é utilizada em todos os campos, são utilizadas as decorações actuais do
registo. Em casos em que o campo forneça uma descrição exclusiva de um erro ou aviso,
uma decoração exclusiva contendo o texto é gerida pelo campo.
- SmartField e as respectivas subclasses são utilizados para fornecer validação
específica de campos, mensagens de erro e aviso, e recuperação de conteúdo para os
diferentes campos na caixa de diálogo. Esperamos que as aplicações forneçam
contextos similares (como associação de dados) para atingir este objectivo. Pretende-se que SmartField
mostre uma técnica simples para validar diferentes campos dentro de uma caixa de
diálogo. Não é considerado um exemplo de um contexto de definição
de campo semântico.