P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 -...

42
Iván Ruiz Rube Departamento de Ingeniería Informática Escuela Superior de Ingeniería Universidad de Cádiz 14/11/13 1 Desarrollo de editores gráficos con GMF Procesadores de Lenguajes 2 PL2 - Desarrollo de editores gráficos con GMF Curso 2013-2014

Transcript of P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 -...

Page 1: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Iván Ruiz Rube Departamento de Ingeniería Informática Escuela Superior de Ingeniería Universidad de Cádiz

14/11/13 1

Desarrollo de editores gráficos con GMF

Procesadores de Lenguajes 2

PL2 - Desarrollo de editores gráficos con GMF

Curso 2013-2014

Page 2: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

En la clase anterior…

� Estudiamos cómo construir editores de modelos reflexivos (basados en árbol) utilizando Eclipse EMF.

� Despliegue de editores como plugins de Eclipse (PDE) y cómo productos independientes (RCP).

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 2

Page 3: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Contenidos

�  Introducción � Proceso de desarrollo � Un editor de diagramas E/R

14/11/13 3 PL2 - Desarrollo de editores gráficos con GMF

Page 4: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

INTRODUCCIÓN DESARROLLO DE EDITORES GRÁFICOS CON GMF

14/11/13 4 PL2 - Desarrollo de editores gráficos con GMF

Page 5: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Instalación GMF

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 5

Help → Install Modeling Components

Page 6: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Graphical Modeling Framework � GMF es el proyecto de Eclipse que nos

ayudará a construir editores gráficos para nuestros DSLs.

� GMF Tooling: componente que nos permitirá definir la funcionalidad del editor y automáticamente construir el plugin correspondiente.

� GMF Runtime: componente encargado de ejecutar el editor visual

� GMF Notation: componente que proporciona el mecanismo para persistir e intercambiar información de los diagramas visuales.

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 6

Page 7: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Ejemplo editor GMF

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 7

El propio editor visual de metamodelos en EMF es un ejemplo de editor gráfico, con el cual podemos diseñar

modelos de dominio basados en Ecore.

Page 8: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Características

� Desarrollo de editores visuales sin escribir código.

� Edición de propiedades visuales: colores, fuentes, estilos de líneas, etc.

�  Funciones adicionales como la ordenación automática de elementos, reglas, zoom…

� Edición de etiquetas de los elementos directamente sobre el área de trazado.

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 8

Page 9: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Características (II)

� Exportación de modelos a varios formatos de imágenes.

�  Integración con el clipboard del sistema. � Utilización de elementos visuales como

contenedores de otros elementos. �  Integración de restricciones y validaciones

mediante el lenguaje OCL.

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 9

Page 10: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

PROCESO DE DESARROLLO

DESARROLLO DE EDITORES GRÁFICOS CON GMF

14/11/13 10 PL2 - Desarrollo de editores gráficos con GMF

Page 11: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Proceso generativo de desarrollo

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 11

Page 12: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Modelos implicados � Dominio (.ecore) � Generación de código EMF

(.genmodel) � Definición gráfica

(.gmfgraph) � Herramientas (.gmftool) � Mapeo entre los modelos

anteriores (.gmfmap) � Generación de código

GMF (.gmfgen) 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 12

Page 13: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Desarrollo con GMF � El desarrollo de editores GMF no es del

todo sencillo. � La generación automática de modelos no

es determinista 100%. � Tenemos que revisar, ajustar y validar

cada modelo generado. � En caso de tener que regenerar un

proyecto o un modelo, debemos previamente borrarlo del sistema de ficheros.

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 13

Page 14: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

UN EDITOR DE DIAGRAMAS E/R

DESARROLLO DE EDITORES GRÁFICOS CON GMF

14/11/13 14 PL2 - Desarrollo de editores gráficos con GMF

Page 15: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Diagrama entidad/relación

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 15

Vamos a construir nuestro primer DSL visual!!

Page 16: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Creación proyecto GMF

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16

File → New → GMF Project…

Page 17: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

GMF Dashboard

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 17

Esta vista nos guiará durante gran parte del proceso de construcción del editor gráfico

Page 18: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Diseñar metamodelo (modelo de dominio)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 18

File → New → Ecore Diagram… Recordatorio: establecer las propiedades Name, Lower

Bound, Upper Bound, Is Containment, ID y EType

Page 19: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Derivar modelo de generación de código EMF y generar plug-ins

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 19

[.genmodel] Generate All…

Page 20: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Derivar modelo de definición de herramientas

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 20

Page 21: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Generación de herramientas

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 21

Con este asistente podemos construir herramientas (de tipo nodo o tipo conexión) para los elementos de nuestro

metamodelo.

Page 22: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Modelo de herramientas �  GMF permite

personalizar las herramientas y cómo éstas aparecen en la paleta.

�  Cada herramienta utiliza icono gráfico (metáfora) para representar el concepto del metamodelo a utilizar en nuestro editor.

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 22

Page 23: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Personalizar propiedades Description y Title de las herramientas (Creation Tools) y definir grupos (Tool Groups),

estableciendo la propiedad Collapsible a true.

Ajuste de las herramientas (I)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 23

Page 24: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Para modificar los iconos de las herramientas de tipo nodo, tenemos que reemplazar las imágenes (Default Images) que se encuentran dentro el proyecto .edit. Para las herramientas de tipo link, debemos añadir las imágenes y luego referenciarlas

(Bundle Images).

Ajuste de las herramientas (II)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 24

Page 25: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Derivar modelo de definición gráfica

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 25

Page 26: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Con este asistente podemos construir los elementos gráficos (nodos, conexiones o etiquetas) para los

elementos de nuestro metamodelo.

Generación de los gráficos

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 26

Page 27: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Modelo de definición gráfica

�  GMF permite dibujar formas geométricas escalares e imágenes personalizadas sobre el área de trazado (canvas).

�  Cada elemento gráfico es altamente personalizable: colores, texturas, textos, etc.

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 27

Page 28: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Ajuste de la definición gráfica (I)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 28

Los elementos Figure Descriptor engloban los aspectos gráficos y sus propiedades visuales. Para cambiar el tipo de gráfico, es necesario crear un nuevo descriptor, añadirle el

gráfico deseado y trasladar sus propiedades.

Attribute

(0,30)

(30,0)

(60,30)

(30,60)

+X

+Y

Page 29: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Tenemos que revisar que cada elemento Node, Connection o Diagram Label tenga asociado su Figure Descriptor.

Ajuste de la definición gráfica (II)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 29

Page 30: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Derivar modelo de mapping

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 30

Page 31: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Nuestro mapping combinará los elementos del modelo de dominio, los elementos gráficos y las herramientas.

Derivar modelo de mapping (II)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 31

Page 32: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Generación del mapping

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 32

Tenemos que confirmar qué elementos del dominio son nodos (as nodeß) y cuáles son links (as link à)

Page 33: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Modelo de mapping (I)

Gmfmap Element

Ecore Element

Gmfgraph Element

Gmftool Element

Canvas Mapping Metaclase raiz Canvas Palette

Node Mapping Metaclase Node Creation Tool

Feature Label Mapping

Metaclase.atributoID Label -

Link Mapping Metaclase.asociación Connection Creation Tool

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 33

Page 34: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Modelo de mapping (II)

�  Este modelo permite vincular los elementos del metamodelo, con su definición gráfica y su herramienta.

�  El modelo de mapping generado de forma automática por GMF necesita ser completado y validado.

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 34

Page 35: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Debemos revisar las propiedades de cada Node Mapping, para asegurar que se vinculen los elementos correctos.

Ajuste del mapping (I)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 35

Page 36: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Debemos incluir los Feature Label Mapping que necesitemos y verificar que se vinculen los elementos correctos.

Ajuste del mapping (II)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 36

Page 37: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Debemos revisar las propiedades de cada Link Mapping, para asegurar que se vinculen los elementos correctos.

Ajuste del mapping (III)

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 37

Page 38: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Derivar modelo de generación de código GMF y generar plug-in

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 38

Page 39: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

Test del editor visual

14/11/13 PL2 - Desarrollo de editores gráficos con GMF 39

[Project Diagram] Run as → Eclipse Application

Page 40: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

RESUMEN DESARROLLO DE EDITORES GRÁFICOS CON GMF

14/11/13 40 PL2 - Desarrollo de editores gráficos con GMF

Page 41: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

¿Qué hemos aprendido hoy? �  Framework GMF para el desarrollo de

editores visuales de modelos. � Desarrollo basado en la sucesiva

transformación de modelos. �  Requiere un desarrollo muy ordenado, ya

que es común cometer errores. � No siempre debemos confiar en los

modelos intermedios generados automáticamente por Eclipse.

�  Existe una alternativa más cómoda: EuGENia 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 41

Page 42: P4 - Desarrollo de editores gráficos con GMF · visual!! Creación proyecto GMF 14/11/13 PL2 - Desarrollo de editores gráficos con GMF 16 File → New → GMF Project… GMF Dashboard

14/11/13 42 PL2 - Desarrollo de editores gráficos con GMF

Desarrollo de editores gráficos con GMF

Procesadores de Lenguajes 2

Iván Ruiz Rube [email protected]