14 mar 2011

Metadata Exclude

Continuando com a nossa série de posts sobre metadatas, dessa vez foi falar da metadata exclude. Essa metadata tem como principal objetivo esconder uma propriedade, efeito, evento ou estilo de um componente quando adicionado via MXML.

A metadata exclude não tem nenhuma utilidade quando estamos criando nosso componente sem utilizar nenhum outro componente como base, pois caso nosso objetivo seja esconder uma propriedade basta utilizarmos um modificador de acesso diferente de public, e caso seja esconder um efeito, evento ou estilo, basta não adicionar as metadatas Effect, Event ou Style.

Mas enfim, vamos a um exemplo prático.

No nosso exemplo, vamos extender a classe TextInput para criar uma nova caixa de texto chamada CPFInput. A CPFInput apenas limitará o usuário a digitar os valores entre 0 e 9, pontos e traços.

Criando a classe CPFInput.

1
2
3
4
5
6
7
8
9
10
11
12
13
package
{
    import spark.components.TextInput;

    public class CPFInput extends TextInput
    {
        public function CPFInput()
        {
            super();
            this.restrict = "0-9.-";
        }
    }
}

Criamos a nossa classe CPFInput e criamos uma restrição para digitar apenas os valores necessários.

Utilizando a nossa classe.


Quando vamos utilizar a classe CPFInput, ainda é possivel determinar um valor para a propriedade restrict. Caso haja mudanças nessa propriedade a nossa classe irá perder todo o sentido, e não será mais útil no contexto aplicado. Para evitar isso vamos adicionar a metadata Exclude.

Utilizando a metadata.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package
{
    import spark.components.TextInput;

    [Exclude(name="restrict", kind="property")]
    public class CPFInput extends TextInput
    {
        public function CPFInput()
        {
            super();
            this.restrict = "0-9.-";
        }
    }
}

Em sintaxe: [Exclude(name=”nome da propriedade, evento, efeito ou estilo”, kind=”property,event,effect,style”)]
Nesse passo, adicionamos a metadata Exclude para esconder a propriedade restrict.

Verificando as mudanças.


Agora não é mais possível ver a propriedade restrict quando utilizamos o componente via MXML.

Informações adicionais.

Apesar da metadata Exclude “esconder” a propriedade, o que o Flash Builder faz é simplesmente removê-la do auto-complete, caso o desenvolvedor digite a propriedade e atribua um valor a ela, o processo funcionará normalmente. Isso acontece pois não temos como alterar o modificador de acesso da propriedade, e somente “mascarar” o seu acesso.

Comments

  • Marcos CHi
    março 25, 2011 Responder

    Show!

  • LuyzGarcia
    agosto 10, 2011 Responder

    Muito bom, essa eu nao sabia…

Leave a Comment