Compartilhar via


Por Dentro do Task Pane Manager do Visual FoxPro 8.0

Aprender sobre o Task Pane Manager do Visual FoxPro 8.0: como os painéis internos funcionam, como a arquitetura do Task Pane Manager está estruturada e como criar seus próprios painéis de tarefas dinâmicos, incluindo complexos, que incorporam os dados XML, vincular-se a recursos de Internet, executar o código do Visual FoxPro e exibir controles aprimorados. Por fim, aprenda a publicar seus painéis de tarefas e compartilhá-los com outros.

Introdução

Task Pane Manager

Personalizando Painéis

Criando seu Primeiro Painel de Tarefas

Arquitetura do Task Pane Manager Arquitetura do Task Pane Manager

Técnicas Avançadas

Publicando e Instalando Painéis de Tarefas

Conclusão

Introdução

O Task Pane Manager do Visual FoxPro é um novo aprimoramento do IDE (Integrated Development Environment) do Visual FoxPro versão 8.0. Isso ajuda a experiência de desenvolvimento no Visual FoxPro. O Task Pane Manager gerencia painéis individuais que são usados para executar tarefas diárias essenciais fáceis de serem concluídas. Os painéis ajudam a descobrir recursos novos e existentes, apresentam assistentes e ferramentas para concluir tarefas simples, exibir Ajuda, exemplos presentes e entregar conteúdo dinâmico à área de trabalho do Visual FoxPro. O Task Pane Manager é semelhante à página inicial do Visual Studio, mas como você verá em breve, é muito mais flexível e, com certeza, extensível.

Os painéis podem conter XML/XSLT Dynamic HTML, exibir páginas da Web inteiras, chamar XML Web services ou apresentar controles Visual FoxPro. Os painéis são carregados no Task Pane Manager, cuja arquitetura suporta painéis de suplemento e personalizações do painel. Os fornecedores de terceiros podem fornecer conteúdo dinâmico especializado, Ajuda, e instalar aplicativos ou ferramentas por meio de seu próprio painel de tarefas. Isso também significa que os desenvolvedores do Visual FoxPro podem facilmente modificar painéis existentes para satisfazer suas necessidades e compartilhar painéis de tarefas com outro para arquivar o resultado em um rápido desenvolvimento do aplicativo.

Neste artigo, irei introduzir o Task Pane Manager e explicar brevemente como funciona o conjunto de painéis de tarefas que a Microsoft oferece. Irei mostrar como criar rapidamente painéis de tarefas simples e como personalizar os painéis existentes. Em seguida, irei abordar a arquitetura e falar como criar painéis de tarefas dinâmicos, complexos incluindo alguns que solicitam o XML Web services, formatar e exibir dados XML, vincular-se a recursos da Internet, executar o código do Visual FoxPro e exibir controles aprimorados. Também irei mostrar como publicar seus painéis de tarefas e distribuí-los a outros desenvolvedores.

Task Pane Manager

Você pode abrir o Task Pane Manager a partir do menu Tools do Visual FoxPro ou clicando no ícone Task Pane localizado na barra de ferramentas padrão do Visual FoxPro. O Task Pane Manager é basicamente um recipiente que exibe o conteúdo dentro de um painel. Esse é um formulário redimensionável com duas seções—a barra de ferramentas e a área do painel (Figura 1). A barra de ferramenta sempre é exibida e contém botões do link do painel personalizável pelo usuário que carregam os painéis especificados na área do painel. Também há botões para Task Pane Manager Options, um botão refresh, que carrega novamente o painel atual e um menu que exibe o restante dos links do painel que não apareceu na barra de ferramentas. É na área do painel que o conteúdo específico do painel é exibido.

ms965177.TaskPaneMgr_Detalhes_img_001(pt-br,MSDN.10).gif

Figura 1 O Task Pane Manager do Visual FoxPro com o painel Start exibido

Muitos painéis padrão acompanham o Visual FoxPro 8.0. Eles ajudam você a concluir rapidamente as tarefas fornecendo acesso às ferramentas RAD, assistentes e códigos de exemplo. Alguns puxam conteúdo dinâmico da Internet diretamente para sua área de trabalho de modo que a Microsoft possa mantê-lo atualizado com informações relacionadas ao produto, notícias da comunidade, documentos e informações do XML Web service. Pode-se fazer o download desse tipo de conteúdo para painéis baseados em suas configurações de cache.

Cada painel de tarefas armazena qualquer conteúdo ou código criado ou necessário em seu cache do painel. O cache do painel para um painel específico está localizado em uma pasta baseada no ID em sua pasta HOME(7), ou seja, \Documents and Settings\UserName\Application Data\Microsoft\Visual FoxPro 8\TaskPane\PaneCache\PaneUniqueID. Para painéis dinâmicos, esse é o local onde se faz download e armazena conteúdo da Internet. Por padrão, sempre que é aberto, o Task Pane Manager verifica o novo conteúdo da Internet. Você define essa opção a partir de Task Pane Manager Options que pode ser acessado a partir do botão Options na barra de ferramentas. Selecione Task Pane Manager na exibição de árvore para verificar as configurações globais para o Task Pane Manager (Figura 2). Nesta seção, você também pode especificar qual painel deve ser exibido quando você abrir o Task Pane Manager bem como se ele deve ser aberto automaticamente ao iniciar o Visual FoxPro. Por padrão, cada painel que faz o download de conteúdo da Internet presta atenção à configuração global Check for new Internet content aqui especificada.

ms965177.TaskPaneMgr_Detalhes_img_002(pt-br,MSDN.10).gif

Figura 2 O Task Pane Manager Options exibe opções globais bem como opções específicas para cada painel.

Você pode controlar a freqüência de download de conteúdo da Internet para seu cache do painel selecionando as seguintes opções: Você pode controlar a freqüência de download de conteúdo da Internet para seu cache do painel selecionando as seguintes opções:

Every time you start the Task Pane Manager

Selecione esta opção se você estiver online, mas possuir uma conexão lenta. É feito o download do novo conteúdo apenas uma vez a cada sessão.

Every time the pane is loaded

Selecione esta opção se você estiver online com uma conexão de Internet constante e de alta velocidade. Sempre que o painel é carregado, é feito o download do conteúdo, e o cache é sempre atualizado.

Every x days

Selecione esta opção se você tiver acesso à Internet, mas possuir uma conexão lenta. Apenas o novo conteúdo é puxado para um painel se o prazo de X ou mais dias estiver esgotado.

Never

Selecione esta opção se você estiver off-line e não possuir acesso à Internet. O conteúdo do painel é sempre obtido a partir do cache.

Você pode modificar essa configuração para painéis individuais selecionando o nome do painel a partir da exibição de árvore e especificando a opção apropriada. Alguns painéis de tarefa que a Microsoft distribui possuem opções adicionais específicas do painel. Caso haja opções a serem configuradas, elas aparecerão à direita quando o painel for selecionado a partir da exibição de árvore. Por exemplo, os painéis que possuírem várias seções podem ser configurados para exibir somente as seções que você desejar. Os nomes das seções aparecem como caixas de seleção que, por padrão, estão todas marcadas.

Painel de Tarefas Start

O painel Start é exibido na primeira vez em que o Task Pane Manager é aberto. Este painel apresenta quarto seções: Start, My Tools, Recent Projects e Recent Databases. Ele também apresenta um link no final que abre Task Pane Manager Options. A seção Start exibe conteúdo a partir de um arquivo XML na Internet. Ele pode conter links para tópicos de Ajuda, documentos, assistentes e a outros sites da Web. Quando a Microsoft atualiza o conteúdo, é feito o download dele para esta seção do painel Start periodicamente dependendo de suas configurações de cache. A seção My Tools fornece acesso rápido a ferramentas, utilitários e script que você geralmente executa quando está no IDE. Clique em Manage para abrir o aplicativo My Tools e definir suas ferramentas. Quando você fecha o formulário, o painel é atualizado, e a lista de suas ferramentas aparece em uma lista suspensa. Selecione uma ferramenta a partir da lista e clique em Run para executar a ferramenta.

As seções Recent Projects e Recent Databases exibem os projetos e bancos de dados abertos mais recentemente. Isso é referido como uma lista MRU (most recently used). Essas seções lêem e exibem essa informação a partir de seu arquivo de recurso do FoxPro (FOXUSER). Essas seções listam o nome do projeto/banco de dados, caminho e data abertos recentemente. Clique no nome do projeto ou do banco de dados para abri-lo. Clique em Open Project ou em Open Database para abrir um projeto ou banco de dados que não está na lista. Clique em New Project ou New Database para criar um novo projeto ou banco de dados.

O painel Start é um painel HTML e pode possuir qualquer elemento de HTML ou Dynamic HTML apresentado na área do painel. Isso será explicado posteriormente neste documento, mas por enquanto saiba que os painéis que usam linguagens mark-up são hospedados no controle ActiveX do Navegador Web do Internet Explorer. Desse modo, quando um hiperlink for ativado, o Visual FoxPro pode interceptar o evento e executar o código. É dessa forma que os aplicativos, arquivos de Ajuda e as caixas de diálogo são chamados ao clicar em um hiperlink. Por exemplo, Manage executa o aplicativo My Tools. Para obter mais informações, consulte "Using Built-In Handlers" neste documento.

Painel de Tarefas Community

O painel Community exibe o conteúdo útil da comunidade a partir de provedores confiáveis na Internet. Ele lista links da comunidade, downloads, artigos, treinamento, tópicos e notícias a partir de FoxCentral, Universal Thread e FoxPro Wiki no subtítulo News. Por padrão, apenas FoxCentral aparece. Você pode selecionar os demais provedores e fornecer o nome de usuário e senha para Universal Thread em Task Pane Options. (É necessário o registro para o Universal Thread antes de acessar o conteúdo que ele fornece; no entanto, a participação básica é gratuita.) Os itens podem ser classificados em ordem crescente e decrescente por data, título ou provedor selecionando as listas suspensas apropriadas acima dos itens de notícia. Expanda um item de notícia para visualizar sua descrição clicando no sinal de mais (+) ao lado do item. Para abrir o item, clique no título, que é um hiperlink que abre o URL do item em uma janela do navegador.

O painel Community é um painel XML que chama XML Web services para recuperar o conteúdo no formato de dados XML. Se você clicar com o botão direito do mouse na área do painel e selecionar View Source a partir do menu de atalho, XML é exibido (Figura 3). Os dados XML que retornam de cada um dos provedores são, então, transformados em um formato padrão e exibidos no painel com um arquivo XLS estático localizado no cache do painel chamado News.xsl. XSLT oferece a classificação nos dados XML.

ms965177.TaskPaneMgr_Detalhes_img_002(pt-br,MSDN.10).gif

Figura 3 O painel Community exibe dados XML recuperados de XML Web services.

Painel de Tarefas Environment Manager

O painel Environment Manager exibe conjuntos de ambiente e projetos associados que você define usando uma ferramenta chamada Environment Manager. É onde você pode organizar configurações de ambiente em grupos e projetos associados a eles. Quando você abre um projeto a partir deste painel, ele executa as configurações de ambiente antes de o projeto abrir. O aplicativo Environment Manager está localizado no diretório base do Visual FoxPro e é chamado EnvMgr.app. Ele armazena os conjuntos de ambiente que você criou em uma tabela localizada em sua pasta HOME(7) e é chamado EnvMgr.dbf. Como o painel Community, o Environment Manager também é um painel XML. No entanto, em vez de obter dados XML a partir de Web services na Internet, ele seleciona dados a partir da tabela EnvMgr.dbf em um cursor e retorna XML usando a função CURSORTOXML. Ele então exibe os dados XML usando o arquivo XSL estático localizado no cache do painel chamado Envmgr.xsl.

Painel de Tarefas Solution Samples

O painel Solution Samples apresenta uma lista que pode ser pesquisada de todas as soluções e os exemplos do Visual FoxPro contidos na pasta Samples\ no diretório base do Visual FoxPro. Ele exibe informações sobre os exemplos armazenados em duas tabelas de dados: um está localizado na pasta Samples\Solution e é chamado Solution.dbf, e o outro está localizado no cache do painel chamado Solutionaddins.dbf. O Solution.dbf contém informações sobre os exemplos que a Microsoft apresenta com o Visual FoxPro. O Solutionaddins.dbf é onde são mantidos os suplementos de exemplo que você instalou. Você pode ter exemplos de código que outros usuários fornecem incluídos aqui se for distribuído com o código de exemplo um suplemento de solução. Clique no botão Install Sample no final do painel de tarefas para localizar o arquivo de suplemento manifesto. O arquivo de manifesto é um arquivo XML que contém informações sobre o exemplo e a categoria a que ele pertence

< solutions vendor="VendorName" name="SolutionSetName">
< category key="CategoryKey">
< text>CategoryName< /text>
< image>PaneCacheImageFileName< /image>
< solution key="SampleKey" parent="CategoryKey">
< text>SampleName< /text>
< type>SampleType< /type>
< file>FileNameWithoutPath< /file>
< description>< ![CDATA[DescriptionText]]>< /description>
< /solution>
< /category>
< /solutions>

Use esse formato para adicionar uma solução a uma categoria nova ou existente definindo o valor do atributo pai do elemento da solução para referir-se ao atributo da chave no elemento da categoria. O elemento descritivo do nó de solução pode ser uma seção CDATA de modo que HTML possa ser exibido na seção de descrição do exemplo. O elemento de imagem refere-se a um nome de imagem contido no cache do painel Microsoft.Solutions. Se você não especificar uma imagem, será exibida uma imagem padrão. Os elementos de arquivo e tipo de exemplo são usados para determinar como executar ou exibir o exemplo quando ele for executado ou quando o código for visualizado. Os valores para o elemento do tipo estão listados na seguinte tabela.

Valor

Significado

F

´Formulário

R

Relatório

Q

Consulta

V

Exibição

A

Aplicativo

C

Programa(PRG)

P

Projeto

M

Arquivo está aberto usando o comando MODIFY FILE

D

Abrir Banco de Dados

S

Abrir o arquivo com o ShellExecute

Por exemplo, você faz o download de um exemplo que inclui um manifesto e coloca-o na pasta \Samples\Solutions\MySamples\. O arquivo de manifesto é o seguinte:

< ?xml version='1.0' encoding='windows-1252' standalone='no'?>
< solutions vendor="Massi" name="MySamples">
< category key="Massi_Samples">
< text>Beth's Cool Samples< /text>
< image>frm< /image>
< solution key="mysample" parent="Massi_Samples">
< text>My Cool Sample< /text>
< type>F< /type>
< file>mysample< /file>
< method>< /method>
< description>< ![CDATA[See how easy it is to create a manifest and install sample add-ins! Now < a href="vfps:linkto?url=http://www.bethmassi.com"> check out my website< /a> for more samples!]]>
< /description>
< /solution>
< /category>
< /solutions>

No painel Solution Samples, clique em Install Sample e vá ao arquivo de manifesto. O exemplo é adicionado à lista de categorias de exemplo que podem ser pesquisados (Figura 4).

ms965177.TaskPaneMgr_Detalhes_img_004(pt-br,MSDN.10).gif

Figura 4 Use exemplo de arquivos de manifesto do suplemento para instalar exemplos de terceiros diretamente no painel de tarefas.

Suplementos de exemplo podem ser removidos expandindo o exemplo na árvore e clicando no link Remove Imagem à direita.

A última seção do painel Solution Samples é uma seção dinâmica que puxa dados de um arquivo na Internet. Quando a Microsoft atualiza esse arquivo com links para sites que fornecem suplementos de exemplo, os links são exibidos nessa seção.

O painel Solution Samples é um dos painéis mais interessantes incluídos no Task Pane Manager. É um painel HTML controlado por um programa localizado no cache do painel chamado Solutions.prg. Esse programa também executa pesquisas e atualiza o painel usando Dynamic HTML por meio dos resultados XML armazenados em uma ilha de dados do Internet Explorer. O XML na ilha de dados é definido como a fonte de dados de uma tabela de resultados que é exibida na caixa de texto de pesquisa. Isso demonstra como você pode usar o código do Visual FoxPro para interagir facilmente com painéis de tarefas HTML, tirando vantagem do DOM (Document Object Model) do Internet Explorer. Você verá posteriormente um exemplo sobre como interagir com o Internet Explorer a partir do código do Visual FoxPro. Para obter mais informações sobre data islands, Dynamic HTML e DOM no Internet Explorer, consulte o Desenvolvimento na Web e MSXML 4.0 SDK na Biblioteca MSDN.

Painel de Tarefas XML Web Services

Pelo fato de a Microsoft ter ativado a Web programável, os XML Web services recebem um perfil muito maior nessa versão do Visual FoxPro. A partir do painel de tarefas XML Web Services, há mais ferramentas disponíveis para ajudá-lo a gerenciar, publicar e registrar XML Web services. Aqui você pode acessar ferramentas do XML Web services e explorar métodos de serviço. Selecione um XML Web service a partir da lista suspensa para testar os métodos e visualizar o código proxy. Também há uma seção dinâmica no final deste painel que puxa os dados de um arquivo na Internet que contém as informações mais recentes da Microsoft a respeito dos XML Web services.

O painel XML Web Services é um painel HTML que exibe informações sobre seus XML Web services registrados armazenados na tabela Foxws3.dbf localizada no diretório base do Visual FoxPro. O dado é selecionado a partir dessa tabela no formato de XML e é transformado em uma lista de serviços disponíveis. Quando você seleciona um serviço a partir da lista, o código executado usa as ferramentas do XML Web service.

Painel de Tarefas Filer

Filer é uma ferramenta com data anterior aos dias do Visual FoxPro. Ela ajuda a localizar e editar arquivos em seu computador. Sua funcionalidade está exposta em uma biblioteca COM chamada Filer.dll que contém a lógica do aplicativo, mas nenhuma interface de usuário. Você pode usar a biblioteca em seus aplicativos ao criar uma interface de usuário. O painel de tarefas Filer faz isso fornecendo uma interface de usuário que é acessada por meio do Task Pane Manager.

O painel de tarefas Filer (Figura 5) é um exemplo do uso de controles rich do Visual FoxPro em um painel de tarefas. Os controles são hospedados em uma classe que herda da classe PaneContainer do task Pane Manager e são armazenados em uma biblioteca de classe chamada Filer.vcx localizada no cache do painel. A classe PaneContainer define o recipiente para trabalhar com o Task Pane Manager. Quando você cria painéis de tarefas que usam controles rich do Visual FoxPro, você herda dessa classe.

ms965177.TaskPaneMgr_Detalhes_img_005(pt-br,MSDN.10).gif

Figura 5 O painel Filer herda da classe PaneContainer e contém controles rich do Visual FoxPro.

Painel de Tarefas Minesweeper

O painel Minesweeper é uma versão do Visual FoxPro do jogo minesweeper do Windows. Este painel também exibe controles rich do Visual FoxPro. No entanto, ao invés de a definição do painel ser armazenada em um arquivo de biblioteca de classe (.vcx), ela é definida em um arquivo de programa chamado Mines.prg localizado no cache do painel. Esse programa também apresenta um ótimo exemplo de como usar a classe Collection no Visual FoxPro.

Personalizando Painéis

Você pode facilmente alterar a ordem dos botões de link do painel de tarefas na barra de ferramentas do Task Pane Manager ou reordenar o modo como o conteúdo aparece nos painéis. Também é fácil alterar os nomes dos painéis e as teclas de acesso nos botões de link do painel ou remover os painéis que nunca foram usados.

A personalização da ordem dos botões de link do painel pode ser feita a partir de Task Pane Manager Options. Clique no botão Options na barra de ferramentas, selecione o nome do painel a partir da exibição de árvore à esquerda e então use os botões Move Up e Move Down acima da árvore para posicionar o painel no local desejado. Clique em OK para fechar o formulário, e os botões de link do painel aparecem na ordem que você especificou.

Para alterar o nome e as teclas de acesso dos botões de link na barra de ferramentas Task Pane Manager, use o formulário Customization (Figura 6).

É nesse formulário que você também cria, instala, exclui, edita e publica painéis de tarefas. Você usa esse formulário durante quase todo este artigo de modo que você estará acostumado com sua funcionalidade. Esse formulário pode ser acessado a partir de Task Pane Manager Options selecionando a categoria Task Pane Manager Customize a partir da exibição de árvore e então selecionando o botão Customize Panes à direita. Esse formulário contém uma exibição de árvore dos nomes dos painéis e das informações do conteúdo do painel à direita. Esse formulário também não possui janela restrita, de modo que o Task Pane Manager pode ser acessado a qualquer momento. Você pode clicar em Apply no final do formulário e imediatamente ver suas alterações no Task pane manager sem precisar fechar o formulário de personalização. Isso é prático ao criar seus próprios painéis, conforme você verá posteriormente.

ms965177.img_006(pt-br,MSDN.10).gif

Figura 6 É no formulário Pane Customization que você cria, instala, exclui, edita e publica painéis de tarefas.

Você pode alterar o nome e a tecla de acesso do painel de tarefas no campo Name da guia General. Use a sintaxe como na imagem, no nome para especificar a tecla de acesso. Por exemplo, a caixa Name do painel Start mostra alterações. suas com Manager Pane Task ferramenta de barra a atualizar para Apply em clique e nome novo um Digite painel. o acesso tecla como ALT+S indicando painel do link botão no ?Start? exibe isso>Também há uma exibição de árvore no centro do formulário Pane Customization que contém os nomes das subseções de conteúdo do painel. Os tipos de painel que são XML ou HTML podem ter várias seções. Falaremos mais sobre as subseções do conteúdo posteriormente, mas basicamente as subseções permitem que os painéis de tarefas interajam com os dados a partir de várias fontes e apresentem esses dados em um único painel. O conteúdo da seção pode ser mesclado e exibido de uma maneira unificada, como o painel Community, ou o conteúdo pode ser exibido em sua própria área do painel, como o painel Start.

As seções de conteúdo podem ser reordenadas em painéis que exibem cada uma delas na própria subseção do painel (Figura 7). Por exemplo, o painel Start possui quatro seções que são exibidas em áreas distintas no próprio painel. Reordene o conteúdo selecionando a seção a partir da exibição de árvore do conteúdo e clicando nas setas para cima e para baixo na barra de ferramenta de conteúdo para especificar o novo local. Clique em Apply no final do formulário para atualizar o painel de tarefas com suas alterações.

ms965177.img_006(pt-br,MSDN.10).gif

Figura 7 Você pode reordenar as seções específicas do conteúdo em um painel de tarefas usando o formulário Pane Customization.

Caso haja painéis que você nunca usou, é possível removê-los do Task Pane Manager. Os painéis de tarefa que a Microsoft distribui não podem ser excluídos permanentemente; no entanto, você pode marcar esses painéis como inativos. Selecione o nome do painel a partir da exibição de árvore do painel e clique na caixa de seleção Inactive na parte inferior à esquerda do formulário Pane Customization. Quando você clica em Apply, o painel não está visível a partir da barra de ferramenta Task Pane Manager ou de Task Pane Options.

Você pode usar o formulário Pane Customization para alterar qualquer outra informação usada pelos painéis e não somente personalizações simples. Você verá os detalhes desse formulário enquanto cria seus próprios painéis de tarefa, mas sinta-se à vontade para modificar outras configurações e explorar como os painéis funcionam. Se necessário, você pode restaurar o Task Pane Manager ao seu conteúdo original clicando no botão Restore to Default em Task Pane Manager Options na categoria Task Pane Manager -> Customize.

Criando Seu Primeiro Painel de Tarefas

O tipo mais simples de painel de tarefas que você pode criar é um que exibe um site da Web na Internet ou na intranet de sua empresa. Você pode exibir sites usados com mais freqüência ao trabalhar no Visual FoxPro como painéis de tarefas de modo que eles estejam diretamente disponíveis a partir do IDE do Visual FoxPro.

Para criar um painel de tarefa, abra o formulário Pane Customization e selecione New na barra de ferramenta do painel. Uma caixa de diálogo aparece solicitando o nome do fornecedor e o ID único do painel (Figura 8). Por padrão, os IDs únicos para os painéis possuem o formato de VendorName.Sys(2015). A função SYS do Visual FoxPro (2015) retorna um único nome de 10 caracteres. Quando você digita o nome do fornecedor, o formulário automaticamente coloca o nome como o prefixo do ID único, por exemplo, MyCompany._0VC0UV6D2. Você pode digitar outro ID que seja mais fácil de lembrar, mas ele deve ser único se você pretende distribuir os painéis para outros desenvolvedores. Isso ocorre porque, quando você faz alterações em seus painéis e redistribui esses painéis às pessoas, o Task Pane Manager irá atualizar ou instalar o painel baseado em seu ID único.

ms965177.TaskPaneMgr_PainelTask_img_008(pt-br,MSDN.10).gif

Figura 8 Define um painel de tarefas Web Padeje primeiro especificando o nome do fornecedor e o ID único.

Para o primeiro painel de tarefa, digite Search MSDN, e selecione Web Page na caixa Pane Type. Em seguida, clique em OK para ver o painel adicionado à exibição de árvore do painel. Também é criado um nó de Search MSDN na exibição de árvore do conteúdo à direita, e a guia General é exibida. Você pode selecionar uma imagem a ser exibida no Task Pane Manager clicando no botão Select Image; caso contrário, será fornecida uma imagem padrão. Para especificar o endereço na Web, clique na guia Data e digite o URL na caixa de texto que é fornecida. Nesse caso, use http://www.google.com/microsoft.html.. Clique em Apply e selecione o link do painel Search MSDN para exibir o site. Os links marcados nesse tipo de painel navegam no painel inteiro para o URL selecionado.

Esse tipo de painel deve fornecer acesso fácil aos sites a partir do IDE do Visual FoxPro, mas você irá notar que o Task Pane Manager não possui todos os controles de interface de usuário do navegador da Web, isto é, a barra de endereço da Web. No entanto, você pode ativar o menu de atalho para acessar o movimento back/forward bem como a fonte e as propriedades das páginas. Devido a essas limitações, ao invés de exibir o site diretamente de um painel de tarefas, pode ser mais útil exibir uma lista de hiperlinks que abrem o navegador. Você pode criar um painel de tarefas HTML que faz isso exibindo o conteúdo estático a partir de um arquivo HTML em seu computador.

O arquivo HTML pode ser da maneira que você deseja. No entanto, para o objetivo deste exemplo, você irá apenas criar um arquivo HTML simples no Bloco de notas chamado Static.htm.

< html>
< head>
< title>My Search Links< /title>
< /head>
< body>
< h2>My Search Links< /h2>
< p>The HTML text here came from a file on my computer called static.htm. It was copied into the pane cache when I created the pane in the Pane Customization form. This means when I distribute my pane, this file will also be distributed. You can verify what files are being distributed in the pane cache by selecting the < b>View Files< /b> option button at the top right of the Pane Customization form.< /p>
< p>
< a HREF="vfps:linkto?url=http://www.google.com/microsoft.asp">Search MSDN with Google< /a>
< /p>
< p>
< a href="vfps:linkto?url=http://search.microsoft.com/advanced_search.asp?siteid=us/dev">Search MSDN with Microsoft< /a>
< /p>
< /body>
< /html>

Agora crie um novo painel de tarefas chamado Search Link e selecione HTML na caixa Pane Type. Para usar o arquivo HTML estático, na guia Data selecione File como Source e localize o arquivo Static.htm em seu computador. Quando você especificar arquivos estáticos como parte de um painel, eles são copiados automaticamente para o cache do painel. Quando você publica painéis, os arquivos no cache do painel são automaticamente empacotados e distribuídos. Você pode verificar quais arquivos estão sendo distribuídos no cache do painel selecionando o botão de opção View Files na parte superior à direita do formulário Pane Customization. Quando o arquivo for copiado para o cache, você deverá fazer alterações na cópia de cache a partir da exibição de arquivos selecionando o botão Edit; caso contrário, você pode remover e ler o arquivo (Figura 9).

ms965177.TaskPaneMgr_PainelTask_img_009(pt-br,MSDN.10).gif

Figura 9 A exibição de arquivos permite que você gerencie todos os arquivos estáticos do painel que estão incluídos no cache do painel.

Até agora você provavelmente está notando a sintaxe estranha nos hiperlink nesse arquivo. A sintaxe vfps:linkto?url= serve como prefixo para o URL atual. Esse é um recurso interno do Task Pane Manager chamado manipulador. Você irá prestar bastante atenção a todos os manipuladores internos e como definir seu próprio manipulador quando for discutida a arquitetura do Task Pane Manager. Por enquanto, saiba apenas que essa sintaxe pede para o painel abrir o link em uma nova janela do navegador. Ao clicar em Apply no formulário Pane Customization, você verá que o painel exibe o arquivo HTML estático. Se você clicar nos hiperlinks, os URLs abrem em uma nova janela do navegador, e o painel de tarefas permanece fixo.

ms965177.TaskPaneMgr_PainelTask_img_010(pt-br,MSDN.10).gif

Figura 10 O Task Pane Manager fornece um conjunto de manipuladores internos que permitem que você abra uma nova janela do navegador a partir de um hiperlink.

O material anterior é realmente a dica fundamental ao se tratar de todas as maneiras possíveis para a criação de painéis de tarefas. Você compreendeu os fundamentos da criação de painéis simples, mas até agora o conteúdo foi, digamos, cansativo. No entanto, para criar painéis de tarefa dinâmicos, flexíveis e do recurso rich como os que a Microsoft oferece, será necessário revisar a arquitetura do Task Pane Manager e os internos sobre como reproduzir painéis de tarefa.

Técnicas Avançadas

Como você provavelmente já notou, há várias maneiras de criação de painéis de tarefa. Nesta seção, você irá criar um painel de tarefa HTML complexo que chama um XML Web service, puxa conteúdo dinâmico a partir de um arquivo na Internet e executa algum código de manipulador personalizado.

Chamando XML Web Services

Para a primeira subseção de conteúdo do painel, você chama um XML Web service. Você pode facilmente chamar XML Web services a partir de painéis de tarefa para recuperar e exibir conteúdo. Por exemplo, se você possui uma intranet de empresa que fornece informações corporativas por meio de um XML Web service, é possível hospedar facilmente uma interface dentro do painel de tarefas. Do mesmo modo, os criadores de XML Web services podem publicar painéis de tarefa do Visual FoxPro que conectam-se aos seus serviços. Para esse exemplo, você chama um .NET XML Web service publicamente disponível que recupera informações de ação baseada em um símbolo de ação. Esse é um bom exemplo do uso de informações de opção personalizadas em um painel para coletar o símbolo do Task Pane Options.

No formulário Pane Customization, clique no botão New na barra de ferramenta do painel e digite o nome do seu fornecedor, o nome do painel My HTML e selecione HTML como o Pane type. A seção do conteúdo raiz My HTML é exibida na árvore de conteúdo. Clique no botão Add na barra de ferramenta do conteúdo e digite My Stock Quote para o nome da seção do conteúdo. Você também pode digitar um ID único. Nesse caso, use MASSI.QUOTE como o unique ID para esta subseção. Na guia Data, para Source selecione Web Service. Chamar um XML Web service desse modo é fácil. O Task Pane Manager manipula a configuração do código proxy apropriado para você. No entanto, se você precisar controlar a solicitação e resposta SOAP, é possível selecionar Script como Source e digitar o código. Nesse caso, você também pode selecionar a caixa na parte inferior da guia Data, "Source of this content is from the Internet”, que indica ao Task Pane Manager que ele deve exibir as opções de cache para a subseção do painel em Task Pane Options.

No campo WSDL URL, insira o local do arquivo WSDL usando o seguinte serviço:

No campo WSDL URL, insira o local do arquivo WSDL usando o seguinte serviço:

http://www.webservicex.net/stockquote.asmx?WSDL

Como esse é um .NET XML Web service, você pode explorar o serviço indo até:

http://www.webservicex.net/stockquote.asmx

Esse serviço possui um método chamado GetQuote que aceita um símbolo de ação como uma seqüência de caracteres. Você cria uma opção para inserir o símbolo de ação no campo Method da seguinte maneira:

GetQuote("##stocksymbol##")

Para criar a opção, selecione a guia Options e clique em New para criar uma nova opção. Na caixa de diálogo que aparece, digite o nome da opção, "stocksymbol", e uma legenda, "Stock Symbol" (Figura 13).

ms965177.TaskPaneMgr_Tecnicas_img_013(pt-br,MSDN.10).gif

Figura 13 Você pode criar opções de painel personalizadas que aparecem em Task Pane Options para seu painel.

Agora você especifica a transformação. Esse XML Web service retorna a informação de ação formatada como XML. Por exemplo, chamar o método GetQuote e passar um parâmetro de MSFT retorna o seguinte:

< StockQuotes>
< Stock>
< Symbol>MSFT< /Symbol>
< Last>23.60< /Last>
< Date>2/26/2003< /Date>
< Time>4:01pm< /Time>
< Change>-0.59< /Change>
< Open>24.08< /Open>
< High>24.47< /High>
< Low>23.58< /Low>
< Volume>57314560< /Volume>
< MktCap>252.6B< /MktCap>
< PreviousClose>24.19< /PreviousClose>
< PercentageChange>-2.44%< /PercentageChange>
< AnnRange>20.705 - 32.50< /AnnRange>
< Earns>0.87< /Earns>
< P-E>27.80< /P-E>
< Name>MICROSOFT CP< /Name>
< /Stock>
< /StockQuotes>

Para exibir isso em um painel HTML, você especifica uma transformação em HTML. Você pode fazer isso no código ou usar XSLT. O código ou XSLT pode vir de um local na Internet, um arquivo em seu computador ou até mesmo de outro Web service. Para esse exemplo, você pode usar texto estático e digitar a definição da folha de estilos XSLT. Na guia Transform Data, selecione XSL como Type e Static Text como Source. A seguinte folha de estilos transforma somente os seguintes elementos: Name, Symbol, Last, Change e PercentageChange.

< xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
< xsl:template match="StockQuotes">
< TABLE BORDER="0" >
< xsl:apply-templates select="Stock"/>
< /TABLE>
< /xsl:template>

< xsl:template match="Stock">
< TR>
< TD>Company< /TD>
< TD>: < xsl:value-of select="Name"/>< /TD>
< /TR>
< TR>
< TD>Symbol< /TD>
< TD>: < xsl:value-of select="Symbol"/>< /TD>
< /TR>
< TR>
< TD>Last< /TD>
< TD>: < xsl:value-of select="Last"/>< /TD>
< /TR>
< TR>
< TD>Change< /TD>
< TD>: < xsl:value-of select="Change"/>< /TD>
< /TR>
< TR>
< TD>Change %< /TD>
< TD>: < xsl:value-of select="PercentageChange"/>< /TD>
< /TR>
< TR>
< TD colspan="2">< a href="vfps:options?uniqueid=MASSI.QUOTE">Change Symbol< /a>< /TD>
< /TR>
< /xsl:template>
< /xsl:stylesheet>

Essa folha de estilos transforma o XML em uma tabela HTML. Esse HTML é apenas uma parte do painel inteiro. Se você chamar novamente, o painel transforma todos os dados das subseções antes de executar a transformação final. Nesse caso, a transformação final cria todo o documento HTML. Para exibir as subseções da definição do painel nas próprias seções, especifique que o dado mesclado a partir das subseções devem estar no formato XML. Você, então, define a transformação final de modo que você veja a saída do painel final quando você cria o restante das seções.

Selecione o nó do conteúdo raiz My HTML a partir da árvore de conteúdo e selecione a guia Data. Selecione Static Text como Source e insira a seguinte informação:

< VFPData>
< !-- XMLCONTENT -->
< /VFPData>

Na guia Transform Data, selecione XSL como Type e Static Text como Source. Em seguida, insira a transformação final:

< xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
< xsl:output method="html" />
< xsl:template match="VFPData">
< HTML>
< TITLE>< /TITLE>
< HEAD>
< STYLE>
BODY {
font-family:verdana;
font-size:9pt;
}
TD {font-size:9pt}
TD.TableTitle
{
font-family: Verdana;
font-size: 9pt;
font-weight: bold;
background-color: #0066CC;
padding:2px;
color: #FFFFFF
}
TABLE { margin-bottom:12px }
< /STYLE>
< /HEAD>
< BODY>
< TABLE BORDER="0" width="100%" cellpadding="0" cellspacing="0" >
< xsl:for-each select="PaneContent">
< TR>< TD class="TableTitle">< xsl:value-of select="PaneTitle" disable-output-escaping="no"/>< /TD>< /TR>
< TR>< TD >< xsl:value-of select="HTMLText" disable-output-escaping="yes"/>< /TD>< /TR>
< /xsl:for-each>
< /TABLE>
< /BODY>
< /HTML>
< /xsl:template>
< /xsl:stylesheet>

Isso define um estilo para esse painel e retira cada um dos nomes da seção do conteúdo e os dados transformados. No caso da seção My Stock Quote, os dados transformados estão em uma tabela HTML. Clique em Apply na parte inferior do formulário Pane Customization e abra Task Pane Manager Options. Selecione o painel My HTML a partir da árvore e selecione a categoria My Stock Quote. Insira um símbolo de ação na caixa de texto e clique em OK. Vá ao painel de tarefas e você verá a informação de ação. Você irá notar que há um link para Task Pane Options para ir diretamente à opção Stock Symbol a partir do painel usando um manipulador interno (Figura 14).

ms965177.img_014(pt-br,MSDN.10).gif

Figura 14 Você pode facilmente chamar Web services e especificar opções personalizadas para as subseções do painel.

Exibindo Informações Dinâmicas

Na próxima seção, você irá ler os dados a partir de um arquivo na Internet. Essa técnica pode ser uma alternativa para chamar um XML Web service se o conteúdo alterar com menos freqüência e a informação for facilmente criada por uma pessoa e não por um computador. Por exemplo, os fornecedores de ferramenta podem fornecer links para Ajuda e recursos, documentos e artigos online ou o site comercial criando um arquivo na Internet e tendo um painel que lê o arquivo. Quando os links forem atualizados, as informações são atualizadas em todos os painéis de tarefa dos desenvolvedores. A Microsoft usa essa técnica para exibir informações dinâmicas nos painéis de tarefa Start, Solution Samples e XML Web Services.

Para este exemplo, você cria um arquivo XML que exibe links para um fornecedor de ferramenta fictício chamado "Cool Tools". O arquivo é chamado Coolinfo.xml e contém as seguintes informações:

< ?xml version='1.0' encoding='windows-1252' standalone='no'?>
< VFPData>
< content>
< name>Cool Tools Home Page< /name>
< link>
< ![CDATA[vfps:linkto?url=http://www.massitools.com/default.htm]]>
< /link>
< desc>Take a tour of all the Cool Tool products!< /desc>
< /content>
< content>
< name>Cool Tools Reference< /name>
< link>
< ![CDATA[vfps:linkto?url=http://www.massitools.com/help.htm]]>
< /link>
< desc>Access the Cool Tools Help file.< /desc>
< /content>
< content>
< name>Cool Tools News< /name>
< link>
< ![CDATA[vfps:linkto?url=http://www.massitools.com/news.htm]]>
< /link>
< desc>Get the most up-to-date information on Cool Tools.< /desc>
< /content>
< /VFPData>

Há três nós de conteúdo definidos no arquivo XML que apresentam descrições breves e URLs para páginas da Web na Internet (os URLs neste exemplo não existem). Teoricamente, esse arquivo está no site comercial de Cool Tools na Web. Esse site não existe de verdade, de modo que para esse exemplo você pode colocar o arquivo no seu próprio site ou no servidor local. No entanto, o arquivo não precisa estar em um servidor Web. Ele pode estar localizado em um compartilhamento de rede, ou você pode colocá-lo em sua unidade de disco rígido. Tenha em mente que esse arquivo não é distribuído com o painel de tarefas; dessa forma, colocá-lo em sua unidade local é somente para fins de teste.

Para definir a subseção do conteúdo dinâmico, clique no botão Add na barra de ferramentas do conteúdo e nomeie-o para "What's New with Cool Tools." Abra a guia Data e selecione URL para Source. Na caixa de texto, digite o URL para o arquivo:

http://www.massitools.com/coolinfo.xml

Se você colocou o arquivo em sua unidade C local para fins de teste, digite o seguinte na caixa de texto:

file://c:/coolinfo.xml

Agora especifique a transformação desse dado em HTML. Abra a guia Transform Data, selecione XSL como Type, Static Text como Source e digite a seguinte transformação do XSL:

< xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
< xsl:template match="VFPData">

< table border="0" width="100%" cellpadding="2" cellspacing="0" >
< xsl:apply-templates />
< /table>

< /xsl:template>

< xsl:template match="content" name="contents">
< xsl:variable name="linkvar" select="link"/>
< tr>
< td >
< a href="{$linkvar}">< xsl:value-of select="name"/>< /a>
< /td>
< /tr>
< tr>
< td class="description">
< xsl:text>- < /xsl:text>< xsl:value-of select="desc"/>
< /td>
< /tr>
< /xsl:template>
< /xsl:stylesheet>

Isso transforma o XML em uma tabela em HTML que será usada na transformação final do conteúdo raiz. Agora é possível fazer o download do conteúdo XML contido no arquivo Coolinfo.xml a partir do local especificado e armazenar em cache de acordo com as configurações de Task Pane Manager. Dessa forma, se não for possível estabelecer a conexão posteriormente, a cópia em cache é usada. Se o URL não foi atingido na primeira vez em que você abrir o painel, você poderá especificar os dados XML padrão para serem exibidos na guia Default Data. Geralmente, você somente copia os conteúdos do arquivo online para uma caixa de edição nessa guia. No entanto, você coloca qualquer dado lá contanto que tenha o mesmo formato do arquivo online para que a transformação funcione corretamente.

Agora clique em Apply, e o painel exibe a nova seção "What's New with Cool Tools” (Figura 15). Você verá o conteúdo XML exibido no painel. Se você modificar o arquivo Coolinfo.xml e clicar no botão Refresh no Task Pane Manager, a seção do conteúdo é atualizada. Essa é uma maneira de você colocar o conteúdo dinâmico nas áreas de trabalho dos usuários.

ms965177.img_015(pt-br,MSDN.10).gif

Figura 15 Você pode criar subseções do painel de tarefa que exibem conteúdo dinâmico a partir de arquivos na Internet.

Usando Manipuladores Personalizados e Interagindo com o Navegador

Você pode chamar código de manipuladores personalizados a partir de um hiperlink e manipular o HTML no painel a partir de seu código usando o objeto do navegador. Você cria um link que reinicia o Internet Information Server em seu computador local. Como esse processo pode levar algum tempo, as mensagens de status aparecem no painel enquanto os serviços IIS estão desligando ou iniciando o backup. Você chama o utilitário da linha de comando do IIS iisreset para fazer isso.

Crie uma nova subseção de conteúdo chamada Utilities. Na guia Data, selecione Static Text como Source. Digite o seguinte HTML:

< a href="vfps:runbatch?utility=iisreset">Restart IIS< /a>
< BR>
< span id=status>

Especifique um manipulador personalizado e passe a ele um parâmetro do utilitário iisreset. Esses dados também apresentam um elemento < SPAN > vazio que você usa para exibir mensagens de status no painel. Na guia Handler Code, especifique o código a ser executado ao clicar nesse link.

LPARAMETERS cAction, oParameters, oBrowser, oContent
LOCAL cUtility
cUtility = oParameters.GetParam("utility")
DO CASE
CASE cAction == "runbatch"
oBrowser.document.all.status.innerText = "Restarting IIS, please wait..."
RUN &cUtility
oBrowser.document.all.status.innerText = "IIS has been restarted."
ENDCASE

Para esse exemplo, também é possível especificar o manipulador como iisreset e o comando RUN. No entanto, esse processo demonstra como recuperar parâmetros a partir de objeto do parâmetro usando o método GetParam. Note também que as atualizações no painel são feitas definindo a propriedade innerText do elemento < SPAN > referindo-se ao seu ID, status. Você pode usar o objeto oBrowser para acessar o Document Object Model (DOM) e usar Dynamic HTML para manipular o painel para fazer o que você quiser. Como você está executando o código do Visual FoxPro, também é possível acessar qualquer recurso do Visual FoxPro que você normalmente usaria.

Isso aponta uma questão muito importante. Ao instalar painéis de tarefas, confie plenamente no provedor do painel. Como você pode ver, quando o painel de tarefas estiver instalado, ele poderá executar o código do Visual FoxPro em seu contexto de segurança. Portanto, tenha cuidado! Se você pretende se tornar um fornecedor de painéis de tarefa pela Internet, é possível assinar digitalmente seus downloads. A distribuição de painel dentro da comunidade do desenvolvedor é algo mais ou menos perigoso do que a troca de qualquer outro código – apenas fique atento com relação a quem o dá a você.

Agora clique em Apply, e o painel aparece na nova seção Utilities. Clique em Reset IIS para executar o utilitário da linha de comando iisreset. Note como as mensagens de status são exibidas no painel (Figura 16).

ms965177.img_016(pt-br,MSDN.10).gif

Figura 16 Você pode executar o código do manipulador personalizado para executar qualquer ação a partir de hiperlinks nos painéis de tarefa.

Se o código do manipulador for longo ou complexo, você pode chamar um programa ou uma biblioteca de classe. Nesse caso, seu manipulador chama um comando DO (ou NEWOBJECT) que especificou um nome de arquivo que você inclui no cache do painel. Por exemplo, você pode digitar o seguinte código:

LPARAMETERS cAction, oParameters, oBrowser, oContent
LOCAL cUtility
DO CASE
cUtility = oParameters.GetParam("utility")
CASE cAction == "runbatch"
oUtil = NEWOBJECT("MyUtilities", oContent.CacheDir + "myutilities.prg")
oUtil.RestartIIS
ENDCASE

Você adiciona o arquivo (no exemplo, Myutilities.prg) selecionando a opção View Files no formulário Pane Customization e clicando em Add na barra de ferramenta do arquivo. Esse arquivo é alterado automaticamente no pacote de distribuição. Observe o painel Solution Samples para obter um exemplo dessa técnica.

Publicando e Instalando Painéis de Tarefa

O formulário Pane Customization publica facilmente um painel de tarefa. Publicar um painel significa apenas que o conteúdo do painel e seus arquivos são colocados em um pacote de distribuição. Esse pacote é um arquivo XML que permite a distribuição e instalação de painéis para outros Task Pane Managers de desenvolvedores. Para publicar um painel, selecione o nome dele e clique no botão Publish na barra de ferramentas do painel. Será perguntado a você o que deseja publicar. Você pode publicar todos os painéis ou apenas as seções que você atualizou (Figura 17).

ms965177.img_017(pt-br,MSDN.10).gif

Figura 17 Você pode publicar todos os painéis ou apenas as seções do painel que você atualizou.

Por padrão, Publish all content in pane e Publish files associated with the pane estão selecionados. Isso indica que todas as seções do painel e todos os arquivos no cache do painel são colocados em um arquivo XML de instalação do painel. Se você selecionar Publish selected content only, os dados e arquivos relacionados às seções de conteúdo que você selecionou na caixa da lista são colocados no arquivo XML. Se você selecionar Publish files common to all panes, todos os arquivos no cache da raiz também são publicados. Esses arquivos são usados pelo Task Pane Manager para formatar erros e apresentar mensagens de status, de modo que você não precisa selecionar essa caixa de seleção a menos que tenha modificado ou adicionado a esses arquivos. Clique em OK e selecione um nome e local para o arquivo XML de instalação do painel. Agora apenas aquele arquivo XML precisa ser distribuído para outros usuários instalarem e atualizarem painéis no Task Pane Manager.

Para instalar um novo painel de tarefas, abra Task Pane Manager Options e selecione Task Pane Manager Customize a partir da exibição de árvore e clique no botão Install Pane. Vá ao pacote do painel de distribuição (panename.xml) e clique em OK. O painel aparece no final da lista.

Conclusão

Neste artigo você aprendeu a criar e distribuir conjuntos de ferramenta para suas equipes de desenvolvimento e a criar pacotes de instalação do conjunto de ferramenta. Você também aprendeu sobre a arquitetura da Caixa de Ferramentas e sobre a facilidade de estender a Caixa de Ferramentas criando comportamentos poderosos de suplemento. Além disso, você descobriu como desconsiderar comportamentos existentes e adicionar seus novos tipos de ferramentas e de categoria.