Opis

Projekt zakończony

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

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.

Poniżej przedstawiam opis XTT w .xsd:

<?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>

Dzięki danemu plikowi mogłem wygenerować pliki xtt.ecore oraz xtt.genmodel, które potrzebne mi były do stworzenia edytora XTT.
:pl:miw:eclipse1.jpg
Rysunek 1.

:pl:miw:miw08_gefardxtt_2_eclipse2.jpg
Rysunek 2.

Dzięki stworzonemu edytorowi XTT mogę wygenerować opis grafów XTT, np. (opis skrócony):

<?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>

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ć:

<ConectorRow>#//@tableGarph.0/@dataTabel.0</ConectorRow>

Tutorial - Jak uruchomić edytor?

W tutorialu wykorzystuję oprogramowanie:

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
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
Rysunek 4.

  • Wybierz następnie Ecore model (modele importowane).

:pl:miw:eclipse5.jpg
Rysunek 5.

  • W kolejnym kroku trzeba wczytać istniejący model stworzony z pliku xsd. Należy pobrać plik 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
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
Rysunek 7.

  • Generują się odpowiednie pliki, które potrzebne są do stworzenia edytora XTT (Rysunek 8).

:pl:miw:eclipse8.jpg
Rysunek 8.

  • Gdy plik są wygenerowane, uruchamiamy myEditorXTT jako Eclipse Application (Rysunek 9).

: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
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
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
Rysunek 12.

  • Każdy wiersz można połączyć z innym istniejącym wierszem. Ustawia się to w oknie Properties → Connector Row.

Materiały

pl/miw/miw08_gefardxtt_2.txt · ostatnio zmienione: 2017/07/17 08:08 (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