Both sides previous revision
Poprzednia wersja
|
|
pl:miw:miw08_gefardxtt_2 [2008/09/17 23:50] miw |
pl:miw:miw08_gefardxtt_2 [2008/09/18 12:15] gjn koniec |
====== Opis ====== | |
Szybura Bartek <b.szybura@interia.pl> | |
| |
GEFARDXTT\\ \\ | |
GEF and Eclipse based editor for ARD and XTT. Evaluation, feasibility, prototype. XTTv2 Editor requirements \\ | |
| |
input:\\ \\ | |
Eclipse: EMF, GEF resources (GEF, http://www.eclipse.org/articles/Article-GEF-editor/gef-schema-editor.html), \\ | |
ARD: Towards Formalization of ARD+ Conceptual Design and Refinement Method and An ARD+ Design and Visualization Toolchain Prototype in Prolog and UServ Case Study, Conceptual Design with ARD+ Method.\\ \\ | |
output:\\ \\ | |
Feasibility study, a description how to create such editors with GEF, a prototype editor MS Thesis regarding GEF: Interfejs graficzny do budowy aplikacji komponentowych zapewniający weryfikację semantyczną, ARD+ Editor requirements \\ | |
| |
====== Spotkania ====== | |
| |
| |
===== 080304 ===== | |
| |
| |
===== 080311 ===== | |
| |
* Praca magisterska “Interfejs graficzny do budowy aplikacji kompnentowych zapewniający weryfikację semantyczną”. Autorzy: Maciej Kwiecień, Jan Rachwalik-przeglądnięcie. | |
* Instalcja wszystkich potrzebnych pluginów do GEF-a. | |
* Przeczytanie bibliografii znajdującej się na stronie ai.ia.agh.edu.pl na temat modelu XTT. | |
| |
===== 080401 ===== | |
* model, można użyć XTTML2.0 -> to co w hqed | |
* [[hekate:hqed|edytor XTT]] [[hekate:varda]] | |
* uproszczony model XTT | |
| |
* wykonanie tutoriali dotyczących GEF-u, DRAW2D, GMF, | |
| |
| |
| |
| |
===== 080422 ===== | |
* XSD | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
===== 080429 ===== | |
* EMF->GMF->GEF | |
* [[hekate:hekate_markup_language]] | |
| |
* Stwotrzenie prostego edytora biblioteki (książki, pisarz) | |
* stworzenie modelu za pomocą "rose" | |
* stworzenie modelu za pomocą "annotated java" | |
* stworzenie modelu za pomocą xml schema (xsd) | |
| |
* Próba stowrzenie modelu XTT (predykat) w zapisie XSD (XMLSchema): | |
| |
<code xml> | |
<?xml version="1.0"?> | |
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |
targetNamespace="http://www.w3schools.com" | |
xmlns="http://www.w3schools.com" | |
elementFormDefualt="qualified"> | |
| |
<xsd:element name="(?)"> | |
<xsd:complexType> | |
<xsd:sequence> | |
<xsd:extension base="xs:string"> | |
<xsd:attribute name="title_?" type="xsd:string"> | |
</xsd:extension> | |
<xsd:extension base="xs:string"> | |
<xsd:attribute name="title_=" type="xsd:string"> | |
</xsd:extension> | |
<xsd:extension base="xs:string"> | |
<xsd:attribute name="title_operation" type="xsd:string"> | |
</xsd:extension> | |
<xsd:element name="inside" minOccurs="1" maxOccurs="unbound"> | |
<xsd:sequence> | |
<xsd:element name="in" type="xsd:string"> | |
<xsd:element name="=" type="xsd:string"> | |
<xsd:element name="opearation" type="xsd:string"> | |
</xsd:sequence> | |
</xsd:element> | |
</xsd:sequence> | |
<xsd:complexTyp> | |
</xsd:element> | |
</code> | |
| |
* Dalsze prace nad wykonaniem edytora XTT w EMF (Eclipse). | |
| |
===== 080527 ===== | |
* połaczenia | |
* prototyp edytora zg. z w.w. xsd | |
| |
====== Projekt ====== | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
====== Sprawozdanie ====== | |
| |
Celem projektu było zapoznanie się z dostępnymi Frameworkami pozwalającymi na budowę edytora XTT. Na początku przeanalizowałem framewrok GEF (Graphical Editing Framework). Niestety w przypadku GEF zbudowanie odpowiedniego edytora było bardzo pracochłonne. Praca w GEF-ie zaczynała się o stworzenia odpowiednich tablic, połączeń, etykiet tablic lub połączeń. Korzystając tylko z GEF-a wszystkie właściwości takie jak miejsce narysowania strzałki, tablicy trzeba ręcznie ustawiać.\\ | |
Dlatego też poszukałem inne rozwiązania, które są wykorzystywane w budowie edytorów. Znalazłem następny framework EMF (Eclipse Modeling Framework). Dzięki temu rozwiązaniu udało mi się stworzyć opis XTT w XML Schema.\\ | |
| |
| |
{{:pl:miw:xtt-xsd.xml|Poniżej przedstawiam opis XTT w .xsd:}}\\ | |
| |
<code xml> | |
<?xml version="1.0" encoding="UTF-8"?> | |
<xsd:schema targetNamespace="http://student.agh.edu.pl/~szybura/xtt" | |
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" | |
xmlns:xtt="http://student.agh.edu.pl/~szybura/xtt" | |
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> | |
| |
<xsd:complexType name="Graph"> | |
<xsd:sequence> | |
<xsd:element name="TitleGraph" type="xsd:string" /> | |
<xsd:element name="DescribeGraph" type="xsd:string" /> | |
<xsd:element maxOccurs="unbounded" minOccurs="1" | |
name="TableGarph" type="xtt:Tabel" /> | |
</xsd:sequence> | |
</xsd:complexType> | |
<xsd:complexType name="Tabel"> | |
<xsd:sequence> | |
<xsd:element name="TitleTabel" type="xsd:string" /> | |
<xsd:element name="DescribeTabel" type="xsd:string" /> | |
<xsd:element maxOccurs="unbounded" minOccurs="1" | |
name="DataTabel" type="xtt:Row" /> | |
</xsd:sequence> | |
</xsd:complexType> | |
<xsd:complexType name="InsideRow"> | |
<xsd:sequence> | |
<xsd:element name="DescribeInsideRow" type="xsd:string" /> | |
<xsd:element name="DataInsideRow" type="xsd:string" /> | |
</xsd:sequence> | |
</xsd:complexType> | |
<xsd:complexType name="Row"> | |
<xsd:sequence> | |
<xsd:element name="TitleRow" type="xsd:string" /> | |
<xsd:element name="IdRow" type="xsd:int" /> | |
<xsd:element maxOccurs="unbounded" minOccurs="1" | |
name="DataRow" type="xtt:InsideRow" /> | |
<xsd:element maxOccurs="1" minOccurs="0" name="ConectorRow" | |
type="xsd:anyURI" ecore:reference="xtt:Row" ecore:opposite="IdRow"/> | |
</xsd:sequence> | |
</xsd:complexType> | |
</xsd:schema> | |
| |
</code> | |
| |
Dzięki danemu plikowi mogłem wygenerować pliki {{:pl:miw:xtt-ecore.xml|xtt.ecore}} oraz {{:pl:miw:xtt-genmodel.xml|xtt.genmodel}}, które potrzebne mi były do stworzenia edytora XTT.\\ | |
{{:pl:miw:eclipse1.jpg|:pl:miw:eclipse1.jpg}}\\ | |
Rysunek 1.\\ | |
| |
| |
{{:pl:miw:miw08_gefardxtt_2_eclipse2.jpg|:pl:miw:miw08_gefardxtt_2_eclipse2.jpg}}\\ | |
Rysunek 2.\\ | |
| |
Dzięki stworzonemu edytorowi XTT mogę wygenerować opis grafów XTT, np. (opis skrócony): | |
| |
<code xml> | |
<?xml version="1.0" encoding="UTF-8"?> | |
<xtt:Graph xmlns:xtt="http://student.agh.edu.pl/~szybura/xtt"> | |
<TitleGraph>Termostat</TitleGraph> | |
<DescribeGraph>Example. Termostat</DescribeGraph> | |
<TableGarph> | |
<TitleTabel>ms</TitleTabel> | |
<DescribeTabel>Table id: 1 - ms</DescribeTabel> | |
<DataTabel> | |
<TitleRow>Describe row</TitleRow> | |
<DataRow> | |
<DescribeInsideRow>(?) month</DescribeInsideRow> | |
<DataInsideRow>(?) month</DataInsideRow> | |
</DataRow> | |
<DataRow> | |
<DescribeInsideRow>(?) season</DescribeInsideRow> | |
<DataInsideRow>(?) season</DataInsideRow> | |
</DataRow> | |
</DataTabel> | |
</TableGarph> | |
</xtt:Graph> | |
</code> | |
| |
W każdym pliku mogę wygenerować odpowiednie tabele, w których mogę stworzyć wiersze, które są akurat potrzebne do przedstawienia danego modelu. Odpowiednie wiersze mogę ze sobą łączyć:\\ | |
| |
<code xml> | |
<ConectorRow>#//@tableGarph.0/@dataTabel.0</ConectorRow> | |
</code> | |
| |
| |
| |
| |
====== Tutorial - Jak uruchomić edytor? ====== | |
| |
W tutorialu wykorzystuję oprogramowanie: | |
| |
[[ftp://ftp.man.szczecin.pl/pub/eclipse/technology/epp/downloads/release/ganymede/R/eclipse-jee-ganymede-win32.zip|Eclipse Platform Version: 3.4.0]] | |
| |
* Uruchom eclipse.exe. | |
* Następnie naciśnij File -> New -> Other. | |
* Pojawi się okno, pokazane na Rysunku 3. Wybierz Eclipse Modeling Framework -> EMF Project. | |
| |
{{:pl:miw:eclipse3.jpg|:pl:miw:eclipse3.jpg}}\\ | |
Rysunek 3.\\ | |
* Następnie wpisz naciśnij NEXT oraz wpisz w kolejnym oknie nazwę projektu i naciśnij NEXT (Rysunek 4). | |
| |
{{:pl:miw:eclipse4.jpg|:pl:miw:eclipse4.jpg}}\\ | |
Rysunek 4.\\ | |
* Wybierz następnie Ecore model (modele importowane). | |
| |
{{:pl:miw:eclipse5.jpg|:pl:miw:eclipse5.jpg}}\\ | |
Rysunek 5.\\ | |
* W kolejnym kroku trzeba wczytać istniejący model stworzony z pliku xsd. Należy pobrać plik {{:pl:miw:xtt.xml|xtt.xml}} następnie zmienić rozszerzenie na xtt.ecore. | |
* Wybieramy model xtt.ecore, automatycznie plik jest ładowany (Rysunek 6). Wciskamy FINISH. | |
| |
{{:pl:miw:eclipse6.jpg|:pl:miw:eclipse6.jpg}}\\ | |
Rysunek 6.\\ | |
* Następnie gdy pojawi nam się okno z edytorem xtt.genmodel. Naciskamy prawym przyciskiem myszy i na xtt i wybieram GENERATE ALL (Rysunek 7). | |
| |
{{:pl:miw:eclipse7.jpg|:pl:miw:eclipse7.jpg}}\\ | |
Rysunek 7.\\ | |
* Generują się odpowiednie pliki, które potrzebne są do stworzenia edytora XTT (Rysunek 8). | |
| |
{{:pl:miw:eclipse8.jpg|:pl:miw:eclipse8.jpg}}\\ | |
Rysunek 8.\\ | |
* Gdy plik są wygenerowane, uruchamiamy myEditorXTT jako Eclipse Application (Rysunek 9). | |
| |
{{:pl:miw:eclipse9.jpg|:pl:miw:eclipse9.jpg}}\\ | |
Rysunek 9.\\ | |
* Gdy zrobimy wszystkie kroki podane wyżej powinno się wyświetlić drugie okno Eclipse. W którym musi utworzyć nowy projekt (File -> New -> General -> Project), musimy wpisać nazwę projektu i nacisnąć FINISH. | |
* W kolejnym kroku musimy stworzyć nowy model xtt (File -> New -> Other -> Example EMF Model Creatione Wizards -> Xtt Model, Rysunek 10). | |
| |
{{:pl:miw:eclipse10.jpg|:pl:miw:eclipse10.jpg}}\\ | |
Rysunek 10.\\ | |
* Następnie należy wpisać nazwę pliku np. My.xtt. Wcisnąć NEXT. W polu Model Object wybieramy Graph (Rysunek 11). I wciskamy FINISH. | |
| |
{{:pl:miw:eclipse11.jpg|:pl:miw:eclipse11.jpg}}\\ | |
Rysunek 11.\\ | |
* Gdy wszystko zostanie wykonane zgodnie z instrukcją możemy zacząć tworzyć nasz model xtt. Dodając poszczególne tabele, a w środku tabel wiersz, w wierszach zaś dodajemy poszczególne komórki (przyładowy wygląd tabel xtt). Oczywiście każdy graf, tabela, wiersz oraz wnętrze wiersza ma swoje właściwości, które możemy zmieniać w oknie Properties. | |
| |
{{:pl:miw:eclipse12.jpg|:pl:miw:eclipse12.jpg}}\\ | |
Rysunek 12.\\ | |
| |
* Każdy wiersz można połączyć z innym istniejącym wierszem. Ustawia się to w oknie Properties -> Connector Row. | |
| |
| |
| |
| |
| |
| |
| |
====== Materiały ====== | |
FIXME | |
* http://www.ibm.com/developerworks/ | |
* http://www.ibm.com/developerworks/opensource/library/os-gef/ | |
* http://www.ibm.com/developerworks/opensource/library/os-eclipse-gef11/ | |
* http://www.apohllo.pl/texts/eclipse.pdf | |
* http://www.eclipse.org/gef/overview.html | |
* http://www.eclipse.org/articles/Article-GEF-Draw2d/GEF-Draw2d.html | |
* Praca magisterska "Interfejs graficzny do budowy aplikacji kompnentowych zapewniający weryfikację semantyczną". Autorzy: Maciej Kwiecień, Jan Rachwalik | |
* http://www.eclipse.org/articles/Article-Introducing-GMF/article.html | |
* http://www.eclipse.org/articles/Article-Using%20EMF/using-emf.html | |
* http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.emf/org.eclipse.emf/doc/org.eclipse.emf.doc/references/overview/EMF.html?root=Modeling_Project&view=co | |
* http://www.w3schools.com/Schema/default.asp | |
| |
| |