Grafikus szerkesztők készítése 2.

Hasonló dokumentumok
Eclipse Graphical Modeling Framework (GMF) Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Domain- specifikus modellezés az Eclipse Modeling Framework használatával

Modell Alapú Szoftverfejlesztés Eclipse-szel

Metamodellezés. Simon Balázs BME IIT, 2011.

Utolsó módosítás:

Grafikus felületek készítése 1.

Ráth István. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Modellező eszközök, kódgenerálás

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben. Ráth István

Ráth István. A fejlesztés evolúciója

Modell alapú tesztelés mobil környezetben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Utolsó módosítás:

UML (Unified Modelling Language)

NEPTUN ID BMENET ID. Címtár BME VPN. vcenter VPN SVN. Trac Wiki. Wifi

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Enterprise JavaBeans 1.4 platform (EJB 2.0)

CTools és Panels pluginok

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Közösség, projektek, IDE

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

Programozási nyelvek Java

Programozási technológia

Java VII. Polimorfizmus a Java nyelvben

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

GráfRajz fejlesztői dokumentáció

Komponens alapú fejlesztés

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Programozási nyelvek Java

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

C#, OOP. Osztályok tervezése C#-ban

Generikus Típusok, Kollekciók

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Név: Neptun kód: Pontszám:

Java programozási nyelv 5. rész Osztályok III.

Miért is transzformáljunk modelleket? Varró Dániel

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

Java VII. Polimorfizmus a Java nyelvben

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

A Java EE 5 plattform

JAVA webes alkalmazások

RIA Rich Internet Application

A szerzõrõl... xi Bevezetés... xiii

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Eclipse Rich AJAX Pla0orm

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

Modellek végrehajtása, kódgenerálás

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

A Java nyelv. Dialógus ablakok. Elek Tibor

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Már megismert fogalmak áttekintése

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Szoftver újrafelhasználás

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Swing GUI készítése NetBeans IDE segítségével

OOP #14 (referencia-elv)

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

Modellalkotás UML-ben

S0-02 Típusmodellek (Programozás elmélet)

OOP: Java 8.Gy: Abstract osztályok, interfészek

Access alapok. Megnevezés Művelet Minta. Új adatbázis létrehozása. Új / Üres adatbázis.. Tábla létrehozása tervező nézetben.

S01-7 Komponens alapú szoftverfejlesztés 1

Új prezentáció létrehozása az alapértelmezés szerinti sablon alapján.

Virtuális függvények (late binding)

JNDI - alapok. Java Naming and Directory Interface

Alap számológép alkalmazás

Android Pie újdonságai

kommunikáció Megoldások

Interfészek. PPT 2007/2008 tavasz.

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

PÉLDATÁR BEGYAKORLÓ FELADAT SÍKFESZÜLTSÉGI PÉLDA MEGOLDÁSA VÉGESELEM-MÓDSZERREL

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Előzmények

Segédanyag: Java alkalmazások gyakorlat

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Az MS Word szövegszerkesztés modul részletes tematika listája

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

DEBRECENI EGYETEM INFORMATIKAI KAR. Az UML gyakorlati alkalmazásának bemutatása az AutoWorld rendszer tervezésén keresztül

Szoftvertechnológia alapjai Java előadások

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Avery Design Pro 4.0

C++ fejlesztés az ECLIPSE környezetben

Java programozási nyelv 6. rész Java a gyakorlatban

Osztályok. 4. gyakorlat

Collections. Összetett adatstruktúrák

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

Újdonságok a Google műhelyéből. Péter Ekler

Dr. Pétery Kristóf: CorelDRAW 9 testre szabás

Programozási technológia

3. modul - Szövegszerkesztés

Szoftvertechnolo gia 7. gyakorlat

Abstract osztályok és interface-ek. 7-dik gyakorlat

Eseményvezérelt alkalmazások

Átírás:

Grafikus szerkesztők készítése 2. Graphi4, GMF Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Bonyolult Mi a gond a GEF használatával? Sok kézzel írt kód Egyszerű GEF editor o KéGéle csomópont, közökük élek o 3400 sor kód (modell nélkül) o 16 osztály, 150 metódus o Nem lehetne egyszerűbben?

EMF modellek Egyszerűsítés o Egységes kezelés o Mentés/megnyitás egyszerű o Fájlok közöz hivatkozások kezelhetőek Egyszerűbb interakció o Csak magas szintű funkciók implementációja

Graphi4 Kapcsolódó projektek o EMF- specifikus grafikus szerkesztő könyvtár GMF Nota4on o Megjelenítési modell - > ld. még Diagram Exchange GMF Run4me o EMF- specifikus grafikus szerkesztő könyvtár GMF Tooling o Modell- alapú eszköztár projektek készítésére

Graphi(

Graphi4 architektúra Screen Screen Rendering Engine Graphiti Graphiti R Interaction Component R Általános grafikus szerkesztő... (Universal Editor) Pictogram Pictogram Model Model Diagram Diagram Type Type Agent Agent Domain Domain Model Model Link Link Model Model Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Graphi4 architektúra Screen Screen R Rendering Engine Graphiti Graphiti Interaction Component R... saját domain segítségével testreszabva Pictogram Pictogram Model Model Diagram Diagram Type Type Agent Agent Domain Domain Model Model Link Link Model Model Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Graphi4 architektúra Screen Screen R Rendering Engine Graphiti Graphiti Interaction Component R Pictogram Pictogram Model Model Diagram Diagram Type Type Agent Agent Domain Domain Model Model Néze4 Szöveg modell Link Link Model Model Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Graphi4 architektúra Screen Screen R Rendering Engine Graphiti Graphiti Interaction Component R Pictogram Pictogram Model Model Diagram Diagram Type Type Agent Agent Domain Domain Model Model Link Link Model Model Üzle4 modell Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Graphi4 architektúra 2. Diagram Type Agent Diagram Type Agent Feature Provider Diagram Type Provider Add Feature Create Feature Delete Feature Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Graphi4 architektúra 2. Diagram Type Agent Diagram Type Agent Funkció (Feature): szerkesztési művelet az üzle4 modellen Feature Provider Add Feature Create Feature Diagram Type Provider Delete Feature Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Graphi4 architektúra 2. Diagram Type Agent Diagram Type Agent Feature Provider Diagram Type Provider Add Feature Create Feature Delete Feature Leggyakoribb felhasználói szolgáltatások elérhetőek Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Milyen fogalmakkal dolgozunk? Domain Links Pictogram modell Visualization Graphics Algorithms Result Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Milyen fogalmakkal dolgozunk? Domain EClass EAKribute Links Link Pictogram modell Container Shape Shape Visualization Graphics Algorithms Text EOpera4on AKribute Link Link Shape Container Shape Shape Text Result Link Link Shape Container Shape Text Shape Forrás: http://www.slideshare.net/michaelwenz/short-talk-on-graphiti-at-eclipsecon-2010

Pictogram és link model Pictogram metamodell o Megjelenő objektumok o EMF modell o Metamodell elérhető: hkp://eclipse.org/graphi4/ images/pictograms.pdf Link o Kapcsolat Pictogram és saját modellek közök o Generikus (nincs példánymodellhez kötve)

Tool építés lépései 1. Diagram Type Provider implementáció 2. Diagram Type Provider regisztráció o Kiterjesztési pont 3. Feature Provider implementáció 4. Feature implementáció

Tool építés lépései 1. Diagram Type Provider implementáció 2. Diagram Type Provider regisztráció o Kiterjesztési pont 3. Feature Provider implementáció 4. Feature implementáció

DiagramTypeProvider public class SocialDiagramTypeProvider extends AbstractDiagramTypeProvider implements IDiagramTypeProvider { public SocialDiagramTypeProvider() { setfeatureprovider(new SocialNetworkFeatureProvider(this)); } }

DiagramTypeProvider public class SocialDiagramTypeProvider extends AbstractDiagramTypeProvider implements IDiagramTypeProvider { public SocialDiagramTypeProvider() { setfeatureprovider(new SocialNetworkFeatureProvider(this)); } } Feature Provider regisztráció

Tool építés lépései 1. Diagram Type Provider implementáció 2. Diagram Type Provider regisztráció o Kiterjesztési pont 3. Feature Provider implementáció 4. Feature implementáció

Feature Provider regisztráció Két kiterjesztési pont o Típusdefiníció Egyszerű leírás org.eclipse.graphi4.ui.diagramtypes o Implementáció Csatolás provider és npusdefiníció közök org.eclipse.graphi4.ui.diagramtypeproviders

Tool építés lépései 1. Diagram Type Provider implementáció 2. Diagram Type Provider regisztráció o Kiterjesztési pont 3. Feature Provider implementáció 4. Feature implementáció

Feature Provider Használjuk az AbstractFeatureProvider ősosztályt Megfelelő metódusba funciók regisztrálása o Ha nincs, akkor null visszatérési érték Többféle funció o Create: modellobjektum létrehozása o Add: hozzáadás a diagramhoz o Copy, Paste o Update o DirectEdi4ng

Tool építés lépései 1. Diagram Type Provider implementáció 2. Diagram Type Provider regisztráció o Kiterjesztési pont 3. Feature Provider implementáció 4. Feature implementáció

Funkció implementáció Absztrakt megvalósítások o Pl. AbstractAddShapeFeature Típusfüggő implementáció o Pl. canadd és add metódusok

Összegzés Magasabb szintű könyvtár GEF felek o EMF modellek o Univerzális szerkesztő Kevés kódolás Egységes kinézet De hiányzó funkciók

GMF Run(me és GMF Nota(on

GMF Run4me EMF és a GEF alapú Modell és diagram szintű szolgáltatások o Szinkronizáció GMF Nota4on diagrammal Bővíthető

GMF Run4me Grafikus editorok írását támogató keretrendszer o Újrahasznosítható komponensek o Standardizált diagram metamodell A logikai és diagram metamodellek különválnak o Bővíthető grafikus szerkesztőket készíthetünk az Eclipse Workbenchbe integrálva

GMF Run4me Grafikus editorok írását támogató keretrendszer o Command- jellegű működés az EMF és GEF együkes vezérléséhez Perzisztencia az EMF run4me segítségével MVC szerkesztés GEF alapokon o További felhasznált technológiák: EMF Model Transac4on EMF Valida4on Framework MDT Object Constraint Language (OCL) Apache Ba4k (SVG)

Néze4 infók tárolása: o Szín, betűnpus stb. Nota4on metamodel o Node esetében: pozíció, méret stb. o Edge esetében: töréspontok, dekorációk stb. Néze4 modell a domain modell fölé o GMF nyújtja, nincs szükség a domain modell megváltoztatására! o Ld. még Graphi4 Pictogram modell

Fő osztálya a View Nota4on metamodel o Wrappeli a domain modell objektumot o Domain modell objektum elérése: get/setelement() EObject View Node Diagram Edge

Standard komponensek Popup Ac4on Bar: Connection Handle: Compartment (collapsible): Geometrical Shape:

Standard komponensek Ac4on: Direct Edit: Toolbar: Properties View:

Standard komponensek Navigátor a modellen belül: Animált zoom: Áttekintő nézet: Note Attachment:

Standard komponensek Oldalbeállítás: Nyomtató előnézet: Diagram export képfájlba: Diagram másolás a vágólapra:

GMF Tooling

Célja: GMF Tooling o Modellvezérelt szerkesztő generálás o A diagram és logikai modellek elkülönülnek Diagram megjenelés (graphical), eszközök (tooling), leképezés a modellre (mapping) o TestreszaboK domain- specifikus szerkesztők gyors összedobása o Az eredmény legyen bővíthető és rugalmasan átalakítható Generált kód GMF Run4me felek fut o Terv: Graphi4 támogatás a jövőben

GMF szerkesztő modellezés

Ecore domain modell importálása GMF szerkesztő modellezés

GMF szerkesztő modellezés Ecore domain modell importálása Leképezés a modellek közök

GMF szerkesztő modellezés Ecore domain modell importálása Grafikus alakzatok megadása Leképezés a modellek közök

GMF szerkesztő modellezés Ecore domain modell importálása Grafikus alakzatok megadása Eszközök definiálása Leképezés a modellek közök

GMF szerkesztő modellezés Ecore domain modell importálása Grafikus alakzatok megadása Eszközök definiálása Generátor modell Leképezés a modellek közök

GMF szerkesztő modellezés Ecore domain modell importálása Grafikus alakzatok megadása Eszközök definiálása Generátor modell Leképezés a modellek közök Kódgenerátor

GMF szerkesztő modellezés Ecore domain modell importálása Grafikus alakzatok megadása Eszközök definiálása Generátor modell Testreszabás Leképezés a modellek közök Kódgenerátor

GMF Dashboard View Grafikusan követhető a fejlesztés menete

GMF és EMF projektek A diagramszerkesztő működéséhez szükség van az EMF projekt genmodeljéből generált projektekre: o Model o Edit Konvencionális projektszerkezet: o library EMF projekt model Modellfájlok könyvtára library.ecore EMF library.genmodel library.gmfgraph library.gmxool GMF library.gmfmap library.gmfgen src Generált EMF modell kód o library.diagram Generált GMF projekt o library.edit Generált EMF edit projekt

Domain Model A logikai metamodell Normál Ecore (EMF) modell Megadása az EMF- ben megszokok módon Pl. a GMF grafikus Ecore editorával

Graphical Defini4on Model Diagram metamodell (GMFGraph) o Független Nota4on modelltől! GMFGraph tooling modell, futásidőben nem szerepel Nota4on Model futás közben használatos Graphi4: csaka Pictogram model van! o Cél: A használni kívánt grafikus elemek megadása Figure modellek o Feltölthető rekeszek felvétele o Adatkötés: Mapping model (később) Tree editorral Van hozzá automa4kus támogatás (varázsló) o A domain modelből következtet, testreszabhatóan o Generált modell nem függ a domain modelltől!

Graphical Defini4on Model Java kódolás helyek modellezés

Graphical Defini4on Model Java kódolás helyek modellezés Előre megadott elemekből összeállított figure

Graphical Defini4on Model Java kódolás helyek modellezés Előre megadott elemekből összeállított figure Saját figure Java kód

Graphical Defini4on Model Java kódolás helyek modellezés Előre megadott elemekből összeállított figure Graphical Definition Saját figure Java kód

Graphical Defini4on Model Java kódolás helyek modellezés Előre megadott elemekből összeállított figure GEF EditPart Graphical Definition IFigure Saját figure Java kód

Graphical Defini4on Model PlaGormfüggetlen metamodell Felépítése: o Elemkönyvtárak (Figure Galleries) Rajzelemek hierarchiája (Figures) o Csomópontok (Nodes) o Kapcsolatok (Links) o Tartalmazók (Compartments) o Címkék (Diagram Labels) Támogatás: domain modellből következtethető o Generált változat független a domain modelltől

Figure descriptorok Figure Gallery Rajzelemek hierarchikusan o Label, Rectangle, Ellipse, Polygon, Polyline, Custom Figure stb. o Borders: Line, Margin, Compound, Custom Elrendezésük o Layouts: Flow, Border, Grid, XY, Stack, Custom Tulajdonságaik o Color, Font, Dimension, Insets Child Access: accessorok

Node Diagram csomópon pus A diagramok alapeleme Figure descriptorra hivatkozik Kitöltés és körvonal tulajdonságai megadhatóak

Címke a diagramon Két npus Diagram Label o Belső: Figure descriptor egy gyerekére (child access) hivatkozik o Külső: Figure descriptorra hivatkozik

Compartment Tartalmazást kifejező rekesz Figure descriptor egy gyerekére (child access) hivatkozik Lehet összecsukható

Összekötő Connec4on Figure descriptorra hivatkozik

Tooling Defini4on Model Tooling metamodell (GMFTool) A szükséges eszköztár- elemek megadása Szintén varázslós támogatás A generálás során implementálásra is kerülnek az ik megadok parancsok

Tooling Defini4on Model A szerkesztéshez használt eszközöket definiálja: o PaleKe o Tool (4pikusan crea4on) Csoportokba (tool group) rendezve o Menü Main/Popup o Ac4on o Toolbar A wizard generál egy alap változatot bármely domain metamodellhez

PaleKa Tool PaleKe Separator Tool Group

Mapping Model Leképezési metamodell (GMFMap) Az eddigi modellek összekötése Megfeleltetések megadása Domain graphical tooling

Mapping Model Graphical Definition Domain model Mapping model Tool Definition

Mapping Model Graphical Definition Domain model Mapping model Tool Definition

Mapping Model Graphical Definition Domain model Mapping model Tool Definition

Mapping Model Graphical Definition Domain model Mapping model Tool Definition

Mapping Model Graphical Definition Domain model Mapping model Tool Definition

Mapping Model Leírja a logikai kapcsolatot a következők közök: o Domain elemek (.ecore) o Grafikus elemek (.gmfgraph) o Tooling elemek (.gmxool) Validációra alkalmas o Model Valida4on Kényszereket vehetünk fel o OCL nyelven A wizard generál egy alapváltozatot a bemene4 metamodellek alapján

Canvas Mapping Graphical: a diagram hákere (a gmfgraph Canvas gyökéreleme) Domain: a hierarchia gyökerét reprezentáló osztály Tooling: o PaleKa o Menük o Eszközsorok

Node Mapping Top Node Reference o Domain: Containment Feature: a Canvas Mappingben megadok gyökérosztály tartalmazást reprezentáló referenciája Node Mapping o Graphical: a diagram node o Domain: az osztály, amit a csomópont reprezentál o Tooling: az osztályt létrehozó crea4on tool Gyerekei lehetnek: o Label Mapping o Child Reference o Compartment Mapping

Label Mapping Graphical: Diagram label Domain: (Design) Label Mapping esetén: semmi, sta4kus szöveg o Feature Label Mapping esetén: a megjelenítendő (és szerkesztendő) feature- ök szöveges minták a megjelenítésükhöz és parse- olásukhoz

Child Reference Csomópont gyerekei Ugyanúgy Containment Feature és Node Mapping a megadandó adatok, mint Top Node Reference esetén Két npus: o Affixed: a szülő node oldalán jelenik meg (pl. portok) o Compartment: a szülő node egy compartmentjében jelenik meg (következő dia)

Compartment Mapping Graphical: Compartment grafikus definícióját kell megadni Child Reference- re kell hivatkozni Így egy compartment csak azonos npusú node- okat tartalmazhat!

Node hierarchia példa

Node hierarchia példa

Node hierarchia példa Canvas Mapping

Node hierarchia példa Canvas Mapping Top Node Reference

Node hierarchia példa Canvas Mapping Top Node Reference owned Node Mapping

Node hierarchia példa Canvas Mapping Top Node Reference Node Mapping Child Reference

Node hierarchia példa Canvas Mapping Top Node Reference Node Mapping referenced Child Reference

Node hierarchia példa Canvas Mapping Top Node Reference Node Mapping Child Reference owned Node Mapping

Node hierarchia példa Canvas Mapping Top Node Reference Node Mapping Child Reference Node Mapping

Graphical: connec4on Domain: Link Mapping o Ha a kapcsolatot egy feature reprezentálja: a Target Feature- ben kell megadni o Ha a kapcsolatot egy osztály reprezentálja: Element: a kapcsolatot reprezentáló osztály Containment Feature: a kapcsolatokat tartalmazó feature Source/Target Feature: a kapcsolat két végét reprezentáló feature Tooling: az összeköketést létrehozó crea4on tool

ÖsszeköKetés osztállyal példa

ÖsszeköKetés osztállyal példa

ÖsszeköKetés osztállyal példa

ÖsszeköKetés osztállyal példa

ÖsszeköKetés osztállyal példa

Diagram Editor Generator Model Generátor modell (GMFGen) Kódgenerálás paramétereit tartalmazza o Az EMF genmodeljéhez hasonló o A mapping modell transzformációjával áll elő Kódgenerálás Java EmiKer Templates/Xpand technológiával o A template- eket ki lehet cserélni A kódgenerálás a GMF run4me- on futó kódot állít elő A generálást finomhangolhatjuk o Plug- in ID, provider name, package namespace stb. Run4me opciók o Nyomtatás támogatása, valida4on stb. o Diagram perzisztencia

Generátor adatok Lehetőség van RCP alkalmazás generálására Fájl tulajdonságai (Gen Editor) o Modell- és diagramfájl kiterjesztése o Modell- és diagramfájl külön vagy egyben legyen- e Plugin azonosító adatok (Gen Plugin) o ID, név, provider Diagramszerkesztő képességei később (Gen Diagram) o Validáció o Shortcuts o Providers

Generált kód KompleK kód Grafikus editor GEF alapon Sok extrával o Ld. Run4me features

Hasonló az EMF- hez

EMF Hasonló az EMF- hez

Hasonló az EMF- hez EMF Domain model (ECore)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code GMF

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) GMF Graphical Definition (GMFGraph) Mapping (GMFMap) Tool Definition (GMFTool)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) GMF Graphical Definition (GMFGraph) Mapping (GMFMap) Generator Model (GMFGen) Tool Definition (GMFTool)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) GMF Graphical Definition (GMFGraph) Mapping (GMFMap) Generator Model (GMFGen) Java code Tool Definition (GMFTool)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) Transzformáció kóddal (Java) GMF Graphical Definition (GMFGraph) Mapping (GMFMap) Generator Model (GMFGen) Java code Tool Definition (GMFTool)

Hasonló az EMF- hez EMF Domain model (ECore) CodeGen Model (GenModel) Java code Domain Model (ECore) Transzformáció kóddal (Java) Sablonok (JET) GMF Graphical Definition (GMFGraph) Mapping (GMFMap) Generator Model (GMFGen) Java code Tool Definition (GMFTool)

Lehetőségek: A generált kód testreszabása o Custom osztályok a tooling modellben o Kód felülírása o Template módosítása o Extension point bővítése Érdemes külön pluginbe rakni a módosításokat

A generált kód testreszabása Saját osztályok Graphical o Figure, Connec4on, Decora4on, Border, Layout Generator o Behaviour (dupla klikk lekezelése) Előnyök o Modellalapú megközelítés (még akribútumok is) Hátrányok o Refactoring, sta4kus ellenőrzés nehézkes modell- kód átjárhatatlanság miak

A generált kód testreszabása Saját osztályok Példa

A generált kód testreszabása Saját osztályok Példa Egyedi viselkedés hozzáadása

A generált kód testreszabása Saját osztályok Példa Egyedi viselkedés hozzáadása Implementációs osztály megadása

A generált kód testreszabása Kód felülírása Generált metódusok felülírása, újak írása @generated törlése vagy @generated NOT o Újonnan beszúrt kódnál nem kell Előnyök o Egyszerű Hátrányok o Törékeny

A generált kód testreszabása Kód felülírása Példa @generated NOT

A generált kód testreszabása Kód felülírása Példa @generated NOT Saját kód megírása

A generált kód testreszabása Template JET/Xpand sablonok módosítása o Generator modellben template directory megadása Előnyök o Újrahasznosítható Hátrányok o JET/Xpand technológia ismerete szükséges o Meg kell írni a template- et!

A generált kód testreszabása Template Példa Xpand template

A generált kód testreszabása Template Példa

A generált kód testreszabása Template Példa Generátor modell elem kiválasztása

A generált kód testreszabása Template Példa Saját template jelzése (Dynamic Templates)

A generált kód testreszabása Template Példa Saját template jelzése (Dynamic Templates) Hivatkozás saját sablonra

A generált kód testreszabása Template Példa Hivatkozás saját sablonra

A generált kód testreszabása Extension point *Provider extension point bővítése o View, EditPart, EditPolicy, Icon stb. Előnyök o Biztonságos Hátrányok o Sok boilerplate code

A generált kód testreszabása Extension point Példa Kiterjesztési pont megadása

A generált kód testreszabása Extension point Példa HivatkozoK osztály megvalósítása Kiterjesztési pont megadása

Haladó GMF technikák

Dig in/drill down Két eset: Diagram par44oning o Azonos diagramnpus (rekurzív tartalmazás) Pl. package- ek o Különböző diagramnpus Pl. séma- tábla

Diagram par44oning megvalósítása Generator model o Node Open Diagram Behaviour Azonos diagramnpus: o Diagram Kind, Editor ID üresen hagyandó Különböző diagramnpus: o Diagram Kind: céleditor Editor Generator/Model ID tulajdonsága o Editor ID: céleditor Editor Generator/Editor View/ID tulajdonsága

EMF modellben Kezdőérték megadása o Default value nevű property o Egyszerű érték GMF modellben: Mapping model o Node/Link Mapping Feature Seq Ini4alizer Feature Value Spec o OCL kifejezés» Value Expression

OCL nyelven Kényszerek ÖsszeköKetések Mapping Model o Link Mapping Link Constraint Pl. összekötő nem köthet össze egy elemet önmagával: o self <> oppositeend Már létrehozásnál sem sérülhet kényszer

Ugyanúgy OCL nyelven Mapping model o Audit Container Audit Rule Target Kényszerek Constraint Csak validációnál van hibajelzés

Validáció Engedélyezés: Generator model o Gen Diagram Valida4on Enabled Valida4on Decorators Live Valida4on UI Feedback Validáció elvégzése: Edit/Validate

Egy node élő másolata Hivatkozás (shortcut) Use case: egy elemre másik diagramban szeretnénk hivatkozni Engedélyezés: Generator Model o Gen Diagram Forrásdiagramban: Shortcuts Provided For = céldiagram fájlkiterjesztése Céldiagramban: Contains Shortcuts To = forrásdiagram fájlkiterjesztése

Szeman4kus információk tükrözése vizuálisan Ha csak bizonyos megjelenítési jellemzők függnek az állapokól: Általunk definiált Figure- metódus (pl. updateface()) meghívása o Konstruktorban o EMF értesítés esetén @Override protected void handlenotificationevent(notification notification) { if (notification.getnotifier() instanceof Port) { getprimaryshape().updateface(); } super.handlenotificationevent(notification); }

Szeman4kus információk tükrözése vizuálisan Ha állapokól függően teljesen más figure kell: 2 különböző node, különböző constraintekkel és kezdőértékekkel Mapping Top Node Reference Node Mapping Constraint Feature Seq Initalizer Feature Value Spec Value Expression Top Node Reference Node Mapping Constraint Feature Seq Initalizer Feature Value Spec Value Expression Diagram Node: Node TypeAFigure Body: self.type = CommonClassType::TypeA, Language: ocl Element Class: CommonClass Feature: CommonClass.type:CommonClassType Body: CommonClass.type::TypeA, Language: ocl Diagram Node: Node TypeBFigure Body: self.type = CommonClassType::TypeB, Language: ocl Element Class: CommonClass Feature: CommonClass.type:CommonClassType Body: CommonClass.type::TypeB, Language: ocl

Ikonok megváltoztatása összekötők Ha nincs hozzá külön osztály: Asszociációhoz kép rendelése ImageRegistryben

Ikonok megváltoztatása összekötők Ha nincs hozzá külön osztály: Asszociációhoz kép rendelése ImageRegistryben /** * @generated NOT */ private static ImageRegistry getimageregistry() { if (imageregistry == null) { imageregistry = new ImageRegistry(); imageregistry.put( } getimageregistrykey(socialnetworkpackage.einstance.getperson_membership()), SocialNetworkDiagramEditorPlugin.findImageDescriptor("icons/Membership.gif")); } return imageregistry;

Összefoglalás

Összegzés Grafikus technológiák GEF Graphiti GMF Modell Tetszőleges EMF EMF Nem gráf jellegű megjelenítés Viszonylag könnyű Nem Sok, bonyolult testreszabás szükséges Kód mennyisége Sok, ismétlődő kód Közepes mennyiségű kód Főleg modellezés, kevés kódolás Munkafolyamat Csak kódolás Csak kódolás Többlépcsős

Megéri használni Graphi4, GMF Megéri használni, ha: o EMF alapú modell o A megjelenítés módja: csúcs- él paradigma o Gazdag funkcionalitás, gyors implementáció o Integráció Eclipse modellezési eszközeivel

Graphi4 o Egyszerű esetekben Graphi4 vagy GMF? o Könnyebb követni a modell változásait GMF o Gyors proto4pizáláshoz priminv konkrét szintaxissal o Komolyabb eszközökhöz A modell nem változik gyakran ÖsszeteK szolgáltatások