Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007.

Podobne prezentacje


Prezentacja na temat: "Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007."— Zapis prezentacji:

1 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Zastosowania EMF

2 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Podsumowanie EMF 1: EMF jako zaawansowany model danych, oraz innowacyjne środowisko Model Driven Development z wieloma rozszerzeniami. Cel prezentacji EMF 2: Jak dla modelu EMF zbudować funkcjonalne GUI, dokonywać walidacji danych, zarządzać modyfikacjami i operować w srodowisku wielowątkowym.

3 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Zastosowania EMF Utworzenie przykładowej aplikacji Wybrane aspekty działania GUI Integracja z interfejsami użytkownika Grupowanie i cofanie zmian Walidacja Przykłady innych edytorów

4 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Przykładowa aplikacja

5 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Przykładowa aplikacja - model

6 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Aplikacja EBayManager Tworzymy nowy Empty EMF Project projekt org.ess.ebaymanager Tworzymy nowy EMF Model Nazwa: model.genmodel Lokalizacja:org.ess.ebaymanager/model

7 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Aplikacja EBayManager Model Importer: Ecore model URI modelu: http://se.cs.put.poznan.pl/ess207/model.ecore Pamiętaj nacisnąć Load! Finish

8 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Aplikacja EBayManager Otwieramy model.genmodel W Properties elementu Model, zmieniamy Rich Client Application = true Generate All z menu kontekstowego Model

9 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Aplikacja EBayManager org.ess.ebaymanager.edit org.ess.ebaymanager.editor Co to jest??

10 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Wybrane aspekty GUI Jak budujemy GUI? miejsce na dane – model (EMF) design, widok, kontrolki, layouty (.Editor) integracja widok-model (.Edit)

11 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 EMF.Edit Dostosowanie modelu do potrzeb GUI pełna integracja z modelem adaptery – odbiór i propagacja zmian zasilanie danymi innych interfejsów

12 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 EMF.Edit ItemProvider.java ItemProviderAdapterFactory.java EditPlugin.java ItemProviderAdapterFactory agreguje klasy ItemProvider ItemProviderAdapterFactory adaptuje się do otrzymywanych obiektów

13 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Item Provider Adaptery wspierające wyswietlanie i edycję modelu Item Provider Adapter Factory Dostarczanie item providerów Template Method Definiowanie własnego zachowania poprzez modyfikację wygenerowanych item providerów Wzorce

14 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 EMF.Edit ItemProviderAdapter Adapter EMF, Implementacja typowych funkcji IEditingDomainProvider Struktura modelu, tworzenie komend IStructuredItemContentProvider Lista elementów obiektu ITreeItemContentProvider Struktura drzewiasta obiektu IItemLabelProvider Nazwa i obrazek obiektu IItemPropertySource Własciwosci obiektu Co dokładnie dostarczają Item Providery ?

15 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenia 1Usunięcie elementów z drzewa

16 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenia 1Usunięcie elementów z drzewa contentOutlineViewer.setInput(editingDomain.getResourceSet()); // REPLACE WITH: contentOutlineViewer.setInput(editingDomain.getResourceSet().getResources().get(0)); public Collection getChildrenFeatures(Object object) { if (childrenFeatures == null) { super.getChildrenFeatures(object); childrenFeatures.add(ModelPackage.Literals.QUERY__ITEMS); // REMOVE childrenFeatures.add(ModelPackage.Literals.QUERY__LOCATION_FILTER); } return childrenFeatures; }

17 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenia 2 Dodanie wirtualnego elementu

18 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenia 2 Dodanie wirtualnego elementu Potrzebny ItemProvider wirtualnego elementu Rejestracja wirtualnego elementu public class VirtualItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { //... public VirtualItemProvider(AdapterFactory adapterFactory, Queries parent) { super(adapterFactory); this.parent = parent; } //... public String getText(Object object) { return "Number of queries: " + parent.getQueries().size(); }

19 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 2 Dodanie wirtualnego elementu Potrzebny ItemProvider wirtualnego elementu Rejestracja wirtualnego elementu Ćwiczenia public class QueriesItemProvider extends ItemProviderAdapter //... @Override public Collection getChildren(Object object) { Collection result = super.getChildren(object); result.add(new VirtualItemProvider(adapterFactory, (Queries) object)); return result; }

20 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Przykładowy edytor Dynamiczna obsługa dowolnych modeli Wykorzystanie refleksji Wykorzystanie.Edit

21 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Dynamiczna obsługa dowolnych modeli

22 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Dynamiczna obsługa dowolnych modeli Korzystamy z Sample Reflective Ecore Editor

23 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Dynamiczna obsługa dowolnych modeli Korzystamy z Sample Reflective Ecore Editor

24 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenie Dynamiczna obsługa dowolnych modeli Utworzyć dynamiczną instancję Queries Zmodyfikować model, np. dodać nowy LocationFilter Uzupełnić dane w dynamicznej instancji

25 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Wykorzystanie.Edit public class ModelEditor { //... protected void initializeEditingDomain() { //... adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ModelItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); //... public void createPages() { //... selectionViewer = (TreeViewer)viewerPane.getViewer(); selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));

26 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Przykładowe widoki Intensywne wykorzystanie Viewerów Integracja z Outline i Properties Viewery, viewery, viewery ISaveablePart Domena edycyjna Komendy EMF

27 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Przykładowe widoki Intensywne wykorzystanie Viewerów Integracja z Outline i Properties Viewery, viewery, viewery ISaveablePart Domena edycyjna Komendy EMF

28 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Przykładowe widoki Intensywne wykorzystanie Viewerów Integracja z Outline i Properties Viewery, viewery, viewery ISaveablePart Domena edycyjna Komendy EMF

29 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Przykładowe widoki Intensywne wykorzystanie Viewerów Integracja z Outline i Properties Viewery, viewery, viewery ISaveablePart public interface ISaveablePart { public static final int PROP_DIRTY = IWorkbenchPartConstants.PROP_DIRTY; public void doSave(IProgressMonitor monitor); public void doSaveAs(); public boolean isDirty(); public boolean isSaveAsAllowed(); public boolean isSaveOnCloseNeeded(); }

30 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007.Editor Przykładowe widoki Intensywne wykorzystanie Viewerów Integracja z Outline i Properties Viewery, viewery, viewery ISaveablePart Domena edycyjna Komendy EMF

31 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Komendy Abstrakcyjne - niezależne od modelu Podstawowe operacje na modelu EMF Cofanie/powtarzanie zmian Grupowanie złożonych zmian w jedną operację Transaction: RecordingCommand Transakcje

32 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Zadanie Zmiana sposobu działania komendy: Podczas dodawania nowego obiektu do klasy Queries, wyswietl komunikat.

33 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Zadanie Zmiana sposobu działania komendy: Podczas dodawania nowego obiektu do klasy Queries, wyswietl komunikat. public class QueriesItemProvider extends ItemProviderAdapter... { //.... @Override protected Command createAddCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Collection collection, int index) { return new AddCommand(domain, owner, feature, collection, index) { @Override public void doExecute() { super.doExecute(); // wyswietlenie komunikatu } }; }

34 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Zadanie Zmiana sposobu działania komendy: Podczas dodawania nowego obiektu do klasy Queries, wyswietl komunikat. public class QueriesItemProvider extends ItemProviderAdapter... { //.... @Override protected Command createAddCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Collection collection, int index) { return new AddCommand(domain, owner, feature, collection, index) { @Override public void doExecute() { super.doExecute(); Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); String message = "Dodano "+collection.size()+ " obiektow do "+feature.getName() + " "+owner.eClass().getName(); MessageDialog.openInformation(shell, "Dodano obiekt", message); } }; }

35 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Walidacja Batch Validation Live Validation

36 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Walidacja: Ćwiczenia Tworzymy ograniczenia (klasy Java) Rejestrujemy ograniczenia (punkty rozszerzeń) Uruchomienie walidacji wsadowej Uruchomienie walidacji dynamicznej

37 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Przykładowy edytor 2 Edytor Eclipse Forms + Databinding Przykład integracji EMF+Eclipse Forms+JFace Databinding

38 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Więcej o EMF

39 Jacek Pospychała jacek.pospychala@cs.put.poznan.plJacek Pospychała jacek.pospychala@cs.put.poznan.pl Eclipse Summer School 2007Eclipse Summer School 2007 Dziękuję


Pobierz ppt "Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007."

Podobne prezentacje


Reklamy Google