Compartir a través de


Personalizar y ampliar lenguajes específicos de dominio

El modelado y visualización SDK (VMSDK) de Visual Studio proporciona varios niveles en los que se puede definir herramientas de modelado:

  1. Defina un lenguaje específico (DSL) mediante el diagrama de la definición del ADSL. Puede crear rápidamente un DSL con una notación diagramática, un formato legible de XML, y las herramientas básicas necesarias para generar código y otros artefactos.

    Para obtener más información, vea Cómo: Definir lenguajes específicos de dominio.

  2. ajustar ADSL mediante características más avanzadas de definición ADSL. Por ejemplo, puede hacer vínculos adicionales producir cuando el usuario crea un elemento. Estas técnicas se logran principalmente en la definición de DSL, y algunas requieren algunas líneas de código de programa.

  3. Extender las herramientas de modelado utilizando código de programa. VMSDK está diseñado específicamente para facilitar integrar las extensiones con el código que se genera a partir de la definición del ADSL. Para obtener más información, vea Escribir código para personalizar lenguajes específicos de dominio.

Nota

Cuando se ha actualizado el archivo de definición ADSL, no olvide hacer clic Transformar todas las plantillas en la barra de herramientas del explorador de soluciones antes de recompilar la solución.

En esta sección

Para lograr este efecto

Haga referencia a este tema

Permite al usuario establecer el color y las propiedades de estilo de una forma.

Haga clic con el botón secundario en la forma o la clase de conector, elija agregue expuesto, y haga clic en un elemento.

Vea Personalizar la presentación en el diagrama.

Diferentes tipos de elementos del modelo parecen similares en el diagrama, compartiendo propiedades como el alto y ancho iniciales, color, información sobre herramientas.

Herencia de uso entre las formas o clases del conector. Las asignaciones entre las formas derivadas y las clases derivadas de dominio heredan los detalles de la asignación de los elementos primarios.

O, distintas clases de dominio de la asignación lo mismo constituyen la clase.

Una clase de elemento de modelo es mostrada por diferentes contextos de formas.

Asigne más de una clase de la forma en la misma clase de dominio. Al compilar la solución, siga el informe de errores y proporcione código solicitado para decidir qué forma a utilizar.

La forma color u otras características como fuente indica el estado actual.

Vea Actualizar formas y conectores para reflejar el modelo.

Crear una regla que actualice las propiedades expuestas. Vea Las reglas propagan los cambios dentro del modelo.

O, utilice OnAssociatedPropertyChanged() actualizar características no expuestas como flechas o fuente de vínculo.

Icono de la forma para indicar el estado.

Establezca la visibilidad de la asignación de decorador en la ventana detalles de ADSL. Busque a varios elementos decorator de la imagen en la misma posición. Vea Actualizar formas y conectores para reflejar el modelo.

O, override ImageField.GetDisplayImage(). Vea el ejemplo de ImageField.

establezca una imagen de fondo en cualquier forma

Reemplace InitializeInstanceResources() para agregar un ImageField delimitar. Vea Personalizar la presentación en el diagrama.

Formas de anidar a cualquier profundidad

Configurar un árbol recursivo de incrustación. Defina BoundsRules para contener formas. Vea Personalizar la presentación en el diagrama.

Conectores de asociación en puntos fijos en el límite de un elemento.

Define insertó elementos terminales, representados por pequeños puertos en el diagrama. Uso BoundsRules de corregir los puertos en contexto. Vea el ejemplo de esquema circular En El SDK de visualización y modelado.

El campo de texto muestra un valor derivado de otros valores.

Asignado al elemento decorator de texto a una propiedad calculada o personalizada del dominio de almacenamiento. Para obtener más información, vea Propiedades calculadas y de almacenamiento personalizado.

Propagar cambios desde entre los elementos de modelo, o entre las formas

Vea La validación en los lenguajes específicos de dominio.

Propagar cambios desde los recursos como otras extensiones de Visual Studio fuera del almacén.

Vea Los controladores de eventos propagan cambios fuera del modelo.

La ventana propiedades muestra las propiedades de un elemento relacionado.

El reenvío de la propiedad de instalación. Vea Personalizar la ventana Propiedades.

categorías de la propiedad

La ventana propiedades se divide en secciones denominadas categorías. Establezca Categoría de las propiedades del dominio. las propiedades con el mismo nombre de categoría aparecerán en la misma sección. También puede establecer Categoría de un rol de la relación.

Acceso de usuario del Control a las propiedades de dominio

Establezca Es modificable false para impedir que una propiedad de dominio aparece en la ventana Propiedades en tiempo de ejecución. Puede asignarlo al texto que decoradores.

Es readonly de la interfaz de usuario impide que los usuarios cambien una propiedad del dominio.

El acceso de programa a la propiedad de dominio no se ve afectado.

Cambie el nombre, el icono, y la visibilidad de los nodos del explorador de modelos ADSL.

Vea Personalizar el Explorador de modelos.

habilite la copia, cortar y pegar

Establezca la propiedad de Habilite pegar de copia de nodo de Editor en el Explorador de ADSL.

Copie los vínculos de referencia y sus destinos siempre que se copie un elemento. Por ejemplo, los comentarios de la copia asociados a un elemento.

Establezca la propiedad de Propaga la copia de rol de origen (representado por línea de un extremo de la relación del dominio en el diagrama de definición ADSL).

Escriba el código para reemplazar ProcessOnCopy para lograr efectos más complejos.

Vea Personalizar comportamiento de copia.

Delete, cambiar, o vuelve a vincular elementos relacionados cuando se elimina un elemento.

establezca el valor de Propaga Suprimir de un rol de la relación. Para efectos, un reemplazo ShouldVisitRelationship y métodos más complejos de ShouldVisitRolePlayer en la clase de MyDslDeleteClosure , definido en DomainModel.cs

Vea Personalizar el comportamiento de eliminación.

Mantenga el diseño y la apariencia de la forma en la copia y de arrastrar y colocar.

Agregar formas y conectores a ElementGroupPrototypecopiado. El método más cómodo a reemplazar es ElementOperations.CreateElementGroupPrototype()

Vea Personalizar comportamiento de copia.

Pegue las formas en una ubicación especificada, como la posición del cursor actual.

Reemplazo ClipboardCommandSet.ProcessOnCopy() para utilizar la versión ubicación-específica de ElementOperations.Merge(). considera Personalizar comportamiento de copia.

Establezca las relaciones adicionales en pegar

Reemplazo ClipboardCommandSet.ProcessOnPasteCommand()

Habilite el arrastrar y colocar de este diagrama, otros diagramas del dominio (ADSL) o UML y los elementos de Windows

Vea Cómo: Agregar un controlador para arrastrar y colocar.

Permite una forma o una herramienta que se arrastrarán sobre una forma secundaria, como un puerto, como si fuera arrastrado hasta el elemento primario.

Defina una directiva de combinación de destino, para reenviar el objeto quitado al elemento primario. Vea Personalizar la creación y el movimiento de los elementos.

Permite una forma o una herramienta que se arrastrarán sobre una forma y tiene vínculos adicionales u objetos creados. Por ejemplo, permitir que un comentario lo interrumpe sobre un elemento al que debe estar vinculado.

Defina una directiva de la combinación de elementos en la clase de dominio de destino, y definir los vínculos que se generarán. En casos complejos, puede agregar código personalizado. Vea Personalizar la creación y el movimiento de los elementos.

Cree un grupo de elementos con una herramienta. por ejemplo, un componente con un conjunto fijo de puertos.

Invalide el método de inicialización del cuadro de herramientas en ToolboxHelper.cs. Cree un grupo Prototipos (EGP) de elemento que contiene los elementos y los vínculos de la relación. Vea Personalizar las herramientas y el cuadro de herramientas.

Incluya las formas de la entidad de seguridad y el puerto en el EGP, o defina BoundsRules para colocar formas de puerto cuando se crean instancias del EGP. Vea Ubicación y tamaño de las reglas de restricción de formas BoundsRules.

Utilice una herramienta de conexión para crear instancias de varios tipos de relación.

Agregue las directivas se conectan vínculo (LCD) al creador de Conexión que invoca la herramienta. Los Las determinan el tipo de relación de los tipos de los elementos. Para que esto depende de los estados de los elementos, puede agregar código personalizado. Vea Personalizar las herramientas y el cuadro de herramientas.

Herramientas rápidas (el usuario puede hacer doble clic en cualquier herramienta para crear muchas formas o conectores sucesivamente.

En el Explorador ADSL, seleccione el nodo de Editor . en la ventana Propiedades, establezca Usa elementos de cuadro de herramientas pegajosos.

Definir los comandos de menú

Vea Cómo: Modificar comandos de menú estándar en lenguajes específicos de dominio.

Restrinja el modelo con reglas de validación

Vea La validación en los lenguajes específicos de dominio.

Genere código, los archivos de configuración, o documentos ADSL.

Generar código a partir de lenguajes específicos de dominio

Personalizar cómo los modelos se guarda en el archivo.

Vea Personalizar el almacenamiento de archivos y la serialización XML.

Guarde los modelos a las bases de datos u otros medios.

Reemplazo TheLanguageDocData

Vea Personalizar el almacenamiento de archivos y la serialización XML.

Integrar varios dominio (ADSL) de modo que funcionen como parte de una aplicación.

Vea Integrar modelos utilizando Modelbus de Visual Studio.

Permite que un DSL es extendido por terceros, y controlar la extensión.

Ampliar DSL mediante MEF

Compartir clases entre DSL mediante una biblioteca DSL

Definir una directiva de bloqueo para crear segmentos de solo lectura

Vea también

Conceptos

Cómo: Definir lenguajes específicos de dominio

Modelar el SDK de Visual Studio - Lenguajes específicos de dominio

Otros recursos

Escribir código para personalizar lenguajes específicos de dominio