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:
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.
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.
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. |
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 |
|
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. |
|
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. |
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 |
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() |
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 |
|
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 |
|
Genere código, los archivos de configuración, o documentos ADSL. |
|
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. |
|
Permite que un DSL es extendido por terceros, y controlar la extensión. |
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