Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt fejlesztőrendszerek Felhasználói felületek Balogh András.

Slides:



Advertisements
Hasonló előadás

Advertisements

Kamarai prezentáció sablon
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
1. foreach( fejlesztő in Lurdyház ) { fejlesztő.Agy. Delete If( delegate ( Content c ) { return c.ContainsAny( „Win32 / User32.dll”, „GDI”,„GDI+”,„WindowsForms”,
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
6) 7) 8) 9) 10) Mennyi az x, y és z értéke? 11) 12) 13) 14) 15)
Matematika - 5. évfolyam © Kačmárová Fordította: Balogh Szilveszter.
Elektromos mennyiségek mérése
Koordináta transzformációk
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 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.
Utófeszített vasbeton lemez statikai számítása Részletes számítás
Basics A few things one must know. Slides Insert a title slide Put a title on it.
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
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Elektronikai Áramkörök Tervezése és Megvalósítása
Elektronikai Áramkörök Tervezése és Megvalósítása
Elektronikai Áramkörök Tervezése és Megvalósítása
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.
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 Nyílt Fejlesztőrendszerek SWT haladó komponensek.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek JFace.
4. Feladat (1) Foci VB 2006 Különböző országok taktikái.
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.
Matematika - 5. évfolyam © Kačmárová Fordította: Balogh Szilveszter.
var q = ( from c in dc.Customers where c.City == "London" where c.City == "London" select c).Including( c => c.Orders ); select c).Including(
7. Házi feladat megoldása
V. labor Thread, animáció. Animáció A figurák a lépés kijelölése után nem rögtön az új helyen teremnek, hanem egyenes vonal mentén mozognak a cél felé.
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.
IIII. labor Képfileok kezelése (media resources) Canvas Egérkezelés.
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,
A pneumatika alapjai A pneumatikában alkalmazott építőelemek és működésük vezérlő elemek (szelepek)
Csurik Magda Országos Tisztifőorvosi Hivatal
A klinikai transzfúziós tevékenység Ápolás szakmai ellenőrzése
2006. május 15P2P hálózatok 1 Fóliák a vizsgára: 1. előadás  Bevezető: 11-16, 21,  Usenet: előadás:  Bevezető: 3-8  Napster: 
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.
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.
Mérés és adatgyűjtés laboratóriumi gyakorlat - levelező Sub-VI és grafikonok 1 Mingesz Róbert V
> 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 Felhasználói felületek Balogh András

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 2 Házi feladat  Feladat −Eclipse plugin készítés −Témalista a weben – jövő héten −Nehézségtől függő értékelés −Csapatmunka lehetséges (2-3 főig, behatárolt részfeladatok!)  Ütemezés −4. hét vége: pontos specifikáció −Utolsó tanítási hét: beadás −Vizsgaidőszakban nincs házi feladat beadás!!!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 3 Java-alapú felhasználói felület  AWT (Abstract Widgeting Toolkit) −Az első −Alacsony szintű elemek −Egyszerű esemény modell (event-listener) −Már elavult (SUN)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 4 Java-alapú felhasználói felület  Swing −„AWT magasabb szinten” −Komplex GUI elemek −Összetettebb esemény modell, többszálúság −Ma ez a javasolt (általában - SUN) −Java-ban megírt komponensek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 5 Java-alapú felhasználói felület  AWT, Swing hátrányok −Lassú −„nem úgy néz ki, mint a Word” probléma ●Nem veszi át a WM look-and-feel beállításait ●Általában a nyelvi beállításokat sem (feltétlenül) ●„Nem szép” (felhasználói élmény) −Jelentős mennyiségű erőforrást (memória) emészt fel (Swing) −Alacsony szintű (AWT)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 6 Java-alapú felhasználói felület  SWT – Standard Widgeting Toolkit −A Swing helyett… −Az Eclipse projekt indulásakor kezdték fejleszteni −Előzmény: natív GUI komponensek elérése Smalltalk alól (OTI) −Cél: gyors, natív elemekből épített GUI keretrendszer

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 7 Java-alapú felhasználói felület  SWT −Natív ●A platform API-t használja ●Minden platformra portolni kell ●Gyors ●Azonos look-and-feel a többi (natív) alkalmazással ●OLE, Drag-n-drop,… támogatás ●  kis különbségek a platformok között lehetnek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 8 Java-alapú felhasználói felület  SWT −Átgondolt struktúra ●Egyszerű komponensek ●Hierarchikus szerkezetek ●Átlátható esemény-kezelés ●Átlátható API −Bővíthető ●Saját widget-ek (nem natív) ●Optimális funkció-teljesítmény arány érhető el

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 9 Java-alapú felhasználói felület  SWT alapelemek −Display ●Egy „munkaállomást reprezentál” (monitor(ok), egér, billentyűzet) ●Az esemény-szétosztásért felel ●Tartalmazza a felső szintű Shell és Monitor objektumokat −Shell ●Egy „ablak”-ot reprezentál ●Composite-ek és Control-ok hierarchiájának a gyökere

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 10 Java-alapú felhasználói felület  SWT alapelemek −Composite ●Olyan elem, mely más elemeket (composite, control) tartalmazhat (konténer) −Control ●Egy operációs rendszer szintű vezérlőt reprezentál ●Button, Label, … ●A Shell és Composite is ez −Az összes osztály a Widget osztályból származik

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 11 Java-alapú felhasználói felület  SWT alapelemek −Esemény-hurok ●Explicit – az alkalmazásban le kell kódolni ●Egy ciklusban olvassuk a bejövő eseményeket, és feldolgozzuk őket ●Ha az alkalmazás véget ér (a főablak bezárásra kerül) abbahagyhatjuk ●Az idősebbeknek: Windows API programozás

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 12 Java-alapú felhasználói felület  SWT alapelemek −Esemény-hurok while(!shell.isDisposed()){ if(!display.readAndDispatch()) display.sleep (); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 13 SWT események  Mi is az esemény? −Minden történés, ami érdekes lehet −A felhasználó vagy az operációs rendszer generálja −A listenerek kapják el az eseményeket −Kétféle listener ●Típus nélküli ●Típusos

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 14 SWT események  Típus nélküli listener −addListener(int, Listener) ●A típus adja meg a szűrőt ●Csak az ennek megfelelő események továbbítódnak −Listener ●handleEvent(Event) −notifyListeners(int, Event) ●Programozott esemény-küldés

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 15 SWT események  Típusos listener −addXYZListener(XYZListener) ●Csak addot típusú listener adható meg −Listener ●Specifikus metódusok ●Specifikus argumentumokkal −„objektum-orientáltabb…” −Adapter osztályok ●Ősosztályként a listenereknek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 16 SWT események  Ha több listenert adunk meg valahol, a megadás sorrendjében hívódnak meg  Ha többször adtuk hozzá ugyanazt, többször hívódik meg  Ha többször adtuk hozzá, többször is kell elvenni

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 17 Billentyűzet  „Keyboard focus” – a billentyűleütések célpontja (control) −setFocus() −isFocusControl() −forceFocus()  Események −KeyDown −KeyUp  FocusEvent - FocusListener

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 18 Billentyűzet  SWT konstans a speciális karaktereknek −BS, CL, ESC, DEL, LF, TAB  stateMask – különleges gombok állapota −SHIFT, ALT, CTRL, COMMAND  „Traversal key” −Utazás a kontrollok között −A kontroll dönt a feldolgozásról (nem accelatorKey) pl. &File

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 19 Billentyűzet  AcceleratorKey – gyorselérés −Kontrollhoz kötjük ●setAccelerator(int) ●Karakter + módosító maszk  Window Manager rendszer-billentyű események −Pl. Alt+F4 −Az ablakkezelő rendszer „elnyeli” −Nem jut el a programhoz

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 20 Egér  Tipikus mutatóeszköz −1-2-3-sok gomb −Az aktuális pozíciót kurzor jelzi a képernyőn −A kurzor változó alakú ●Az alatta levő elemtől (is) függően  Események −Enter, Exit, Down, Up, Move, Hover, DoublClick

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 21 Egér  Esemény-elemek −Koordináták – control-relatív −Button – az akcióban résztvevő gomb −Gomb maszk – A stateMask része ●BUTTON1, BUTTON2, BUTTON3 ●BUTTON_MASK −State maszk – a billentyűzet-infó is!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 22 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17}

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 23 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17} SWT könyvtárak

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 24 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17} Referencia a képernyőre

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 25 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17} Új ablak a képernyőn

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 26 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17} Ablak címe

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 27 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17} Ablak mérete

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 28 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17} Ablak megnyitása

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 29 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17} Esemény- hurok

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 30 SWT Hello World 1 import org.eclipse.swt.*; 2 import org.eclipse.swt.graphics.*; 3 import org.eclipse.swt.widgets.*; 4 public class HelloWorld{ 5 public static void main(String[] args) { 6 Display display = new Display(); 7 Shell shell = new Shell(display); 8 shell.setText("Hello, World!"); 9 shell.setSize(200, 100); 10 shell.open (); 11 while (!shell.isDisposed()) { 12 if (!display.readAndDispatch()) 13 display.sleep (); 14 } 15 display.dispose (); 16 } 17} Erőforrások eldobása

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 31 SWT architektúra  Platform Interface −Java Native Interface segíségével hívja a platform API-t (c) −Egy-az-egyhez leképzés ●Ugyanazon függvényneveket és paramétereket használja, mint a platform ●Ugyanazokaz az elnevezési konvenciókat is használja −Minden számottevő részlet már a Java kódban −Aki ismeri az adott platform API-t, egyszerűen portolhatja a SWT-t

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 32 SWT Runtime  A futtatáshoz két dolog kell −SWT jar fájlok ●Swt.jar – az SWT alap csomagja ●Egyéb, platform-függő jar fájlok ●A fordításhoz a javac-nak el kell tudni érni ezeket −SWT osztott könyvtárak ●Az SWT Platform Interface-t (PI) tartalmazzák ●Platform specifikus nevek, pl. swt-XX.dll Windows alatt, vagy libswt-XX.ao Linux alatt ●Az egyéb, platform-függő libek halmaza

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 33 SWT és Web 2.0 – RAP (Rich Ajax Platform)  SWT-szerű widget-ek webre  Aszinkron működés (AJAX)  Előnyök −Könnyű portolás SWT-ről −Nem-GUI komponensek 1-1 felhasználhatóak −„több-ablak” kezelés −Magas szintű szolgáltatások automatikusan rendelkezésre állnak  Inkubációs fázisban −

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 34 SWT és Web 2.0 – RAP (Rich Ajax Platform)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 35 SWT és Web 2.0 – RAP (Rich Ajax Platform) public void createControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(1, true)); new Label(composite, SWT.LEFT).setText("Do you have complaints?"); Composite yesNo = new Composite(composite, SWT.NONE); yesNo.setLayout(new FillLayout(SWT.VERTICAL)); yes = new Button(yesNo, SWT.RADIO); yes.setText("Yes"); yes.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { setPageComplete(true); setErrorMessage(null); } }); no = new Button(yesNo, SWT.RADIO); no.setText("No"); no.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { setPageComplete(true); setErrorMessage(null); } }); setControl(composite); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 36 SWT Belülről

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 SWT Belülről – Az SWT osztály  Minden SWT konstans −SWT.PUSH, SWT.RADIO −SWT.Selection  Fontos metódusok −getPlatform() −getVersion() −error()  Megjegyzés −Platform – string (pl. „win32”, „gtk”) −Verzió – int

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 38 SWT Belülről – Az SWT hibák  Háromféle kivétel  SWTError – kritikus, végzetes hiba −Code – az SWT hibakód −Throwable – a kivétel, ami a hibát okozta −getMessage() – a hiba szöveges leírása  SWTException −Akkor dobja, ha kevésbé kritikus hiba történt −Ugyanazok a mezők, mint fent  IllegalArgumentException −Hibás bemenő paraméter esetén

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 39

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 40 Widget konstruktorok  Widgeteknek mindig van szülőjük  Tipikus konstruktor: Widget(parent,style)  Stílusok az SWT konstansok kombinációi (bitszintű vagy)  Példák −new Label(shell,SWT.NONE); −Button push = new Button(shell,SWT.PUSH); −Button radio = new Button(shell,SWT.RADIO);  Kivétel: shell szülője shell vagy display

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 41 Widget  Minden UI osztály közös absztrakt őse  Konstruktorral példányosítjuk (nem factory) −Létrehozáskor az OS erőforrások lefoglalódnak  Törlés programozottan (dispose) vagy felhasználói művelet során −Elengedi az OS erőforrásokat  Alkalmazás-specifikus adatokat lehet tárolni benne: getData()/setData()

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 42 Widget - adattag  setData(Object) – getData() −Egyetlen objektum tárolása  setData(String,Object) – getData(String) −Kulcs-érték párok tárolása −Sok érték esetén lassú (memória-optimalizált)  Kitűnően alkalmazható az MVC patternbeli model felé történő referencia tárolására  Egyszerűbb programozás

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 43 Elemek törlése  Az erőforrás-alapú elemeket explicit módon meg kell semmisíteni  Ilyenek: Widgetek, Color, Cursor, Font, GC, Image, Region, Device, …  1. SZABÁLY: Te csináltad, te semmi- síted meg! −A programozó semmisíti meg: ●Font font = new Font(…); −A programozó nem semmisítheti meg! ●Font font = control.getFont();

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 44 Elemek törlése  2. SZABÁLY: Egy elem megsemmi- sítése, megsemmisíti a gyerekeit is! −shell.dispose() – az ablak minden eleme −menu.dispose() – a menü minden eleme −tree.dispose() – a fa minden eleme megsemmisül −Fontos:  Control.dispose() és  menuItem.dispose() esetén  A beállított (setMenu()) menü is törlődik!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 45 Control  Ősosztály minden „nehézsúlyú” UI elemnek  Stílusok −BORDER, LEFT_TO_RIGHT, RIGHT_TO_LEFT  Események −FocusIn, FocusOut, KeyDown, KeyUp, Traverse, MouseDown, MouseUp, MouseDoubleClick, MouseEnter, MouseExit, MouseMove, Move, Resize, Paint, Help

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 46 Shell – Az ablak  New Shell(display, SWT.SHELL_TRIM);  New Shell(shell, SWT.DIALOG_TRIM);  Stílusok −BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE, APPLICATION_MODAL, MODELESS, PRIMARY_MODAL, SYSTEM_MODAL  Események −Activate, Close, Iconify, DeIconify, Deactivate

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 47 Shell – Az ablak  New Shell(display, SWT.SHELL_TRIM);  New Shell(shell, SWT.DIALOG_TRIM);  Stílusok −BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE, APPLICATION_MODAL, MODELESS, PRIMARY_MODAL, SYSTEM_MODAL  Események −Activate, Close, Iconify, DeIconify, Deactivate

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 48 Shell – Az ablak  Metódusok −open() −close() −setActive()  Megjegyzés −A legfelső ablak szülője a display −Dialógusok szülője a felsőbb szintű ablak

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 49 Label  New Label(parent, SWT.NONE);  Statikus szöveg vagy kép megjelenítése  Stílusok −WRAP, LEFT, CENTER, RIGHT, SEPARATOR, HORIZONTAL, VERTICAL, SHADOW_IN, SHADOW_OUT  Fontos metódusok −setText(String) −setImage(Image) −setAlignment(Left |Center | Right)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 50 Button  New Button(parent, SWT.PUSH);  Többféle gomb megjelenítése  Stílusok −ARROW, CHECK, PUSH, RADIO, TOGGLE, FLAT, UP, DOWN, LEFT, CENTER, RIGHT  Események −Kiválasztás

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 51 Button  Metódusok −setText(String) −setImage(Image) −setAlignment(int) −setSelection(boolean) – check, radio és toggle  Megjegyzés −Rádió gombok csoportosíthatóak −Az „arrow” gombok iránnyal rendelkezhetnek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 52 Példa public static void main(String[] args) { Display display = Display.getDefault(); MyDlg thisClass = new MyDlg(); thisClass.createSShell(); thisClass.sShell.open(); while (!thisClass.sShell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 53 Példa private void createSShell() { sShell = new Shell(); sShell.setText("Shell"); sShell.setLayout(new GridLayout()); sShell.setSize(new org.eclipse.swt.graphics.Point(90,127)); label1 = new Label(sShell, SWT.NONE); label1.setText("Some Text"); ílabel2 = new Label(sShell, SWT.SEPARATOR | SWT.HORIZONTAL); label2.setText("Label"); checkBox = new Button(sShell, SWT.CHECK); checkBox.setText("check"); button = new Button(sShell, SWT.NONE); button.setText("PushMe"); }

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 54 Text  Szövegbeviteli komponens (család) −Egy- vagy többsoros  Stílusok −SINGLE, MULTI, READ_ONLY, WRAP, LEFT, CENTER, RIGHT, PASSWORD  Események −Modify, Verify, DefaultSelection (Enter)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 55 Text  Metódusok −setText(String) −setSelection(int,int) −cut(), copy(), paste() −insert(String), append(String) −getLineCount(), getLineHeight()  Megjegyzés −Kurzor (caret) jelzi az aktuális beviteli pontot −Indexek 0 bázisúak

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 56 StyledText  Formázott szöveg – nem natív! −new StyledText(parent, style)  Stílusok −SINGLE, MULTI, READ_ONLY, WRAP, FULL_SELECTION  Események −DefaultSelection, Modify, Verify, ExtendedModify  Akciók −invokeAction(int act) −setKeyBinding(int key, int act)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 57 StyledText  Statikus tartalom manipuláció −setText(String) −setLineBackground(int, int, Color) −setStyleRanges(StyleRange[])  Dinamikus tartalom manipuláció −setContent(StyledTextContent) ●Saját tároló implementáció −addLineBackgroundListener(…) −addLineStyleListener(…)  Megjegyzés −Példák: TextEditor, JavaEditor (eclipse.org)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 58 Composite  Konténer más elemek tárolására −new Container(parent, SWT.NONE)  Stílusok −NO_BACKGROUND, NO_FOCUS, NO_MERGE_PAINTS, NO_RADIO_GROUP, NO_REDRAW_RESIZE

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 59 Composite  Metódusok −getChildren() −setLayout(Layout) −layout(boolean) −setTabList(Control[])  Megjegyzés −Lehetnek gyermekei −Lehet layout-ja −Örököltethető, hogy saját elemeket hozhassunk létre

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 60 Canvas  Festővászon  new Canvas(parent,style)  Szabad grafika készítésének alapja  Saját kurzor (Caret) lehet benne  Rajzolás −Saját alrendszer az SWT-ben −Később!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 61 Item  Általános elem osztály  Mindig felsorolás jellegű elemen belül −Tree -> TreeItem −Menu -> MenuItem  Általános metódusok −setText(String) −setImage(Image)