Creare uno smart Tag con la tecnologia Visual Studio tools for office (VSTO)

In questo articolo, vedremo come creare uno smart tag tramite la tecnologia VSTO. L'articolo riguarda sia il linguaggio Visual Basic Net e sia il linguaggio C#.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

VSTO : Creare uno Smart Tag con la tecnologia .Net (VB.Net e C#)

Introduzione

In questo articolo vedremo come creare uno smart tag, tecnologia introdotta dalla versione Office xp. Gli smart tag è un immagine (figura 1), in cui viene visualizzata (per esempio quando si incolla un testo ) sopra una determinata parola, posizionando il mouse su tale immagini, permette di visualizzare un menu di scelta rapida le cui voci eseguono determinate azioni. Spesso tale immagine viene visualizzata insieme ad una sottolineatura, per indicare che avvicinando il mouse in prossimità della parola venga visualizzata l’immagine di smart tag per l’esecuzione di alcuni comandi.
Prima della tecnologia VSTO, la creazione dello smart tag comportava una maggiore stesura di codice, nonché intervenire nel registro di sistema di windows, bisognava implementare alcune classi della libreria di smart tag se occorreva creare smart tag con determinate funzionalità. Altrimenti, se qualora non si vuole creare un applicazione o dll e non si hanno grandi pretese, si può ricorrere alla creazione di un file xml, che copiato in un apposita cartella permette la visualizzazione di alcuni smart tag.

 

Figura 1
Aggiunta di un riferimento
Dopo aver fatto questa breve introduzione alla tecnologia smart tag, passiamo alla pratica, nel crearne uno.
Si apra visual studio tools for office e si crea un nuovo progetto di tipo office (come illustrato nell’articolo precedente), dopo aver selezionato il linguaggio di proprio interesse, aggiungiamo al progetto un riferimento a smart tag 2.0. Questo riferimento permette di inglobale nel nostro progetto le funzionalità per la creazione dei smart tag, per inserire un riferimento, selezionare tramite il tasto destro del mouse il nome del progetto nella finestra esplora soluzione e dal menu di scelta rapida, selezionare la voce aggiungi riferimento. In alternativa, dal menu progetto selezionare la voce aggiungi riferimento. Verrà aperta una finestra (figura 2) selezionare la linguetta com, e poi la voce “Microsoft Smart tag 2.0 type library”, a questo punto chiudete la finestra tramite il pulsante ok.

 

 

Figura 2
Aggiunta dei namespace
Per la creazione e la gestione dei smart tag, dobbiamo utilizzare il namespace Microsoft.Office.Tools.Word, il quale offre una serie di classi per la gestione dei smart tag nonché la loro creazione. Inseriamo tale namespace, in alto, sopra ad ogni dichiarazione, come riportato qui di seguito.
 
VB.Net

 Imports Microsoft.Office.Tools.Word

C#
using Microsoft.Office.Tools.Word;

 

In questo modo abbiamo inserito nel progetto una serie di classi appartenenti al namespace Microsoft.Office.Tools.Word, le quali ci permettono di gestire tutto quanto ciò concerne i smart tag.

Creazione di un gestore degli eventi

Il compito dello smart tag che andremo a creare, sarà quello di impostare  la parola “Emanuele” digitata nel documento,  con la formattazione che Microsoft Word imposta alle parole chiavi degli smart tag, (figura 3), qualora nel documento si trova tale parola, posizionando il puntatore del mouse su essa verrà visualizzato lo smart tag, il quale presenta due voci di menu. che in base alla voce selezionata, dovrà eseguire una determinata azione piuttosto che un'altra. Di conseguenza dobbiamo creare una funzione, che avrà il compito di fare da gestore di eventi, in particolare per l’evento click del menu dello smart tag. Il compito della funzione sarà quella di visualizzare un sito, se la voce del menu  dello smart tag selezionato corrisponde al testo “Informazioni”, altrimenti per l’altra voce di menu, avvia il browser di posta elettronica predefinito, per l’invio di un messaggio di posta elettronica in modalità di scrittura.

 

Figura 3
Di seguito si riporta il codice delle suddette operazioni.

 

 

Vb.Net
    Private Sub Sito(ByVal sender As Object, ByVal e As ActionEventArgs)
        'Oggetto azione, ossia ritorna la voce del menu selezionato
        Dim ActionAzione As Action = CType(sender, Action)
        If ActionAzione.Caption = "Informazioni" Then
            System.Diagnostics.Process.Start("http://blog.shareoffice.it/emanuele")
        Else
            System.Diagnostics.Process.Start("mailto:emanuelemattei@dominio.it")
        End If
 
    End Sub
C#
        private void Sito(object sender, ActionEventArgs  e)
        {
            //Oggetto azione, ossia ritorna la voce del menu selezionato
            Action ActionAzione = (Action)sender;
            if (ActionAzione.Caption == "Informazioni")
             {
                System.Diagnostics.Process.Start("http://blog.shareoffice.it/emanuele");
             }
            else
              {
                System.Diagnostics.Process.Start("mailto:emanuelemattei@dominio.it");
              }
        }

 

 

Creazione dell’oggetto Smart Tag
A questo punto non ci resta che creare l’oggetto smart tag, tale oggetto va creato prima dell’avvio dell’apertura del documento, in questo modo quando verrà digitata la parola “Emanuele”, in essa sarà applicata un sottolineatura di colore viola, che sta ad indicare una parola chiave di tipo smart tag, avvicinandosi con il puntatore del mouse sulla parola, sarà visibile uno smart tag.
Utilizzeremo la classe smarttag il quale, è l’oggetto per la personalizzazione degli smarttag , tale classe accetta due argomenti nel costruttore, il primo è un Identificatore composto dall'URI, esso sta ad indicare uno spazio dei nomi e dal nome di un tipo di tag, questi due valori sono separati dal simbolo di cancelletto (#), mentre il secondo argomento è il testo del titolo dello smart tag.
L’altro oggetto che utilizzeremo sarà action, il quale avrà il compito di gestire le voci del menu dello smart tag.

Come si vede di seguito il codice da inserire nell’evento startup del documento, deve essere simile a quello riportato:

 

Vb.net
'oggetto smart tag
        Dim SmartTagEsempio As SmartTag = New SmartTag("http://www.MioSito.it/esempio#SmartTagEsempio", "Esempio SmartTag")
        'imposto il termine da ricercare
        SmartTagEsempio.Terms.Add("Emanuele")
        'imposto le voci di menu, ne creo due
        Dim azione As Action = New Action("Informazioni")
        'seconda voce
        Dim azione2 As Action = New Action("email")
        'aggiungo le azioni allo smart tag
        SmartTagEsempio.Actions = New Action() {azione, azione2}
        'aggiungo un gestore di evento
        AddHandler azione.Click, AddressOf Me.Sito
        AddHandler azione2.Click, AddressOf Me.Sito
        'aggiungo lo smart tag al documento
        Me.VstoSmartTags.Add(SmartTagEsempio)
 
C#
//oggetto smart tag
            SmartTag SmartTagEsempio = new SmartTag("http://www.MioSito.it/esempio#SmartTagEsempio", "Esempio SmartTag");
            //imposto il termine da ricercare
            SmartTagEsempio.Terms.Add("Emanuele");
            //imposto le voci di menu, ne creo due
            Action azione = new Action("Informazioni");
            //seconda voce
            Action azione2 = new Action("Email");
            //aggiungo le azioni allo smart tag
            SmartTagEsempio.Actions = new Action[] {azione, azione2};
            //aggiungo un gestore di evento
            azione.Click += new ActionClickEventHandler(this.Sito);
            azione2.Click += new ActionClickEventHandler(this.Sito);
            //aggiungo lo smart tag al documento
            this.VstoSmartTags.Add(SmartTagEsempio);

 

 

Conclusioni
In questo articolo si è visto come creare dei smart tag personalizzati, tale tecnologia può tornare molto utile in quei contesti lavorativi in cui si utilizza Microsoft office, in questo modo permette di velocizzare le attività lavorative ed aggiungere ai propri documenti funzionalità importanti.. Da notare com’è cambiata la programmazione in ambiente Office, tramite Visual Studio 2005 il quale permette di scrivere con poche righe di codice, operazioni che prima richiedono una maggiore stesura di codice ed un impiego maggiore.

Tramite la parola Download è possibile scaricare l'esempio utilizzato nell'articolo.

Download