11/3/2010 10:44 El Bruno

[VS2010] Asociando acciones a un elemento en un diagrama DGML

image

Buenas,

hoy Cameron Skinner, nos muestra algo que no conocía sobre los diagramas DGML, pero que es bastante útil cuando a los mismos los generas a partir de información personalizada: la capacidad de asociar un link al evento click sobre un elemento del diagrama.

En el siguiente tutorial demostraré esta funcionalidad con un gráfico de lo más simple.

Tutorial

1. Abrir Visual Studio 2010

2. Crear un nuevo diagrama con la opción [File / New File / Directed Graph Document]. Esta acción crea un nuevo diagrama vacío llamado [Graph1.dgml].

Clipboard02

3. Editar el contenido del diagrama, desplegando el menú contextual sobre el mismo y seleccionando la opción [View DGML].

Clipboard04

4. Agregar el siguiente código dentro del diagrama:

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <DirectedGraph xmlns="http://schemas.microsoft.com/vs/2009/dgml">
   3:   <Nodes>
   4:     <Node Id="Bruno" Label="Bruno" />
   5:     <Node Id="Martina" Label="Martina" />
   6:     <Node Id="Pao" Label="Pao" />
   7:     <Node Id="Valentino" Label="Valentino" />
   8:   </Nodes>
   9:   <Links>
  10:     <Link Source="Bruno" Target="Martina" />
  11:     <Link Source="Bruno" Target="Valentino" />
  12:     <Link Source="Pao" Target="Martina" />
  13:     <Link Source="Pao" Target="Valentino" />
  14:   </Links>
  15:   <Properties>
  16:     <Property Id="Label" Label="Label" 
  17:               Description="Displayable label of an Annotatable object" 
  18:               DataType="System.String" />
  19:   </Properties>
  20: </DirectedGraph>

5. Esta definición crea un diagrama con los siguientes elementos:

Clipboard07

6. A continuación extenderemos las propiedades propias de cada nodo para que en las mismas sea posible definir un link a un elementos externo. Para esto en la sección de propiedades agregamos una nueva propiedad llamada [MisEnanos] en la que definimos que la misma será una referencia a un elemento externo [IsReference=”True”] y que accederá a una url externa [ReferenceTemplate="http://bit.ly/dCFudi"].

   1: <Properties>
   2:   <Property Id="Label" Label="Label" DataType="System.String" />
   3:   <Property Id="MisEnanos" DataType="System.String" 
   4:             IsReference="True" ReferenceTemplate="http://bit.ly/dCFudi" />
   5: </Properties>

7. Para utilizar la propiedad creada en el paso anterior, modificamos la definición de los nodos [Valentino] y [Martina] como muestra el siguiente ejemplo.

   1: <Nodes>
   2:   <Node Id="Bruno" Label="Bruno" />
   3:   <Node Id="Martina" Label="Martina" MisEnanos="Sample" />
   4:   <Node Id="Pao" Label="Pao" />
   5:   <Node Id="Valentino" Label="Valentino" MisEnanos="Sample" />
   6: </Nodes>

8. Una vez modificado el diagrama, en la visualización gráfica es posible ver como los elementos modificados ahora se comportan como “links”; si se hace un clic sobre uno de los mismos se navegará a la url definida en la propiedad.

Clipboard09

9. Adicionalmente, esta propiedad agrega una nueva opción al menú contextual para cada elemento, en la que es posible acceder a esta [acción].

Clipboard11

10. El código completo del DGML quedaría:

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <DirectedGraph xmlns="http://schemas.microsoft.com/vs/2009/dgml">
   3:   <Nodes>
   4:     <Node Id="Bruno" Label="Bruno" />
   5:     <Node Id="Martina" Label="Martina" MisEnanos="Sample" />
   6:     <Node Id="Pao" Label="Pao" />
   7:     <Node Id="Valentino" Label="Valentino" MisEnanos="Sample" />
   8:   </Nodes>
   9:   <Links>
  10:     <Link Source="Bruno" Target="Martina" />
  11:     <Link Source="Bruno" Target="Valentino" />
  12:     <Link Source="Pao" Target="Martina" />
  13:     <Link Source="Pao" Target="Valentino" />
  14:   </Links>
  15:   <Properties>
  16:     <Property Id="Label" Label="Label" DataType="System.String" />
  17:     <Property Id="MisEnanos" DataType="System.String" 
  18:               IsReference="True" ReferenceTemplate="http://bit.ly/dCFudi" />
  19:   </Properties>
  20: </DirectedGraph>

A partir de este momento, es solo cuestión de pensar en las posibilidades que se abren con estas capacidades. Cameron comenta el hecho de asociar elementos a WI de TFS, pero para modelos externos podemos acceder a la uri de cualquier elemento de otro sistema, solo queda explotarlo.

 

 

 

 

Saludos @ Here

El Bruno

 

 

 

 

Referencia: http://blogs.msdn.com/camerons/archive/2010/03/10/controlling-the-dgml-double-click.aspx

Archivado en: ,,
Comparte este post: