Alkalmazásfejlesztés Eclipse RCP használatával

Hasonló dokumentumok
Segédanyag: Java alkalmazások gyakorlat

Közösség, projektek, IDE

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

2. modul - Operációs rendszerek

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Segédanyag: Java alkalmazások gyakorlat

ÁNYK53. Az Általános nyomtatványkitöltő (ÁNYK), a személyi jövedelemadó (SZJA) bevallás és kitöltési útmutató együttes telepítése

Grafikus felületek készítése 1.

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén

RapidMiner telepítés i. RapidMiner telepítés

JavaScript Web AppBuilder használata

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

Útmutató az OKM 2007 FIT-jelentés telepítéséhez

Operációs rendszerek. Tanmenet

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Hová tűnt a sok kereszthivatkozás?

Java I. A Java programozási nyelv

A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05 Geodéziai Feldolgozó Program

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Mobil Informatikai Rendszerek

A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05+ Geodéziai Feldolgozó Program

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Viczián István IP Systems JUM XIX szeptember 18.

KIRA. KIRA rendszer. Telepítési útmutató v1

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Hardver és szoftver követelmények

E-Freight beállítási segédlet

Programozási technológia

Selling Platform Telepítési útmutató Gyakori hibák és megoldások

Samsung Universal Print Driver Felhasználói útmutató

Web-fejlesztés NGM_IN002_1

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén

Microsoft SQL Server telepítése

Selling Platform Telepítési útmutató Gyakori hibák és megoldások

Programozási technológia

WordPress segédlet. Bevezető. Letöltés. Telepítés

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Eclipse Rich AJAX Pla0orm

A Java EE 5 plattform

Stateless Session Bean

ECDL Információ és kommunikáció

RH/CentOS felügyelet SUSE Manager segítségével. Kovács Lajos Vezető konzultáns

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Kedvenc Linkek a témakörben: MySQL mindenkinek Vizuális adatbázis tervezés

Használati utasítás.

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

OOP és UML Áttekintés

DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák

.NET alkalmazások telepítése

RIA Rich Internet Application

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Java programozási nyelv 6. rész Java a gyakorlatban

M-Files Dokumentumkezelő telepítése

Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel

ÉVI ADATSZOLGÁLTATÁSOK JAVÍTÁSA. Készítette: Tóth Péter szeptember 26.

Felhasználói kézikönyv - Android kliens

Private Cloud architektúra keretrendszer

A L i n u x r u h á j a

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

NLToken webes aláíró modul telepítése és használata a. Magyar Államkincstár weboldalán. Verzió 1.4

Madarassy László, mérnök, BME - Mobil Innovációs Központ. lmadarassy@mik.bme.hu

Mobil Partner telepítési és használati útmutató

italc felhasználói dokumentáció

C++ fejlesztés az ECLIPSE környezetben

Importálás. más típusú (pl:.imp,.xml,.xkr,.xcz) állomány beimportálása a nyomtatványkitöltő programba

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Operációs rendszerek. Az X Window rendszer

Swing GUI készítése NetBeans IDE segítségével

Mobil Informatikai Rendszerek

BaBér bérügyviteli rendszer telepítési segédlete év

libgdx alapok, első alkalmazás

Telepítés, újratelepítés több számítógépre, hálózatos telepítés Kulcs-Bér program

A Zotero hivatkozáskezelő program bemutatása. Mátyás Melinda

A telepítési útmutató tartalma

Az alábbiakban szeretnénk segítséget nyújtani Önnek a CIB Internet Bankból történő nyomtatáshoz szükséges böngésző beállítások végrehajtásában.

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Netlock Kft. által kibocsátott elektronikus aláírás telepítése Windows XP SP3 Internet Explorer 8 böngészőbe

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

ContractTray program Leírás

A szerzőkről... xiii A csapat... xiv Az Online Training Solutions, Inc. (OTSI)... xiv

Zimbra levelező rendszer

Telepítési Kézikönyv

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

1. Bevezető. 2. Sérülékenységek

ANDROID ALKALMAZÁSFEJLESZTÉS

KnowledgeTree dokumentumkezelő rendszer

1 Rendszerkövetelmények

Ubuntu Érettségi Remix Telepítési és beállítási leírás. Ágazati szakmai komplex távközlési ismeretek érettségihez

JAVA webes alkalmazások

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows7 operációs rendszer és Internet Explorer 8-es verziójú böngésző esetén

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

eszemélyi Kliens Szoftvercsomag

Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához. ERA - MNBSigner. Elektronikus aláírás - felhasználói dokumentáció

Algoritmus terv 3. Fejezet: Folyamatok meghatározása

Átírás:

Alkalmazásfejlesztés Eclipse RCP használatával

Tartalom Bevezetés Mi egy RCP alkalmazás? Grafikus felületek készítése Perspektívák és nézetek Command Framework RCP alkalmazások 2

Eclipse RCP Rich Client Platform Vastag kliens alkalmazások fejlesztésére Eclipse technológia Moduláris fejlesztés Eclipse plug-in felhasználható Eclipse 3.0 óta elérhető 3

RCP architektúra Help (optional) Update (optional) IDE Text Debug Search, compare Team support Text IDE Personality Generic Workbench Resources JFace Eclipse runtime SWT OSGi 4

RCP architektúra Help (optional) Update (optional) IDE Text Debug Search, compare RCP platform Team support Text IDE Personality Generic Workbench Resources JFace Eclipse runtime SWT OSGi 5

RCP architektúra Help (optional) Update (optional) IDE Text Debug Search, compare Team support Text IDE Personality Generic Workbench Resources JFace IDE komponensek Eclipse runtime SWT OSGi 6

RCP architektúra Help (optional) Update (optional) IDE Text Debug Search, compare Team support Text IDE Personality JFace Generic Workbench Opcionális komponensek Eclipse runtime Resources SWT OSGi 7

További opcionális komponensek EMF: modellezési rendszer és kapcsolódó szolgáltatások GEF: grafikus szerkesztők támogatás Forms API: űrlapkészítés BIRT: jelentéskészítés Welcome page: nyitólap Cheat Sheets: rövid útmutató többlépéses folyamathoz Outline és Properties nézet támogatás És gyakorlatilag tetszőleges Eclipse plug-in 8

A Platform mérete RCP 3.5.1: Letöltés (bináris, runtime): 15 MB Kicsomagolva: 17 MB Eclipse pluginek száma: 32 Ez csak az alap méret További szolgáltatásokkal nőhet 9

RCP alkalmazások IBM Lotus Symphony Irodai szoftverek és kommunikáció 10

RCP alkalmazások Tasktop - Feladatlistakezelő 11

RCP alkalmazások XMIND Mind Mapper 12

RCP alkalmazások Eclipse Trader Tőzsde figyelő 13

RCP alkalmazások Kalypso Földrajzi Információ Menedzser 14

Mi egy RCP alkalmazás? 15

Mi egy Eclipse alkalmazás? Az org.eclipse.core.runtime.applications pont kiterjesztése <extension id="application point="org.eclipse.core.runtime.applications > <application> <run class= com.optxware.eclipsecourse.rcpdemo.application > </run> </application> </extension> És egy IApplication interfészt megvalósító osztály 16

IApplication public class Application implements IApplication { public Object start(iapplicationcontext context) throws Exception { System.out.println( Hello, world ); } } public void stop() {} Az alkalmazás futtatása 17

IApplication public class Application implements IApplication { public Object start(iapplicationcontext context) throws Exception { System.out.println( Hello, world ); } } public void stop() {} Az alkalmazás leállítása 18

RCP alkalmazás RCP alkalmazás: Olyan Eclipse alkalmazás, melyben az eseménykezelést a Workbench végzi. Workbench felépítése: mint Eclipse IDE felépítése DE: nem használt elemek letilthatóak (ld. Advisor osztályok) Elemei Workbench Ablak Lap Perspektíva Nézetek Szerkesztők 19

Workbench felépítése Workbench Window (0..N) 20

Workbench felépítése Main toolbar (Coolbar) 21

Workbench felépítése Site 22

Site Egy ablak egy lapot tartalmaz Lap Szerkesztők Nézetek Elrendezési információk: perspektíva alapján 23

Workbench felépítése Perspektíva választó 0..N perspektíva, 1 aktív 24

Workbench felépítése Szerkesztők (0..N) 25

Workbench felépítése Nézetek Views (0..N) csoportokban 26

Mi egy RCP alkalmazás? public Object start(iapplicationcontext context) throws Exception { Display display = PlatformUI.createDisplay(); try { int returncode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); if (returncode == PlatformUI.RETURN_RESTART) return IApplication.EXIT_RESTART; else return IApplication.EXIT_OK; } finally { display.dispose(); } } 27

RCP alkalmazás futtatása public Object start(iapplicationcontext context) throws Exception { Display display = PlatformUI.createDisplay(); try { int returncode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); if (returncode == PlatformUI.RETURN_RESTART) return IApplication.EXIT_RESTART; else SWT Display return IApplication.EXIT_OK; } finally { létrehozása display.dispose(); } } 28

RCP alkalmazás futtatása public Object start(iapplicationcontext context) throws Exception { Display display = PlatformUI.createDisplay(); try { int returncode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); if (returncode == PlatformUI.RETURN_RESTART) return IApplication.EXIT_RESTART; else return IApplication.EXIT_OK; } finally { display.dispose(); } } Workbench advisor létrehozása (később) 29

RCP alkalmazás futtatása public Object start(iapplicationcontext context) throws Exception { Display display = PlatformUI.createDisplay(); try { int returncode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); if (returncode == PlatformUI.RETURN_RESTART) return IApplication.EXIT_RESTART; else return IApplication.EXIT_OK; } finally { display.dispose(); } } Workbench futtatása 30

RCP alkalmazás futtatása public Object start(iapplicationcontext context) throws Exception { Display display = PlatformUI.createDisplay(); try { int returncode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); if (returncode == PlatformUI.RETURN_RESTART) return IApplication.EXIT_RESTART; else return IApplication.EXIT_OK; } finally { display.dispose(); } } Visszatérési érték előállítása 31

RCP alkalmazás futtatása public Object start(iapplicationcontext context) throws Exception { Display display = PlatformUI.createDisplay(); try { int returncode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); Display if (returncode == PlatformUI.RETURN_RESTART) megsemmisítése return IApplication.EXIT_RESTART; else return IApplication.EXIT_OK; } finally { display.dispose(); } } 32

RCP alkalmazás leállítása public void stop() { final IWorkbench workbench = PlatformUI.getWorkbench(); if (workbench == null) return; final Display display = workbench.getdisplay(); display.syncexec(new Runnable() { public void run() { if (!display.isdisposed()) workbench.close(); } }); } 33

RCP alkalmazás leállítása public void stop() { final IWorkbench workbench = PlatformUI.getWorkbench(); if (workbench == null) return; final Display display = workbench.getdisplay(); display.syncexec(new Runnable() { public void run() { if (!display.isdisposed()) } } }); Ha nincs workbench, akkor nem fut a program workbench.close(); 34

RCP alkalmazás leállítása public void stop() { final IWorkbench workbench = PlatformUI.getWorkbench(); if (workbench == null) return; final Display display = workbench.getdisplay(); display.syncexec(new Runnable() { public void run() { if (!display.isdisposed()) workbench.close(); } }); } Rajzoló szálban kell leállítani a Workbenchet 35

RCP alkalmazás leállítása public void stop() { final IWorkbench workbench = PlatformUI.getWorkbench(); if (workbench == null) return; final Display display = workbench.getdisplay(); display.syncexec(new Runnable() { public void run() { if (!display.isdisposed()) workbench.close(); } }); } Ha nincs megsemmisítve, akkor bezárjuk 36

Megjelenítési beállítások Strategy (vagy policy) tervezési minta alkalmazása Algoritmusok családjának Azonosítása Objektumokba csomagolása Algoritmusok futásidőben kiválaszthatóak 37

Megjelenítési beállítások Megjelenítési stratégia megadása WorkbenchAdvisor WorkbenchWindowAdvisor ActionBarAdvisor Feladatok Ablakok átkonfigurálása Működés Metódusok implementációja Workbench életciklusa során hívódnak meg 38

A WorkbenchAdvisor Workbench beállításainak megadása Kezdeti perspektíva megadása IWorkbenchConfigurer: további beállítások állapotmentés Program életciklusának követése initialize prestartup poststartup 39

WorkbenchAdvisor példa private static final String PERSPECTIVE_ID = "hu.optxware.eclipsecourse.rcpdemo.gui.perspective"; public void initialize(iworkbenchconfigurer configurer){ super.initialize(configurer); configurer.setsaveandrestore(); } public WorkbenchWindowAdvisor createworkbenchwindowadvisor (IWorkbenchWindowConfigurer configurer) { return new ApplicationWorkbenchWindowAdvisor(configurer); } public String getinitialwindowperspectiveid() { return PERSPECTIVE_ID; } 40

WorkbenchAdvisor példa private static final String PERSPECTIVE_ID = "hu.optxware.eclipsecourse.rcpdemo.gui.perspective"; public void initialize(iworkbenchconfigurer configurer){ super.initialize(configurer); configurer.setsaveandrestore(); } public WorkbenchWindowAdvisor createworkbenchwindowadvisor (IWorkbenchWindowConfigurer configurer) { return new ApplicationWorkbenchWindowAdvisor(configurer); Állapotmentés } engedélyezése public String getinitialwindowperspectiveid() { return PERSPECTIVE_ID; } 41

WorkbenchAdvisor példa private static final String PERSPECTIVE_ID = "hu.optxware.eclipsecourse.rcpdemo.gui.perspective"; public void initialize(iworkbenchconfigurer configurer){ super.initialize(configurer); configurer.setsaveandrestore(); } public WorkbenchWindowAdvisor createworkbenchwindowadvisor (IWorkbenchWindowConfigurer configurer) { return new ApplicationWorkbenchWindowAdvisor(configurer); } public String getinitialwindowperspectiveid() { return PERSPECTIVE_ID; } Factory metódus 42

WorkbenchAdvisor példa private static final String PERSPECTIVE_ID = "hu.optxware.eclipsecourse.rcpdemo.gui.perspective"; public void initialize(iworkbenchconfigurer configurer){ super.initialize(configurer); configurer.setsaveandrestore(); } Kezdeti perspektíva public WorkbenchWindowAdvisor createworkbenchwindowadvisor (IWorkbenchWindowConfigurer configurer) { return new lekérése ApplicationWorkbenchWindowAdvisor(configurer); } public String getinitialwindowperspectiveid() { return PERSPECTIVE_ID; } 43

WorkbenchWindowAdvisor Ablak tulajdonságainak beállítása IWorkbenchWindowConfigurer tulajdonságai állíthatóak Ablak adatai settitle: címsor szövege setinitialsize: kezdeti méret Látható elemek setshowcoolbar (eszköztár) setshowmenubar (menüsor) setshowperspectivebar (perspektívaválasztó) setshowfastviewbar (gyors nézetek) setshowprogressindicator (folyamatjelző) setshowstatusline (státuszsor) 44

ActionBarAdvisor Cél: Coolbar és menük feltöltése Action elemekkel Command kontribúcióhoz nem szükséges Nem tárgyaljuk részletesen 45

RCP alkalmazások Application, Product Branding 46

Alkalmazás és termék Alkalmazás futtatásához további információ szükséges Márkajelzések (branding) Konfigurációs fájlok helye Ezek megadására használható fel a termék kiterjesztés (product) Kiterjesztési pont: org.eclipse.core.runtime.products Egyszerűbb szerkesztés:.product fájl létrehozása Eredmény szinkronizálása plugin.xml-lel 47

Branding Alkalmazás ikonok Alkalmazás hozzárendelése Windows: 6 féle ikon (bmp vagy ico formátum) Linux: XPM formátum OSX: ICNS formátum Főablak ikonja: 5 méret (16x16 és 128x128 méret között), lehet többféle formátum 48

Branding About Box Alapértelmezett About dialógus újrahasznosítható Szöveges leírás Nagy méretű ikon (250x330 pixel szöveggel, Vagy 500x330 pixel szöveg nélkül) 49

Branding - Intro Welcome lap hozható létre az alkalmazáshoz Hasonló: Eclipse első indítása HTML/CSS vagy SWT alapú Akciókat is végrehajthat Kiterjesztési pont: org.ecipse.ui.intro 50

SWT alapú intro lap org.eclipse.ui.intro kiterjesztés Intro elem: maga a lap ID: azonosító Class: IntroPart osztály leszármazottja Tetszőleges SWT alapú form építhető StandByMode: részben láthatóvá tehető Kód a standbystatechanged metódussal kezelheti introproductbinding: Intro producthoz rendelése 51

HTML/CSS alapú intro org.eclipse.intro.ui kiterjesztés Intro elem: Osztály: org.eclipse.ui.intro.config.customizableintropart IntroProductBinding elem: Product kötés org.eclipse.ui.intro.config introid: hivatkozás az előbbi intro elemre Content: xml formátum Presentation elem Kezdőlap azonosító tárolása Implementation elem HTML vagy SWT 52

Intro Content.xml XML formátum Alapkoncepció Lapok Csoportok Linkek Példa <?xml version="1.0" encoding="utf-8"?> <introcontent> <page id="root" content="content/root.xhtml"/> <page id="concept1" content="content/concept1.xhtml"/> <page id="concept2" content="content/concept2.xhtml"/> </introcontent> 53

Meglevő intro kiegészítése CustomizableIntroPart használata esetén utólagos bővítés: org.eclipse.ui.intro.configextension használatával Kiegészítések hasonló xml formátumban írhatóak le 54

Branding - Témák Általános mechanizmus saját look-n-feel definiálására Kiterjesztési pont: org.eclipse.ui.themes Téma: Színek és betűtípusok JFace colorregistry és fontregistry komponensek használata Más plug-inek számára is elérhető A workbench is ezt használja Kategóriák 55

Téma plugin.xml <extension point="org.eclipse.ui.themes"> <themeelementcategory id= hu.optxware.eclipsecourse.rcpdemo.category" label= RCP Demo"> <description> This category describes the RCP colors and fonts. </description> </themeelementcategory> <colordefinition categoryid= hu.optxware.eclipsecourse.rcpdemo.category" id= hu.optxware.eclipsecourse.rcpdemo.text" label= Text color" value="55,112,231"> </colordefinition> </extension> 56

Téma plugin.xml <extension point="org.eclipse.ui.themes"> <themeelementcategory id= hu.optxware.eclipsecourse.rcpdemo.category" label= RCP Demo"> <description> This category describes the RCP colors and fonts. </description> </themeelementcategory> <colordefinition categoryid= hu.optxware.eclipsecourse.rcpdemo.category" Kategória id= hu.optxware.eclipsecourse.rcpdemo.text" megadása label= Text color" value="55,112,231"> </colordefinition> </extension> 57

Téma plugin.xml <extension point="org.eclipse.ui.themes"> <themeelementcategory Színkonstans megadása kezdőértékkel id= hu.optxware.eclipsecourse.rcpdemo.category" label= RCP Demo"> <description> This category describes the RCP colors and fonts. </description> </themeelementcategory> <colordefinition categoryid= hu.optxware.eclipsecourse.rcpdemo.category" id= hu.optxware.eclipsecourse.rcpdemo.text" label= Text color" value="55,112,231"> </colordefinition> </extension> 58

Téma elérése a kódból //Getting the current theme IThemeManager thememanager = PlatformUI.getWorkbench().getThemeManager(); ITheme currenttheme = thememanager.getcurrenttheme(); //Getting a color from the Theme ColorRegistry colorregistry = theme.getcolorregistry(); Color textcolor= colorregistry.get("hu.optxware.eclipsecourse.rcpdemo.text"); 59

Téma elérése a kódból //Getting the current theme IThemeManager thememanager = PlatformUI.getWorkbench().getThemeManager(); ITheme currenttheme = thememanager.getcurrenttheme(); //Getting a color from the Theme ColorRegistry colorregistry = theme.getcolorregistry(); Color textcolor= colorregistry.get("hu.optxware.eclipsecourse.rcpdemo.text"); Aktuális téma lekérése 60

Téma elérése a kódból //Getting the current theme IThemeManager thememanager = PlatformUI.getWorkbench().getThemeManager(); ITheme currenttheme = thememanager.getcurrenttheme(); //Getting a color from the Theme ColorRegistry colorregistry = theme.getcolorregistry(); Color textcolor= colorregistry.get("hu.optxware.eclipsecourse.rcpdemo.text"); Színkonstans lekérése 61

RCP Plug-in fejlesztés Elosztott felületek Eclipse Súgó Külső Könyvtárak

Moduláris grafikus felület Felhasználó felület sok elemből (nézetek, szerkesztők) áll Kölcsönhatások! Elemek közti kommunikáció Direkt kommunikáció Kiválasztás követése Életciklus követés Elemek Ablak Alkalmazásmodell elérése 63

Elemek közötti kommunikáció Közvetlen kommunikáció Nézetek között Nézet megnyitása (Workbench API) Nézet bezárása (Workbench API) Egyéb közvetlen kommunikáció kerülendő Nézet és szerkesztő között Szerkesztő megnyitása adott erőforráshoz (Workbench API) 64

Kiválasztás követése Minden view és editor megosztja a kijelölést API: szolgáltató megadása: IWorkbenchSite.setSelectionProvider(ISelectionProvider) Kijelölés figyelése: ISelectionService Minden workbench elem megvalósítja Kijelölés tárolása Figyelő hozzáadható ISelectionListener Kijelölés megváltozásáról értesül ISelection-t ad meg -> értelmezni a fogadónak kell 65

Életciklus követés Workbench elemek életciklusa IPartService: IWorkbenchWindow.getPartService() Elemek életciklusát tárolja Figyelőt lehet hozzáadni IPartListener Értesítés megnyitott, aktivált, ill. bezárt elemekről Ablakok életciklusa Hasonlóan előzőhöz: IWorkbench.addWindowsListerer(IWindowListener) 66

Alkalmazásmodell elérése Szerkesztő openeditor() metódus paraméterén keresztül Nézet Programozott megnyitásnál: view.setinput() Felhasználó megnyitásnál createcontrolpart() futása közben (pl. kiválasztás elérése) Parancs kezelőből Aktuális kijelölés figyelése Általánosan Statikus metódusok egyes osztályoknál Pl. ResourcesPlugin.getWorkspace(); 67

Eclipse Súgó Help Kiterjesztési pont: org.eclipse.help.toc TOC (Table of Contents) elemekből áll Fa struktúra Egyéb TOC-ket és topicokat tartalmaz Fő TOC: toc.xml (konvenció) Topic HTML fájl - ez a tényleges tartalom Lehet külön plug-in is Fontos: a HTML fájlok könyvtárát is csomagolni kell! Webservice az adatok nézegetésére 68

Eclipse Súgó Topic elemek Címke Fájl hivatkozás a tartalomra Minden HTML tartalom használható (képek, linkek,...) 69

Eclipse súgó 70

Eclipse súgó Table of Contents hierarchia 71

Eclipse súgó Tartalom terület 72

Tartalom hierarchia 73

Tartalom hierarchia Legfelső szintű TOC 74

Tartalom hierarchia TOC 75

Tartalom hierarchia Súgó lap 76

Eclipse Súgó Környezetérzékeny Súgó Kiterjesztési pont: org.eclipse.help.context Interfész: nincs Help context extension XML fájl Kontextusok leírása (Topic) Általános leírás Hozzárendelés WorkbenchHelp.setHelp(Control, String) PlatformUI.getWorkbench().getHelpSystem().setHelp(Control, String) F1 megnyomásával érhető el 77

Külső könyvtárak használata Külső könyvtárak JDBC driver JPA megvalósítás Elérhetővé kell tennünk a plug-in számára 78

Külső könyvtár elérhetővé tétele Ha a külső függőség Eclipse plug-in Egyszerűen fel kell venni a függőségeivel együtt a product függőségei közé OSGi bundle (részletesebben ezekről később) Mint az Eclipse plug-in Más Java komponens Eclipse Orbit projekt sokhoz tartalmaz plug-int Készítsünk belőle plug-int Beágyazzuk a jar fájlt Felvesszük a plug-in classpath-ába És elérhetővé tesszük a plug-in használói felé: Megfelelő csomagokat az Exported packages részbe felvenni! 79

RCP alkalmazások terjesztése 80

RCP alkalmazások terjesztése Legfőbb feladatok: Futtatható változat előállítása Product export varázsló támogatás Terjesztés Tömörített fájlok (telepítéshez) p2 tárolók (frissítéshez) Frissítés p2 frissítő 81

Feature Terjesztéshez plug-in túl részletes Eclipse SDK (Classic) 3.5.1: 364 plug-in, RCP Platform: 32 Egyes plug-inek önmagukban keveset adnak Cél: csoportosítás Feature Plug-inek csoportja Szervezőelv: közösen nyújtott funkcionalitás Feature a legkisebb önállóan telepíthető funkcionalitás 82

Feature információk Feature megadása Leíró fájl: feature.xml Nincs forráskód az csak plug-ineken belül Legfőbb adatok Azonosító (hierarchikus, ld. plug-in) Verziószám (szöveges formátum, ld. plug-in) Név különösen fontos a frissítésekhez Leírások Szöveges leírás Copyright Licensz 83

Feature információk 2. Szerkezet Tartalmazott plug-inek Név Verziószám Opcionálisan letöltési/telepítési méret (frissítéshez) Más feature elemek Függőségek Plug-in függőségek Feature függőségek Verziószámmal (számtartománnyal) 84

Feature információk 3. Utólagos frissítéshez Update site név és URL Innen le lehet tölteni frissítéseket További update site-ok Függőségek frissítéséhez Lehetőség van platform-specifikus telepítésre Támogatott platformok rögzítése Operációs rendszer, nyelv, ablakozó rendszer Rendszertől függően más plug-int telepíteni 85

Product export Cél: Futtatható csomag előállítása Tároló előállítása (frissítéshez) Alkalmazás plug-inek nem futtathatóak Szükséges hozzájuk platform Target Platform 86

Target Platform Plug-in készlet Külön IDE, RCP és RAP alkalmazásokhoz Szabadon alakítható Fordítás Függőségek kiértékelése Futtatás Target Platform és saját plug-in egyszerre fut 87

RCP Target Platform RCP alkalmazás Futtatható IDE platformmal Nem célszerű -> nem kívánatos függőségek RCP Target platform Külön kell letölteni! Alkalmazás plug-in mellett is tárolható 88

Product export Több operációs rendszer támogatása: Delta Pack Target Platform kiegészítése Operációs rendszerek Ablakozó rendszerek Eclipse.org-ról letölthető (~67 MB) Target platformban szerepel Export során választható bármelyik rendszer 89

Fájlstruktúra RCPFolder/ artifacts.xml eclipse.exe eclipse.ini configuration/ p2/ config.ini plugins/ «RCP Target platform plug-ins» «Application plug-ins» features/ «RCP Target platform features» «Application features» 90

Fájlstruktúra RCPFolder/ artifacts.xml eclipse.exe eclipse.ini configuration/ p2/ config.ini plugins/ «RCP Target platform plug-ins» «Application plug-ins» features/ Telepített plug-inek listája «RCP Target platform features» «Application features» 91

Fájlstruktúra RCPFolder/ artifacts.xml eclipse.exe eclipse.ini configuration/ p2/ config.ini plugins/ «RCP Target platform plug-ins» «Application plug-ins» features/ Futtatható állomány és konfigurációs fájl «RCP Target platform features» «Application features» 92

Fájlstruktúra RCPFolder/ artifacts.xml eclipse.exe eclipse.ini configuration/ p2/ config.ini plugins/ «RCP Target platform plug-ins» «Application plug-ins» features/ Futtatandó termék, indítóképernyő stb. meghatározása «RCP Target platform features» «Application features» 93

Fájlstruktúra RCPFolder/ artifacts.xml eclipse.exe eclipse.ini configuration/ p2/ config.ini plugins/ «RCP Target platform plug-ins» «Application plug-ins» features/ «RCP Target platform features» «Application features» Frissítéshez szükséges fájlok 94

Fájlstruktúra RCPFolder/ artifacts.xml eclipse.exe eclipse.ini configuration/ p2/ config.ini plugins/ «RCP Target platform plug-ins» «Application plug-ins» features/ «RCP Target platform features» «Application features» Az alkalmazáshoz tartozó plug-inek 95

Telepítés és futtatás RCP alkalmazás különleges telepítést nem igényel Üzembe helyezés: Tömörített fájl kicsomagolása Futtatható állomány indítása Frissítéshez: p2 támogatást ad 96

p2 provisioning Eclipse 3.4 óta, 3.5-re komoly fejlesztések Korábbi Update Manager teljes újraírása Funkciók: Szoftver tárolók kezelése Függőségek követése Letöltés többféle protokollon keresztül 97

p2 az Eclipse környezetben Help menüben: About/Installation Details Telepített feature-ök megjelenítése Telepített feature-ök eltávolítása Telepített plug-inek megjelenítése Check for Updates Automatikus frissítés Install new software Elindítja a telepítő varázslót Friss projekt Felhasználó felület gyorsan változik Gyermekbetegségek még vannak Pl. feature-ök eltávolítását nehéz megtalálni 98

Installation Details 99

Csomagtelepítés p2-vel 100

Csomagtelepítés p2-vel 101 Kiválasztott tároló (URL)

Csomagtelepítés p2-vel 102 Elérhető feature elemek (kategorizálva)

Szoftver tárolók Automatikus frissítéshez Elnevezés nem egységes Tároló (Repository) Szoftver oldal (Software Site) Frissítési oldal (Update Site) Lényegében ugyanazt takarják Tartalma Telepítendő plug-in fájlok Metaadatokat leíró fájlok (pl. függőségek) Tetszőleges web szerveren üzemeltethető Csak fájlok átküldése szükséges 103

Szoftver tárolók készítése Update Site projekt Feature-ök és kategóriák felsorolása A lefordított feature elemek exportálhatóak Export közvetlenül weben elérhetővé tehető Szokás archívumot készíteni Ne csak a legfrissebb kiadás legyen elérhető 104

RCP szoftver tárolók Product Export varázsló képes előállítani Benne van az RCP platform is DE: Nincsen kategorizálva DE: Nincsen leírás a feature elemekhez Lehet Update site projektből is kiindulni 105

p2 engedélyezése p2 grafikus felület: org.eclipse.equinox.p2.user.ui feature Ez sokféle plug-int jelent p2 core org.eclipse.equinox.p2.core feature Semmilyen felhasználói interfész komponenst sem tartalmaz A p2 felülete elég összetett Általános IDE megoldás RCP alkalmazáshoz túl bonyolult lehet 106

Szoftver tároló hozzáadása az alkalmazáshoz Célszerű felvenni az alapértelmezett szoftver tárolót Megtörténhet feature projekt adatai között p2.inf fájl a felvétele Ez a product export során érvényes marad p2.inf minta instructions.configure=\ addrepository(type:0,location:http${#58}//optxware.hu/ demorepo);\ addrepository(type:1,location:http${#58}//optxware.hu/ demorepo); 107

p2 grafikus felület p2 menüpontok hozzáadása Command framework Check for updates command org.eclipse.equinox.p2.ui.sdk.update Install new software command org.eclipse.equinox.p2.ui.sdk.install Engedélyezni kell A státuszsort (status line) A folyamatjelzőt (progress indicator) 108

Csomagtelepítés RCP alkalmazásban 109

Csomagtelepítés RCP alkalmazásban Nem lehet tárolót választani 110

Csomagtelepítés RCP alkalmazásban Nincsenek kategóriák (alapértelmezett megjelenítésnél gond) 111

p2 RCP alkalmazásokban p2 projekt használata RCP alkalmazásokban problémás p2 új projekt Bonyolult felhasználói interfész Nem kiforrott Gyakorlat Sokféle egyedi megoldás Pl. IBM Expeditor platform 112