Revista MSDN Magazine Edição 23 - Smart Tags Simplifique o Desenvolvimento da UI no Visual Studio com Ações Customizadas

O artigo discute como podemos construir nossas próprias ações customizadas e as respectivas Smart Tags.

Clique aqui para ler todos os artigos desta edição

 

Smart Tags

Simplifique o Desenvolvimento da UI no Visual Studio com Ações Customizadas

por Michael Weinhardt

 

Este artigo é baseado numa versão de pré-liberação do Visual Studio 2005. Toda a informação contida nele está sujeita a mudança.

 

Este artigo discute

Este artigo usa as seguintes tecnologias:

·papel de ações do designer no Visual Studio

·propriedades de ações do designer e items de método

·como podemos construir nossas próprias ações customizadas e as respectivas Smart Tags

Visual Studio 2005

 

Download:

DesignerActions.exe (194KB)

Chapéu

Smart Tags

 

 

A janela de Propriedades que foi um esteio do modelo Windows® Forms em tempo de design, suporta a configuração de um componente completo ou controle em um único local. Visual Studio® 2005 complementou esta experiência com uma nova característica, conhecida como smart tags, que expõem configurações chave diretamente na area de design, para aumentar a produtividade global em tempo de desenvolvimento. Muitos componentes Windows Forms 2.0, expõem smart tags utilizando um subconjunto do Microsoft® .NET Framework 2.0 conhecido como Designer Actions. Da mesma maneira, podemos acrescentar smart tags aos próprios componentes personalizados e colher os mesmos benefícios. 

 

Introdução às Ações do Designer

Quando são selecionados componentes que suportam smart tag na área de design do Windows Forms, uma âncora de smart tag é exibida no topo da extremidade direita dos mesmos. A âncora é um botão que, quando clicado, abre o painel de smart tag. Um painel de smart tag é uma IU administrada pelo designer, que expõe configurações de componente como um conjunto de entradas de smart tag .NET. A Figura 1 ilustra estes elementos fundamentais. 

 

Figura 1 - Âncora de smart tag, Painel e Tarefas

 

Na infra-estrutura de ação do designer do Visual Studio 2005, entradas de smart tag são conhecidas como items de ação do designer e são colocadas em tempo de design, em grupos conhecidos como listas de ação do designer. Se um componente requerer suporte a smart tag, tem que passar ao designer Windows Forms, pelo menos uma lista de ação do designer que contenha um item de ação do designer. A mesma lista de ação do designer é passada então ao painel de smart tag que converte cada item de ação do designer em uma tarefa visual equivalente. 

 

Construindo uma Lista de Ação do Designer

Considerando que items de ação do designer precisam ser empacotados dentro de lista de ação, o melhor modo para começar a acrescentar suporte de smart tag ao componente, será pela construção de uma lista de ação. A infra-estrutura de ação implementa uma classe especial para representar listas de ação, adequadamente chamada de DesignerActionList. Como toda classe ação, DesignerActionList fica situado no namespace de System.ComponentModel.Design. Porém, fisicamente residem no assembly System.Design.dll que precisaremos referenciar no projeto antes de irmos em frente. 

A classe DesignerActionList é projetada para associar um ou mais items de ação com um único componente. A associação é feita por seu construtor que espera a referência de IComponent de um componente que também está exposto na propriedade somente leitura Component (read-only Component property):

 

public class DesignerActionList {

  public DesignerActionList(IComponent component);

  public IComponent Component { get; }

  ...

}

 

DesignerActionList não é uma lista no sentido de implementar IList ou ICollection. Ao invés disto, retorna uma lista de items de ação do designer armazenada em um DesignerActionItemCollection de seu método GetSortedActionItems. O modo de retornarmos sua própria lista de items de ação é derivando de DesignerActionList, sobrepormos GetSortedActionItems, e criarmos, preenchermos, e retornarmos um exemplo de DesignerActionItemCollection (se não fizermos esta sobreposição, a implementação padrão de GetSortedActionItems usará reflections para empacotar todos os métodos públicos e propriedades em  DesignerActionItems e retorná-los em ordem alfabética):

 

public class ClockControlDesignerActionList : DesignerActionList {

  ...

  public override DesignerActionItemCollection GetSortedActionItems() {

 

 // Cria uma lista armazenada de ações

 DesignerActionItemCollection actionItems =

new DesignerActionItemCollection();

 ...

 // Preenche e retorna a lista de ações

 return actionItems;

  }

}

 

DesignerActionItemCollection é uma coleção fortemente tipada que preenchemos com um ou mais objetos de DesignerActionItem. DesignerActionItem é uma classe abstrata que captura funcionalidades comuns a todas as ações do designer. Porém, por DesignerActionItem ser abstrato, não pode ser diretamente instanciado e, até mesmo se pudesse, seria muito genérico para ser de alguma utilidade. Ao invés disto, a infra-estrutura de ação provê várias derivações do DesignerActionItem cada uma das quais são especializadas para dar suporte a um estilo particular de item de ação. Uma dessas derivações, o DesignerActionPropertyItem, modela o que é possivelmente o tipo mais comum de item exibido em um painel de smart tag: a propriedade entrada." [...] continue lendo...

Artigos relacionados