27
Tworzenie aplikacji typu Rich Clients za pomocą Eclipse 4 RCP Eclipse Day Kraków 13.09.2012 Kamil Piętak [email protected]

Tworzenie aplikacji typu Rich Clients za pomocą Eclipse 4 RCP

Embed Size (px)

Citation preview

Tworzenie aplikacji typu Rich Clients za pomocą Eclipse 4 RCP

Eclipse Day Kraków

13.09.2012

Kamil Pię[email protected]

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Produkty Eclipse RCP 3.x

IDE

Java

C++

PHP

Scala

Latex

etc.

XMind

Knime

MyTourbook

Takka on uDig

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Agenda

Elementy Eclipse 4.x

Model aplikacji

Wstrzykiwanie zależności

Definicja API za pomocą adnotacji

Wbudowane (opcjonalne) usługi

Obsługa stylów CSS

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Elementy Eclipse 4.x

Model aplikacji

Wstrzykiwanie zależności

Definicja API za pomocą adnotacji

Wbudowane (opcjonalne) usługi

Obsługa stylów CSS

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Zarządzanie strukturą produktu

Outline ViewJava Editor

Menus, Commands,

Handlers

Resources EditorToolbar Items

Commands, Handlers for Compiler

Resources Management View

Application Preferences

Help Content

Table Editor

Commands for Graphs

Graph Editor

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Zarządzanie strukturą produktu

Źródło: http://www.barnorama.com/crazy-scaffolding/

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Model aplikacji (1)

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Model aplikacji (2)

Opis modelu w statycznym pliku (domyślnie Application.e4xml) w plug-inie produktu

Możliwośd rozszerzenia modelu za pomocą tzw. fragmentów

Brak rozróżnienia pomiędzy widokami i edytorami parts

Model jest dostępny w czasie działania programu (API, live editor)

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Elementy Eclipse 4.x

Model aplikacji

Wstrzykiwanie zależności

Definicja API za pomocą adnotacji

Wbudowane (opcjonalne) usługi

Obsługa stylów CSS

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Eclipse 3.x – statyczne zależności

public class SampleCommandOnSelection extends AbstractHandler {

public Object execute(final ExecutionEvent evnt){

// get active selection

ISelection selection = HandlerUtil.getCurrentSelection(evnt);

// get active editor

IWorkbenchPart part = HandlerUtil.getActivePart(evnt);

return null;

}

}

// get active selection

ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)

.getActivePage().getSelection();

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Eclipse 4.x - komenda

public class SampleCommandOnSelection {

@Inject

ESelectionService selService;

@Execute

public void execute() {

ISelection selection = selService.getSelection();

}

}

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Wstrzykiwanie zależności (1)

Adnotacje JSR-330

@Inject

@Named

Dodatkowe adnotacje

@Optional

@Preference

Re-injection śledzenie zmian wartości wstrzykniętych elementów (np. aktualna selekcja)

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Wstrzykiwanie zależności (2)

Co jest dostępne w kontenerach?

wszystkie serwisy OSGi,

elementy modelu aplikacji,

preferencje,

recznie dodane obiekty.

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Wstrzykiwanie zależności (3)

Hierarchia kontenerów (kontekstów)

Źródło: http://www.vogella.com/articles/EclipseRCP/article.html

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Elementy Eclipse 4.x

Model aplikacji

Wstrzykiwanie zależności

Definicja API za pomocą adnotacji

Wbudowane (opcjonalne) usługi

Obsługa stylów CSS

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Eclipse 3.x – definicja widoku

public class SampleView extends ViewPart {

Label label;

public void createPartControl(Composite parent) {

label = new Label(parent, SWT.NONE);

}

public voidd setFocus() {

label.setFocus();

}

public void dispose() {...}

}

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Eclipse 4.x – definicja widoku

public class SampleView {

Label label;

@PostConstruct

public void createContents(Composite parent) {

label = new Label(parent, SWT.NONE);

}

@Focus

private void setFocus() {

label.setFocus();

}

@PreDestroy

public void dispose() {...}

}

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Definicja API za pomocą adnotacji

Zarządzanie cyklem życia partów @PostConstruct

@PreDestroy

@Focus

Zarządzanie cyklem życia aplikacji

Beheviours annotations @Execute

@CanExecute

@EventTopic and @UIEventTopic

Źródło: http://www.toedter.com/blog/?p=896

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Elementy Eclipse 4.x

Model aplikacji

Wstrzykiwanie zależności

Definicja API za pomocą adnotacji

Wbudowane (opcjonalne) usługi

Obsługa stylów CSS

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Wbudowane usługi

Większośd usług jest opcjonalna

Rejestrowanie usług za pomocą: OSGi Services

Addons w modelu aplikacji

Ręczne – bezpośrednio w kontenerze

Przykładowe usługi: IEventBroker

EModelSerivce, EPartService

DnDAddon

StatusReporter, Logging

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Elementy Eclipse 4.x

Model aplikacji

Wstrzykiwanie zależności

Definicja API za pomocą adnotacji

Wbudowane (opcjonalne) usługi

Obsługa stylów CSS

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Style CSS i renderery

Źródło: http://www.toedter.com/blog/?p=709

SwingJava FX

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Style CSS

CSS Spy – narzędzie umożliwiające podgląd właściwości wizualnych dla elementów aplikacji

Theme Manager – umożliwia zmianę stylu w czasie działania programu

Ciekawy styl dla Eclipse IDE:

http://www.vogella.com/blog/2012/07/25/new-eclipse-4-chrome-theme-eclipse-4-get-even-more-beautiful/

Źródło: http://www.vogella.com/articles/Eclipse4CSS/article.html

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Znane problemy

Trudności z wykorzystaniem elementów z Eclipse 3.x (np. widoki, edytory) w aplikacjach zbudowanych na Eclipse 4.x

Problemy z wydajnością:

http://www.h-online.com/open/news/item/Weak-performance-of-Eclipse-4-2-criticised-1702921.html

https://bugs.eclipse.org/bugs/show_bug.cgi?id=385272

Dodatkowe fundusze na optymalizację środowiska

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Podsumowanie

Obiecujące narzędzie do tworzenia całkiem nowych aplikacji typu rich client

Łatwe zarządzanie strukturą aplikacji

Szybszy i łatwiejszy development

Poprawione możliwości testowania kodu

Problemy z migracją istniejących rozwiązao

Poza stylami CSS brak znaczących usprawnieo i nowości w tworzeniu interfejsu graficznego

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Źródła i ciekawe odnośniki

Tutoriale o Eclipse 4, Lars Vogelhttp://www.vogella.com/

Eclipse 4 Application Development, Lars Vogel, Mike Milinkovich (Foreword)

Kai Tödter Blog: http://www.toedter.com/blog/

Copyright © 2012 IISGTworzenie aplikacji Rich Client za pomocą Eclipse 4 RCP

Pytania?

Kamil Piętak ([email protected])Źródło: http://sixtorivera.com