Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:miw:miw08_gefardxtt_1 [2009/05/04 17:19]
gjn Links to hekate:eclipse changed to hekatedev:eclipse
pl:miw:miw08_gefardxtt_1 [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Opis ====== 
-__**Projekt zakończony**__ 
- 
-Maciej Dudek (4AR) <​md5@o2.pl>​ 
- 
-ARD 
- 
-GEF and Eclipse based editor for ARD and XTT. Evaluation, feasibility,​ prototype. 
-XTTv2 Editor [[miw:xtt requirements|requirements]] 
-  * input 
-    * Eclipse: [[http://​www.eclipse.org/​modeling/​|EMF]],​ Eclipse -> EMF -> GMF -> GEF 
-    * ARD: [[hekate:​bib:​hekate_bibliography#​gjn2008flairs-ardformal|Towards Formalization of ARD+ Conceptual Design and Refinement Method]] and [[hekate:​bib:​hekate_bibliography#​gjn2008flairs-ardprolog|An ARD+ Design and Visualization Toolchain Prototype in Prolog]] and [[hekate:​bib:​hekate_bibliography#​gjn2008flairs-userv|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 [[miw:ard requirements|requirements]] 
- 
- 
-====== Spotkania ====== 
- 
-[[pl:​miw:​miw08_gefardxtt_1:​spotkania|Archiwum spotkań]] 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-====== Projekt ====== 
- 
- 
- 
- 
-===== Source ===== 
- 
-  - {{:​pl:​miw:​miw08_gefardxtt_1:​ardeditor_project.zip|Ard Editor Project}} 
-  - {{:​pl:​miw:​miw08_gefardxtt_1:​ardeditor_diagram.zip|Ard Editor Diagram}} 
-  - {{:​pl:​miw:​miw08_gefardxtt_1:​ardeditor_edit.zip|Ard Editor Edit}} 
- 
- 
-==== Sposób uruchomienia ==== 
-  - Zaimportuj Ard Editor Diagram oraz Ard Editor Edit jako projekt w Eclipse 
-  - Otwórz oba projekty 
-  - Kliknij prawym przyciskiem na Ard Editor Diagram: 
-    - Run As... -> Eclipse Application 
-  - W nowo otwartym oknie Eclipse utwórz nowy projekt (wystarczy nawet pusty katalog) 
-  - Kliknij //New// -> Examples -> My Diagram 
-  - Otworzy się edytor. Użytkownik musi podać 2 nazwy plików: 
-    - Plik edytora o rozszerzeniu .hml_diagram (odpowiada za rozmieszczenie na ekranie itp) 
-    - Plik modelu o rozszerzeniu .hml (w formacie XML) 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-====== Sprawozdanie ====== 
- 
- 
- 
-===== 1. Przygotowanie ===== 
- 
-==== 1.1 Lektury ==== 
-Swoją pracę rozpocząłem od lektury następujących prac: 
-  * {{:​pl:​miw:​mgr-gef.pdf|GEF MS Thesis}} - Część pracy magisterskiej Macieja Kwietnia i Jana Rachwalika dotycząca GEF. 
-  * [[https://​ai.ia.agh.edu.pl/​wiki/​hekate:​bib:​hekate_bibliography#​gjn2008flairs-ardformal|Specyfikacja Ard+]] 
-  * [[https://​ai.ia.agh.edu.pl/​wiki/​hekate:​bib:​hekate_bibliography#​gjn2008flairs-ardprolog|System varda]] 
-  * [[https://​ai.ia.agh.edu.pl/​wiki/​hekate:​bib:​hekate_bibliography#​gjn2008flairs-userv|UServ case study]] 
-  * [[http://​www.eclipse.org/​articles/​Article-GEF-diagram-editor/​shape.html|Diagram Editor]] 
-  * [[http://​www.eclipse.org/​articles/​Article-GEF-editor/​gef-schema-editor.html|Schema Editor]] 
-  * [[http://​wiki.eclipse.org/​index.php/​GMF_Tutorial|Mindmodel Tutorial]] 
- 
-Dalsze kroki to: 
-  * Uruchomienie programu Varda. 
-  * Zainstalowanie EMF, GEF, GMF. 
-  * Uruchomienie przykładowych edytorów: Logic Diagram, Flow Diagram, Shapes Diagram. 
- 
-==== 1.2 Wyjaśnienie skrótów ==== 
-Ponieważ skróty EMF, GEF i GMF są do siebie podobne, po krótce wyjaśnię między różnice między tymi frameworkami:​ 
-  * [[http://​www.eclipsecon.com/​modeling/​emf/​|EMF]] - służy do tworzenia modeli, logiki biznesowej. Modele zapisywane są w plikach ecore. Jest możliwa konwersja między modelami w ecore oraz modelem opisanym przy pomocy [[http://​www.w3.org/​XML/​Schema|XSD (XML Schema)]]. 
-  * [[http://​www.eclipse.org/​gef/​|GEF]] - służy do tworzenia edytorów graficznych. Opiera się na bibliotece draw2d, z której czerpie narzędzia do rysowania. Jest dość skomplikowany i trudny w opanowaniu. Daje za to szerokie możliwości. Uwaga, nie mylić z [[http://​gef.tigris.org/​|innym GEF]], który nie jest projektem Eclipse. 
-  * [[http://​www.eclipse.org/​modeling/​gmf/​|GMF]] - plugin do Eclipse - w stosunku do GEF znacznie ułatwia tworzenie edytorów. Jest niejako graficzną "​nakładką"​ na framework GEF pomagając programiście stworzyć edytor. Można skorzystać z narzędzia [[http://​eclipser-blog.blogspot.com/​2007/​06/​gmf-project-in-5-minutes-with-gmf.html|dashboard]],​ który jest zaimplementowany jako jeden z widoków w Eclipse. Prowadzi on programistę przez proces tworzenia edytora używając do tego szeregu //​wizardów//​ i łącząc drobne części ze sobą. Na końcu generowany jest kod edytora w GEF uzupełniony o Runtime GMF. Jednak trudno wykorzystać GMF do zaawansowanych problemów. Dla niestandardowych problemów trzeba edytować kod na własną rękę korzystając z klas GEF. Podsumowując,​ zastosowanie GMF daje zautomatyzowanie generacji kodu, ale może nie wystarczyć w niestandardowych projektach. ​ 
- 
-Zatem tworząc aplikację z pewnością użycie wszystkich z nich będzie nieodzowne a ich działanie będzie się przenikało. 
- 
- 
- 
-===== 2. Pierwsza próba stworzenia edytora ===== 
- 
-==== 2.1 Użycie definicji DTD i translacja do XSD ==== 
-Aby skorzystać z możliwości EMF importując model XSD, przekształcono definicję [[https://​ai.ia.agh.edu.pl/​wiki/​_media/​hekate:​hml.dtd?​id=hekate%3Ahekate_markup_language&​cache=cache|HML.dtd]] z postaci DTD do postaci XSD. Efekt został przedstawiony poniżej: 
-<code xml> 
-<?xml version="​1.0"​ encoding="​UTF-8"?>​ 
-<​xs:​schema xmlns:​xs="​http://​www.w3.org/​2001/​XMLSchema"​ elementFormDefault="​qualified">​ 
-  <​xs:​element name="​hml">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element ref="​type_set"/>​ 
-        <​xs:​element ref="​attribute_set"/>​ 
-        <​xs:​element minOccurs="​0"​ ref="​property_set"/>​ 
-        <​xs:​element minOccurs="​0"​ ref="​tph"/>​ 
-        <​xs:​element minOccurs="​0"​ ref="​ard"/>​ 
-      </​xs:​sequence>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​type_set">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element minOccurs="​0"​ maxOccurs="​unbounded"​ ref="​type"/>​ 
-      </​xs:​sequence>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​type">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element minOccurs="​0"​ ref="​desc"/>​ 
-        <​xs:​element ref="​domain"/>​ 
-      </​xs:​sequence>​ 
-      <​xs:​attribute name="​id"​ use="​required"​ type="​xs:​ID"/>​ 
-      <​xs:​attribute name="​name"​ use="​required"/>​ 
-      <​xs:​attribute name="​base"​ use="​required">​ 
-        <​xs:​simpleType>​ 
-          <​xs:​restriction base="​xs:​token">​ 
-            <​xs:​enumeration value="​integer"/>​ 
-            <​xs:​enumeration value="​numeric"/>​ 
-            <​xs:​enumeration value="​string"/>​ 
-            <​xs:​enumeration value="​bool"/>​ 
-            <​xs:​enumeration value="​date"/>​ 
-            <​xs:​enumeration value="​time"/>​ 
-            <​xs:​enumeration value="​timestamp"/>​ 
-          </​xs:​restriction>​ 
-        </​xs:​simpleType>​ 
-      </​xs:​attribute>​ 
-      <​xs:​attribute name="​length"/>​ 
-      <​xs:​attribute name="​scale"/>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <!-- id should begin with '​tpe_...'​ --> 
-  <​xs:​element name="​desc"​ type="​xs:​string"/>​ 
-  <​xs:​element name="​domain">​ 
-    <​xs:​complexType>​ 
-      <​xs:​choice minOccurs="​0"​ maxOccurs="​unbounded">​ 
-        <​xs:​element ref="​range"/>​ 
-        <​xs:​element ref="​value"/>​ 
-      </​xs:​choice>​ 
-      <​xs:​attribute name="​type">​ 
-        <​xs:​simpleType>​ 
-          <​xs:​restriction base="​xs:​token">​ 
-            <​xs:​enumeration value="​ordered"/>​ 
-            <​xs:​enumeration value="​unordered"/>​ 
-          </​xs:​restriction>​ 
-        </​xs:​simpleType>​ 
-      </​xs:​attribute>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​range">​ 
-    <​xs:​complexType>​ 
-      <​xs:​attribute name="​from"​ use="​required"/>​ 
-      <​xs:​attribute name="​to"​ use="​required"/>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​value"​ type="​xs:​string"/>​ 
-  <​xs:​element name="​attribute_set">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element minOccurs="​0"​ maxOccurs="​unbounded"​ ref="​att"/>​ 
-        <​xs:​element minOccurs="​0"​ maxOccurs="​unbounded"​ ref="​group"/>​ 
-      </​xs:​sequence>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​att">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element minOccurs="​0"​ ref="​desc"/>​ 
-      </​xs:​sequence>​ 
-      <​xs:​attribute name="​id"​ use="​required"​ type="​xs:​ID"/>​ 
-      <​xs:​attribute name="​type"​ type="​xs:​IDREF"/>​ 
-      <​xs:​attribute name="​name"​ use="​required"/>​ 
-      <​xs:​attribute name="​abbrev"/>​ 
-      <​xs:​attribute name="​value"​ use="​required">​ 
-        <​xs:​simpleType>​ 
-          <​xs:​restriction base="​xs:​token">​ 
-            <​xs:​enumeration value="​single"/>​ 
-            <​xs:​enumeration value="​multiple"/>​ 
-          </​xs:​restriction>​ 
-        </​xs:​simpleType>​ 
-      </​xs:​attribute>​ 
-      <​xs:​attribute name="​class"​ use="​required">​ 
-        <​xs:​simpleType>​ 
-          <​xs:​restriction base="​xs:​token">​ 
-            <​xs:​enumeration value="​ro"/>​ 
-            <​xs:​enumeration value="​rw"/>​ 
-            <​xs:​enumeration value="​wo"/>​ 
-            <​xs:​enumeration value="​state"/>​ 
-          </​xs:​restriction>​ 
-        </​xs:​simpleType>​ 
-      </​xs:​attribute>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <!-- id should begin with '​att_...'​ --> 
-  <​xs:​element name="​group">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element minOccurs="​0"​ ref="​desc"/>​ 
-        <​xs:​element maxOccurs="​unbounded"​ ref="​attref"/>​ 
-      </​xs:​sequence>​ 
-      <​xs:​attribute name="​id"​ use="​required"​ type="​xs:​ID"/>​ 
-      <​xs:​attribute name="​name"​ use="​required"/>​ 
-      <​xs:​attribute name="​abbrev"/>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <!-- id should begin with '​grp_...'​ --> 
-  <​xs:​element name="​attref">​ 
-    <​xs:​complexType>​ 
-      <​xs:​attribute name="​ref"​ use="​required"​ type="​xs:​IDREF"/>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​property_set">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element minOccurs="​0"​ maxOccurs="​unbounded"​ ref="​property"/>​ 
-      </​xs:​sequence>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​property">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element maxOccurs="​unbounded"​ ref="​attref"/>​ 
-      </​xs:​sequence>​ 
-      <​xs:​attribute name="​id"​ use="​required"​ type="​xs:​ID"/>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <!-- id should begin with '​prp_...'​ --> 
-  <​xs:​element name="​tph">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element minOccurs="​0"​ maxOccurs="​unbounded"​ ref="​trans"/>​ 
-      </​xs:​sequence>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​trans">​ 
-    <​xs:​complexType>​ 
-      <​xs:​attribute name="​src"​ use="​required"​ type="​xs:​IDREF"/>​ 
-      <​xs:​attribute name="​dst"​ use="​required"​ type="​xs:​IDREF"/>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​ard">​ 
-    <​xs:​complexType>​ 
-      <​xs:​sequence>​ 
-        <​xs:​element minOccurs="​0"​ maxOccurs="​unbounded"​ ref="​dep"/>​ 
-      </​xs:​sequence>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-  <​xs:​element name="​dep">​ 
-    <​xs:​complexType>​ 
-      <​xs:​attribute name="​independent"​ use="​required"​ type="​xs:​IDREF"/>​ 
-      <​xs:​attribute name="​dependent"​ use="​required"​ type="​xs:​IDREF"/>​ 
-    </​xs:​complexType>​ 
-  </​xs:​element>​ 
-</​xs:​schema>​ 
-</​code>​ 
- 
-Dokument [[https://​ai.ia.agh.edu.pl/​wiki/​_media/​hekate:​hml-test.xml?​id=hekate%3Ahekate_markup_language&​cache=cache|hml-test.xml]] poprawnie przechodzi [[http://​www.xmlforasp.net/​SchemaValidator.aspx|walidację]] przy użyciu powyższej definicji. Konwersji dokonano przy użyciu programu [[http://​www.thaiopensource.com/​relaxng/​trang-manual.html|Trang]]. 
- 
-=== Problem z użyciem powyższej definicji === 
- 
-Powyższa definicja, choć poprawna, okazała się niekompatybilna z frameworkiem GMF. Podstawowe problemy to: 
-  * Relacja zawierania się - brak bezpośredniego połączenia korzenia z property. W definicji oryginalnej występuje następujące zawieranie: //ard -> property_set -> property//. Zgodnie z takim modelem, aby utworzyć //​property//,​ musielibyśmy tworzyć pośredni element //​property_set//​ oraz połączenia między nimi. Jest to naturalnie sprzeczne z naszym założeniem. 
-  * Wybór korzenia - edytor tworzony jest dla konkretnego elementu w modelu. Wybierając korzeń K możemy edytować elementy zawarte w K, ale innych nie. Więc jeśli chcemy mieć możliwość edycji //​property_set//​ oraz //ard// to naszym korzeniem musiałby być element //hml//. Lecz wtedy nasz edytor rozrósłby się jeszcze bardziej - o element //ard//. 
-  * Elementy IDREF - korzystanie z elementów IDREF nie uniemożliwia,​ lecz czyni trudniejszym tworzenie modelu. Trzeba jednak użyć [[http://​www.eclipse.org/​modeling/​emf/​docs/​overviews/​XMLSchemaToEcoreMapping.pdf|Ecore Annotations]]. 
- 
-Dokonano próby utworzenia edytora wszystkich elementów (bez żadnej customizacji) za pomocą pluginu do GMF o nazwie [[http://​dynamicgmf.sourceforge.net/​|Dynamic GMF]]. Ten plugin ma w założeniu dać możliwość wygenerowania edytora jedynie przez wybranie pliku xsd. Pojawiał się jednak błąd wewnętrzny programu "Null pointer exception"​. Takiego błędu nie było gdy użyłem pliku [[http://​dev.eclipse.org/​viewcvs/​index.cgi/​org.eclipse.gmf/​examples/​org.eclipse.gmf.examples.mindmap/​model/​mindmap.xsd?​root=Modeling_Project&​view=markup&​content-type=text%2Fvnd.viewcvs-markup&​revision=HEAD|mindmap.xsd]]. Sądzę, iż obecność elementów IDREF mogła się do tego przyczynić. 
- 
-==== 2.2 Inna metodologia tworzenia modeli ==== 
- 
-Dużo bardziej naturalnym, prostszym i efektywniejszym sposobem jest tworzenie modelu ecore pasującego do GMF. I tak import z XSD następuje do pliku ECORE, na którym później się operuje. 
- 
-Kolejnym krokiem mogłoby być eksportowanie tego modelu do XSD. W razie potrzeby można by dokonywać konwersji między róznymi definicjami XSD za pomocą szablonów XSLT. 
- 
-==== 2.3 Własny model ==== 
- 
-Stworzyłem zatem edytor opierając się o własny model. Model powstał przy pomocy EMF, który następnie wyeksportowałem do formatu XSD.  
- 
-Nowa wersja Ard.xsd: 
-<code xml> 
-<?xml version="​1.0"​ encoding="​UTF-8"​ standalone="​no"?>​ 
-<​xsd:​schema xmlns:​hml="​hml"​ xmlns:​xsd="​http://​www.w3.org/​2001/​XMLSchema"​ targetNamespace="​hml">​ 
-  <​xsd:​element name="​Ard"​ type="​hml:​Ard"/>​ 
-  <​xsd:​element name="​Property"​ type="​hml:​Property"/>​ 
-  <​xsd:​element name="​Atrybut"​ type="​hml:​Atrybut"/>​ 
-  <​xsd:​complexType name="​Ard">​ 
-    <​xsd:​sequence>​ 
-      <​xsd:​element maxOccurs="​unbounded"​ minOccurs="​0"​ name="​property"​ type="​hml:​Property"/>​ 
-    </​xsd:​sequence>​ 
-  </​xsd:​complexType>​ 
-  <​xsd:​complexType name="​Property">​ 
-    <​xsd:​sequence>​ 
-      <​xsd:​element maxOccurs="​unbounded"​ minOccurs="​0"​ name="​atrybut"​ type="​hml:​Atrybut"/>​ 
-    </​xsd:​sequence>​ 
-    <​xsd:​attribute name="​dependant">​ 
-      <​xsd:​simpleType>​ 
-        <​xsd:​list itemType="​xsd:​anyURI"/>​ 
-      </​xsd:​simpleType>​ 
-    </​xsd:​attribute>​ 
-  </​xsd:​complexType>​ 
-  <​xsd:​complexType name="​Atrybut">​ 
-    <​xsd:​attribute name="​nazwa"/>​ 
-  </​xsd:​complexType>​ 
-</​xsd:​schema>​ 
-</​code>​ 
- 
-Niestety, zawiera on jedynie opis ARD, bez TPH ani XTT.  
- 
-Poniżej zamieszczono screen z edytora oraz odpowiadający mu plik xml. 
- 
-==== 2.4 Edytor oparty na własnym modelu ==== 
- 
-Diagram Ard 
- 
-{{http://​hyper.ia.agh.edu.pl/​~dudekm/​zdj/​przykladowy_edytor_1.jpg}} 
- 
-Wygenerowany plik XML: 
-<code xml> 
-<?xml version="​1.0"​ encoding="​UTF-8"?>​ 
-<hml:Ard xmi:​version="​2.0"​ xmlns:​xmi="​http://​www.omg.org/​XMI"​ xmlns:​hml="​hml">​ 
-  <​property dependant="//​@property.1 //​@property.2">​ 
-    <atrybut nazwa="​jeden"/>​ 
-    <atrybut nazwa="​dwa"/>​ 
-  </​property>​ 
-  <​property>​ 
-    <atrybut nazwa="​trzy"/>​ 
-    <atrybut nazwa="​cztery"/>​ 
-  </​property>​ 
-  <​property>​ 
-    <atrybut nazwa="​pięć"/>​ 
-    <atrybut nazwa="​sześć"/>​ 
-  </​property>​ 
-</​hml:​Ard>​ 
-</​code>​ 
- 
-Sprawdzono zgodność pliku xml ze schematem xsd. 
- 
-Możliwości edytora ważne z punktu widzenia ARD: 
-  * Dodawanie nowych elementów //​property//​. 
-  * Dodawanie elementów //​attribute//​ do //​property//​. 
-  * Łączenie elementów //​property//​. 
-  * Zapis do pliku xml. 
- 
- 
- 
-===== 3. Perspektywy projektu ===== 
- 
-Jest to wstępny zarys edytora. Docelowy edytor miałby posiadać bogatą funkcjonalność. Dalsze elementy, które należałoby zaimplementować to:  
-  * Menu kontekstowe zawierające komendy //split// dla elementów //​attribute//​ oraz //​finalize//​ dla elementów //​property//​. [[http://​wiki.eclipse.org/​index.php/​GMF_Tutorial_Part_3#​Custom_Actions|Custom Actions]] 
-  * Utworzenie dwóch dodatkowych warstw: do pierwszej należałyby elementy i połączenia ard bez tph, do drugiego same elementy tph bez ard. Następnie należałoby umożliwić włączanie oraz wyłączanie widoczności warstw. W szczególności obie warstwy mogłyby być widoczne aby widzieć zarówno drzewo TPH jak i ARD. 
-  * Utworzenie połączenia edytora ARD z edytorem XTT. To połączenie mogłoby przyjąć różną formę: 
-  - otwarcia property w edytorze XTT [[http://​dev.eclipse.org/​newslists/​news.eclipse.tools.gef/​msg15508.html|link]] 
-  - edycji XTT poprzez duże zbliżenie (zoom) na sfinalizowany element property. 
-  * Utworzenie edytora XTT. 
- 
- 
- 
-===== 4. Wnioski ===== 
- 
-  * Model warto tworzyć od podstaw w EMF. 
-  * GEF to potężne narzędzie, lecz trudne w opanowaniu. 
-  * API GMF oraz GEF zostało w ostatnim czasie uzupełnione o komentarze, lecz nadal jest wiele miejsc, gdzie ich brakuje. ​ 
-  * Tutoriale są ukierunkowane na kilka zagadnień, w sprawie innych trzeba się pytać na forach dyskusyjnych,​ lub wręcz pisać do twórców frameworku. 
- 
- 
- 
- 
-===== 5. Linki ===== 
- 
-Poniżej zamieszczam wartościowe linki związane z moim projektem: 
-=== Instalacja GMF === 
-  * [[http://​wiki.eclipse.org/​index.php/​GMF_Tutorial|Instalacja + tutorial]] 
-  * [[http://​www.brovig.org/​blog/​2007/​05/​17/​installing-gmf-on-eclipse-33-m7-europa/​|installing-gmf-on-eclipse-33-m7-europa]] 
- 
-=== Nauka === 
-  * [[http://​www.eclipse.org/​articles/​Article-Introducing-GMF/​article.html|Introducing GMF]] 
-  * [[http://​www.eclipse.org/​articles/​Article-GEF-editor/​gef-schema-editor.html|GEF Schema Editor]] 
-  * [[http://​www.ibm.com/​developerworks/​library/​os-ecemf1/​|IBM tutorial]] 
-  * [[http://​mirrors.ibiblio.org/​pub/​mirrors/​eclipse/​technology/​phoenix/​demos/​gmf-orgchart/​|Screencast]] - bardzo przydatny. ​ 
-  * [[http://​www.eclipse.org/​articles/​Article-FromFrontendToCode-MDSDInPractice/​article.html|Inne podejście do tematu]] 
-  * [[http://​wiki.eclipse.org/​index.php/​GMF_Tutorial_BPMN|Tutorial]] - edytora [[http://​pl.wikipedia.org/​wiki/​BPMN|BPMN]]. Krok po kroku. 
- 
-=== Troubleshooting === 
-Problemy, które napotkałem oraz linki pomocne w ich rozwiązaniu:​ 
-  * [[http://​dev.eclipse.org/​newslists/​news.eclipse.technology.gmf/​msg03925.html|Containment Feature]] 
- 
-=== Support === 
-  * [[http://​www.nabble.com/​Eclipse-GEF---Dev-f2208.html|GEF mailing list archive]] 
-  * [[http://​eclipseforum.org.pl/​|Polskie forum eclipse]] - zostało uruchomione pod koniec 2007 roku. 
- 
-=== Inne === 
-  * [[http://​wiki.eclipse.org/​index.php/​GMF_Documentation|GMF_Documentation]] - zawiera wiele dalszych linków. 
-  * [[http://​help.eclipse.org/​help33/​index.jsp|Eclipse 3.3 API]] - zawiera również GMF, GEF. 
-  * [[http://​eclipse-po-polsku.blogspot.com/​|Eclipse po polsku]] 
-  * [[http://​www.redbooks.ibm.com/​redbooks/​pdfs/​sg246302.pdf|IBM red book]], [[http://​publib-b.boulder.ibm.com/​Redbooks.nsf/​RedpieceAbstracts/​sg246302.html|code]] - bardzo przydatne, wiele elementów dobrze opisanych. 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-====== Materiały ====== 
- GEF resources ([[http://​www-128.ibm.com/​developerworks/​opensource/​library/​os-eclipse-gef11/?​ca=dgr-lnxw07EclipseGEF|GEF]],​ [[http://​www.eclipse.org/​articles/​Article-GEF-editor/​gef-schema-editor.html]]), ​ 
- 
-{{:​pl:​miw:​mgr-gef.pdf|GEF MS Thesis}} 
- 
-Patrz też na [[hekatedev:​eclipse|osobne hasło]] 
  
pl/miw/miw08_gefardxtt_1.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0