Upload
kamil-pietak
View
869
Download
3
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 (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