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

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie Wizualne WYKŁAD 5
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
Licznik template<class Count_Type> class Count { public:
18/11/ Języki programowania 1 Piotr Górczyński Łączenie z bazą danych.
.NET - możliwości Jarosław Balcer & Jan Góralski.
Model – View - Controler
W ZORCE P ROJEKTOWE … czyli ktoś już rozwiązał Twoje problemy!
BIRT.
Graphical Modeling Framework
Mirosław Ochodek Sponsorzy: EMF i dane EMF w plikach i bazie danych.
Widoki.
Sponsor główny: Bartosz Michalik Perspektywy czyli każdy może mieć swój punkt widzenia.
EMF i Genmodel Projekt org.inmost.crm.teneo.
Jakub Jurkiewicz Mirosław Ochodek Sponsorzy: Debug Jak szukać błędów w Eclipsie?
Czyli jak testować w Eclipsie?
Refaktoryzacja czyli odświeżanie kodu
Hibernate Klasy trwałe
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów Command Pattern.
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
C++ wykład 2 ( ) Klasy i obiekty.

Język Java Wielowątkowość.
Projekt i implementacja aplikacji do zasilania bazy danych testowymi danymi Jacek Lis Promotor: prof. dr hab. inż. Włodzimierz KASPRZAK.
Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.
Projektowanie warstwy serwera DisplayTag. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Hibernate relacje.
Hibernate uzupełnienie
C# Windows Forms Zastosowania Informatyki Wykład 3
Test Doubles Adam Gabryś , v1.1,
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Podstawy inżynierii oprogramowania Zofia Kruczkiewicz
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Programowanie obiektowe w C++
Tworzenie aplikacji mobilnych
Mariusz Maleszak MCP | MCTS | MCITP | MCT
Tworzenie aplikacji mobilnych
Programowanie obiektowe – zastosowanie języka Java SE
Java – coś na temat Klas Piotr Rosik
Seminarium problemowe
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Programowanie obiektowe 2013/2014
OCPJP Inner classes.
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1.
Wzorce projektowe Jacek Matulewski
Bartosz Michalik Jakub Jurkiewicz Sponsor główny: Eclipse IDE Zanim rozpoczniemy naszą pracę...
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Zakres Wzorce projektowe ( -Adapter (str , wykład wzorce projektowe.
Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)
Zakres Wzorce projektowe - kreacyjne -Factory Method -Abstract Factory.
Paweł Starzyk Obiektowe metody projektowania systemów
Wzorce Projektowe w JAVA
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Inżynieria oprogramowania Wzorce konstrukcyjne WWW: Jacek Matulewski Instytut Fizyki, UMK.
Programowanie Obiektowe – Wykład 6
(według:
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5
PGO Interfejsy Michail Mokkas.
PGO - Projektowanie i implementacja pierwszych klas
Refaktoryzacja czyli odświeżanie kodu
Zapis prezentacji:

Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Zastosowania EMF

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.

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

Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Przykładowa aplikacja

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

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

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

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

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

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)

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

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

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

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 ?

Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenia 1Usunięcie elementów z drzewa

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; }

Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Ćwiczenia 2 Dodanie wirtualnego elementu

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(); }

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; }

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

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

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

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

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

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));

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

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

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

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(); }

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

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

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.

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 } }; }

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); } }; }

Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Walidacja Batch Validation Live Validation

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

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

Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Więcej o EMF

Jacek Pospychała Pospychała Eclipse Summer School 2007Eclipse Summer School 2007 Dziękuję