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 Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Zastosowania EMF

2 Jacek Pospychała Pospychała 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 Pospychała 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 Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Przykładowa aplikacja

5 Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Przykładowa aplikacja - model

6 Jacek Pospychała Pospychała 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 Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Aplikacja EBayManager Model Importer: Ecore model URI modelu: Pamiętaj nacisnąć Load! Finish

8 Jacek Pospychała Pospychała 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 Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Aplikacja EBayManager org.ess.ebaymanager.edit org.ess.ebaymanager.editor Co to jest??

10 Jacek Pospychała Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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 Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenia 1Usunięcie elementów z drzewa

16 Jacek Pospychała Pospychała 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 Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenia 2 Dodanie wirtualnego elementu

18 Jacek Pospychała Pospychała 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 Pospychała Eclipse Summer School 2007Eclipse Summer School Dodanie wirtualnego elementu Potrzebny ItemProvider wirtualnego elementu Rejestracja wirtualnego elementu Ćwiczenia public class QueriesItemProvider extends ItemProviderAdapter public Collection getChildren(Object object) { Collection result = super.getChildren(object); result.add(new VirtualItemProvider(adapterFactory, (Queries) object)); return result; }

20 Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007.Editor Przykładowy edytor Dynamiczna obsługa dowolnych modeli Wykorzystanie refleksji Wykorzystanie.Edit

21 Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007.Editor Dynamiczna obsługa dowolnych modeli

22 Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007.Editor Dynamiczna obsługa dowolnych modeli Korzystamy z Sample Reflective Ecore Editor

23 Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007.Editor Dynamiczna obsługa dowolnych modeli Korzystamy z Sample Reflective Ecore Editor

24 Jacek Pospychała Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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 Pospychała 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... { protected Command createAddCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Collection collection, int index) { return new AddCommand(domain, owner, feature, collection, index) public void doExecute() { super.doExecute(); // wyswietlenie komunikatu } }; }

34 Jacek Pospychała Pospychała 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... { protected Command createAddCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Collection collection, int index) { return new AddCommand(domain, owner, feature, collection, index) 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 Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Walidacja Batch Validation Live Validation

36 Jacek Pospychała Pospychała 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 Pospychała 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 Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Więcej o EMF

39 Jacek Pospychała Pospychała 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