Extendiendo Visual Studio 2010, una mirada a los comandos..


En este artículo vamos a trabajar con el SDK de Visual Studio 2010 y con el SDK de visualización y modelado de Visual Studio 2010 que nos simplifica el desarrollo de extensiones para los escenarios de modelado dentro del IDE anteriormente nombrado.

Tecnología utilizada:


  • Visual Studio 2010 – ultimate edition
  • SDK Visual Studio 2010
  • SDK de Visualización y modelado de Visual Studio 2010
En esta oportunidad vamos a crear un comando de extensión, esto nos permite invocar al hacer clic con el botón secundario del mouse elementos de un diagrama de UML. Los comandos pueden actualizar el modelo y los diagramas o realizar otras operaciones en Visual Studio.

Para esta implementación vamos a generarnos una extensión que me permita trabajar sobre un diagrama de clases y que me permita crear clases con determinada estructura dentro de un modelo.

Veamos el entorno de desarrollo:



Fig.1 – Creación de proyecto en VS 2010


[Export(typeof(ICommandExtension))]



Definir sobre que diagrama trabajar la extensión:


[ClassDesignerExtension]



Estructura de la clase:


 class CommandExtension : ICommandExtension
    {
        [Import]
        IDiagramContext context { getset; }




        public void Execute(IMenuCommand command)
        {

            
        }


        public void QueryStatus(IMenuCommand command)
        {

        }


        public string Text
        {
            get { return "Crear Clase"; }
        }
    }


Como pueden observar, se implementa una interfaz "ICommandExtension" y dentro de la clase se importa el contexto para poder hacer uso del material del modelo que se está manipulando.

Luego, los métodos de ejecución y estado, y finalmente una propiedad Text que permite definir el nombre a mostrar de comando.

Para este ejemplo, como les comenté crearemos entidades de un diagrama de clases así que colocaremos comportamiento en el "Execute":



IClassDiagram diagrama = context.CurrentDiagram as IClassDiagram;

//Store
IModelStore store = diagrama.ModelStore;

//Paquete Principal
IPackage root = store.Root;



En este punto comenzamos la creación de elementos: 
IClass cliente = root.CreateClass();
cliente.Name = "Cliente";

Mostramos los elementos en el diagrama:
diagrama.Display(cliente);


Vamos a agregar un método a la clase creada en nuestro ejemplo como última actividad:


IClass cliente = root.CreateClass();
cliente.Name = "Cliente";
IOperation cal = cliente.CreateOperation();
cal.Name = "Calcular";
diagrama.Display(cliente);


De esta forma podemos rápidamente extender con comandos un modelo de Visual Studio 2010.



Fig.2 – Entorno experimental de Visual Studio 2010 donde se muestra la extensión al compilar y ejecutar el proyecto.
La Fig.2 muestra la utilización de la extensión en Visual Studio, donde se propone el comando "Crear Clase" el cual genera una nueva clase dentro del diagrama de clases manipulado.
Les dejo un video de implementación práctica:

Espero les sea de utilidad…

Comentarios

Entradas más populares de este blog

Modelando relaciones en UML, un acercamiento a las Asociaciones

Utilizando Intents implícitos para crear actividades

Secuencias…Modelado indispensable