Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Plugin fejlesztés.

Slides:



Advertisements
Hasonló előadás
Tamás Kincső, OSZK, Analitikus Feldolgozó Osztály, osztályvezető A részdokumentumok szolgáltatása az ELDORADO-ban ELDORADO konferencia a partnerkönyvtárakkal.
Advertisements


Kamarai prezentáció sablon
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Készítette: Boros Erzsi
A társadalmi tényezők hatása a tanulásra
3 5 6 Application Services Deployment Services Databinding USER INTERFACE SERVICES XAML Accessibility Property System Input & Eventing BASE SERVICES.
Erőállóképesség mérése Találjanak teszteket az irodalomban
MATEMATIKA Év eleji felmérés 3. évfolyam
Messages Szöveg A A B B C C A A B B C C A A B B C C Endpoint.
21 Years of Partnership and Innovation 1989 Citrix Systems founded 2010 Citrix signed licensing agreement with Microsoft for NT Server Introduced Independent.
Humánkineziológia szak
Mellár János 5. óra Március 12. v
Les meilleures photos de L'année 2005 D'après NBC A life for two, full of tenderness, obtains happiness as they get closer to heaven. Az élet kettesben.
Elektromos mennyiségek mérése
Az új történelem érettségiről és eredményeiről augusztus Kaposi József.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt fejlesztőrendszerek Felhasználói felületek Balogh András.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Graphical Editing Framework.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Domain specifikus nyelvek Eclipse Modeling.
Bevezetés a tárgyakhoz Tárgyak  Objects are the containers for values of a specified type  Objects are either signals, variables or constants  Once.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group BIRT, Szerveroldali Eclipse, TPTP, Subversive Balogh András.
FelültöltésVHDL Felültöltés (Overloading) n Áttekintés n Példák.
Utófeszített vasbeton lemez statikai számítása Részletes számítás
TRANZIENS ADATTÁROLÁS State objektum Egy alkalmazásszintű gyűjtemény (Dictionary), mely Tombstone esetén megőrzi tartalmát a memóriában kulcs/érték párokként.
A tételek eljuttatása az iskolákba
Mérés és adatgyűjtés Szenzorok II. Mingesz Róbert
Ember László XUBUNTU Linux (ami majdnem UBUNTU) Ötödik nekifutás 192 MB RAM és 3 GB HDD erőforrásokkal.
VÁLOGATÁS ISKOLÁNK ÉLETÉBŐL KÉPEKBEN.
Védőgázas hegesztések
1. IS2PRI2 02/96 B.Könyv SIKER A KÖNYVELÉSHEZ. 2. IS2PRI2 02/96 Mi a B.Könyv KönyvelésMérlegEredményAdóAnalitikaForintDevizaKönyvelésMérlegEredményAdóAnalitikaForintDeviza.
Delegátumok C#-ban Krizsán Zoltán iit 1.0.
Course Situation and Event Driven Models for Multilevel Abstraction Based Virtual Engineering Spaces Óbuda University John von Neumann Faculty of Informatics.
Oracle multimédia Kiss Attila Információs Rendszerek Tanszék
Kutyafajták Retrieverek Készítette: Bak Barna József
Szerkezeti elemek teherbírásvizsgálata összetett terhelés esetén:
Sárgarépa piaca hasonlóságelemzéssel Gazdaság- és Társadalomtudományi kar Gazdasági és vidékfejlesztési agrármérnök I. évfolyam Fekete AlexanderKozma Richárd.
NOVÁK TAMÁS Nemzetközi Gazdaságtan
DRAGON BALL GT dbzgtlink féle változat! Illesztett, ráégetett, sárga felirattal! Japan és Angol Navigáláshoz használd a bal oldali léptető elemeket ! Verzio.
PHP V Osztályok, Objektumok. Osztály class Person { var $name; // tulajdonság, változó function getName() { // metódus, tagfüggvény return $this->name;
szakmérnök hallgatók számára
A évi demográfiai adatok értékelése
Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - III. / 1 13.Állományok, bejegyzések 14.Folyamok 15.Közvetlen hozzáférésű állomány.
Logikai szita Pomothy Judit 9. B.
Logikai szita Izsó Tímea 9.B.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek JFace.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák Plug-in fejlesztés teszteléssel Balogh.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek JFace.
EGEE-II INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks P-GRADE Portal gyakorlat ismertető Gergely.
2007. május 22. Debrecen Digitalizálás és elektronikus hozzáférés 1 DEA: a Debreceni Egyetem elektronikus Archívuma Karácsony Gyöngyi DE Egyetemi és Nemzeti.
var q = ( from c in dc.Customers where c.City == "London" where c.City == "London" select c).Including( c => c.Orders ); select c).Including(
Tanulni, tanulni, tanulni Értékesítői képességek, a személyzet képzése.
7. Házi feladat megoldása
Könyvtár, csomag és alprogramokVHDL Könyvtár, csomag és alprogram n Library és use n Package n Alprogramok –Procedure –Function –Resolution function Egy.
SzgLab 3. Java. I. labor Alapok, OOP váz, megjelenítés konzolon.
II. labor Lépések kezelése. Új metódus a Square osztályba public static int letterToFileIndex(char letter) throws NumberFormatException { int i = 0; for.
III. labor AWT, eseménykezelés Applet. Új class: ButtonView import java.awt.*; import java.awt.event.*; import java.util.LinkedList; public class ButtonView.
User interface Szécsi László. Egg projectben DXUTgui.cpp – CDXUTDialogResourceManager::CDXUTDialogReso urceManager() m_SpriteBufferBytes11 = 0; ezt kihagyták,
Csurik Magda Országos Tisztifőorvosi Hivatal
A klinikai transzfúziós tevékenység Ápolás szakmai ellenőrzése
2006. Peer-to-Peer (P2P) hálózatok Távközlési és Médiainformatikai Tanszék.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Eclipse alapú technológiák JFace Balogh András.
HTTP kommunikáció Androidon HttpClient-en keresztűl HttpPost/HttpGet objektum használatával HttpClient execute metódusának meghívása.
Nyitott Kapuk 2010 Beiskolázási kérdőívek értékelése.
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
1. Melyik jármű haladhat tovább elsőként az ábrán látható forgalmi helyzetben? a) A "V" jelű villamos. b) Az "M" jelű munkagép. c) Az "R" jelű rendőrségi.
Topográfiai gyakorlatok Magyarország
Kvantitatív módszerek
> aspnet_regiis -i 8 9 TIPP: Az „Alap” telepítés gyors, nem kérdez, de később korlátozhat.
A KÖVETKEZŐKBEN SZÁMOZOTT KÉRDÉSEKET VAGY KÉPEKET LÁT SZÁMOZOTT KÉPLETEKKEL. ÍRJA A SZÁMOZOTT KÉRDÉSRE ADOTT VÁLASZT, VAGY A SZÁMOZOTT KÉPLET NEVÉT A VÁLASZÍV.
1 Az igazság ideát van? Montskó Éva, mtv. 2 Célcsoport Az alábbi célcsoportokra vonatkozóan mutatjuk be az adatokat: 4-12 évesek,1.
Előadás másolata:

Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Plugin fejlesztés

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 2 Extension point-ok  Safe platform rule −„As the provider of an extension point, you must protect yourself against misbehavior on the part of extenders”  A felkínált kiegészítési pontnak biztonságosnak kell lenni, még a kiegészítés hibája esetén is!  Invitation rule −„Whenever possible, let others contribute to your contributions”

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 3 Extension point-ok  Fair play rule −„All clients play by the same rules, even me.” −Ne legyen saját „hátsó bejárat”, rejtett interfész  Explicit Extension Rule −„Declare explicitly where a platform can be extended” −A deklaráció a plugin.xml-ben  Diversity Rule −„Extension points accept multiple extensions”

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 4 Extension point-ok  Hogyan kérdezhetjük le a ponthoz tartozó kiegészítéseket? −Platform.getExtensionRegistry() −IExtensionRegistry.getExtensionPoint(String) −IExtension[] IExtensionPoint.getExtensions() −IExtension.getConfigurationElements() ●Az adott elem attribútumait, gyerekeit tartalmazza ●Validáció kérhető

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 5 Extension point-ok  Hogyan példányosítjuk a megadott osztályt? −Csak egy osztálynév van −A mi classloader-ünk nem találhatja meg, mert nincs a függő plugin-ok listáján −Nem is biztos, hogy kívülről látszik az osztály −Megoldás: kérjük meg az extension plug-in saját classloader-ét, hogy végezze el a piszkos munkát! ●IConfigurationElement.createExecutableExtension( String)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 6 Extension-ök értesítése/hívása  Hogyan értesítjük az extension-t? −Adott hívási felület (interface) −Fel kell készülni a hibákra, exception-ökre ●Kivételkezelés! ●Minden extension hívást külön try-catch blokkban  Fault containment region… −Good fences rule: „When passing control outside your code, protectyourself.” −Intézményesített gyanakvás: ISafeRunnable

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 7 Extension-ök értesítése/hívása  ISafeRunnable −public void run() – ebbe tegyük a futtatandó kódot −public void handleException(Throwable) ●Kezeli a kivételeket, amik futtatás közben keletkeztek ●Például kidobhatjuk az extension-t, ha bajt okozott

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 8 Példa: ISafeRunnable for (Iterator all=getListeners().iterator();all.hasNext()) { IMyExstension ext = (IMyExtension)all.next(); ISafeRunnable runnable = new ISAfeRunnable() { public void handleException(Throwable exception){ all.remove(); } public void run() throws Exception { ext.execute(); //hívom az extensiont } }; Platform.run(runnable); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 9 Példa: ISafeRunnable for (Iterator all=getListeners().iterator();all.hasNext()) { IMyExstension ext = (IMyExtension)all.next(); ISafeRunnable runnable = new ISAfeRunnable() { public void handleException(Throwable exception){ all.remove(); } public void run() throws Exception { ext.execute(); //hívom az extensiont } }; Platform.run(runnable); } Végigmegyünk az extension-ökön

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 10 Példa: ISafeRunnable for (Iterator all=getListeners().iterator();all.hasNext()) { IMyExstension ext = (IMyExtension)all.next(); ISafeRunnable runnable = new ISAfeRunnable() { public void handleException(Throwable exception){ all.remove(); } public void run() throws Exception { ext.execute(); //hívom az extensiont } }; Platform.run(runnable); } Kivesszük a következőt

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 11 Példa: ISafeRunnable for (Iterator all=getListeners().iterator();all.hasNext()) { IMyExstension ext = (IMyExtension)all.next(); ISafeRunnable runnable = new ISAfeRunnable() { public void handleException(Throwable exception){ all.remove(); } public void run() throws Exception { ext.execute(); //hívom az extensiont } }; Platform.run(runnable); } Csinálunk egy új burkoló-osztályt

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 12 Példa: ISafeRunnable for (Iterator all=getListeners().iterator();all.hasNext()) { IMyExstension ext = (IMyExtension)all.next(); ISafeRunnable runnable = new ISAfeRunnable() { public void handleException(Throwable exception){ all.remove(); } public void run() throws Exception { ext.execute(); //hívom az extensiont } }; Platform.run(runnable); } Aki hibázik, azt eldobjuk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 13 Példa: ISafeRunnable for (Iterator all=getListeners().iterator();all.hasNext()) { IMyExstension ext = (IMyExtension)all.next(); ISafeRunnable runnable = new ISAfeRunnable() { public void handleException(Throwable exception){ all.remove(); } public void run() throws Exception { ext.execute(); //hívom az extensiont } }; Platform.run(runnable); } Meghívjuk az extension egyik metódusát

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 14 Példa: ISafeRunnable for (Iterator all=getListeners().iterator();all.hasNext()) { IMyExstension ext = (IMyExtension)all.next(); ISafeRunnable runnable = new ISAfeRunnable() { public void handleException(Throwable exception){ all.remove(); } public void run() throws Exception { ext.execute(); //hívom az extensiont } }; Platform.run(runnable); } Végrehajtjuk a runnable- t.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 15 Csomagolás, publikálás  Ha készen áll a plugin-ünk a felhasználásra −Be kell csomagolni −Hangolni kell a plugin.xml opcióit  Telepítési cél −Saját gépünk −Más gépek −Automatikus telepítés/frissítés

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 16 Csomagolás, publikálás  Könyvtárak – library −A csomagolás első lépése −Osztályainkat jar fájlokba csomagtatjuk ●Lehet bináris vagy forrás csomag ●Megmondhatjuk, mely osztályok látszódhatnak kívülről −A kész libeket és egyéb fájlokat csomagolhatjuk össze az exporthoz ●Lehet bináris és forrás bundle

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 17 Csomagolás, publikálás  Finomhangolás −Nem használt függőségek kiirtása ●Automatikus ellenőrző eszközökkel −Plugin neve, készítő, … −Verziószám beállítása  Export −File -> Export -> Deployable plug-ins and fragments ●Az eredmény egy könyvtár, ami tartalmazza a plugint.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 18 Feature  Egy témához kapcsolódó plug-inek gyűjteménye  Könnyebb menedzselhetőség érdekében jött létre  Az automatikus letöltés és telepítés atomi egysége

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 19 Feature  Kiegészítő információk −License aggreement −License rule „always supply a license with every contribution” −Upgrade site-ok listája −Feature saját verziója −Szükséges pluginok verziója

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 20 Update site  Automatikusan létrehozott weblap  Feature-ök elhelyezésére −Publikálás −Letöltés −Upgrade  Lista az elérhető feature-ökről és verziókról  Megkönnyíti a szoftver elosztást

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 21 Eddig  Egyszerű plugin létrehozása  Kiterjesztések létrehozása  Kiterjesztési pontok létrehozása  Plugin csomagolás  Feature létrehozás  Update site

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 22 Plugin fejlesztés teszteléssel

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 23 JUnit  Regressziós teszt keretrendszer  Erich Gamma és Kent Beck írta  Unit tesztelésre használatos Java-ban  Nyílt forráskódú  IBM CPL licensz alatt elérhető

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 24 JUnit  Web:  Az Eclipse tartalmazza a JUnit-ot −GUI-t is kínál a tesztek futtatásához  Eclipse-n kívül is futtathatóak a tesztek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 25 Eclipse - JUnit  A JUnit beállítása a Preferences ablakban lehetséges  Általában jók az alapbeállítások  Szűrőket lehet megadni, hogy mely csomagok és osztályok jelenjenek meg a stack trace-ben

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 26 TestCase - teszteset  Több tesztet is futtathat  A TestCase osztályból származik  Definiálja, hogy mely tagváltozók tartalmazzák a teszt állapotát az osztályon belül  Inicializálás a setUp metódussal  Takarítás a tearDown metódussal

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 27 TestCase készítése  Csináljunk egy új osztályt a project-ben  Adjuk hozzá a junit.jar-t a függőségekhez

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 28 TestCase létrehozása  Kiválasztjuk a csomagot, ahova a tesztet rakni szeretnénk  A new menüből válasszuk a JUnit Test Case-t.  Elnevezzük, stb.  Egy megfelelő osztály létrejön

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 29 Példa: TestCase package com.espirity.course.testing; import junit.framework.TestCase; public class FirstTestCase extends TestCase { public FirstTestCase(String arg0) { super(arg0); } public static void main(String[] args) { } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 30 TestCase létrehozása  Minden „test”-tel kezdődő metódus tesztként lesz kezelve az osztályban −Sok teszt metódusunk lehet  Minden teszt metódus többféle „assert” metódust használhat, hogy a tesztelés alatt álló osztályok állapotát vizsgálja −Az assert metódusok öröklöttek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 31 TestCase létrehozása  Assert −assertEqual(x,y) −assertFalse(boolean) −assertTrue(boolean) −assertNull(Object) −assertNotNull(Object) −asserSame(Object,Object) −assertNotSame(Object,Object)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 32 Példa: TestCase package testing; import junit.framework.TestCase; public class FirstTestCase extends TestCase { public FirstTestCase(String arg0) { super(arg0); } public static void main(String[] args) {} protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } public void testCompareSucceed() { assertEquals(0, 0); //this assertion will succeed } public void testCompareFail() { assertEquals(0, 1); //this assertion will fail }}

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 33 TestCase futtatása  Válasszuk ki az osztályt  Run -> Run as - > JUnit Test  Lefutnak a tesztek  Az eredmény a JUnit view-ban jelenik meg.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 34 JUnit view  Információk −Piros/zöld a teszt eredménye hiba/ok −Látható a meghiúsult tesztek neve −Látható a hiba trace −Látható a lefutott tesztek száma −Látható a hibák száma

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 35 TestSuite  Több TestCase vagy Suite futtatása  A TestSuite osztályból örököltetjük  Létrehozás varázslóval… −File->New->Other…->Java->JUnit −A varázslóban válasszuk a JUnit Test Suite opciót −Megadhatjuk a résztevő Case-eket

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 36 Példa: TestSuite package com.espirity.course.testing; import junit.framework.Test; public class AllInclusiveTestSuite { public static Test suite() { TestSuite suite = new TestSuite("Test for com.espirity.course.testing"); //$JUnit-BEGIN$ suite.addTestSuite(FirstTestCase.class)); suite.addTestSuite(SecondTestCase.class)); //$JUnit-END$ return suite; }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 TestSuite futtatás  Hasonló a TestCase-éhez  Minden megadott TestCase lefut  A JUnit ablak tartalmazza az eredményeket  Fontos: TestSuite is adható TestSuite-hoz!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 38 PDE JUnit  JUnit támogatás plug-in fejlesztéshez  A sima JUnit nem használható −Nem Workbench-ben fut −Az Eclipse plug-inok nem leérhetőek  PDE JUnit −Külön futtatási mód

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 39 Plugin futtatás Alap Eclipse, ezen dolgozunk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 40 Plugin futtatás Projectek a workbench- ben

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 41 Plugin futtatás Ha plugint futtatunk egyúj Eclipse példány indul

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 42 Plugin futtatás Betöltődik a plugin-unk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 43 Plugin futtatás Külön workspace látszik

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 44 Plugin teszt futtatás Teszt projekt a workspace-ben

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 45 Plugin teszt futtatás A teszt is betöltődik, valamint a teszt futtató

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 46 PDE JUnit működés  Írunk egy tesztet (ugyanúgy, mint alapesetben)  Futtatjuk JUnit Plug-in Test-ként  Egy Eclipse ablak nyílik, majd a tesztek lefutása után bezáródik  A teszteredményt a szokásos ablakban találhatjuk meg

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 47 PDE JUnit működés  Hol legyenek a tesztek? −Lehet a tesztelendő plug-inban is −De! ●A JUnit függőségeket be kell építeni ●Keveredik a kód és a teszt −Tegyük külön plug-inba, ami könnyen leválasztható ●Ez függ az eredeti plug-in-től

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 48 Mit teszteljünk?  Nyilván csak a meghajtható részek (API) tesztelhető  Nincs lehetőség közvetlen GUI tesztre −Rational Robot  Amit tesztelni szeretnénk, látható kell legyen  Erősen függ a konkrét plug-intól

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 49 Gyakori kiterjesztések

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 50 View  Általános információ-megjelenítő elem  Extension point: −org.eclipse.ui.views −If: IViewPart  Sokféle lehetőség van információ megjelenítésére −Tartalmazhat SWT és JFace elemeket is

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 51 Példa: View public class View extends ViewPart { public static final String ID = "raktarAppFrontend.view"; private TreeViewer viewer; public void createPartControl(Composite parent) { //View controls initialization } /** * Passing the focus request to the viewer's control. */ public void setFocus() { viewer.getControl().setFocus(); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 52 View  setFocus metódus −Hova kerüljön a fókusz? −Nekünk kell megmondani… −Program to API contract rule: „Check and program to the Eclipse API contract.” −Ezt a metódust nekünk nem szabad hívni! −Helyette: IWorkbenchPage.showView(String) −És: IWorkbenchPage.activate(IViewPart)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 53 View  Általános információ-megjelenítő elem  Extension point: −org.eclipse.ui.views −If: IViewPart  Sokféle lehetőség van információ megjelenítésére −Tartalmazhat SWT és JFace elemeket is

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 54 Menü elemek  Pop-up menü: ActionSet-ek (már volt)  Context Menü −Jobbgombra előugró menü egy adott elemen −Invitation rule-> általában mindegyik context menü fogad új elemeket −Elemek: Action-ök, separator-ok −Két speciális elem, amik közé mások menü elemei kerülhetnek (MB_ADDITIONS) −Hozzáadás: org.eclipse.ui.popupMenus ●A View megadásával

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 55 Perspektívák  Layot-ot definiál a megjelenítendő view-k és editorok számára  Pl. Java/Debug/Resource perspektívák  Perspektíva kiegészítése −Megadható hol jelenjen meg a view, ha megnyitják −Kezdetben látható legyen a view?  RCP alkalmazásoknál teljesen új perspektívát készítünk! (programozottan)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 56 Help  Minden plugin tartalmazhat help-et  Alapelem: TOC – Table of contents −Fa −Más toc-okat és topic-okat tartalmaz  Topic −Egy html fájl  Extension point: org.eclipse.help.toc  Lehet különálló plugin (nem keveredik a kóddal)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 57 Help készítése  A fő toc: toc.xml-ben (konvenció) …

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 58 Help  Topic elemek −Van címkéjük −Van egy fájl hivatkozás a tartalmukra −Ha a címkét kiválasztjuk, betöltődik a megadott fájl −A HTML minden elemet tartalmazhat, amit általában (képek, linkek, …)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 59 Help – plugin.xml …

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 60 Integrált Help  Topic hozzáadása létező help-hez  Pl. határtalan tudásunkkal gyarapítni szeretnénk a beépített PDE súgót  Anchorok helyezhetőek el a toc-ban (invitation rule)  Toc link_to attribútum -> útvonal a toc gyökeréhez (az anchorhoz)  Példa:

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 61 Context sensitive help  „F1” szindróma  Hozzárendelés: −WorkbenchHelp.setHelp(Control,String)  Help context extension: −Egy xml fájl, ami leírja a context-eket (mely topicok jelennek meg, …) + egy description (általános szöveg) −Ezt az xml-t mint org.eclipse.help.context extension-t kell bejegyezni

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 62 Internationalization  A plug-inok nemzetközivé tétele, többnyelvűsítése  Első lépésben eltávolítjuk a string konstansokat a kódból és egyéb fájlokból, hogy könnyen cserélhető legyen a felület szövege

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 63 I18N – plugin.xml  A plugin.xml egyes szövegei csak a rendszer számára láthatóak (extension id, …) ezeket nem kell lefordítani  Másokat viszont a felhasználó is lát (action label) – ezeket ki kell szedni, hogy könnyen le lehessen fordítani −plugin.properties – név érték párok −%név – az adott helyre behelyettesíti a talált értéket  feature.xml-nél hasonló módszer (feature.properties)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 64 I18N – forráskód  A Java forráskód egy része felhasználó számára látható szöveget tartalmaz (gombfelirat, üzenetek…) – ezeket ki kellene szedni…  Más stringek viszont fontos rendszer- konstansokat tartalmaznak (id, …) – ezekenek maradni kell  Megoldás: megjelöljük a maradókat: //$NON-NLS-1$

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 65 I18N – forráskód  Előkészületek: −Resource bundle létrehozása a plug-in-hoz (akrá több is) −Minden bundle-be rakjunk egy properties fájlt (pl. messages.properties), és egy helper osztályt, mely ezt betölti −A kulcsok legyenek kvalifikáltak, hogy ne legyen ütközés (pl. Osztaly.elem.attributum)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 66 Eclipse támogatás  Source -> Externalize strings −Megkeresi a stringeket, létrehozza a bundle-t és a beolvasó segédosztályt. −Mindent elrendez nekünk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 67 Probléma - publikálás  Mit tegyünk a plugin publikálásakor?  Várjuk meg az összes fordítást? – időveszteség  Adjunk ki új verziót minden fordításkor? – bonyolult  Megoldás: fragment-ek − Külön elemek, melyek a plugin egy részét tartalmazzák – nyelv vagy platform specifikus elemekhez találták ki

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 68 Accessibility  A plugin legyen elérhető hátrányos helyzetűek számára is −Minden funkció legyen elérhető billentyűzetről −Az elemekhez rendeljünk cimkéket, hogy a felolvasó programok számára legyen elégéséges információ −A színeket csak mint kiterjesztést használjuk −Tegyük lehetővé erős kontrasztos üzemmód használatát −A hangjelzések és kép legyen kiváltható

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 69 A plugin megnyitása más programozók számára  API definiálása −Meg kell határrozni, mely interfészek, osztályok látszanak, melyeket kell másoknak használni −Csak a szükségeseket exportáljuk −Az exportán megadhatunk egy prefixet is az osztálynevekre -> teljesítmény!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 70 Belső és nyilvános csomagok  Explicit API rule: „Separate the API from internals” −Lehetőleg világosan el legyen választva a nyilvános API és a belső osztályok (pl. külön csomag)  Stability rule: „Once you invite others to contribute, don’t change the rules” −Lehetőleg tartsuk stabilan az API-t  Defensive API rule: „Reveal only the API in which you have confidence, but be prepared to reveal more API as clients ask for it.” −Csak a stabil részeket mutassuk meg

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 71 Core és UI  A nagy komponensek általában külön plug-inbe helyezik a belső működést és az UI-t  Ez praktikus, és kikényszeríti a kettő közötti interfész definiálását −Könnyen cserélhető, kiegészíthető GUI −Külön-külön fejleszthető elemek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 72 Extension point  A hivatalos kiegészítési mechanizmus alapeleme  Fontos, hogy definiáljunk hozzá megfelelő sémát! −Ez adja meg a használható elemeket