61
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Felhasználói felületek

Nyílt Fejlesztőrendszerek Felhasználói felületek

Embed Size (px)

DESCRIPTION

Nyílt Fejlesztőrendszerek Felhasználói felületek. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Nyílt Fejlesztőrendszerek Felhasználói felületek

Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Nyílt FejlesztőrendszerekFelhasználói felületek

Page 2: Nyílt Fejlesztőrendszerek Felhasználói felületek

2Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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!!!

Page 3: Nyílt Fejlesztőrendszerek Felhasználói felületek

3Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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)

Page 4: Nyílt Fejlesztőrendszerek Felhasználói felületek

4Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 5: Nyílt Fejlesztőrendszerek Felhasználói felületek

5Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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)

Page 6: Nyílt Fejlesztőrendszerek Felhasználói felületek

6Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 7: Nyílt Fejlesztőrendszerek Felhasználói felületek

7Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 8: Nyílt Fejlesztőrendszerek Felhasználói felületek

8Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 9: Nyílt Fejlesztőrendszerek Felhasználói felületek

9Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 10: Nyílt Fejlesztőrendszerek Felhasználói felületek

10Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 11: Nyílt Fejlesztőrendszerek Felhasználói felületek

11Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 12: Nyílt Fejlesztőrendszerek Felhasználói felületek

12Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Java-alapú felhasználói felület

SWT alapelemek− Esemény-hurok

while(!shell.isDisposed()){

if(!display.readAndDispatch())

display.sleep ();

}

Page 13: Nyílt Fejlesztőrendszerek Felhasználói felületek

13Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 14: Nyílt Fejlesztőrendszerek Felhasználói felületek

14Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 15: Nyílt Fejlesztőrendszerek Felhasználói felületek

15Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 16: Nyílt Fejlesztőrendszerek Felhasználói felületek

16Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 17: Nyílt Fejlesztőrendszerek Felhasználói felületek

17Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Billentyűzet

„Keyboard focus” – a billentyűleütések célpontja (control)− setFocus()− isFocusControl()− forceFocus()

Események− KeyDown− KeyUp

FocusEvent - FocusListener

Page 18: Nyílt Fejlesztőrendszerek Felhasználói felületek

18Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 19: Nyílt Fejlesztőrendszerek Felhasználói felületek

19Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 20: Nyílt Fejlesztőrendszerek Felhasználói felületek

20Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 21: Nyílt Fejlesztőrendszerek Felhasználói felületek

21Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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!

Page 22: Nyílt Fejlesztőrendszerek Felhasználói felületek

22Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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}

Page 23: Nyílt Fejlesztőrendszerek Felhasználói felületek

23Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 24: Nyílt Fejlesztőrendszerek Felhasználói felületek

24Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 25: Nyílt Fejlesztőrendszerek Felhasználói felületek

25Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 26: Nyílt Fejlesztőrendszerek Felhasználói felületek

26Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 27: Nyílt Fejlesztőrendszerek Felhasználói felületek

27Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 28: Nyílt Fejlesztőrendszerek Felhasználói felületek

28Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 29: Nyílt Fejlesztőrendszerek Felhasználói felületek

29Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 30: Nyílt Fejlesztőrendszerek Felhasználói felületek

30Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 31: Nyílt Fejlesztőrendszerek Felhasználói felületek

31Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 32: Nyílt Fejlesztőrendszerek Felhasználói felületek

32Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 33: Nyílt Fejlesztőrendszerek Felhasználói felületek

33Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

SWT és Web 2.0 – RAP (Rich Ajax Platform)

SWT-szerű widget-ek webreAszinkron 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− http://eclipse.org/rap

Page 34: Nyílt Fejlesztőrendszerek Felhasználói felületek

34Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

SWT és Web 2.0 – RAP (Rich Ajax Platform)

Page 35: Nyílt Fejlesztőrendszerek Felhasználói felületek

35Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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);}

Page 36: Nyílt Fejlesztőrendszerek Felhasználói felületek

36Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

SWT Belülről

Page 37: Nyílt Fejlesztőrendszerek Felhasználói felületek

37Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 38: Nyílt Fejlesztőrendszerek Felhasználói felületek

38Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

SWT Belülről – Az SWT hibák

Háromféle kivételSWTError – 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

Page 39: Nyílt Fejlesztőrendszerek Felhasználói felületek

39Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Page 40: Nyílt Fejlesztőrendszerek Felhasználói felületek

40Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Widget konstruktorok

Widgeteknek mindig van szülőjükTipikus 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

Page 41: Nyílt Fejlesztőrendszerek Felhasználói felületek

41Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Widget

Minden UI osztály közös absztrakt őseKonstruktorral 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()

Page 42: Nyílt Fejlesztőrendszerek Felhasználói felületek

42Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 43: Nyílt Fejlesztőrendszerek Felhasználói felületek

43Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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();

Page 44: Nyílt Fejlesztőrendszerek Felhasználói felületek

44Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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!

Page 45: Nyílt Fejlesztőrendszerek Felhasználói felületek

45Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Control

Ősosztály minden „nehézsúlyú” UI elemnekStí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

Page 46: Nyílt Fejlesztőrendszerek Felhasználói felületek

46Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 47: Nyílt Fejlesztőrendszerek Felhasználói felületek

47Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 48: Nyílt Fejlesztőrendszerek Felhasználói felületek

48Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 49: Nyílt Fejlesztőrendszerek Felhasználói felületek

49Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Label

New Label(parent, SWT.NONE);Statikus szöveg vagy kép megjelenítéseStílusok

− WRAP, LEFT, CENTER, RIGHT, SEPARATOR, HORIZONTAL, VERTICAL, SHADOW_IN, SHADOW_OUT

Fontos metódusok− setText(String)− setImage(Image)− setAlignment(Left |Center | Right)

Page 50: Nyílt Fejlesztőrendszerek Felhasználói felületek

50Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Button

New Button(parent, SWT.PUSH);Többféle gomb megjelenítéseStílusok

− ARROW, CHECK, PUSH, RADIO, TOGGLE, FLAT, UP, DOWN, LEFT, CENTER, RIGHT

Események− Kiválasztás

Page 51: Nyílt Fejlesztőrendszerek Felhasználói felületek

51Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 52: Nyílt Fejlesztőrendszerek Felhasználói felületek

52Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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();

}

Page 53: Nyílt Fejlesztőrendszerek Felhasználói felületek

53Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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");

}

Page 54: Nyílt Fejlesztőrendszerek Felhasználói felületek

54Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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)

Page 55: Nyílt Fejlesztőrendszerek Felhasználói felületek

55Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 56: Nyílt Fejlesztőrendszerek Felhasználói felületek

56Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

StyledTextFormázott szöveg – nem natív!

− new StyledText(parent, style)Stílusok

− SINGLE, MULTI, READ_ONLY, WRAP, FULL_SELECTION

Események− DefaultSelection, Modify, Verify,

ExtendedModifyAkciók

− invokeAction(int act)− setKeyBinding(int key, int act)

Page 57: Nyílt Fejlesztőrendszerek Felhasználói felületek

57Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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)

Page 58: Nyílt Fejlesztőrendszerek Felhasználói felületek

58Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 59: Nyílt Fejlesztőrendszerek Felhasználói felületek

59Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

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

Page 60: Nyílt Fejlesztőrendszerek Felhasználói felületek

60Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Canvas

Festővászonnew Canvas(parent,style)Szabad grafika készítésének alapjaSaját kurzor (Caret) lehet benneRajzolás

− Saját alrendszer az SWT-ben− Később!

Page 61: Nyílt Fejlesztőrendszerek Felhasználói felületek

61Budapest University of Technology and Economics

Fault-tolerant Systems Research Group

Item

Általános elem osztályMindig felsorolás jellegű elemen belül

− Tree -> TreeItem− Menu -> MenuItem

Általános metódusok− setText(String)− setImage(Image)