Personalizadores para propriedades Java bean

Um personalizador consiste num diálogo adicional que os utilizadores podem lançar para alterar propriedades Java bean. Pode criar classes de personalizador para editar propriedades Java beans que adicione ao editor visual.

Uma classe de personalizador deve implementar a interfacejava.beans.Customizer, e deve ser também uma subclasse de java.awt.Component. Regra geral, um personalizador consiste num contentor como, por exemplo, java.awt.Panel ou javax.swing.JPanel que contém os controlos que permitem ver e manipular as propriedades dos Java beans. Quando se lança o personalizador com o botão da barra de ferramentas, fica alojado dentro de um diálogo que tem botões OK e Cancelar.

Quando um utilizador abre um personalizador, este último recebe o Java bean que estiver a personalizar como parte do método public void setObject(Object bean);. Em seguida, o personalizador pode efectuar alterações directamente ao argumento.

A interface java.beans.Customizer também tem os métodos public void addPropertyChangeListener(PropertyChangeListener listener); e public void removePropertyChangeListener(PropertyChangeListener listener). O editor visual irá adicionar-se a si próprio como ouvinte ao personalizador, e se a ideia for o personalizador renovar a aparência do Java bean na vista Concepção, deverá assinalar uma alteração de propriedades, chamando os respectivos ouvintes com qualquer dos métodos firePropertyChange(..., com qualquer conjunto de argumentos.

Quando o utilizador fazer clique em OK, o editor visual irá tentar determinar quais as alterações que o personalizador efectuou ao Java bean, de modo a poder actualizar o código fonte Java. Nesse sentido, o editor visual faz uma cópia de todas as propriedades do Java bean antes de o personalizador ser lançado, e depois compara-as com as propriedades quando o personalizador estiver fechado. Se houver propriedades diferentes (devolve falso ao método equals), fica determinado que houve alteração. Para determinar o argumento para o método set para a propriedade, é criado o editor de propriedades em java.beans.PropertyDescriptor. Em seguida, é chamado com public void setValue(Object) e public String getJavaInitializationString();. Do mesmo modo, ao fazer clique em Cancelar, como o personalizador já alterou o Java bean, o editor visual consulta o conjunto de propriedades e repõe as que forem diferentes no respectivo estado inicial.

Se o personalizador for uma interface de nível superior que não precise de um diálogo onde ser executada como, por exemplo, java.awt.Frame ou javax.swing.JFrame, o editor visual executará o personalizador tal como estiver. Dado que este tipo de personalizador é responsável pelo seu próprio conjunto de botões, e o editor visual não tem maneira de saber se foi cancelado ou confirmado, sempre que o personalizador for fechado, as propriedades de nível superior são consultadas para ver se sofreram alterações. Por conseguinte, se o personalizador executar um cancelamento terá de o fazer, assegurando assim que as propriedades do Java bean são restauradas no respectivo estado inicial.

Depois de se compor um personalizador, este necessita de ser definido no descritor de beans para a classe BeanInfo para o Java bean:

public class MyClassBeanInfo extends SimpleBeanInfo {
    public BeanDescriptor getBeanDescriptor() {
        return new BeanDescriptor(MinhaClasse.class,
MeuPersonalizador.class);
    }
}

(C) Copyright IBM Corporation 1999, 2004. Todos os direitos reservados.